OSDN Git Service

* gcse.c (hash_scan_set): Insert set in insn before note at
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2
3         * gcse.c (hash_scan_set): Insert set in insn before note at
4         the end of basic block.
5
6 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
7
8         PR tree-optimization/33576
9         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
10         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
11         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
12         (remove_iv): Declared.
13         * lambda-code.c (remove_iv): Not static.
14         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
15         Don't remove ivs there, save ivs in the buffer.
16
17 2007-10-03  Jason Merrill  <jason@redhat.com>
18
19         PR c++/15764
20         * tree-eh.c (same_handler_p): New fn.
21         (optimize_double_finally): New fn.
22         (refactor_eh_r): New fn.
23         (refactor_eh): New fn.
24         (pass_refactor_eh): New pass.
25         * tree-pass.h: Declare it.
26         * passes.c (init_optimization_passes): Add it.
27
28 2007-10-03  Doug Kwan  <dougkwan@google.com>
29         Richard Guenther  <rguenther@suse.de>
30
31         PR debug/31899
32         * dwarf2out.c (reference_to_unused): Disable sanity checking,
33         be conservative instead.
34
35 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
36
37         PR fortran/26682
38         * doc/invoke.texi (-fwhole-program): Document that Fortran
39         doesn't support this option.
40
41 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
42
43         PR middle-end/33617
44         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
45         expand_expr.
46
47 2007-10-02  David Daney  <ddaney@avtrex.com>
48
49         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
50         against constant zero.
51         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
52         operand.
53
54 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
55
56         * ra-conflict.c: New file.
57         * ra.h: New file.
58         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
59         usage to DF_LIVE usage.
60         * rtlanal.c (subreg_nregs_with_regno): New function.  
61         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
62         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
63         (df_has_eh_preds): Removed.
64         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
65         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
66         bb_has_eh_pred.
67         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
68         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
69         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
70         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
71         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
72         (global_alloc): Turn off rescanning insns after call to
73         global_conflicts and added call to set_preferences.
74         (global_conflicts): Moved to ra-alloc.c.
75         (set_preferences_1, set_preferences): New function.
76         (mirror_conflicts): Changed types for various variables.
77         (mark_elimination): Change DF_RA_LIVE
78         usage to DF_LIVE usage.
79         (build_insn_chain): Rewritten from scratch and made local.
80         (print_insn_chain, print_insn_chains): New functions.
81         (dump_conflicts): Do not print conflicts for fixed_regs.
82         (rest_of_handle_global_alloc): Turn off insn rescanning.
83         * hard-reg-set.h: Fixed comment.
84         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
85         usage to DF_LIVE usage and delete refs to TOP sets.
86         (block_alloc): Mark regs as live if they are in the artificial
87         defs at top of block.
88         (find_stack_regs): New function.
89         (rest_of_handle_local_alloc): Changed urec problem to live
90         problem and do not turn off df rescanning.
91         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
92         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
93         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
94         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
95         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
96         fields in df_ref_flags.  The rest have been renumbered.  
97         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
98         at -O1.
99         * rtl.h (subreg_nregs_with_regno): New function.
100         * df-problems.c: (df_get_live_out, df_get_live_in,
101         df_get_live_top): Removed reference to DF_RA_LIVE.
102         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
103         df_live_alloc, df_live_reset, df_live_local_finalize,
104         df_live_free): Make top set only if different from in set.
105         (df_lr_top_dump, df_live_top_dump): Only print top set if
106         different from in set.
107         (df_lr_bb_local_compute): Removed unnecessary check.
108         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
109         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
110         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
111         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
112         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
113         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
114         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
115         df_urec_add_problem): Removed.
116         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
117         bb_has_eh_pred. 
118         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
119         * basic_block.h (bb_has_abnormal_pred): New function.
120         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
121         usage to DF_LIVE usage.
122         
123 2007-10-02  Revital Eres  <eres@il.ibm.com>
124
125         * config/rs6000/predicates.md (easy_vector_constant): Return false
126         for 750CL paired vectors.
127         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
128         vector constant.
129         (vec_initv2sf): Add new description.
130         (vconcatsf): Likewise.
131         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
132         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
133
134 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
135
136         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
137         sinking the last stmt in a BB.
138
139 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
140
141         PR middle-end/22156
142         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
143         (sra_hash_tree): Handle BIT_FIELD_REFs.
144         (sra_elt_hash): Don't hash bitfld blocks.
145         (sra_elt_eq): Skip them in parent compares as well.  Handle
146         BIT_FIELD_REFs.
147         (build_element_name_1): Handle BIT_FIELD_REFs.
148         (instantiate_element): Propagate nowarn from parents.  Create
149         BIT_FIELD_REF for variables that are widened by scalarization.
150         Gimple-zero-initialize all bit-field variables that are not
151         part of parameters that are going to be scalarized on entry.
152         (instantiate_missing_elements_1): Return the sra_elt.
153         (canon_type_for_field): New.
154         (try_instantiate_multiple_fields): New.  Infer widest possible
155         access mode from decl or member type, but clip it at word
156         size, and only widen it if a field crosses an alignment
157         boundary.
158         (instantiate_missing_elements): Use them.
159         (generate_one_element_ref): Handle BIT_FIELD_REFs.
160         (scalar_bitfield_p): New.
161         (sra_build_assignment): Optimize assignments from scalarizable
162         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
163         counts.
164         (REPLDUP): New.
165         (sra_build_bf_assignment): New.  Optimize assignments to
166         scalarizable BIT_FIELD_REFs.
167         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
168         assignments to full variables.
169         (generate_copy_inout): Use the new macros and functions.
170         (generate_element_copy): Likewise.  Handle bitfld differences.
171         (generate_element_zero): Don't recurse for blocks.  Use
172         sra_build_elt_assignment.
173         (generate_one_element_init): Take elt instead of var.  Use
174         sra_build_elt_assignment.
175         (generate_element_init_1): Adjust.
176         (bitfield_overlap_info): New struct.
177         (bitfield_overlaps_p): New.
178         (sra_explode_bitfield_assignment): New.  Adjust widened
179         variables to account for endianness.
180         (sra_sync_for_bitfield_assignment): New.
181         (scalarize_use): Re-expand assignment to/from scalarized
182         BIT_FIELD_REFs.  Explode or sync needed members for
183         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
184         (scalarize_copy): Use REPLDUP.
185         (scalarize_ldst): Move assert before dereference.  Adjust EH
186         handling.
187         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
188
189 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
190
191         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
192         Rename CR_* constants to CMP_*.  Fix spacing.
193
194 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
195
196         PR other/33585
197         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
198         to be processed with the special script doc/install.texi2html.
199         
200 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
201
202         * doc/invoke.texi (Wall): List the options enabled by Wall.
203         (Wstrict-aliasing): Add missing @option.
204         
205 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
206
207         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
208         rather than gen_lowpart to change a register from DImode to DFmode.
209         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
210         both FROM and TO are integer modes that are no bigger than 4 bytes.
211         (mips_mode_ok_for_mov_fmt_p): New function.
212         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
213         (mips_secondary_reload_class): Tweak formatting and comments.
214         Use reg_class_subset_p instead of direct comparisons with
215         classes.  Only allow direct FPR<->FPR moves for modes that
216         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
217         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
218         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
219         (*movdi_64bit): Likewise.
220         (*movsi_internal): Likewise.
221         (*movhi_internal): Likewise.
222         (*movqi_internal): Likewise.
223
224 2007-09-30  Diego Novillo  <dnovillo@google.com>
225
226         PR 33593
227         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
228         throw an exception.
229
230 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
231
232         PR tree-optimization/33597
233         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
234         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
235
236 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
237
238         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
239         instead of variants of (!reload_in_progress && !reload_completed).
240         (x86_expand_vector_move): Ditto.
241
242 2007-09-28  Ollie Wild  <aaw@google.com>
243
244         Revert
245         2007-09-27  Ollie Wild  <aaw@google.com>
246
247         * varasm.c (compare_constant): Removed call to
248         lang_hooks.expand_constant.
249         (copy_constants): Removed call to lang_hooks.expand_constant.
250         (compute_reloc_for_constant): Removed call to
251         lang_hooks.expand_constant.
252         (output_addressed_constants): Removed call to
253         lang_hooks.expand_constant.
254         (constructor_static_from_elts_p): Removed call to
255         lang_hooks.expand_constant.
256         (output_constant): Removed calls to lang_hooks.expand_constant.
257         * langhooks.h (struct lang_hooks): Removed field expand_constant.
258         * langhooks-def.h (lhd_return_tree): Removed.
259         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
260         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
261         * langhooks.c (lhd_return_tree): Removed.
262
263 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
264
265         PR target/33347
266         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
267         argument to gen_selb.
268
269 2007-09-28  Chao-ying Fu  <fu@mips.com>
270
271         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
272         * doc/libgcc.texi (Fixed-point fractional library routines):
273         Fix typos for neg and cmp functions.
274
275 2007-09-28  Michael Matz  <matz@suse.de>
276
277         PR rtl-optimization/33552
278         * function.c (match_asm_constraints_1): Check for overlap in
279         inputs and replace all occurences.
280
281 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
282
283         * config/mips/mips.c (override_options): Fix comment typo.
284
285 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
286
287         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
288         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
289         * config/bfin/t-bfin-linux (crti.o): Don't build.
290         (crtn.o): Likewise.
291         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
292         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
293         (crtn.o): Likewise.
294         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
295
296 2007-09-27  Ollie Wild  <aaw@google.com>
297
298         * varasm.c (compare_constant): Removed call to
299         lang_hooks.expand_constant.
300         (copy_constants): Removed call to lang_hooks.expand_constant.
301         (compute_reloc_for_constant): Removed call to
302         lang_hooks.expand_constant.
303         (output_addressed_constants): Removed call to
304         lang_hooks.expand_constant.
305         (constructor_static_from_elts_p): Removed call to
306         lang_hooks.expand_constant.
307         (output_constant): Removed calls to lang_hooks.expand_constant.
308         * langhooks.h (struct lang_hooks): Removed field expand_constant.
309         * langhooks-def.h (lhd_return_tree): Removed.
310         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
311         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
312         * langhooks.c (lhd_return_tree): Removed.
313
314 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
315
316         PR middle-end/33436
317         * expr.c (emit_group_load_1): Split constant double when destination
318         length is half source length.
319
320 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
321
322         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
323         (mips_cpu_info): Add tune_flags.
324         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
325         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
326         Remove end marker.
327         (override_options): Remove deprecation code.  Use branch-likely
328         instructions for optimize_size or if the tuning flags do not
329         suggest otherwise.  Tweak warning.
330         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
331
332 2007-09-27  Matthias Klose  <doko@ubuntu.com>
333
334         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
335         multilib osdirname if it exists.
336         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
337
338 2007-09-27  Ian Lance Taylor  <iant@google.com>
339
340         PR tree-optimization/33565
341         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
342         assignments of comparisons.
343         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
344         parameter.  Change caller.  Defer overflow warnings around call to
345         fold_binary.
346         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
347         TREE_NO_WARNING is set on the statement.
348         * tree-ssa-forwprop.c
349         (tree_ssa_forward_propagate_single_use_vars): Don't test
350         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
351         * tree-cfg.c (fold_cond_expr_cond): Likewise.
352
353 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
354
355         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
356         reduce offset by units of 0x10000 for SPE vector modes or modes
357         used with E500 double instructions.
358
359 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
360
361         * simplify-rtx.c (comparison_result): New.
362         (simplify_const_relational_operation): Use it instead of the five
363         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
364         Improve bounds-checking optimizations; remove subsumed POPCOUNT
365         optimizations.  Extract nonzero_address_p optimizations into a
366         separate "if" together with optimizations where op1 is const0_rtx.
367         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
368         floating-point arguments too when appropriate.  Hoist test for ABS
369         outside the final switch statement.
370         * cse.c (fold_rtx): Don't look for an IOR equivalent of
371         folded_arg0 if we found a constant equivalent.  Remove
372         transformations done in simplify-rtx.c for "op0 RELOP op0".
373
374 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
375
376         * builtins.c (expand_builtin, expand_builtin_object_size,
377         expand_builtin_memory_chk, maybe_emit_chk_warning,
378         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
379         for diagnostics.
380         * expr.c (expand_expr_real_1): Likewise.
381         * langhooks-def.h (struct diagnostic_info): Add forward decl.
382         (lhd_print_error_function): Add third argument.
383         * langhooks.h (struct diagnostic_info): Add forward decl.
384         (struct lang_hooks): Add third argument to print_error_function.
385         * diagnostic.h (diagnostic_info): Add abstract_origin field.
386         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
387         second argument.
388         (diagnostic_report_current_function): Likewise.
389         * toplev.c (announce_function): Pass NULL as second argument to
390         diagnostic_set_last_function.
391         * diagnostic.c (diagnostic_report_current_function): Add second
392         argument, pass it as third argument to lang_hooks.print_error_function.
393         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
394         to diagnostic_report_current_function.
395         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
396         and message.abstract_origin.
397         (verbatim): Initialize abstract_origin.
398         * pretty-print.h (text_info): Add abstract_origin field.
399         * pretty-print.c (pp_base_format): Handle %K.
400         * langhooks.c (lhd_print_error_function): Add third argument.  If
401         diagnostic->abstract_origin, print virtual backtrace.
402         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
403         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
404         (init_dynamic_diag_info): Likewise.
405
406 2007-09-26  David Daney  <ddaney@avtrex.com>
407
408         PR target/33479
409         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
410         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
411         sync_old_nand<mode>, sync_new_nand<mode>,
412         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
413         Update length attributes.
414         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
415         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
416         length attributes.
417         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
418         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
419         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
420         post-loop sync.
421
422 2007-09-26  Richard Guenther  <rguenther@suse.de>
423
424         PR tree-optimization/33563
425         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
426         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
427         aggregate stores.
428         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
429         get_use_of_stmt_lhs.
430
431 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
432
433         PR c/25309
434         * c-common.c (complete_array_type): Diagnose too-large arrays and
435         set type to error_mark_node.
436
437 2007-09-26  Richard Guenther  <rguenther@suse.de>
438
439         PR tree-optimization/30375
440         PR tree-optimization/33560
441         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
442         with calls.
443
444         Revert
445         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
446
447         * tree-ssa-dse.c (aggregate_vardecl_d): New.
448         (dse_global_data): Add aggregate_vardecl field.
449         (dse_possible_dead_store_p): New.
450         Add prev_defvar variable.
451         Allow immediate uses and previous immediate uses to differ
452         if they are setting different parts of the whole.
453         (get_aggregate_vardecl): New.
454         (dse_record_partial_aggregate_store): New.
455         (dse_whole_aggregate_clobbered_p): New.
456         (dse_partial_kill_p): New.
457         Call dse_maybe_record_aggregate_store().
458         When checking whether a STMT and its USE_STMT refer to the
459         same memory address, check also for partial kills that clobber
460         the whole.
461         Move some variable definitions to the block where they are used.
462         (aggregate_vardecl_hash): New.
463         (aggregate_vardecl_eq): New.
464         (aggregate_vardecl_free): New.
465         (aggregate_whole_store_p): New.
466         (tree_ssa_dse): Initialize and free aggregate_vardecl.
467         Mark which aggregate stores we care about.
468
469 2007-09-25  DJ Delorie  <dj@redhat.com>
470
471         PR target/33551
472         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
473         XINT.
474
475 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
476
477         PR target/33524
478         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
479         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
480         for vector int32 -> int64 conversions.  Don't write beyond the end
481         of the allocated vector for int32 -> int64 conversions.
482
483 2007-09-25  Revital Eres  <eres@il.ibm.com>
484
485         * config/rs6000/paired.h (paired_sel): New.
486         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
487         (rs6000_expand_ternop_builtin): Pass zero const_double operand
488         when expanding selv2sf.
489         * config/rs6000/rs6000.h (rs6000_builtins): Add
490         PAIRED_BUILTIN_SELV2SF4.
491
492 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
493
494         PR c/32295
495         * c-typeck.c (default_conversion): Call require_complete_type
496         before perform_integral_promotions.
497         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
498         (build_c_cast): Call require_complete_type except for casts to
499         void types.
500         (convert_for_assignment): Call require_complete_type.
501
502 2007-09-25  Revital Eres  <eres@il.ibm.com>
503
504         * config/spu/spu.md: Fix doloop pattern.
505
506 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
507
508         * config/bfin/bfin.c (expand_prologue_reg_save,
509         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
510         ASTAT moved here...
511         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
512         ... from here.  New argument ALL; callers changed.
513         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
514         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
515         have the "saveall" attribute.
516
517 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
518
519         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
520         bogus target macro.
521         (INCOMING_REGNO, OUTGOING_REGNO): Define.
522         * config/mmix/mmix.c (mmix_opposite_regno): New function.
523         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
524
525         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
526         with REG_P tests before REGNO access.
527
528 2007-09-24  DJ Delorie  <dj@redhat.com>
529
530         PR target/31482
531         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
532         constraint.
533         (movqicc_<code>_<mode>): Likewise.
534         (movhicc_<code>_<mode>): Likewise.
535
536 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
537
538         PR target/33184
539         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
540         register for reload.
541
542 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
543
544         PR c++/14688
545         * config/i386/i386.c (ix86_comp_type_attributes): Check
546         METHOD_TYPE too.
547
548 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
549
550         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
551         "move.l %a4,%a4" to produce nops.
552         * config/m68k/m68k.c (override_options): Reset align options,
553         if neccessary align macro isn't avaible.
554
555 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
556
557         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
558
559 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
560
561         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
562         the basic block.
563         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
564         reload is completed.
565         (peephole pattern): Convert most of them to RTL peephole pattern.
566
567 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
568
569         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
570         (moved from fp compare patterns).
571         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
572         Cleanup predicates to relieve reload.
573         (conditional_trap): Reject conditional trap with fp condition.
574         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
575         certain constants early.
576
577 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
578
579         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
580
581 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
582
583         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
584         Allow --with-tune=cell and --with-cpu=cell.
585
586 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
587
588         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
589         * config/rs6000/rs6000.opt (swdiv): Change option to ...
590         (recip): this.
591         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
592         function.
593         (TARGET_BUILTIN_RECIPROCAL): Use it.
594         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
595         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
596         (rs6000_emit_swrsqrtsf): New.
597         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
598         rsqrtf. 
599         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
600         (divsf3): Remove swdiv support.
601         (recipsf3): New.
602         (rsqrtsf2): New.
603         (rsqrt_internal1): New.
604         (divdf3): Remove swdiv support.
605         (reciptdf3): New.
606
607 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
608
609         PR c++/33506
610         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
611         field.
612         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
613         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
614         * tree.c (type_hash_eq): For FUNCTION_TYPE use
615         lang_hooks.type.type_hash_eq in addition to generic tests.
616
617 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
618         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
619
620         * tree-inline.h (eni_weights): Add field target_builtin_cost to
621         reflect the cost per call to a target specific builtin.
622         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
623         call to a target specific builtin, then use target_builtin_call_cost.
624         (init_inline_once): Initialize target_builtin_call_cost field.
625
626 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
627
628         PR middle-end/33472
629         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
630         complex types.
631
632 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
633
634         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
635         * configure: Regenerated.
636
637 2007-09-23  Ollie Wild  <aaw@google.com>
638
639         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
640         operand.
641         (get_pointer_modulus_and_residue): New function.
642
643 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
644
645         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
646         combine an SC return value into a single register.
647
648 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
649
650         * opth-gen.awk (target_flags_explicit): Declare.
651         * toplev.h (target_flags_explicit): Delete declaration.
652         * toplev.c (target_flags): Likewise.
653         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
654         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
655         Never return true for TARGET_MIPS16.
656         * config/mips/mips.c (mips_llsc): Delete.
657         (mips_handle_option): Remove -mllsc handling.
658         (mips_strip_unspec_address): Tweak comment.
659         * config/mips/mips.opt (mllsc): Use a target mask.
660
661 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
662
663         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
664         word_mode as well as Pmode.
665
666 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
667
668         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
669         parameters from word_mode to the subword type if such a truncation
670         is not a no-op.
671
672 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
673
674         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
675         * configure: Regenerated.
676
677 2007-09-23  Jan Hubicka  <jh@suse.cz>
678
679         * params.def (INLINE_CALL_COST): Set to 12.
680         * invoke.texi (inline-call-cost): Update default value.
681
682 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
683
684         * config/alpha/alpha.md (movti): Use operand_subword for the split.
685
686 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
687             Revital Eres  <eres@il.ibm.com>
688
689         * modulo-sched.c (doloop_register_get): Rewrite the loop which
690         checks whether the count_reg is found outside the control part.
691
692 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
693
694         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
695         instead of checking CALL_EXPR_FN directly to test for builtins.
696         If error or warning attributes are present, print
697         error resp. warning.
698         * c-common.c (handle_error_attribute): New function.
699         (c_common_attribute_table): Add error and warning
700         attributes.
701         * doc/extend.texi: Document error and warning attributes.
702
703         * tree.h (block_nonartificial_location): New prototype.
704         * tree.c (block_nonartificial_location): New function.
705         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
706         if artificial attribute is present on abstract inline decl.
707         * c-common.c (handle_artificial_attribute): New function.
708         (c_common_attribute_table): Add artificial attribute.
709         * final.c (override_filename, override_linenum): New variables.
710         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
711         and override_linenum if inside of a block inlined from
712         __attribute__((__artificial__)) function.
713         (notice_source_line): Honor override_filename and override_linenum.
714         * doc/extend.texi: Document __attribute__((__artificial__)).
715         * config/i386/emmintrin.h: Add __artificial__ attribute to
716         all __always_inline__ functions.
717         * config/i386/mmintrin.h: Likewise.
718         * config/i386/tmmintrin.h: Likewise.
719         * config/i386/mm3dnow.h: Likewise.
720         * config/i386/pmmintrin.h: Likewise.
721         * config/i386/ammintrin.h: Likewise.
722         * config/i386/xmmintrin.h: Likewise.
723         * config/i386/smmintrin.h: Likewise.
724         * config/i386/bmmintrin.h: Likewise.
725         * config/i386/mmintrin-common.h: Likewise.
726
727         PR middle-end/28755
728         * expr.c (expand_constructor): New function.
729         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
730         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
731         CONSTRUCTOR.
732
733 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
734
735         * config/mips/mips.c (dump_constants_1): Generalize to include
736         fractional and accumulator modes.
737
738 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
739
740         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
741         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
742         flags for MIPS16.
743         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
744         TARGET_HARD_FLOAT when testing whether -mpaired-single is
745         supported.
746         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
747         TARGET_DSP.
748         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
749         TARGET_DSPR2.
750         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
751         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
752         TARGET_HARD_FLOAT.
753         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
754         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
755         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
756         throughout.
757         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
758         TARGET_HAS_DSPR2.
759         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
760         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
761         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
762
763 2007-09-22  Jason Merrill  <jason@redhat.com>
764
765         PR c++/19407
766         * attribs.c (lookup_attribute_spec): Split out...
767         (decl_attributes): From here.
768         * tree.h: Declare it.
769
770 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
771
772         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
773
774 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
775
776         * tree-inline.c (remap_type_1): Correctly chain variants.
777
778 2007-09-22  Richard Guenther  <rguenther@suse.de>
779
780         PR tree-optimization/33146
781         * fold-const.c (fold_binary): Use the original tree
782         for negating.
783         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
784         also changes "sign".
785
786 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
787
788         PR target/32325
789         * except.c (finish_eh_generation): Call commit_edge_insertions if
790         there are insns queued on the entry edge.
791         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
792         the entry edge.
793
794 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
795
796         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
797
798 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
799
800         * gcc/config/i386/i386.c: Delete trailing whitespace.
801         * gcc/config/i386/i386.h: Ditto.
802         * gcc/config/i386/bmmintrin.h: Ditto.
803         * gcc/config/i386/sync.md: Ditto.
804         * gcc/config/i386/ppro.md: Ditto.
805         * gcc/config/i386/mmx.md: Ditto.
806         * gcc/config/i386/constraints.md: Ditto.
807         * gcc/config/i386/sse.md: Ditto.
808         * gcc/config/i386/athlon.md: Ditto.
809         * gcc/config/i386/i386.md: Ditto.
810
811 2007-09-21  Richard Guenther  <rguenther@suse.de>
812
813         PR tree-optimization/33508
814         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
815         quadratic loop by keeping a bitmap of variables we have
816         to clobber all subvariables for.
817         (set_initial_properties): Likewise.
818
819 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
820
821         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
822
823 2007-09-20  Nigel Stephens  <nigel@mips.com>
824             Chao-ying Fu  <fu@mips.com>
825
826         * c-decl.c (finish_declspecs): When _Sat is used without
827         _Fract or _Accum, set the default type to cts_fract.
828         This avoids a warning of "type defaults to int".
829
830 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
831
832         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
833         bit-fields wider than one bit.
834
835 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
836
837         PR debug/33316
838         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
839         DECL_NAME.
840         * dbxout.c (dbxout_type): Likewise.
841
842         PR c/33238
843         PR c/27301
844         * gimplify.c (gimplify_vla_decl): New function.
845         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
846         Call it.
847         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
848
849 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
850
851         * doc/invoke.texi (-minterlink-mips16): Document.
852         * config/mips/mips.opt (minterlink-mips16): New option.
853         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
854         -minterlink-mips16
855
856 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
857
858         * doc/extend.texi (Attribute Syntax): Remove old speculative
859         future direction.
860
861 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
862
863         * combine.c: Include cgraph.h.
864         (setup_incoming_promotions): Rework to allow more aggressive
865         elimination of sign extensions when all call sites of the
866         current function are known to lie within the current unit.
867
868 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
869
870         * dse.c (find_shift_sequence): No-op rework of control flow.
871
872 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
873
874         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
875         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
876
877 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
878
879         * cfgexpand.c (dump_stack_var_partition): Use the correct
880         index for the offset.
881
882 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
883
884         * config/mips/sde.h: Switch to GPLv3.
885
886 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
887
888         * tree-sra.c (decide_block_copy): Decide if there are groups.
889
890 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
891
892         * config/m68k/m68k.c (output_move_himode): Remove jump table
893         recognition.
894         config/m68k/m68k.md (lea): Likewise.
895         * config/m68k/m68k.c (print_operand_address): Use simple pc
896         relative addressing.
897
898 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
899
900         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
901         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
902         default definition.
903         (asm_insn_count): Pass template as second argument to it.
904         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
905         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
906         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
907         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
908         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
909         (sh_insn_length_adjustment): Pass template as second argument to it.
910         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
911
912         * config/bfin/bfin.md (define_asm_attributes): New.
913
914 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
915
916         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
917         to tm_file.
918         * config/bfin/print-sysroot-suffix.sh: New.
919         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
920         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
921         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
922         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
923         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
924         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
925         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
926         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
927         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
928         (linux-sysroot-suffix.h): New target.
929         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
930         (mspecld-anomaly): Likewise.
931         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
932         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
933         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
934         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
935         (bfin_si_revision): Declare.
936         (bfin_workarounds): Declare.
937         (WA_SPECULATIVE_LOADS): Define.
938         (ENABLE_WA_SPECULATIVE_LOADS): Define.
939         (WA_SPECULATIVE_SYNCS): Define.
940         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
941         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
942         (LIB_SPEC): Add %s to the linker scripts.
943         Use proper linker script for bf522, bf525, bf527,
944         bf538, bf539, bf542, bf544, bf548, and bf549.
945         * config/bfin/bfin.c (bfin_si_revision): Define.
946         (bfin_workarounds): Define.
947         (struct bfin_cpu): New.
948         (bfin_cpus): New.
949         (bfin_handle_option): Handle silicon revision part of -mcpu option.
950         (override_options): Set bfin_workarounds.
951         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
952         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
953         ENABLE_WA_SPECULATIVE_LOADS.
954         (bfin_reorg): Likewise.
955         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
956         macros for bf522, bf525, bf527, bf538, bf539,
957         bf542, bf544, bf548, and bf549.
958         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
959         Don't define __ID_SHARED_LIB__ when -msep-data.
960         (TARGET_DEFAULT): Define as 0.
961         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
962         * doc/invoke.texi (Blackfin Options): Document silicon
963         revision part of -mcpu option and it now accepts bf522, bf525,
964         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
965
966 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
967
968         * alias.c (memory_modified_1): Deconstify.
969         (memory_modified_in_insn_p): Don't use const_note_stores.
970         * rtl.h (const_note_stores): Delete.
971         * rtlanal.c (const_note_stores): Likewise.
972
973 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
974
975         * dse.c (find_shift_sequence): Temporarily revert to forbidding
976         word shifts.
977
978 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
979
980         PR target/33388
981         PR target/33397
982         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
983         (addsi_small_int): Likewise.
984         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
985         (one_cmplsi2): Likewise.
986         (negsi2): Delete.
987         (enter_func): Expand insn using hard_frame_pointer_rtx and
988         stack_pointer_rtx.
989         (*enter_func): New.
990         * config/fr30/fr30.c (fr30_expand_prologue): Check for
991         hard_frame_pointer_rtx instead of using REGNO() check.
992         Properly sign extend GEN_INT() argument.
993
994 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
995
996         * config/m68k/m68k.c (override_options): Remove USE_GAS,
997         use %. syntax.
998         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
999         alternatives with just jcc.
1000         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
1001         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
1002         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
1003         dbge_hi, dbge_si): Likewise.
1004
1005 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1006
1007         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1008         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1009         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1010         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1011         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1012
1013 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1014
1015         * config/m68k/m68k-devices.def (51qe): New device.
1016         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
1017         to all uses of FL_FOR_isa_c for compatibility.
1018         (all_microarchs): Add cfv1 microarchitecture.
1019         (m68k_handle_option): Handle m51qe option.
1020         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1021         (TUNE_CFV1): New macro.
1022         (enum uarch_type): Add ucfv1.
1023         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1024         
1025 2007-09-18  Richard Guenther  <rguenther@suse.de>
1026
1027         PR tree-optimization/31863
1028         * tree-ssa-structalias.c (create_variable_info_for): Always
1029         free the fieldstack.
1030
1031 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
1032
1033         * opts.c (decode_options): Enable vectorization under -O3.
1034
1035 2007-09-18  Richard Guenther  <rguenther@suse.de>
1036
1037         PR tree-optimization/33340
1038         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1039         SSA_NAMEs that occur in abnormal PHI nodes.
1040
1041 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1042
1043         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1044         Don't use const_get_call_expr_in.
1045         * tree-gimple.c (const_get_call_expr_in): Delete.
1046         * tree-gimple.h (const_get_call_expr_in): Likewise.
1047
1048 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1049
1050         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1051         not yet have a basic block.
1052         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1053
1054 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1055
1056         * config/mips/mips.c (mips_file_start): Add ".previous" directives
1057         to both ".section"s.
1058
1059 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1060
1061         * config/mips/mips.c (mips_output_mi_thunk): Use
1062         mips_function_ok_for_sibcall and const_call_insn_operand
1063         to determine if a direct sibcall is allowed.  Use
1064         mips_classify_symbol to determine a global pointer is needed.
1065
1066 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1067
1068         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1069
1070 2007-09-17  Chao-ying Fu  <fu@mips.com>
1071             Nigel Stephens  <nigel@mips.com>
1072
1073         * config/fixed-bit.h: New file.
1074         * config/fixed-bit.c: New file.
1075         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1076
1077 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
1078
1079         * c-format.h (format_kind_info): Add alloc_char field.
1080         * c-format.c (scanf_flag_specs): Add 'm'.
1081         (scanf_flag_pairs): Add 'a', 'm' pair.
1082         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1083         (format_types_orig): Add alloc_char fields.
1084         (check_format_info_main): Rename aflag to alloc_flag.
1085         Handle fki->alloc_char. modifier after width and before length
1086         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
1087         length modifiers as well.
1088         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1089
1090         PR middle-end/33423
1091         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1092         returned by build_call_expr.
1093
1094 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1095
1096         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1097         NULL for variable-sized records too.
1098         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1099
1100 2007-09-17  Tom Tromey  <tromey@redhat.com>
1101
1102         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1103         (c_builtin_function): Likewise.
1104         (grokdeclarator): Likewise.
1105
1106 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
1107
1108         PR rtl-optimization/26449
1109         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1110         (seq_insns_valid_p): Removed.
1111
1112 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1113
1114         * tree-nomudflap.c (gate_mudflap): New static function.
1115         (pass_mudflap_1): Use it as gate function.
1116         (pass_mudflap_2): Likewise.
1117
1118 2007-09-17  Jan Hubicka  <jh@suse.cz>
1119
1120         PR middle-end/33348
1121         PR target/33406
1122         * loop-invariant.c (move_invariant_reg): Unshare sequence.
1123
1124 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
1125
1126         PR tree-optimization/33319
1127         * tree-vect-analyze.c (vect_same_range_drs): New.
1128         (vect_vfa_range_equal): New.
1129         (vect_is_duplicate_ddr): Removed.
1130         (vect_mark_for_runtime_alias_test): Do not perform marking when
1131         optimizing for size or max_param for alias checking is zero.
1132         Move the function before vect_analyze_data_ref_dependence.
1133         (vect_analyze_data_ref_dependence): Add call to
1134         vect_mark_for_runtime_alias_test in two cases when dependence
1135         is not clear.
1136         (vect_analyze_data_ref_dependences): Do not call to
1137         vect_mark_for_runtime_alias_test.
1138         (vect_prune_runtime_alias_test_list): New.
1139         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1140         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1141         Update vec_outside_cost.
1142         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1143         (vect_create_cond_for_alias_checks): Build the base address of data
1144         reference from DR_GROUP_FIRST_DR.
1145         (vect_loop_versioning): New.
1146         (vect_transform_loop): Add a call to vect_loop_versioning.
1147         Remove factored out code.
1148
1149 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1150
1151         PR middle-end/33273
1152         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1153         to BLKmode.
1154
1155 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1156
1157         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1158         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1159         Fix the call to insn_rtx_cost.  Skip access sizes that require a
1160         real truncation of the store register.  Use convert_move instead
1161         of gen_lowpart when narrowing the result.
1162         (replace_read): Use convert_move instead of gen_lowpart when
1163         narrowing the store rhs.
1164
1165 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1166
1167         * config/mips/mips.md (SHORT): Fix long line.
1168         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
1169         to QImode and HImode.
1170
1171 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1172
1173         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1174
1175 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
1176
1177         * tree-parloops.c: New file.
1178         * tree-ssa-operands.h (free_stmt_operands): Declare.
1179         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1180         block.
1181         * tree-pass.h (pass_parallelize_loops): Declare.
1182         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1183         virtual operands.
1184         (build_omp_regions_1): Allow analysing just a single OMP region and
1185         its subregions.
1186         ( build_omp_regions_root, omp_expand_local): New functions.
1187         (build_omp_regions): Add argument to build_omp_regions_1 call.
1188         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1189         autoparallelization is run.
1190         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1191         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1192         pass_parallelize_loops): New.
1193         * common.opt (ftree-parallelize-loops): New.
1194         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1195         parallelize_loops): Declare.
1196         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1197         * Makefile.in (tree-parloops.o): Added.
1198         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1199         New functions.
1200         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1201         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1202         one extra edge as well.
1203         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1204         Use VEC_free to free doms vector.
1205         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1206         operands.  Recompute operand caches in the new function.
1207         (move_sese_region_to_fn): Update loop info.
1208         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1209         * tree-ssa-operands.c (free_stmt_operands): New function.
1210
1211         * doc/passes.texi: Document autoparallelization.
1212         * doc/invoke.texi (-ftree-parallelize-loops): New option.
1213
1214 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1215
1216         PR target/33062
1217         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1218         TYPE_PRECISION.
1219
1220 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
1221
1222         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
1223         the VEC is not NULL.
1224         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
1225         get_vectype_for_scalar_type succeeded.
1226         (vectorizable_conversion): Likewise.
1227
1228 2007-09-14  Jan Hubicka  <jh@suse.cz>
1229
1230         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1231         TARGET_64BIT.
1232
1233 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
1234
1235         PR target/33438
1236         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1237         register when operands[2] equals operands[1].
1238         (remainderxf3): Ditto.
1239
1240 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
1241             Nigel Stephens  <nigel@mips.com>
1242
1243         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1244         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1245         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1246         declaration.
1247         (_Unwind_ForcedUnwind): Likewise.
1248         (_Unwind_Resume): Likewise.
1249         (_Unwind_Resume_or_Rethrow): Likewise.
1250         (_Unwind_Backtrace): Likewise.
1251         (_Unwind_SjLj_RaiseException): Likewise.
1252         (_Unwind_SjLj_ForcedUnwind): Likewise.
1253         (_Unwind_SjLj_Resume): Likewise.
1254         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1255         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1256         to definition.
1257         (_Unwind_ForcedUnwind): Likewise.
1258         (_Unwind_Resume): Likewise.
1259         (_Unwind_Resume_or_Rethrow): Likewise.
1260         (_Unwind_Backtrace): Likewise.
1261         * unwind-compat.c (_Unwind_Backtrace): Likewise.
1262         (_Unwind_ForcedUnwind): Likewise.
1263         (_Unwind_RaiseException): Likewise.
1264         (_Unwind_Resume): Likewise.
1265         (_Unwind_Resume_or_Rethrow): Likewise.
1266
1267         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1268         nomips16 mode when IN_LIBGCC2 with hard float.
1269
1270 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
1271
1272         * config/mips/sdemtk.opt: Update to GPLv3.
1273         * config/mips/sdemtk.h: Likewise.
1274
1275 2007-09-14  Nigel Stephens  <nigel@mips.com>
1276
1277         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1278         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
1279         for mipsisa32-*-linux*.
1280
1281 2007-09-14  Nigel Stephens  <nigel@mips.com>
1282             David Ung  <davidu@mips.com>
1283             Thiemo Seufer  <ths@mips.com>
1284             Richard Sandiford  <richard@codesourcery.com>
1285
1286         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1287         * configure.ac: Add a mipssde threading type.
1288         * configure: Regenerate.
1289         * config/mips/sdemtk.h: New file.
1290         * config/mips/t-sdemtk: Likewise.
1291         * config/mips/sdemtk.opt: Likewise.
1292         * gthr-mipssde.h: Likewise.
1293         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1294         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1295         (MIPS_ICACHE_SYNC): New macro, split from ...
1296         * config/mips/mips.md (clear_cache): ...here.
1297         * config/mips/mips.c (mips_save_reg_p): Check
1298         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1299         (build_mips16_function_stub): Use targetm.strip_name_encoding.
1300         (build_mips16_call_stub): Likewise.
1301
1302 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
1303
1304         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1305
1306 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
1307
1308         PR target/32337
1309         * config/ia64/ia64.c (find_gr_spill): Don't decrement
1310         current_frame_info.n_local_regs.  Don't return emitted local
1311         regs.
1312         (ia64_compute_frame_size): Improve unwind hack to put
1313         RP, PFS, FP in that order by allowing some of the registers
1314         been already emitted, as long as they are emitted to the
1315         desired register.
1316
1317 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1318
1319         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1320         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1321         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1322
1323 2007-09-13  Eric Christopher  <echristo@apple.com>
1324             Kenneth Zadeck <zadeck@naturalbridge.com>
1325
1326         * dse.c (find_shift_sequence): New function.
1327         (replace_read): Add case to remove read if it requires shift.
1328         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1329         
1330 2007-09-13  Tom Tromey  <tromey@redhat.com>
1331
1332         * c-common.c (fname_as_string): Update.
1333         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1334         (c_lex_one_token): Update.  Add 'parser' argument.
1335         (c_parser_simple_asm_expr): Update.
1336         (c_parser_attributes): Update.
1337         (c_parser_asm_statement): Update.
1338         (c_parser_asm_operands): Update.
1339         (c_parser_peek_token): Update.
1340         (c_parser_peek_2nd_token): Update.
1341         * c-lex.c (c_lex_string_translate): Remove.
1342         (c_lex_return_raw_strings): Likewise.
1343         (c_lex_with_flags): Added 'lex_flags' argument.
1344         (lex_string): Added 'translate' argument.
1345         * c-pragma.h (c_lex_with_flags): Update.
1346         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1347         (C_LEX_STRING_NO_TRANSLATE): New define.
1348         (C_LEX_RAW_STRINGS): Likewise.
1349
1350 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1351
1352         From Jie Zhang:
1353         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1354         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1355         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1356         (bfin_init_builtins): Initialize __builtin_bfin_ones,
1357         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1358         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1359         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1360         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1361         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1362         (bdesc_1arg): Add __builtin_bfin_ones.
1363         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1364         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1365         and __builtin_bfin_csqu_fr16.
1366         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1367         (ones): New define_insn.
1368         (ssaddhi3_parts): New define_insn.
1369         (sssubhi3_parts): New define_insn.
1370         (flag_mulhi_parts): New define_insn.
1371
1372 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
1373
1374         * common.opt (femit-class-debug-always): Turn off by default.
1375
1376 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1377
1378         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
1379         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
1380
1381 2007-09-13  James E. Wilson  <wilson@specifix.com>
1382
1383         PR tree-optimization/33389
1384         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
1385         then set build_loads before returning.
1386
1387 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
1388             David Ung  <davidu@mips.com>
1389
1390         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
1391         {d}addiu and a negative immediate such that it works with MIPS16
1392         instructions.
1393         
1394 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
1395
1396         PR bootstrap/33418
1397         * configure.ac (ld_vers): Support Linux linker.
1398         * configure: Regenerated.
1399
1400 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
1401             Sandra Loosemore <sandra@codesourcery.com>
1402
1403         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
1404         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
1405         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
1406         nomips16 into decl attributes.
1407         (TARGET_INSERT_ATTRIBUTES): Override.
1408         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
1409         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
1410         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
1411         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
1412         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
1413         (mips_use_mips16_mode_p): Reimplement as a function that takes
1414         a decl and considers only decl attributes.  If the decl is nested
1415         function, use its parent attributes.
1416         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
1417         instead of SYMBOL_REF_MIPS16_FUNC_P.
1418         (mips_set_mips16_mode): Move call to sorry here from old
1419         mips_use_mips16_mode_p.
1420         (mflip_mips16_entry): New structure.
1421         (mflip_mips16_htab): New variable.
1422         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
1423         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
1424         (mips_merge_decl_attributes): New function.
1425         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
1426         Use mips_use_mips16_mode_p.
1427         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
1428         SYMBOL_REF_MIPS16_FUNC_P.
1429         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
1430
1431 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
1432
1433         * c-parser.c (c_parser_struct_declaration): Check for a null return.
1434
1435 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1436
1437         PR driver/33309
1438         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
1439
1440 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
1441             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1442             Tony Linthicum  <tony.linthicum@amd.com>
1443
1444         * tree.h (function_args_iterator): New type to iterate over
1445         function arguments.
1446         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
1447         function arguments providing a pointer to the argument.
1448         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
1449         function arguments providing the argument.
1450         (function_args_iter_init): Inline function to initialize
1451         function_args_iterator.
1452         (function_args_iter_cond_ptr): Inline function to return the next
1453         pointer to hold the argument.
1454         (function_args_iter_cond): Inline function to return the next
1455         argument.
1456         (function_args_iter_cond_next): Advance the function args
1457         iterator.
1458         (stdarg_p): New function, return true if variable argument
1459         function.
1460         (prototype_p): New function, return true if function is
1461         prototyped.
1462         (function_args_count): New function, count the number of arguments
1463         of a function.
1464
1465         * tree.c (stdarg_p): New function, return true if variable
1466         argument function.
1467         (prototype_p): New function, return true if function is
1468         prototyped.
1469
1470         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
1471         (TARGET_ROUND): New macro for the round/ptest instructions which
1472         are shared between SSE4.1 and SSE5.
1473         (OPTION_MASK_ISA_ROUND): Ditto.
1474         (OPTION_ISA_ROUND): Ditto.
1475         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
1476         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
1477
1478         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
1479         (-mfused-madd): New switch to give users control over whether the
1480         compiler optimizes to use the multiply/add SSE5 instructions.
1481
1482         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
1483         m_ATHLON_K8_AMDFAM10, and change all uses.
1484         (enum pta_flags): Add PTA_SSE5.
1485         (ix86_handle_option): Turn off 3dnow if -msse5.
1486         (override_options): Add SSE5 support.
1487         (print_operand): %Y prints comparison codes for SSE5 com/pcom
1488         instructions.
1489         (ix86_expand_sse_movcc): Add SSE5 support.
1490         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
1491         vector type to the next largest size.
1492         (ix86_expand_sse5_pack): New function to use pperm to pack a
1493         vector type to the next smallest size.
1494         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
1495         (IX86_BUILTIN_FMADDSD): Ditto.
1496         (IX86_BUILTIN_FMADDPS): Ditto.
1497         (IX86_BUILTIN_FMADDPD): Ditto.
1498         (IX86_BUILTIN_FMSUBSS): Ditto.
1499         (IX86_BUILTIN_FMSUBSD): Ditto.
1500         (IX86_BUILTIN_FMSUBPS): Ditto.
1501         (IX86_BUILTIN_FMSUBPD): Ditto.
1502         (IX86_BUILTIN_FNMADDSS): Ditto.
1503         (IX86_BUILTIN_FNMADDSD): Ditto.
1504         (IX86_BUILTIN_FNMADDPS): Ditto.
1505         (IX86_BUILTIN_FNMADDPD): Ditto.
1506         (IX86_BUILTIN_FNMSUBSS): Ditto.
1507         (IX86_BUILTIN_FNMSUBSD): Ditto.
1508         (IX86_BUILTIN_FNMSUBPS): Ditto.
1509         (IX86_BUILTIN_FNMSUBPD): Ditto.
1510         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
1511         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
1512         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
1513         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
1514         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
1515         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
1516         (IX86_BUILTIN_PPERM): Ditto.
1517         (IX86_BUILTIN_PERMPS): Ditto.
1518         (IX86_BUILTIN_PERMPD): Ditto.
1519         (IX86_BUILTIN_PMACSSWW): Ditto.
1520         (IX86_BUILTIN_PMACSWW): Ditto.
1521         (IX86_BUILTIN_PMACSSWD): Ditto.
1522         (IX86_BUILTIN_PMACSWD): Ditto.
1523         (IX86_BUILTIN_PMACSSDD): Ditto.
1524         (IX86_BUILTIN_PMACSDD): Ditto.
1525         (IX86_BUILTIN_PMACSSDQL): Ditto.
1526         (IX86_BUILTIN_PMACSSDQH): Ditto.
1527         (IX86_BUILTIN_PMACSDQL): Ditto.
1528         (IX86_BUILTIN_PMACSDQH): Ditto.
1529         (IX86_BUILTIN_PMADCSSWD): Ditto.
1530         (IX86_BUILTIN_PMADCSWD): Ditto.
1531         (IX86_BUILTIN_PHADDBW): Ditto.
1532         (IX86_BUILTIN_PHADDBD): Ditto.
1533         (IX86_BUILTIN_PHADDBQ): Ditto.
1534         (IX86_BUILTIN_PHADDWD): Ditto.
1535         (IX86_BUILTIN_PHADDWQ): Ditto.
1536         (IX86_BUILTIN_PHADDDQ): Ditto.
1537         (IX86_BUILTIN_PHADDUBW): Ditto.
1538         (IX86_BUILTIN_PHADDUBD): Ditto.
1539         (IX86_BUILTIN_PHADDUBQ): Ditto.
1540         (IX86_BUILTIN_PHADDUWD): Ditto.
1541         (IX86_BUILTIN_PHADDUWQ): Ditto.
1542         (IX86_BUILTIN_PHADDUDQ): Ditto.
1543         (IX86_BUILTIN_PHSUBBW): Ditto.
1544         (IX86_BUILTIN_PHSUBWD): Ditto.
1545         (IX86_BUILTIN_PHSUBDQ): Ditto.
1546         (IX86_BUILTIN_PROTB): Ditto.
1547         (IX86_BUILTIN_PROTW): Ditto.
1548         (IX86_BUILTIN_PROTD): Ditto.
1549         (IX86_BUILTIN_PROTQ): Ditto.
1550         (IX86_BUILTIN_PROTB_IMM): Ditto.
1551         (IX86_BUILTIN_PROTW_IMM): Ditto.
1552         (IX86_BUILTIN_PROTD_IMM): Ditto.
1553         (IX86_BUILTIN_PROTQ_IMM): Ditto.
1554         (IX86_BUILTIN_PSHLB): Ditto.
1555         (IX86_BUILTIN_PSHLW): Ditto.
1556         (IX86_BUILTIN_PSHLD): Ditto.
1557         (IX86_BUILTIN_PSHLQ): Ditto.
1558         (IX86_BUILTIN_PSHAB): Ditto.
1559         (IX86_BUILTIN_PSHAW): Ditto.
1560         (IX86_BUILTIN_PSHAD): Ditto.
1561         (IX86_BUILTIN_PSHAQ): Ditto.
1562         (IX86_BUILTIN_FRCZSS): Ditto.
1563         (IX86_BUILTIN_FRCZSD): Ditto.
1564         (IX86_BUILTIN_FRCZPS): Ditto.
1565         (IX86_BUILTIN_FRCZPD): Ditto.
1566         (IX86_BUILTIN_CVTPH2PS): Ditto.
1567         (IX86_BUILTIN_CVTPS2PH): Ditto.
1568         (IX86_BUILTIN_COMEQSS): Ditto.
1569         (IX86_BUILTIN_COMNESS): Ditto.
1570         (IX86_BUILTIN_COMLTSS): Ditto.
1571         (IX86_BUILTIN_COMLESS): Ditto.
1572         (IX86_BUILTIN_COMGTSS): Ditto.
1573         (IX86_BUILTIN_COMGESS): Ditto.
1574         (IX86_BUILTIN_COMUEQSS): Ditto.
1575         (IX86_BUILTIN_COMUNESS): Ditto.
1576         (IX86_BUILTIN_COMULTSS): Ditto.
1577         (IX86_BUILTIN_COMULESS): Ditto.
1578         (IX86_BUILTIN_COMUGTSS): Ditto.
1579         (IX86_BUILTIN_COMUGESS): Ditto.
1580         (IX86_BUILTIN_COMORDSS): Ditto.
1581         (IX86_BUILTIN_COMUNORDSS): Ditto.
1582         (IX86_BUILTIN_COMFALSESS): Ditto.
1583         (IX86_BUILTIN_COMTRUESS): Ditto.
1584         (IX86_BUILTIN_COMEQSD): Ditto.
1585         (IX86_BUILTIN_COMNESD): Ditto.
1586         (IX86_BUILTIN_COMLTSD): Ditto.
1587         (IX86_BUILTIN_COMLESD): Ditto.
1588         (IX86_BUILTIN_COMGTSD): Ditto.
1589         (IX86_BUILTIN_COMGESD): Ditto.
1590         (IX86_BUILTIN_COMUEQSD): Ditto.
1591         (IX86_BUILTIN_COMUNESD): Ditto.
1592         (IX86_BUILTIN_COMULTSD): Ditto.
1593         (IX86_BUILTIN_COMULESD): Ditto.
1594         (IX86_BUILTIN_COMUGTSD): Ditto.
1595         (IX86_BUILTIN_COMUGESD): Ditto.
1596         (IX86_BUILTIN_COMORDSD): Ditto.
1597         (IX86_BUILTIN_COMUNORDSD): Ditto.
1598         (IX86_BUILTIN_COMFALSESD): Ditto.
1599         (IX86_BUILTIN_COMTRUESD): Ditto.
1600         (IX86_BUILTIN_COMEQPS): Ditto.
1601         (IX86_BUILTIN_COMNEPS): Ditto.
1602         (IX86_BUILTIN_COMLTPS): Ditto.
1603         (IX86_BUILTIN_COMLEPS): Ditto.
1604         (IX86_BUILTIN_COMGTPS): Ditto.
1605         (IX86_BUILTIN_COMGEPS): Ditto.
1606         (IX86_BUILTIN_COMUEQPS): Ditto.
1607         (IX86_BUILTIN_COMUNEPS): Ditto.
1608         (IX86_BUILTIN_COMULTPS): Ditto.
1609         (IX86_BUILTIN_COMULEPS): Ditto.
1610         (IX86_BUILTIN_COMUGTPS): Ditto.
1611         (IX86_BUILTIN_COMUGEPS): Ditto.
1612         (IX86_BUILTIN_COMORDPS): Ditto.
1613         (IX86_BUILTIN_COMUNORDPS): Ditto.
1614         (IX86_BUILTIN_COMFALSEPS): Ditto.
1615         (IX86_BUILTIN_COMTRUEPS): Ditto.
1616         (IX86_BUILTIN_COMEQPD): Ditto.
1617         (IX86_BUILTIN_COMNEPD): Ditto.
1618         (IX86_BUILTIN_COMLTPD): Ditto.
1619         (IX86_BUILTIN_COMLEPD): Ditto.
1620         (IX86_BUILTIN_COMGTPD): Ditto.
1621         (IX86_BUILTIN_COMGEPD): Ditto.
1622         (IX86_BUILTIN_COMUEQPD): Ditto.
1623         (IX86_BUILTIN_COMUNEPD): Ditto.
1624         (IX86_BUILTIN_COMULTPD): Ditto.
1625         (IX86_BUILTIN_COMULEPD): Ditto.
1626         (IX86_BUILTIN_COMUGTPD): Ditto.
1627         (IX86_BUILTIN_COMUGEPD): Ditto.
1628         (IX86_BUILTIN_COMORDPD): Ditto.
1629         (IX86_BUILTIN_COMUNORDPD): Ditto.
1630         (IX86_BUILTIN_COMFALSEPD): Ditto.
1631         (IX86_BUILTIN_COMTRUEPD): Ditto.
1632         (IX86_BUILTIN_PCOMEQUB): Ditto.
1633         (IX86_BUILTIN_PCOMNEUB): Ditto.
1634         (IX86_BUILTIN_PCOMLTUB): Ditto.
1635         (IX86_BUILTIN_PCOMLEUB): Ditto.
1636         (IX86_BUILTIN_PCOMGTUB): Ditto.
1637         (IX86_BUILTIN_PCOMGEUB): Ditto.
1638         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
1639         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
1640         (IX86_BUILTIN_PCOMEQUW): Ditto.
1641         (IX86_BUILTIN_PCOMNEUW): Ditto.
1642         (IX86_BUILTIN_PCOMLTUW): Ditto.
1643         (IX86_BUILTIN_PCOMLEUW): Ditto.
1644         (IX86_BUILTIN_PCOMGTUW): Ditto.
1645         (IX86_BUILTIN_PCOMGEUW): Ditto.
1646         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
1647         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
1648         (IX86_BUILTIN_PCOMEQUD): Ditto.
1649         (IX86_BUILTIN_PCOMNEUD): Ditto.
1650         (IX86_BUILTIN_PCOMLTUD): Ditto.
1651         (IX86_BUILTIN_PCOMLEUD): Ditto.
1652         (IX86_BUILTIN_PCOMGTUD): Ditto.
1653         (IX86_BUILTIN_PCOMGEUD): Ditto.
1654         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
1655         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
1656         (IX86_BUILTIN_PCOMEQUQ): Ditto.
1657         (IX86_BUILTIN_PCOMNEUQ): Ditto.
1658         (IX86_BUILTIN_PCOMLTUQ): Ditto.
1659         (IX86_BUILTIN_PCOMLEUQ): Ditto.
1660         (IX86_BUILTIN_PCOMGTUQ): Ditto.
1661         (IX86_BUILTIN_PCOMGEUQ): Ditto.
1662         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
1663         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
1664         (IX86_BUILTIN_PCOMEQB): Ditto.
1665         (IX86_BUILTIN_PCOMNEB): Ditto.
1666         (IX86_BUILTIN_PCOMLTB): Ditto.
1667         (IX86_BUILTIN_PCOMLEB): Ditto.
1668         (IX86_BUILTIN_PCOMGTB): Ditto.
1669         (IX86_BUILTIN_PCOMGEB): Ditto.
1670         (IX86_BUILTIN_PCOMFALSEB): Ditto.
1671         (IX86_BUILTIN_PCOMTRUEB): Ditto.
1672         (IX86_BUILTIN_PCOMEQW): Ditto.
1673         (IX86_BUILTIN_PCOMNEW): Ditto.
1674         (IX86_BUILTIN_PCOMLTW): Ditto.
1675         (IX86_BUILTIN_PCOMLEW): Ditto.
1676         (IX86_BUILTIN_PCOMGTW): Ditto.
1677         (IX86_BUILTIN_PCOMGEW): Ditto.
1678         (IX86_BUILTIN_PCOMFALSEW): Ditto.
1679         (IX86_BUILTIN_PCOMTRUEW): Ditto.
1680         (IX86_BUILTIN_PCOMEQD): Ditto.
1681         (IX86_BUILTIN_PCOMNED): Ditto.
1682         (IX86_BUILTIN_PCOMLTD): Ditto.
1683         (IX86_BUILTIN_PCOMLED): Ditto.
1684         (IX86_BUILTIN_PCOMGTD): Ditto.
1685         (IX86_BUILTIN_PCOMGED): Ditto.
1686         (IX86_BUILTIN_PCOMFALSED): Ditto.
1687         (IX86_BUILTIN_PCOMTRUED): Ditto.
1688         (IX86_BUILTIN_PCOMEQQ): Ditto.
1689         (IX86_BUILTIN_PCOMNEQ): Ditto.
1690         (IX86_BUILTIN_PCOMLTQ): Ditto.
1691         (IX86_BUILTIN_PCOMLEQ): Ditto.
1692         (IX86_BUILTIN_PCOMGTQ): Ditto.
1693         (IX86_BUILTIN_PCOMGEQ): Ditto.
1694         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
1695         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
1696         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
1697         OPTION_MASK_ISA_ROUND for instructions that are shared between
1698         SSE4.1 and SSE5.
1699         (bdesc_2arg): Ditto.
1700         (bdesc_sse_3arg): Ditto.
1701         (enum multi_arg_type): New enum for describing the various SSE5
1702         intrinsic argument types.
1703         (bdesc_multi_arg): New table for SSE5 intrinsics.
1704         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
1705         (ix86_expand_multi_arg_builtin): New function for creating SSE5
1706         intrinsics.
1707         (ix86_expand_builtin): Add SSE5 intrinsic support.
1708         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
1709         operand instructions.
1710         (ix86_expand_sse5_multiple_memory): New function to split the
1711         second memory reference from SSE5 instructions.
1712         (type_has_variadic_args_p): Delete in favor of stdarg_p.
1713         (ix86_return_pops_args): Use stdarg_p to determine if the function
1714         has variable arguments.
1715         (ix86_setup_incoming_varargs): Ditto.
1716         (x86_this_parameter): Ditto.
1717
1718         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
1719         declaration.
1720         (ix86_expand_sse5_pack): Ditto.
1721         (ix86_sse5_valid_op_p): Ditto.
1722         (ix86_expand_sse5_multiple_memory): Ditto.
1723
1724         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
1725         constant for SSE5 support.
1726         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
1727         (UNSPEC_SSE5_TRUEFALSE): Ditto.
1728         (UNSPEC_SSE5_PERMUTE): Ditto.
1729         (UNSPEC_SSE5_ASHIFT): Ditto.
1730         (UNSPEC_SSE5_LSHIFT): Ditto.
1731         (UNSPEC_FRCZ): Ditto.
1732         (UNSPEC_CVTPH2PS): Ditto.
1733         (UNSPEC_CVTPS2PH): Ditto.
1734         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
1735         (PCOM_TRUE): Ditto.
1736         (COM_FALSE_S): Ditto.
1737         (COM_FALSE_P): Ditto.
1738         (COM_TRUE_S): Ditto.
1739         (COM_TRUE_P): Ditto.
1740         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
1741         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
1742         types.
1743         (memory attribute): Ditto.
1744         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1745         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
1746         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
1747         (floor<mode>2): Ditto.
1748         (ceil<mode>2): Ditto.
1749         (btrunc<mode>2): Ditto.
1750         (nearbyintdf2): Ditto.
1751         (nearbyintsf2): Ditto.
1752         (sse_setccsf): Disable if SSE5.
1753         (sse_setccdf): Ditto.
1754         (sse5_setcc<mode>): New support for SSE5 conditional move.
1755         (sse5_pcmov_<mode>): Ditto.
1756
1757         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
1758         (SSEMODEF4): Ditto.
1759         (SSEMODEF2P): Ditto.
1760         (ssemodesuffixf4): New mode attribute for SSE5.
1761         (ssemodesuffixf2s): Ditto.
1762         (ssemodesuffixf2c): Ditto.
1763         (sserotatemax): Ditto.
1764         (ssescalarmode): Ditto.
1765         (sse_maskcmpv4sf3): Disable if SSE5.
1766         (sse_maskcmpv2df3): Ditto.
1767         (sse_vmmaskcmpv4sf3): Ditto.
1768         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
1769         instructions.
1770         (sse5_vmfmadd<mode>4): Ditto.
1771         (sse5_fmsub<mode>4): Ditto.
1772         (sse5_vmfmsub<mode>4): Ditto.
1773         (sse5_fnmadd<mode>4): Ditto.
1774         (sse5_vmfnmadd<mode>4): Ditto.
1775         (sse5_fnmsub<mode>4): Ditto.
1776         (sse5_vmfnmsub<mode>4): Ditto.
1777         (sse5i_fmadd<mode>4): Ditto.
1778         (sse5i_fmsub<mode>4): Ditto.
1779         (sse5i_fnmadd<mode>4): Ditto.
1780         (sse5i_fnmsub<mode>4): Ditto.
1781         (sse5i_vmfmadd<mode>4): Ditto.
1782         (sse5i_vmfmsub<mode>4): Ditto.
1783         (sse5i_vmfnmadd<mode>4): Ditto.
1784         (sse5i_vmfnmsub<mode>4): Ditto.
1785         (mulv16qi3): Add SSE5 support.
1786         (mulv4si3): Ditto.
1787         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
1788         (sse2_mulv4si3): Disable if SSE5.
1789         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
1790         (sse4_1_roundps): Ditto.
1791         (sse4_1_roundsd): Ditto.
1792         (sse4_1_roundss): Ditto.
1793         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
1794         be generated.
1795         (sse_maskcmpsf3): Ditto.
1796         (sse_vmmaskcmpv4sf3): Ditto.
1797         (sse2_maskcmpv2df3): Ditto.
1798         (sse2_maskcmpdf3): Ditto.
1799         (sse2_vmmaskcmpv2df3): Ditto.
1800         (sse2_eq<mode>3): Ditto.
1801         (sse2_gt<mode>3): Ditto.
1802         (sse5_pcmov_<mode>): Add SSE5 support.
1803         (vec_unpacku_hi_v16qi): Ditto.
1804         (vec_unpacks_hi_v16qi): Ditto.
1805         (vec_unpacku_lo_v16qi): Ditto.
1806         (vec_unpacks_lo_v16qi): Ditto.
1807         (vec_unpacku_hi_v8hi): Ditto.
1808         (vec_unpacks_hi_v8hi): Ditto.
1809         (vec_unpacku_lo_v8hi): Ditto.
1810         (vec_unpacks_lo_v8hi): Ditto.
1811         (vec_unpacku_hi_v4si): Ditto.
1812         (vec_unpacks_hi_v4si): Ditto.
1813         (vec_unpacku_lo_v4si): Ditto.
1814         (vec_unpacks_lo_v4si): Ditto.
1815         (sse5_pmacsww): New SSE5 intrinsic insn.
1816         (sse5_pmacssww): Ditto.
1817         (sse5_pmacsdd): Ditto.
1818         (sse5_pmacssdd): Ditto.
1819         (sse5_pmacssdql): Ditto.
1820         (sse5_pmacssdqh): Ditto.
1821         (sse5_pmacsdqh): Ditto.
1822         (sse5_pmacsswd): Ditto.
1823         (sse5_pmacswd): Ditto.
1824         (sse5_pmadcsswd): Ditto.
1825         (sse5_pmadcswd): Ditto.
1826         (sse5_pcmov_<move>): Conditional move support on SSE5.
1827         (sse5_phaddbw): New SSE5 intrinsic insn.
1828         (sse5_phaddbd): Ditto.
1829         (sse5_phaddbq): Ditto.
1830         (sse5_phaddwd): Ditto.
1831         (sse5_phaddwq): Ditto.
1832         (sse5_phadddq): Ditto.
1833         (sse5_phaddubw): Ditto.
1834         (sse5_phaddubd): Ditto.
1835         (sse5_phaddubq): Ditto.
1836         (sse5_phadduwd): Ditto.
1837         (sse5_phadduwq): Ditto.
1838         (sse5_phaddudq): Ditto.
1839         (sse5_phsubbw): Ditto.
1840         (sse5_phsubwd): Ditto.
1841         (sse5_phsubdq): Ditto.
1842         (sse5_pperm): Ditto.
1843         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
1844         (sse5_pperm_zero_v16qi_v8hi): Ditto.
1845         (sse5_pperm_sign_v8hi_v4si): Ditto.
1846         (sse5_pperm_zero_v8hi_v4si): Ditto.
1847         (sse5_pperm_sign_v4si_v2di): Ditto.
1848         (sse5_pperm_sign_v4si_v2di): Ditto.
1849         (sse5_pperm_pack_v2di_v4si): Ditto.
1850         (sse5_pperm_pack_v4si_v8hi): Ditto.
1851         (sse5_pperm_pack_v8hi_v16qi): Ditto.
1852         (sse5_perm<mode>): New SSE5 intrinsic insn.
1853         (rotl<mode>3): Ditto.
1854         (sse5_rotl<mode>3): Ditto.
1855         (sse5_ashl<mode>3): Ditto.
1856         (sse5_lshl<mode>3): Ditto.
1857         (sse5_frcz<mode>2): Ditto.
1858         (sse5s_frcz<mode>2): Ditto.
1859         (sse5_cvtph2ps): Ditto.
1860         (sse5_cvtps2ph): Ditto.
1861         (sse5_vmmaskcmp<mode>3): Ditto.
1862         (sse5_com_tf<mode>3): Ditto.
1863         (sse5_maskcmp<mode>3): Ditto.
1864         (sse5_maskcmp_uns<mode>3): Ditto.
1865         (sse5_maskcmp_uns2<mode>3): Ditto.
1866         (sse5_pcom_tf<mode>3): Ditto.
1867         
1868         * config/i386/predicates.md (const_0_to_31_operand): New predicate
1869         to match 0..31.
1870         (sse5_comparison_float_operator): New predicate to match the
1871         comparison operators supported by the SSE5 com instruction.
1872         (ix86_comparison_int_operator): New predicate to match just the
1873         signed int comparisons.
1874         (ix86_comparison_uns_operator): New predicate to match just the
1875         unsigned int comparisons.
1876
1877         * doc/invoke.texi (-msse5): Add documentation.
1878         (-mfused-madd): Ditto.
1879
1880         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
1881
1882         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
1883         mmintrin-common.h.
1884         (x86_64-*-*): Ditto.
1885
1886         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
1887
1888         * config/i386/bmmintrin.h: New file, provide common x86 compiler
1889         intrinisics for SSE5.
1890
1891         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
1892         mmintrin-common.h.
1893
1894         * config/i386/mmintrin-common.h: New file, to contain common
1895         instructions between SSE4.1 and SSE5.
1896
1897         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
1898         FOREACH_FUNCTION_ARGS to iterate over the argument list.
1899         (gen_regparm_prefix): Ditto.
1900
1901         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
1902         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
1903         prototype_p to determine if a function is prototyped.
1904
1905 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
1906
1907         * config/dfp-bit.c (dfp_conversion_exception): New function.
1908         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
1909         (DFP_TO_INT): Ditto.
1910         (INT_TO_DFP): Ditto.
1911         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
1912
1913 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
1914
1915         PR target/32338
1916         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
1917         before sp restoration even when total_size is 0, but
1918         frame_pointer_needed.
1919
1920 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
1921
1922         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
1923         (xtensa_copy_incoming_a7): Use start_sequence instead of
1924         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
1925         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
1926         of the saveregs sequence.
1927
1928 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
1929
1930         * c-tree.h (grokfield): Add a "tree *" argument.
1931         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
1932         Chain nested decl attributes to it.  Don't call decl_attributes here.
1933         (groktypename): Pass grokdeclarator a pointer to the attribute list.
1934         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
1935         (grokfield): Take a pointer to the decl's attributes and pass
1936         it to grokdeclarator.
1937         * c-parser.c (c_parser_struct_declaration): Update the calls to
1938         grokfield.  Call decl_attributes for anonymous struct and union
1939         fields.
1940
1941 2007-09-12  Jan Hubicka  <jh@suse.cz>
1942
1943         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
1944
1945 2007-09-12  Ira Rosen  <irar@il.ibm.com>
1946
1947         PR tree-optimization/32377
1948         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
1949         between positive and negative dependence distance using DDR_REVERSED_P.
1950
1951 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
1952
1953         PR tree-optimization/33373
1954         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
1955         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
1956
1957 2007-09-12  Jan Hubicka  <jh@suse.cz>
1958
1959         PR target/33393
1960         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
1961         for !SSE_MATH
1962
1963 2007-09-12  Christian Bruel  <christian.bruel@st.com>
1964
1965         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
1966         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
1967         
1968 2007-09-12  Ira Rosen  <irar@il.ibm.com>
1969
1970         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
1971         for oprnd1 if not required.
1972         (vectorizable_operation): Use scalar operand in SLP in case of 
1973         shift with scalar argument.
1974
1975 2007-09-12  Ira Rosen  <irar@il.ibm.com>
1976
1977         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
1978         to 1.
1979
1980 2007-09-11  James E. Wilson  <wilson@specifix.com>
1981
1982         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
1983         TARGET_UNWIND_INFO is defined.
1984         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
1985         after definition.
1986
1987 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1988
1989         * config/sh/sh.c (calc_live_regs): Use
1990         current_function_saves_all_registers instead of
1991         current_function_has_nonlocal_label.
1992         (sh_allocate_initial_value): Likewise.
1993         (sh_get_pr_initial_val): Likewise.
1994         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
1995         * config/sh/sh.md (load_ra): Likewise.
1996
1997 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
1998
1999         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
2000
2001         PR target/33360
2002         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
2003         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2004
2005 2007-09-12  Sa Liu  <saliu@de.ibm.com>
2006
2007         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2008         operands to DFmode GE or LE compares.
2009
2010 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2011
2012         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2013         REG_CLASS_NAMES): Add P0REGS.
2014         (REGNO_REG_CLASS): Return it where appropriate.
2015         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2016         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2017         * doc/md.texi (Blackfin family): Document 'q' constraints.
2018
2019 2007-09-11  Steve Kenton  <skenton@ou.edu>
2020
2021         * pa/linux-unwind.h: Guard with inhibit_libc.
2022         * pa/hpux-unwind.h: Likewise.
2023
2024 2007-09-11  David Daney  <ddaney@avtrex.com>
2025
2026         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2027         * doc/install.texi: Document new --with-llsc and --without-llsc
2028         options.
2029         * config.gcc: Handle --with-llsc and --without-llsc configure options.
2030         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2031         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
2032         ISA_HAS_SYNC.
2033         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2034         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2035         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2036         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2037         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2038         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2039         * config/mips/mips.opt (mllsc): New option.
2040         * config/mips/mips.c (mips_llsc): Define variable.
2041         (mips_handle_option): Handle mllsc option.
2042         (override_options): Set mips_print_operand_punct for '|' and '-'.
2043         (print_operand): Add new %| and %- operand codes.
2044         * config/mips/mips.h (mips_llsc_setting): New enum type.
2045         (mips_llsc): Declare.
2046         (OPTION_DEFAULT_SPECS): Add llsc handling.
2047         (GENERATE_SYNC): New macro.
2048         (GENERATE_LL_SC): New macro.
2049         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2050         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2051         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2052         in %| and %- operand codes.
2053
2054 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
2055
2056         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2057         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2058
2059 2007-09-11  Jason Merrill  <jason@redhat.com>
2060
2061         PR middle-end/27945
2062         * stor-layout.c (layout_decl): Do pack variable size fields.    
2063
2064 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
2065
2066         * config/m68k/predicates.md (movsi_const0_operand,
2067         non_symbolic_call_operand): New predicates.
2068
2069         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2070         New constraints.
2071         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2072         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2073         CW, CZ, CS, Ap and Ac.
2074
2075         * config/m68k/m68k.md (UNSPEC_IB): New constant.
2076         (constraints.md): New include.
2077         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2078         opx_mem, opy_mem, op_mem, guess, split): New attributes.
2079         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
2080         Specify attributes.
2081         (pushdi): Add split.
2082         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
2083         attributes.  Split tstsi_internal_68020_cf from it.
2084         (tstsi_internal_68020_cf): New pattern.
2085         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
2086         (tst<mode>_cf): Specify attributea.
2087         (cmpsi_cf): Name pattern.  Specify attributes.
2088         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2089         (pushexthisi_const): Fix to use alternatives.  Specify
2090         attributes.
2091         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2092         from it.  Fix to use alternatives.  Specify attributes.
2093         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2094         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
2095         attributes.
2096         (movsf_cf_soft): Specify attributes.
2097         (movdf_cf_soft): Add split.
2098         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2099         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2100         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2101         (truncdfsf2_68881): Name pattern.  Specify attributes.
2102         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2103         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2104         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2105         Specify attributes.
2106         (addsi3_5200): Fix to use alternatives.  Specify attributes.
2107         Add splits.
2108         (add<mode>3_cf, subdi_dishl32): Specify attributes.
2109         (subsi3): Add alternative for subq.l.  Specify attributes.
2110         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2111         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
2112         attributes.
2113         (umulhisi3): Specify attributes.
2114         (mulhisisi3_z): Name pattern.  Specify attributes.
2115         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2116         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2117         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2118         bsetmemqi): Specify attributes.
2119         (bsetmemqi_ext): Name pattern.  Specify attributes.
2120         (bclrmemqi): Specify attributes.
2121         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
2122         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2123         attributes.
2124         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2125         pattern.  Specify attributes.
2126         (jump): Specify attributes.
2127         (tablejump_internal): Name pattern.  Specify attributes.
2128         (call_value): Split into non_symbolic_call_value,
2129         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
2130         alternatives.  Specify attributes.
2131         (non_symbolic_call_value, symbolic_call_value_jsr,
2132         symbolic_call_value_bsr): New patterns.
2133         (nop, return, unlink, indirect_jump): Specify attributes.
2134         (trap): Fix condition.  Specify attributes.
2135         (ib): New pattern.
2136
2137         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2138         (override_options): Initialize it.  Initialize m68k_sched_cpu.
2139         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2140         (const_method): Make global, rename to m68k_const_method.
2141         (const_int_cost, output_move_const_into_data_reg): Update.
2142         (output_move_double): Parametrize to emit rtl code, rename to
2143         handle_move_double.
2144         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2145         emit_movsi): New static functions.
2146         (output_move_double): New function with semantics of old
2147         output_move_double.
2148         (m68k_emit_move_double): New function.
2149         (m68k_sched_cpu): New variable.
2150         (attr_op_type): New enum.
2151         (sched_guess_p): New variable.
2152         (sched_address_type, sched_operand_type, sched_attr_op_type):
2153         New static functions.
2154         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2155         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2156         (sched_branch_type): New static variable.
2157         (m68k_sched_branch_type): New function.
2158         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2159         (m68k_symbolic_call_var): Declare.
2160         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
2161         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2162         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2163         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2164         Declare.
2165
2166 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
2167
2168         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2169         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2170         error if __builtin_va_arg_pack_len () wasn't optimized out during
2171         inlining.
2172         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2173         with the number of inline's anonymous arguments.
2174         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2175
2176 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
2177
2178         * fold-const.c (extract_muldiv_1): Do not simplify
2179         var * c * c to var.
2180
2181 2007-09-11  Jan Hubicka <jh@suse.cz>
2182
2183         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2184         (TARGET_INTER_UNIT_CONVERSIONS): New.
2185         * i386.md (floatsi expanders): Remove redundant check for SImode
2186         source; offload to memory when asked for.
2187         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2188         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2189         Update conditions;
2190         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2191         floatsidf2_mixed_memory, floatsidf2_sse_memory
2192         floatdisf2_mixed_memory, floatsisf2_sse_memory,
2193         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2194
2195 2007-09-11  Jan Hubicka <jh@suse.cz>
2196
2197         * toplev.c (process_options): all frontends now do unit-at-a-time.
2198         * cgraphunit.c: update comments.
2199         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2200         * c-decl.c (finish_function): use cgraph_add_new_function.
2201         * function.c (expand_function_end): We are always unit-at-a-time.
2202
2203 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2204
2205         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2206         settings for MIPS16.
2207         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2208
2209 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2210
2211         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2212         SYMBOL_FORCE_TO_MEM constants.
2213         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2214         (mips16_rewrite_pool_refs_info): New structure.
2215         (mips16_rewrite_pool_constant): New function, split out from...
2216         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
2217         mips16_rewrite_pool_refs_info structure rather than a pointer
2218         to a constant pool.  Force force_to_mem_operands into memory.
2219         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2220         * config/mips/predicates.md (force_to_mem_operand): New predicate.
2221         * config/mips/constraints.md (kf): New constraint.
2222         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2223         (*movsi_mips16): Likewise.
2224
2225 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2226             Nigel Stephens  <nigel@mips.com>
2227             David Ung  <davidu@mips.com>
2228
2229         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2230         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2231         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2232         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2233         (mips_zero_extend_cost): New functions.
2234         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2235         Use the new functions.  Tweak many cost estimates, both here
2236         and in the new subroutines.  Return false when the cost of the
2237         operands has not been calculated.  Check for *clear_upper32.
2238         Check for floating-point multiply-add, reciprocal and rsqrt
2239         patterns.  Handle comparison and rotation codes.
2240
2241 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
2242
2243         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2244         override default.
2245         * config/i386/i386.c (get_dllimport_decl): Don't strip
2246         FASTCALL_PREFIX.
2247
2248 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2249
2250         PR c/30013
2251         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2252         declarations to top.
2253         (DFP_TO_BFP): Use for either XFmode or TFmode.
2254         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2255         of BFP_VIA_TYPE.
2256         * config/dfp-bit.h: Include float.h.
2257         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2258         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2259         which doesn't mean the same thing.
2260         (BFP_KIND): Use 4 to mean TFmode.
2261         (BFP_FMT): Specify the number of decimal digits based on the
2262         number of mantissa digits.
2263         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2264         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2265         (STR_TO_BFP): Use strtold for XFmode or TFmode.
2266         (TFtype): Define if TFmode is supported.
2267         * doc/libgcc.texi (Decimal float library routines): Document
2268         TF conversion functions.
2269
2270 2007-09-10  Chao-ying Fu  <fu@mips.com>
2271
2272         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2273         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2274         (mips_emit_compare): Process fixed-point modes.
2275         (mips_pad_arg_upward): Support fixed-point types.
2276         (override_options): Allow fixed-point modes in accumulators.
2277         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2278         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2279         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2280         (mips_scalar_mode_supported_p): New function to accept fixed-point
2281         modes if the width is not greater than two BITS_PER_WORD.
2282         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2283         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2284         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2285         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2286         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2287         modes.
2288         ("IMODE"): New mode attribute.
2289         (mips-fixed.md): Include.
2290         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2291         ACCUM, UACCUM.
2292         * config/mips/mips-fixed.md: New file.
2293
2294 2007-09-11  Ben Elliston  <bje@au.ibm.com>
2295
2296         * config/spu/spu.md: Formatting fixes.
2297
2298 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2299
2300         * config/dfp-bit.c (dfp_unary_func): Delete.
2301         (dfp_unary_op): Delete.
2302         (dfp_binary_op): Use decFloat functions instead of decNumber
2303         functions for binary operations.
2304         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2305         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2306         DFP_C_TYPE.
2307         (dfp_compare_op): Use decFloat functions insteadof decNumber
2308         functions for comparisons.
2309         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2310         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2311         DFP_C_TYPE.
2312         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2313         call to dxx_binary_op and decFloat function.
2314         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2315         calls to dxx_binary_op and decFloat function.
2316         * config/dfp-bit.h: Include decFloat header files.
2317         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2318         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2319         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2320         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2321
2322 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
2323             Jan Sjodin <jan.sjodin@amd.com>
2324
2325         * tree-vect-analyze.c (vect_analyze_operations): Change
2326         comparison of loop iterations with threshold to less than
2327         or equal to instead of less than. Reduce
2328         min_scalar_loop_bound by one.
2329         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
2330         Change prologue and epilogue iterations estimate to vf/2,
2331         when unknown at compile-time. Change versioning guard
2332         cost to taken_branch_cost. If peeling for alignment is
2333         unknown at compile-time, change peel guard costs to one
2334         taken branch and one not-taken branch per peeled loop.
2335         If peeling for alignment is known but number of scalar loop
2336         iterations is unknown at compile-time, change peel guard
2337         costs to one taken branch per peeled loop. Change the cost
2338         model equation to consider vector iterations as the loop
2339         iterations less the prologue and epilogue iterations.
2340         Change outside vector cost check to less than or equal to
2341         zero instead of equal to zero.
2342         (vect_do_peeling_for_loop_bound): Reduce
2343         min_scalar_loop_bound by one.
2344         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2345         TARG_COND_NOT_TAKEN_BRANCH_COST.        
2346         * config/i386/i386.h (processor_costs): Add
2347         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2348         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2349         vec_align_load_cost, vect_unalign_load_cost,
2350         vec_store_cost, cond_taken_branch_cost,
2351         cond_not_taken_branch_cost.
2352         Define macros for x86 costs.
2353         * config/i386/i386.c:
2354         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2355         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2356         scalar_to_vec_cost, vec_align_load_cost, 
2357         vect_unalign_load_cost, vec_store_cost,
2358         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
2359         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2360         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
2361         core2_cost, generic64_cost, generic32_cost): Set to default
2362         untuned costs.
2363         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2364         (x86_builtin_vectorization_cost): New.
2365
2366 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2367             Ben Elliston  <bje@au.ibm.com>
2368
2369         * dfp.c: Include decimal128Local.h; 
2370         (dfp_byte_swap): Remove.
2371         (encode_decimal32, decode_decimal32): Don't handle endianness.
2372         (encode_decimal64, decode_decimal64): Ditto.
2373         (encode_decimal128, decode_decimal128): Ditto.
2374         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
2375         (__swap64): Remove.
2376         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
2377         (__swap128): Remove
2378         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
2379         * Makefile.in (DECNUM_H): Add decimal128Local.h.
2380
2381 2007-09-10  David Daney  <ddaney@avtrex.com>
2382
2383         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
2384         define_constants.
2385         (memory_barrier): Rewrote as an insn that clobbers memory.
2386
2387 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
2388
2389         * config/mips/mips.c (mips_global_pointer): Check
2390         call_really_used_regs instead of call_used_regs.
2391         (mips_save_reg_p): Likewise.  Save all call-saved registers
2392         if current_function_saves_all_registers.  Fix indentation.
2393         No longer treat $18 as a special case.
2394         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
2395
2396 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
2397
2398         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
2399         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
2400         the introductory comment.
2401         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2402         (override_options): Don't test for it.
2403         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2404         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
2405         * config/mips/vr.h: As for config/mips/sde.h.
2406
2407 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2408             Revital Eres  <eres@il.ibm.com>
2409
2410         * target.h (struct gcc_target.sched): New field: sms_res_mii.
2411         (struct ddg): Define.
2412         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
2413         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
2414         * config/spu/spu.c: Include ddg.h.
2415         (TARGET_SCHED_SMS_RES_MII): Define.
2416         (spu_sms_res_mii): New function to calculate mii.
2417         * modulo-sched (res_MII): Use it.
2418         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
2419
2420 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2421
2422         * config/s390/s390.c (s390_dump_pool): Create copy of constant
2423         pool entries since they might hold values that must not be shared.
2424
2425 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
2426
2427         PR target/33369
2428         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
2429         Use 'N' operand constraint for op2.
2430         (lshr<mode>3): Ditto.
2431         (ashl<mode>3): Ditto.
2432         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
2433         (vec_shr_<mode>): Ditto.
2434         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
2435         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
2436
2437 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2438
2439         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
2440         Change mode macro in the last real_2expN parameter to uppercase.
2441
2442 2007-09-10  Michael Matz  <matz@suse.de>
2443
2444         * tree-pass.h (pass_cselim): Declare new pass.
2445         * passes.c (init_optimization_passes): Link in pass_cselim.
2446         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
2447         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
2448         cond_store_replacement.
2449         (condstoretemp): New static variable.
2450         (cond_store_replacement): New function.
2451         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
2452         tree_ssa_phiopt_worker.
2453         (struct name_to_bb): New.
2454         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
2455         nt_init_block, nt_fini_block): New static functions.
2456         (seen_ssa_names, nontrap_set): New static variables.
2457         (gate_cselim, pass_cselim): Define new pass.
2458         * common.opt (ftree-cselim): New flag.
2459         * toplev.c (process_options): Set flag_tree_cselim if required.
2460
2461 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
2462
2463         * simplify-rtx.c (simplify_relational_operation_1): For recent
2464         canonicalization, don't recurse if op1 equals both PLUS arguments.
2465
2466 2007-09-09  David Daney  <ddaney@avtrex.com>
2467
2468         * optabs.c (expand_sync_operation):  Use plus insn if minus
2469         CONST_INT_P(val).
2470         (expand_sync_fetch_operation):  Ditto.
2471
2472 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
2473
2474         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
2475         of cvtpq2ps.
2476         (*floatsisf2_sse_vector): Likewise.
2477
2478 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
2479
2480         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2481
2482 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
2483
2484         * config/i386/i386.h (ix86_tune_indices): Rename
2485         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
2486         (TARGET_USE_VECTOR_CONVERTS): Updated.
2487         * config/i386/i386.c: Likewise.
2488
2489 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
2490             Nigel Stephens <nigel@mips.com>
2491
2492         * doc/invoke.texi (Overall Options):  Add .sx file extension
2493         as a synonym for .S.
2494         * cppspec.c (known_suffixes): Likewise.
2495         * gcc.c (default_compilers): Likewise.
2496
2497 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2498
2499         PR target/30315
2500         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
2501         * simplify-rtx.c (simplify_relational_operation_1): Add the
2502         canonicalization from i386.h.
2503         * doc/md.texi (Canonicalization of Instructions): Document it.
2504
2505 2007-09-09  Jan Hubicka  <jh@suse.cz>
2506             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2507
2508         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
2509         (TARGET_USE_VECTOR_CONVERTS): New.
2510         * i386.md: New post-reload splitters for converting SF to DF and DF to
2511         SF.
2512         (floatsi* expander): Special case vector conversions.
2513         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
2514         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
2515         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
2516         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2517         Disable when doing vector converts.
2518         (floatsi<mode>2_i387): Disable when
2519         * sse.md (vec_dupv2df): Export.
2520         * i386.c (ix86_tune_features): Enable SSE conversions.
2521
2522 2007-09-09  Richard Guenther  <rguenther@suse.de>
2523
2524         * tree-ssa-operands.c (add_virtual_operand): Only mark
2525         stores as has_volatile_ops if alias information is not available.
2526
2527 2007-09-09  Revital Eres  <eres@il.ibm.com>
2528
2529         * doc/contrib.texi: Add myself.
2530
2531 2007-09-09  Ira Rosen  <irar@il.ibm.com>
2532
2533         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
2534         stmt_vinfo_set_outside_of_loop_cost): New functions.
2535         * tree-vect-transform.c (vect_get_cost_fields): Remove.
2536         (vect_model_simple_cost): Call
2537         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
2538         field instead of calling vect_get_cost_fields.
2539         (vect_model_store_cost, vect_model_load_cost): Likewise.
2540
2541 2007-09-09  Revital Eres  <eres@il.ibm.com>
2542
2543         * config/rs6000/rs6000.c (paired_init_builtins): Add const
2544         declaration to bdesc_paired_preds variable.
2545         (paired_expand_builtin): Likewise.
2546
2547 2007-09-09  Revital Eres  <eres@il.ibm.com>
2548
2549         * dbgcnt.def (sms_sched_loop): New counter.
2550         * modulo-sched.c: Use sms_sched_loop instead of
2551         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
2552         perform swing modulo scheduling on.  Include dbgcnt.h.
2553         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
2554         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
2555
2556 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
2557
2558         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
2559         Substitute all uses with ...
2560         (MODEF): New mode iterator.
2561
2562         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
2563         from pre-regalloc define_insn_and_split splitter pattern.
2564         (*fix_trunc<mode>_i387_1): Ditto.
2565         (*fistdi2_1): Ditto.
2566         (*fist<mode>2_1): Ditto.
2567         (frndintxf2_floor): Ditto.
2568         (*fist<mode>2_floor_1): Ditto.
2569         (frndintxf2_ceil): Ditto.
2570         (*fist<mode>2_ceil_1): Ditto.
2571         (frndintxf2_trunc): Ditto.
2572         (frndintxf2_mask_pm): Ditto.
2573
2574         (prologue): Use (const_int 0) as never generated filler insn.
2575         (epilogue): Ditto.
2576         (sibcall_epilogue): Ditto.
2577         (eh_return_si): Ditto.
2578         (eh_return_di): Ditto.
2579
2580         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
2581         using MODEF mode iterator.
2582         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
2583         using MODEF mode iterator.
2584         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
2585         using MODEF mode iterator.
2586         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
2587         Macroize expander using MODEF mode iterator.
2588
2589         (zero_extendsidi2): Remove operand constraints from expander.
2590         (smuldi3_highpart): Ditto.
2591         (indirect_jump): Ditto.
2592         (tablejump): Ditto.
2593         (rsqrtsf2): Ditto.
2594         * config/i386/sse.md (storentv4sf): Ditto.
2595         (storentv2df): Ditto.
2596         (storentv2di): Ditto.
2597         (storentsi): Ditto.
2598         (sse2_cvtpd2ps): Ditto.
2599         (vec_interleave_highv16qi): Ditto.
2600         (vec_interleave_lowv16qi): Ditto.
2601         (vec_interleave_highv8hi): Ditto.
2602         (vec_interleave_lowv8hi): Ditto.
2603         (vec_interleave_highv4si): Ditto.
2604         (vec_interleave_lowv4si): Ditto.
2605         (vec_interleave_highv2di): Ditto.
2606         (vec_interleave_lowv2di): Ditto.
2607         (sse2_maskmovdqu): Ditto.
2608         * config/i386/mmx.md (mmx_maskmovq): Ditto.
2609
2610 2007-09-09  Ira Rosen  <irar@il.ibm.com>
2611
2612         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
2613         (struct _slp_tree, struct _slp_instance): Define new data structures
2614         along macros for their access.
2615         (struct _loop_vec_info): Define new fields: strided_stores,
2616         slp_instances, and slp_unrolling_factor along macros for their access.
2617         (enum slp_vect_type): New.
2618         (struct _stmt_vec_info): Define new field, slp_type, and macros for
2619         its access.
2620         (STMT_VINFO_STRIDED_ACCESS): New macro.
2621         (vect_free_slp_tree): Declare.
2622         (vectorizable_load): Add an argument of type slp_tree.
2623         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
2624         vectorizable_assignment): Likewise.
2625         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2626         Declare (make extern).
2627         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
2628         (new_loop_vec_info): Likewise.
2629         (destroy_loop_vec_info): Free memory allocated for SLP structures.
2630         * tree-vect-analyze.c: Include recog.h.
2631         (vect_update_slp_costs_according_to_vf): New.
2632         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
2633         functions. For not pure SLP stmts with strided access check that the
2634         group size is power of 2. Update the vectorization factor according to
2635         SLP. Call vect_update_slp_costs_according_to_vf.
2636         (vect_analyze_group_access): New.
2637         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
2638         (vect_free_slp_tree): New functions.
2639         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
2640         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
2641         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
2642         vect_detect_hybrid_slp): Likewise.
2643         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
2644         and vect_detect_hybrid_slp.
2645         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
2646         SLP costs into account.
2647         (vect_get_cost_fields): New function.
2648         (vect_model_simple_cost): Make extern, add SLP parameter and handle
2649         SLP.
2650         (vect_model_store_cost, vect_model_load_cost): Likewise.
2651         (vect_get_constant_vectors): New function.
2652         (vect_get_slp_vect_defs, vect_get_slp_defs,
2653         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
2654         vect_get_vec_defs): Likewise.
2655         (vectorizable_reduction): Don't handle SLP for now.
2656         (vectorizable_call): Don't handle SLP for now. Add argument to
2657         vect_model_simple_cost.
2658         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
2659         get SLPed and vectorized defs). Fix indentation and spacing.
2660         (vectorizable_assignment): Handle SLP.
2661         (vectorizable_induction): Don't handle SLP for now.
2662         (vectorizable_operation): Likewise.
2663         (vectorizable_type_demotion): Add argument to
2664         vect_model_simple_cost.
2665         (vectorizable_type_promotion): Likewise.
2666         (vectorizable_store, vectorizable_load): Handle SLP.
2667         (vectorizable_condition): Don't handle SLP for now.
2668         (vect_transform_stmt): Add a new argument for SLP. Check that there is
2669         no SLP transformation required for unsupported cases. Add SLP
2670         argument for supported cases.
2671         (vect_remove_stores): New function.
2672         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
2673         (vect_transform_loop): Schedule SLP instances.
2674         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
2675
2676 2007-09-09  Andrew Haley  <aph@redhat.com>
2677
2678         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
2679         signed optab.
2680
2681 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
2682
2683         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
2684         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
2685         Similar for what label_refs can go in the JUMP_TARGET field.  Split
2686         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
2687         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
2688         REG_LABEL when replacing an operand with a LABEL_REF for a
2689         non-jump insn.
2690         (subst_reloads): When replacing a LABEL_REG with a register,
2691         instead of generating a REG_LABEL note, assert that there already
2692         is one or that the label is a known target for the insn.
2693         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
2694         note, check the JUMP_LABEL field.  Remove "else" after return.
2695         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
2696         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
2697         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
2698         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
2699         insns.  Iterate over all notes; don't assume there's only one.
2700         * cse.c (recorded_label_ref): Adjust comment to refer to
2701         REG_LABEL_OPERAND.
2702         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
2703         insns, not just NONJUMP_INSN_P.
2704         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
2705         isn't a jump target.
2706         * jump.c (rebuild_jump_labels): Adjust head comment.
2707         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
2708         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
2709         (mark_all_labels): For JUMP_P insns without a target, check if the
2710         the target is noted on the previous nonjump insn.
2711         (mark_jump_label_1): New function, guts from mark_jump_label.
2712         <case IF_THEN_ELSE>: Handle first operand as a non-target when
2713         marking jump target labels.
2714         <case LABEL_REF>: Adjust for whether to generate a
2715         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
2716         For 'E' format rtl, iterate in descending element order.
2717         (delete_related_insns): Handle both REG_LABEL_TARGET and
2718         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
2719         reference count, delete and fallthrough.  Move finding-next-
2720         non-deleted insn last in the function.  Look at all INSN_P insns
2721         for REG_LABEL_OPERAND notes.
2722         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
2723         JUMP.
2724         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
2725         JUMP_LABEL, output the INSN_UID of it.
2726         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
2727         and/or REG_LABEL_TARGET.
2728         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
2729         with jump.c copy by only adding notes for labels actually
2730         referenced in the insn.
2731         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
2732         usage count increment; handle all INSN_P trial insns.
2733         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
2734         notes.
2735         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
2736         REG_LABEL_TARGET and REG_LABEL_OPERAND.
2737         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
2738         REG_LABEL_OPERAND.
2739         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
2740         JUMP_P insns and REG_LABEL_OPERAND everywhere.
2741         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
2742         on all INSN_P insns.
2743         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
2744         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
2745         REG_LABEL_OPERAND notes.
2746         * reload1.c (calculate_needs_all_insns): Adjust comments.
2747         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
2748         * config/alpha/alpha.md (split for load of an address into a
2749         four-insn sequence on Unicos/Mk): Adjust to use
2750         REG_LABEL_OPERAND.
2751         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
2752
2753 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2754
2755         Revert:
2756         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2757         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
2758         FOR_BB_INSNS_SAFE instead of for loop.
2759         * cse.c (cse_extended_basic_block): Likewise.
2760         * postreload.c (reload_cse_regs_1): New variable next. Make sure
2761         that the for loop does not invoke NEXT_INSN on a deleted insn.
2762         * function.c (instantiate_virtual_regs): Likewise.
2763         * lower-subreg.c (remove_retval_note): Likewise.
2764         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
2765         FOR_BB_INSNS.
2766         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
2767         a deleted insn.
2768         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
2769         insn, if it's a jump.
2770         (try_redirect_by_replacing_jump): New variable jump_p. Call
2771         tablejump_p before delete_insn_chain.
2772         * reload1.c (reload): New variable next. Make sure that the for
2773         loop does not invoke NEXT_INSN on a deleted insn.
2774         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
2775         (delete_output_reload): New variable prev. Make sure the the for
2776         loops do not invoke PREV_INSN on a deleted insn.
2777
2778 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2779
2780         * pa/constraints.md: Remove 'X' from unused letters comment.
2781
2782 2007-09-08  Richard Guenther  <rguenther@suse.de>
2783
2784         * tree-tailcall.c (find_tail_calls): If we don't have aliases
2785         computed check stmt_ann->references_memory instead of counting
2786         virtual operands.
2787  
2788 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
2789
2790         * cse.c (fold_rtx): Use validate_unshare_change() instead of
2791         validate_change() in one more case.
2792
2793 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
2794
2795         PR tree-optimization/32283
2796         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
2797         estimated_loop_iterations.
2798         (determine_use_iv_cost_condition): Decrease cost of expressions
2799         used in iv elimination.
2800
2801 2007-09-08  Richard Guenther  <rguenther@suse.de>
2802
2803         * tree-cfg.c (verify_gimple_expr): Avoid building new
2804         pointer types, use TYPE_POINTER_TO if available instead.
2805
2806 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
2807
2808         PR target/33329
2809         PR rtl-optimization/26449
2810         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
2811         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
2812         split1 pass.
2813         (mulv16qi3): Implement as define_insn_and_split pattern instead of
2814         define_expand.  Split insn in split1 pass.
2815         (mulv2di3): Ditto.
2816
2817 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
2818
2819         PR tree-optimization/33301
2820         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
2821         when relevant.
2822
2823 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
2824
2825         PR tree-optimization/32183
2826         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
2827
2828         * tree-ssa-reassoc.c: Include cfgloop.h.
2829         (is_reassociable_op): Add a loop argument and return true only
2830         for inside loop.
2831         (linearize_expr): Updated.
2832         (should_break_up_subtract): Likewise.
2833         (linearize_expr_tree): Likewise.
2834         (init_reassoc): Call loop_optimizer_init with
2835         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
2836         with CDI_DOMINATORS.
2837         (fini_reassoc): Call loop_optimizer_finalize.
2838
2839 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
2840
2841         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
2842         if there is no i-cache.
2843
2844 2007-09-07  Richard Guenther  <rguenther@suse.de>
2845
2846         Reapply
2847         2007-09-06  Richard Guenther  <rguenther@suse.de>
2848
2849         PR tree-optimization/32586
2850         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2851         folding if nothing changed.
2852         (simplify_unary_expression): New function.  Do tree combining
2853         on conversion like codes.
2854         (try_to_simplify): Call it.
2855
2856 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2857
2858         PR target/33286
2859         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
2860         (__gthread_active,__gthread_start, __gthread_active_init): New.
2861         * gthr-posix95.h: Likewise.
2862
2863 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
2864
2865         * function.h (struct function): Rename calls_unwind_init
2866         to saves_all_registers.
2867         (current_function_saves_all_registers): Renamed from
2868         current_function_calls_unwind_init.
2869         * reload1.c (reload): Set current_function_saves_all_registers.
2870         * except.c (expand_builtin_unwind_init): Likewise.
2871         * config/m68k/m68k.c (m68k_save_reg): Use
2872         current_function_saves_all_registers to save pic register.
2873
2874 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
2875
2876         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
2877         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
2878
2879         Reapply reverted changes:
2880
2881         2007-09-06  Jan Hubicka  <jh@suse.cz>
2882  
2883         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
2884         of real_2expN.
2885
2886         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
2887
2888         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
2889         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
2890
2891         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
2892
2893         * optabs.c (expand_float): Convert unsigned integer as signed only
2894         if it provides sufficient accuracy; add mode argument to real_2expN.
2895         (expand_fix): Fix comment typos; extend binary float into mode
2896         wider than destination for converion to unsigned integer; add mode
2897         argument to real_2expN.
2898         * real.c (real_2expN): Add mode argument to special-case decimal
2899         float values.
2900         * real.h (real_2expN): Ditto.
2901         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
2902         real_2expN.
2903         (fixed_from_string): Ditto.
2904         (fixed_to_decimal): Ditto.
2905         (fixed_convert_from_real): Ditto.
2906         (real_convert_from_fixed): Ditto.
2907         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
2908         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
2909         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
2910         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
2911
2912 2007-09-07  Diego Novillo  <dnovillo@google.com>
2913
2914         * tree-flow.h (const_block_stmt_iterator): Remove.
2915         Update all users to use block_stmt_iterator.
2916         * tree-iterator.h (const_tree_stmt_iterator): Remove.
2917         Update all users to use tree_stmt_iterator.
2918
2919 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
2920
2921         * config/mips/mips.c (mips_set_current_function): Temporarily
2922         make this a no-op to fix bootstrap errors, pending rewrite.
2923
2924 2007-09-07  Jan Hubicka  <jh@suse.cz>
2925
2926         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
2927         in the pass.
2928
2929 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
2930
2931         PR tree-optimization/33299
2932         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
2933         uses for all relevant loop-exit phis, not just the first.
2934
2935 2007-09-07  Richard Guenther  <rguenther@suse.de>
2936
2937         PR middle-end/33330
2938         * tree-ssa-operands.c (access_can_touch_variable): An access
2939         of the form (*p)[0] can touch a variable of same size.
2940
2941 2007-09-07  Jan Hubicka  <jh@suse.cz>
2942
2943         * passes.c (init_optimization_passes): Add simple dce and addressable
2944         passes.
2945         * tree-ssa.c (execute_update_addresses_taken): New function.
2946         (pass_update_address_taken): New.
2947         * tree-ssa-dse.c (execute_simple_dse): New function.
2948         (pass_simple_dse): New.
2949         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
2950
2951 2007-09-07  Tobias Burnus  <burnus@net-b.de>
2952
2953         PR middle-end/33321
2954         * doc/invoke.texi: Fix -Wstrict-overflow= table.
2955
2956 2007-09-07  Richard Guenther  <rguenther@suse.de>
2957
2958         Revert
2959         2007-09-06  Richard Guenther  <rguenther@suse.de>
2960
2961         PR tree-optimization/32586
2962         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
2963         folding if nothing changed.
2964         (simplify_unary_expression): New function.  Do tree combining
2965         on conversion like codes.
2966         (try_to_simplify): Call it.
2967
2968 2007-09-07  Richard Guenther  <rguenther@suse.de>
2969             Uros Bizjak  <ubizjak@gmail.com>
2970
2971         PR tree-optimization/32821
2972         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
2973         NULL in the call to set_bb_stmt_list.
2974
2975 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
2976
2977         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
2978         float calls here, rather than leaving some to the caller.
2979         Use call_internal_direct and call_value_internal_direct.
2980         * config/mips/mips.md (call_internal_direct): New pattern.
2981         (call_value_internal_direct): Likewise.
2982
2983 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
2984
2985         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
2986         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
2987         to 0 for MIPS16.
2988         (override_options): Set mips_base_move_loop_invariants.
2989
2990 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
2991
2992         * config/mips/mips.opt (mcode-readable=): Move to keep list
2993         alphabetical.
2994
2995 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
2996
2997         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
2998         and -mgpopt options.  Adjust the -G documentation to match.
2999         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
3000         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
3001         function, split out from mips_classify_symbol.  Return false for
3002         !TARGET_LOCAL_SDATA.
3003         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
3004         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3005         (override_options): Check whether the -mgpopt setting is consistent
3006         with the other flags.
3007         (symbolic_expression_p): Delete.
3008         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3009         and default_elf_select_rtx_section.
3010         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3011         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
3012         external data and TARGET_EXTERN_SDATA.
3013
3014 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3015
3016         PR fortran/33303
3017         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3018
3019 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3020
3021         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3022         FOR_BB_INSNS_SAFE instead of for loop.
3023         * cse.c (cse_extended_basic_block): Likewise.
3024         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3025         that the for loop does not invoke NEXT_INSN on a deleted insn.
3026         * function.c (instantiate_virtual_regs): Likewise.
3027         * lower-subreg.c (remove_retval_note): Likewise.
3028         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3029         FOR_BB_INSNS.
3030         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3031         a deleted insn.
3032         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3033         insn, if it's a jump.
3034         (try_redirect_by_replacing_jump): New variable jump_p. Call
3035         tablejump_p before delete_insn_chain.
3036         * reload1.c (reload): New variable next. Make sure that the for
3037         loop does not invoke NEXT_INSN on a deleted insn.
3038         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3039         (delete_output_reload): New variable prev. Make sure the the for
3040         loops do not invoke PREV_INSN on a deleted insn.
3041
3042 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
3043
3044         * cgraphbuild.c (rebuild_cgraph_edges): Export.
3045         * cgraph.h (rebuild_cgraph_edges): Declare.
3046         * tree-pass.h (pass_expand_omp_ssa): New.
3047         * omp-low.c (find_omp_clause): Export.
3048         (copy_var_decl): Split from omp_copy_decl_2.
3049         (build_omp_barrier): Return the call to emit instead of emitting
3050         it directly.
3051         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3052         build_omp_barrier.
3053         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3054         expand_omp_for_generic, expand_omp_for_static_nochunk,
3055         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3056         Adapted to work on SSA form.
3057         (execute_expand_omp): Do not invalidate dominance information.
3058         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3059         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3060         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3061         a gimple_reg.
3062         (force_gimple_operand): Allow gimplifying code expressions without
3063         value.
3064         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3065         * common.opt (fopenmp-ssa): New.
3066         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3067         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3068         * tree-cfg.c: Include tree-inline.h.
3069         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3070         (replace_by_duplicate_decl, replace_ssa_name,
3071         mark_virtual_ops_in_region): New functions.
3072         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3073         to work on SSA form.
3074         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3075         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3076         constructs.
3077
3078 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3079
3080         * tree-loop-linear.c: Include obstack.h.
3081         (linear_transform_loops): New obstack lambda_obstack.
3082         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3083         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3084         and free afterwards.
3085         * lambda.h (struct obstack): New forward declaration.
3086         (lambda_linear_expression_new): New parameter of type struct
3087         obstack *.
3088         (lambda_loopnest_new): Likewise.
3089         (lambda_loopnest_transform): Likewise.
3090         (lambda_body_vector_new): Likewise.
3091         (lambda_body_vector_compute_new): Likewise.
3092         (gcc_loopnest_to_lambda_loopnest): Likewise.
3093         (lambda_loopnest_to_gcc_loopnest): Likewise.
3094         * lambda-code.c: Include obstack.h.
3095         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
3096         allocation of ret.
3097         (lambda_body_vector_new): Likewise.
3098         (lambda_linear_expression_new): Likewise.
3099         (lambda_lattice_new): Likewise.
3100         (lambda_loopnest_new): Likewise.  Additionally use obstack to
3101         allocate LN_LOOPS(ret).
3102         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
3103         it to lambda_lattice_new.
3104         (lambda_body_vector_compute_new): New parameter lambda_obstack.
3105         Pass it to lambda_body_vector_new.
3106         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
3107         it to lambda_lattice_new.
3108         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
3109         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
3110         (lambda_compute_target_space): Likewise.
3111         (lambda_compute_auxillary_space): New parameter lambda_obstack.
3112         Pass it to lambda_lattice_compute_base and
3113         compute_nest_using_fourieer_motzkin.
3114         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
3115         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
3116         and lambda_lattice_compute_target_space.
3117         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
3118         Pass it to lambda_linear_expression_new.
3119         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
3120         to gcc_tree_to_linear_expression.
3121         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
3122         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
3123         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
3124         Pass it to lambda_body_vector_new and
3125         lambda_body_vector_compute_new.
3126         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
3127         (lambda-code.o): Likewise.
3128
3129 2007-09-06  Chao-ying Fu  <fu@mips.com>
3130
3131         * ginclude/stdfix.h: New file.
3132         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
3133         (convert.o): Add dependence on fixed-value.h.
3134         * c-convert.c (convert): Support FIXED_POINT_TYPE.
3135         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
3136         to define fixed-point constants.
3137         (c_cpp_builtins): Define fixed-point constants.
3138         * convert.c (fixed-value.h): New include.
3139         (convert_to_real): Update comment to include fixed-point.
3140         Support FIXED_POINT_TYPE.
3141         (convert_to_integer): Update comment to include fixed-point.
3142         Support FIXED_POINT_TYPE.
3143         (convert_to_complex): Support FIXED_POINT_TYPE.
3144         (convert_to_fixed): New function.
3145         * convert.h (convert_to_fixed): Declare.
3146         * genopinit.c: Add comment about $Q for only fixed-point modes.
3147         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3148         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3149         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3150         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3151         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3152         usneg_optab for fixed-point modes.
3153         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3154         modes.
3155         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3156         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3157         unsigned saturation optabs, when type is saturating.
3158         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3159         (expand_fixed_convert): New function.
3160         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3161         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3162         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3163         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
3164         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
3165         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
3166         functions.
3167         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
3168         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
3169         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
3170         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
3171         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
3172         satfractuns_optab.
3173         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
3174         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
3175         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
3176         fractuns, satfractuns.
3177         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
3178         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
3179         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
3180         OTI_ssmsub_widen,  OTI_usmsub_widen.
3181         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
3182         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
3183         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
3184         umsub_widen_optab, usmsub_widen_optab): Define.
3185         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
3186         COI_satfractuns.
3187         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
3188         Define.
3189         (expand_fixed_convert): Declare.
3190         * expr.c (convert_move): Support the move of fixed-point modes.
3191         (emit_move_insn_1): Handle fixed-point mode to move via integer.
3192         (categorize_ctor_elements_1): Handle FIXED_CST.
3193         (count_type_elements): Handle FIXED_POINT_TYPE.
3194         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
3195         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3196         Support FIXED_CST.
3197         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
3198         multiply and add/subtract for fixed-point types.
3199         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
3200         mode, we jump to binop directly.
3201         Support FIXED_CONVERT_EXPR.
3202         (do_store_flag): Check FIXED_CST to put a constant second.
3203         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
3204         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3205         (const_vector_from_tree): Support FIXED_CST.
3206         * doc/extend.texi (Fixed-Point): New node.
3207         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
3208         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
3209         satfract, fractuns, satfractuns): Document them.
3210
3211 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
3212
3213         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
3214         addresses into I registers.
3215
3216 2007-09-06  Jan Hubicka  <jh@suse.cz>
3217             Andreas Tobler  <a.tobler@schweiz.org>
3218
3219         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
3220         sharing.
3221         (machopic_legitimize_pic_address): Likewise.
3222
3223 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3224             Jan Hubicka  <jh@suse.cz>
3225
3226         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
3227         instead of ufloat_optab->handlers directly.
3228         (floatdidf2): Likewise.
3229
3230 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
3231
3232         * config/mips/mips.c:  Include diagnostic.h.
3233         (mips_set_current_function): Check errorcount and sorrycount 
3234         before generating RTL.
3235
3236 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3237
3238         PR target/33256
3239         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
3240         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
3241         (print_operand_reloc): Likewise.
3242
3243 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
3244
3245         Revert:
3246
3247         2007-09-06  Jan Hubicka  <jh@suse.cz>
3248  
3249         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3250         real_2expN.
3251
3252         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3253
3254         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3255         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3256
3257         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3258
3259         * optabs.c (expand_float): Convert unsigned integer as signed only
3260         if it provides sufficient accuracy; add mode argument to real_2expN.
3261         (expand_fix): Fix comment typos; extend binary float into mode
3262         wider than destination for converion to unsigned integer; add mode
3263         argument to real_2expN.
3264         * real.c (real_2expN): Add mode argument to special-case decimal
3265         float values.
3266         * real.h (real_2expN): Ditto.
3267         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3268         real_2expN.
3269         (fixed_from_string): Ditto.
3270         (fixed_to_decimal): Ditto.
3271         (fixed_convert_from_real): Ditto.
3272         (real_convert_from_fixed): Ditto.
3273         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3274         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3275         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3276         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3277
3278 2007-09-06  Tom Tromey  <tromey@redhat.com>
3279
3280         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
3281         * c-pch.c (c_common_read_pch): Restore current location after
3282         reading PCH file.
3283         * tree.c (expand_location): Update.
3284         (expr_filename): Changed return type.  Unified the two cases.
3285         (expr_lineno): Likewise.
3286         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
3287         as lvalues.
3288         * toplev.c (line_table): Changed type.
3289         (general_init): Update.
3290         (realloc_for_line_map): New function.
3291         (general_init): Allocate line_table using GC.
3292         * fix-header.c (line_table): Changed type.
3293         (read_scan_file): Update.
3294         (read_scan_file): Update.
3295         * c-ppoutput.c (maybe_print_line): Update.
3296         (print_line): Update.
3297         (cb_line_change): Update.
3298         (cb_define): Update.
3299         (pp_file_change): Update.
3300         * c-opts.c (c_common_init_options): Update.
3301         (finish_options): Update.
3302         (push_command_line_include): Update.
3303         * c-lex.c (cb_line_change): Update.
3304         (cb_def_pragma): Update.
3305         (cb_define): Update.
3306         (cb_undef): Update.
3307         (c_lex_with_flags): Use cpp_get_token_with_location.
3308         * input.h (line_table): Changed type.
3309         (location_from_locus): New macro.
3310         * tree.h (EXPR_FILENAME): No longer an lvalue.
3311         (EXPR_LINENO): Likewise.
3312         (expr_locus, set_expr_locus): Declare separately for
3313         USE_MAPPED_LOCATION.
3314         (expr_filename, expr_lineno): Changed return type.
3315         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
3316         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
3317         (expand_gimple_basic_block): Likewise.
3318         * final.c (final_scan_insn): Use expanded_location.
3319
3320 2007-09-06  Richard Guenther  <rguenther@suse.de>
3321
3322         PR tree-optimization/32586
3323         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3324         folding if nothing changed.
3325         (simplify_unary_expression): New function.  Do tree combining
3326         on conversion like codes.
3327         (try_to_simplify): Call it.
3328         * builtins.c (fold_builtin_cexp): Fold the built expressions.
3329         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
3330
3331 2007-09-06  Jan Hubicka  <jh@suse.cz>
3332
3333         PR target/33318
3334         * cse.c (fold_rtx): Avoid invalid sharing.
3335
3336 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3337
3338         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3339         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3340
3341 2007-09-06  Revital Eres  <eres@il.ibm.com>
3342
3343         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
3344         Fix offsettable memory reference for 750CL.
3345
3346 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
3347
3348         * reload.c (find_reloads_address_1): Try to preserve original
3349         base/index regclass of operands.
3350         * regrename.c (scan_rtx_address): Likewise.
3351         (replace_oldest_value_addr): Likewise.
3352
3353 2007-09-06  Richard Guenther  <rguenther@suse.de>
3354
3355         PR tree-optimization/33302
3356         * domwalk.c (walk_dominator_tree): The exit block is
3357         interesting even if it is not reachable.
3358
3359 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3360
3361         PR middle-end/33306
3362         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
3363
3364 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
3365
3366         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
3367         robustness.
3368
3369 2007-09-05  Ian Lance Taylor  <iant@google.com>
3370
3371         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
3372         when printing.
3373         (dump_generic_node): Likewise.
3374         * print-rtl.c (print_decl_name): Likewise.
3375         * print-tree.c (print_node_brief): Likewise.
3376         (print_node): Likewise.
3377         * Makefile.in (RTL_BASE_H): Add alias.h.
3378         (TREE_H): Likewise.
3379
3380 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
3381
3382         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
3383         Defined.
3384         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
3385         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
3386
3387 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
3388
3389         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
3390         (tm_defines): Define UCLIBC_DEFAULT to 1.
3391         (extra_options): Add linux.opt.
3392         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
3393         (CRT_CALL_STATIC_FUNCTION): Likewise.
3394         (NO_IMPLICIT_EXTERN_C): Likewise.
3395         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
3396         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
3397         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
3398         (ENDFILE_SPEC): Don't define.
3399         (LIB_SPEC): Likewise.
3400         (CRT_CALL_STATIC_FUNCTION): Likewise.
3401         (NO_IMPLICIT_EXTERN_C): Likewise.
3402         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
3403         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
3404
3405 2007-09-06  Jan Hubicka  <jh@suse.cz>
3406
3407         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3408         real_2expN.
3409
3410 2007-09-06  Jan Hubicka  <jh@suse.cz>
3411
3412         * opts.c (common_handle_option): Enable inlining functions for
3413         -fprofile-generate.
3414
3415 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
3416
3417         * builtin-attrs.def (ATTR_NONNULL_3): New.
3418         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
3419         ATTR_NOTHROW_NONNULL_##FA.
3420         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
3421         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
3422         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
3423         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
3424         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
3425         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
3426         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
3427         New.
3428         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
3429         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
3430         ATTR_FORMAT_NOTHROW_3_4): Remove.
3431         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
3432         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
3433         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
3434         instead of ATTR_FORMAT_*_*.
3435
3436 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
3437
3438         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
3439         parts re-used for REG_FRAME_RELATED_EXPR.
3440
3441 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3442
3443         * optabs.c (expand_float): Convert unsigned integer as signed only
3444         if it provides sufficient accuracy; add mode argument to real_2expN.
3445         (expand_fix): Fix comment typos; extend binary float into mode
3446         wider than destination for converion to unsigned integer; add mode
3447         argument to real_2expN.
3448         * real.c (real_2expN): Add mode argument to special-case decimal
3449         float values.
3450         * real.h (real_2expN): Ditto.
3451         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3452         real_2expN.
3453         (fixed_from_string): Ditto.
3454         (fixed_to_decimal): Ditto.
3455         (fixed_convert_from_real): Ditto.
3456         (real_convert_from_fixed): Ditto.
3457         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3458         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3459         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3460         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3461
3462 2007-09-05  Ian Lance Taylor  <iant@google.com>
3463
3464         * init-regs.c (initialize_uninitialized_regs): Call
3465         emit_insn_before rather than add_insn_before.
3466
3467 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
3468
3469         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
3470         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
3471         * tree-inline.h (copy_body_data): Add call_expr field.
3472         * tree-inline.c (expand_call_inline): Initialize call_expr.
3473         (copy_bb): Append anonymous inline fn arguments to arguments
3474         when inlining a CALL_EXPR_VA_ARG_PACK call.
3475         * builtins.c (expand_builtin): Issue an error if
3476         BUILT_IN_VA_ARG_PACK is seen during expand.
3477         (fold_call_expr, fold_builtin_call_array): Don't fold
3478         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
3479         __builtin_va_arg_pack () call as last argument.
3480         * gimplify.c (gimplify_call_expr): If last argument to a vararg
3481         function is __builtin_va_arg_pack (), decrease number of call
3482         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
3483         * expr.c (expand_expr_real_1): Issue an error if
3484         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
3485         * tree-pretty-print.c (dump_generic_node): Handle printing
3486         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
3487         * doc/extend.texi (__builtin_va_arg_pack): Document.
3488
3489 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
3490
3491         PR tree-optimization/21513
3492         * builtins.c (build_builtin_expect_predicate): New function.
3493         (fold_builtin_expect): Add argument for expected value.
3494         Distribute __builtin_expect over short-circuiting operations.
3495         Fold nested builtin_expects.
3496         (fold_builtin_2): Adjust call to fold_builtin_expect.
3497
3498 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3499
3500         PR web/32965
3501         PR tree-optimization/13756
3502         * doc/invoke.texi (Options That Control Optimization): Document
3503         -ftree-dse.
3504
3505 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
3506
3507         * gcc/config/i386/cpuid.h: New file.
3508         * gcc/config/i386/driver-i386.c: Include cpuid.h.
3509         (describe_cache): Shrink size and line strings to 100 bytes.
3510         (detect_caches_amd): Return "" for unsupported max_ext_level.
3511         Use __cpuid function.
3512         (detect_caches_intel): Return "" for unsupported max_level.
3513         Use __cpuid function.
3514         (host_detect_local_cpu): Change feature flag variables to
3515         unsigned int.  Initialize only extended feature flag variables.
3516         Use __get_cpuid_max to determine max supported cpuid level.
3517         Use __cpuid function to determine supported features.  Fix
3518         calculation of family id.  Remove is_amd and check signature
3519         directly.  Check for Geode signature.  Handle family 4 id.
3520         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
3521         cpu discovery code to lower part of the function.
3522         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
3523         for sub-architecture.
3524         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
3525         [PROCESSOR_K8]: Add k8-sse3 architecture.
3526         [PROCESSOR_NOCONA]: Remove.
3527         [PROCESSOR_GENERIC64]: Ditto.
3528         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
3529         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
3530         to check for SSE and FXSAVE support.
3531         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
3532         Add -minline-all-stringops.
3533         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
3534         (x86_64-*-*): Ditto.
3535
3536 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
3537
3538         * config/bfin/linux-unwind.h: New file.
3539         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
3540         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
3541
3542 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3543
3544         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
3545         * stmt.c: Include alloc-pool.h.
3546         (struct case_node): Remove GTY marker.
3547         (add_case_node): New parameter case_node_pool.  Use it for
3548         allocation of r.
3549         (expand_case): New allocation pool case_node_pool.  Initialize it,
3550         pass to add_case_node and free it.
3551
3552 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
3553             David Ung  <davidu@mips.com>
3554             Nigel Stephens <nigel@mips.com>
3555
3556         Add mips16/nomips16 function attributes and -mflip-mips16 option
3557         for testing mixed-mode compilation.
3558
3559         * config/mips/mips.opt (mflip-mips16): New.
3560
3561         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
3562         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
3563
3564         * config/mips/mips.c (mips_base_target_flags): New.
3565         (mips_base_mips16): New.
3566         (mips_base_schedule_insns): New.
3567         (mips_base_reorder_blocks_and_partition): New.
3568         (mips_base_align_loops): New.
3569         (mips_base_align_jumps): New.
3570         (mips_base_align_functions): New.
3571         (mips16_flipper): New.
3572         (mips_attribute_table): Add "mips16" and "nomips16" entries.
3573         (TARGET_SET_CURRENT_FUNCTION): Define.
3574         (mips_mips16_type_p, mips_nomips16_type_p): New.
3575         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
3576         (mips_function_ok_for_sibcall): Make it deal with functions with
3577         mips16 attributes.
3578         (mips_init_split_addresses): New, split out from override_options.
3579         (mips_init_relocs): New, split out from override_options.
3580         (was_mips16_p): New.
3581         (mips_set_mips16_mode): New, split out from override_options.
3582         (mips_set_current_function): New.
3583         (override_options): Add sorry for unsupported mips16/pic
3584         combination.  Remove error for mips16/dsp combination.  Save
3585         base option settings.  
3586         (mips_file_start): Move mips16 mode setting output from here....
3587         (mips_output_function_prologue): ....to here.
3588         (mips_output_mi_thunk): Check for mips16 function.
3589         (build_mips16_function_stub): Don't set .mips16 here.
3590         (build_mips16_call_stub): Likewise.
3591         (mips_expand_builtin): Error in mips16 mode.
3592         (mips_use_mips16_mode_p): New.
3593         (mips_encode_section_info): Check for mips16 function, and set
3594         SYMBOL_REF_FLAGS accordingly.
3595
3596         * doc/extend.texi (Function Attributes): Document new
3597         mips16/nomips16 attributes.
3598         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
3599         (MIPS Options): Document -mflip-mips16.
3600
3601 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
3602
3603         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
3604         if we encounter TLS address in MIPS16 mode.
3605         (mips_legitimize_const_move): Check cannot_force_const_mem for
3606         the (const (plus symbol offset)) case; this forces invalid TLS
3607         address in MIPS16 mode to be caught by the above call to sorry.
3608         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
3609         because that now enables emutls, which is not ABI compatible
3610         with native TLS in non-MIPS16 mode.
3611
3612 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
3613
3614         Add target hook invoked when cfun changes.
3615
3616         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
3617         * target.h (struct gcc_target): Add set_current_function.
3618         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
3619         (TARGET_INITIALIZER): Add initializer for set_current_function.
3620         * tree.h (push_struct_function): New.
3621         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
3622         * function.h: Here.
3623         (set_cfun): Declare.
3624         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
3625         * function.c: Here.
3626         (push_function_context_to): Use allocate_struct_function
3627         to create null context, not init_dummy_function_start.  Use set_cfun.
3628         (pop_function_context_from): Use set_cfun.
3629         (in_dummy_function): New.
3630         (invoke_set_current_function_hook): New.
3631         (set_cfun): New.
3632         (push_cfun, pop_cfun): Use set_cfun.
3633         (push_struct_function): New.
3634         (allocate_struct_function): Call invoke_set_current_function_hook
3635         before returning.
3636         (prepare_function_start): Don't set cfun here.  Remove unused
3637         argument; fix all callers.
3638         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
3639         push_struct_function.
3640         (init_function_start): Set cfun here.
3641         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
3642         * omp-low.c (create_omp_child_function): Use push_struct_function
3643         and pop_cfun to save/restore state.
3644         (expand_omp_parallel): Remove unused saved_cfun variable.
3645         * cgraphunit.c (ipa_passes): Use set_cfun.
3646         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
3647         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
3648         * matrix-reorg.c (transform_allocation_sites): Likewise.
3649         (matrix_reorg): Use set_cfun.
3650         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
3651         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
3652         assignment to cfun; use set_cfun for the other.
3653         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
3654         (dump_function_to_file): Use push_cfun/pop_cfun here.
3655         * c-decl.c (finish_function): Use set_cfun.
3656
3657 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
3658
3659         * regrename.c (rerename_optimize): Use deferred rescanning and
3660         insert explicit calls to rescan insns when changed.
3661         
3662 2007-09-05  Jan Hubicka  <jh@suse.cz>
3663
3664         * optabs.c (libfunc_entry): Change optab to integer.
3665         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
3666         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
3667         of pointers for hashing.
3668
3669 2007-09-05  Jan Hubicka  <jh@suse.cz>
3670
3671         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
3672         verifier.
3673         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
3674         * see.c (pass_see): Likewise.
3675         * tracer.c (pass_tracer): Likewise.
3676         * postreload-gcse.c (pass_gcse2): Likewise.
3677         * postreload.c (pass_postreload_cse): Likewise.
3678         * mode-switching.c (pass_mode_switching): Likewise.
3679         * modulo-sched.c (pass_sms): Likewise.
3680         * cse.c (cse_insn): Likewise.
3681         * web.c (pass_web): Likweise.
3682         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
3683         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
3684         * loop-init.c (pass_rtl_loop_init): Likewise.
3685         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
3686         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
3687         * global.c (pass_global_alloc): Likewise.
3688         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
3689         pass_if_after_reload): Likewise.
3690         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
3691         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
3692         * regmove.c (pass_regmove): Likewise.
3693         * function.c (pass_thread_prologugues_epilogues): Likewise.
3694         * gcse.c (pass_gcse): Likewise.
3695         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
3696         * lower-subreg.c (pass_lower_subreg2): Likewise.
3697         * bt-load.c (pass_branch_target_load): Likewise.
3698         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
3699         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
3700         * combine.c (pass_combine): Likewise.
3701         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
3702         (pass_partition_blocks): Likewise.
3703         * var-tracking.c (pass_variable_track): Likewise.
3704         * reg-stack.c (pass_stack_regs_run): Likewise.
3705         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
3706         * passes.c (pass_postreload): Likewise.
3707         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
3708         * tree-pass.h (TODO_verify_rtl_sharing): New.
3709         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
3710         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
3711         TODO_set_props, TODO_df_finish, TODO_df_verify,
3712         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
3713
3714 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3715
3716         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
3717         fold_real_zero_addition_p, reorder_operands_p,
3718         div_if_zero_remainder, fold_undefer_overflow_warnings,
3719         int_binop_types_match_p, fold_convert_const_int_from_int,
3720         fold_convert_const_int_from_real,
3721         fold_convert_const_int_from_fixed,
3722         fold_convert_const_real_from_real,
3723         fold_convert_const_real_from_fixed,
3724         fold_convert_const_fixed_from_fixed,
3725         fold_convert_const_fixed_from_int,
3726         fold_convert_const_fixed_from_real, maybe_lvalue_p,
3727         fold_checksum_tree, fold_check_failed, print_fold_checksum,
3728         debug_fold_checksum, multiple_of_p): Constify.
3729         * tree-flow-inline.h (get_lineno): Likewise.
3730         * tree-flow.h (get_lineno): Likewise.
3731         * tree-object-size.c (compute_object_offset, addr_object_size,
3732         alloc_object_size, pass_through_call): Likewise.
3733         * tree-pretty-print.c (op_symbol, print_call_name,
3734         print_struct_decl, do_niy): Likewise.
3735         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
3736         debug_fold_checksum): Likewise.
3737
3738 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
3739
3740         PR middle-end/33029
3741         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
3742         note, remove the associated REG_RETVAL note.
3743
3744 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3745
3746         * config.gcc (powerpc*-*-*): Install
3747         spu2vmx.h, vec_types.h, and si2vmx.h headers.
3748         * config/rs6000/spu2vmx.h: New header.
3749         * config/rs6000/si2vmx.h: New header.
3750         * config/rs6000/vec_types.h: New header.
3751
3752 2007-09-05  Ben Elliston  <bje@au.ibm.com>
3753
3754         * varasm.c (initializer_constant_valid_p): Fix comment typo.
3755
3756 2007-09-05  Ben Elliston  <bje@au.ibm.com>
3757
3758         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
3759         not `m' for *ptrp.
3760         (__stdcx): Make asm volatile.
3761         (__stwcx, __stdcx): Return only 0 or 1.
3762
3763 2007-09-05  Jan Hubicka  <jh@suse.cz>
3764
3765         Revert:
3766
3767         2007-09-04  Jan Hubicka  <jh@suse.cz>
3768         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
3769
3770         2007-09-04  Richard Guenther  <rguenther@suse.de>
3771         * tree-ssa-operands.c (add_virtual_operand): Only mark
3772         stores as has_volatile_ops if alias information is not available.
3773
3774 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
3775
3776         * config/rs6000/tramp.asm: Include config.h.
3777         Check __PIC__ or __pic__ macro instead of SHARED.
3778
3779         PR rtl-optimization/32300
3780         * see.c (see_copy_insn): New function.
3781         (see_def_extension_not_merged, see_merge_one_use_extension,
3782         see_merge_one_def_extension): Use it.  Avoid changing
3783         PREV_INSN/NEXT_INSN chains directly, insted emit insns
3784         into sequences.  Call df_insn_delete on temporary insns
3785         that won't be emitted into the insn stream.
3786         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
3787         and run df_process_deferred_rescans () before run_fast_dce.
3788
3789         PR tree-optimization/33017
3790         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
3791         recurse for pure or const function calls.
3792
3793 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3794
3795         * c-format.c: Include alloc-pool.h.
3796         (check_format_info_main): New argument fwt_alloc.  Use allocation
3797         pool instead of GC.  Remove GC deallocation code.
3798         (check_format_arg): Create allocation pool, pass it to
3799         check_format_info_main and free it afterwards.
3800         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
3801
3802 2007-09-05  Ben Elliston  <bje@au.ibm.com>
3803
3804         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
3805         Rename count macro arugment for clarity.
3806         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
3807         (__protected_stream_set): Likewise, pass 0.
3808
3809 2007-09-04  Jan Hubicka  <jh@suse.cz>
3810
3811         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
3812
3813 2007-09-04  Jan Hubicka  <jh@suse.cz>
3814
3815         * invoke.texi (-finline-small-functions): Document.
3816         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
3817         when deciding what is inlinable.
3818         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
3819         (cgraph_decide_inlining_of_small_function): Handle new flags.
3820         (cgraph_decide_inlining_incrementally): Likewise.
3821         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
3822         * common.opt (finline-small-functions): New.
3823         * Makefile.in (build/gengtype.o-warn): Work around PR29478
3824
3825 2007-09-04  Richard Guenther  <rguenther@suse.de>
3826
3827         * tree-ssa-operands.c (add_virtual_operand): Only mark
3828         stores as has_volatile_ops if alias information is not available.
3829
3830 2007-09-04  Andrew Haley  <aph@redhat.com>
3831
3832         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
3833
3834 2007-09-04  Andrew Haley  <aph@redhat.com>
3835
3836         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
3837         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
3838         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
3839
3840 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
3841
3842         PR c++/14178
3843         * common.opt: Mention ABI version 2 in comment.
3844
3845 2007-09-04  Jan Hubicka  <jh@suse.cz>
3846
3847         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
3848         (libfunc_entry): New structure.
3849         (libfunc_hash): New hashtable.
3850         (hash_libfunc): New function.
3851         (eq_libfunc): New function.
3852         (convert_optab_libfunc): New function.
3853         (optab_libfunc): New function.
3854         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
3855         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
3856         expand_float, expand_fix, new_optab, new_convert_optab):
3857          Update for new libfunc API.
3858         (init_libfunc, init_integral_libfuncs,
3859         init_floating_libfuncs, init_interclass_conv_libfuncs
3860         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
3861         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
3862         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
3863         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
3864         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
3865         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
3866         gen_extend_conv_libfunc): New.
3867         (init_one_libfunc): Revamp for hashtables.
3868         (set_conv_libfunc): Likewise.
3869         (init_optabs): Initialize hashtable; use lazy initialization where
3870         possible.
3871         * optabs.h (optab_handlers): Move out of GGC.
3872         (optab, convert_optab): Move out of GGC; add lazy gen info.
3873         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
3874         (optab_libfunc, convert_optab_libfunc): New.
3875         * builtins.c (expand_builtin_powi): Update for new API.
3876         * expr.c (convert_move): Likewise.
3877         * expmed.c (expand_divmod): Likewise.
3878
3879 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
3880
3881         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
3882         GOT pointer only if there is a constant pool.  Use the allocated space
3883         for SPE also.
3884
3885 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
3886
3887         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
3888         typo for AltiVec.
3889
3890 2007-09-04  Revital Eres  <eres@il.ibm.com>
3891             Richard Guenther  <rguenther@suse.de>
3892             R. Clint Whaley  <whaley@cs.utsa.edu>
3893
3894         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
3895         Document new flags.
3896         * tree-tailcall.c (process_assignment): Use -fassociative-math
3897         when reodering operands of floating-point type.
3898         * fold-const.c (fold_comparison, fold_binary): Use
3899         -fassociative-math and -freciprocal-math instead of
3900         -funsafe-math-optimization flag.
3901         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
3902         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
3903         -freciprocal-math instead of -funsafe-math-optimizations.
3904         * opts.c (set_fast_math_flags): Set -freciprocal-math and
3905         -fassociative-math when -ffast-math is set.
3906         (set_unsafe_math_optimizations_flags): New Function
3907         to set -freciprocal-math and -fassociative-math when
3908         -funsafe-math-optimizations is set.
3909         (common_handle_option): Call it.
3910         * tree-vectorizer.c (vect_is_simple_reduction): Use
3911         -fassociative-math when doing reduction on floats.
3912         * loop-unroll.c (analyze_insn_to_expand_var): Use
3913         -fassociative-math when expanding an accumulator of type float.
3914         * simplify-rtx.c (simplify_binary_operation_1): Use
3915         -fassociative-math and -freciprocal-math when reordeing operands
3916         of floating-point type.
3917         * combine.c (combine_simplify_rtx): Likewise.
3918         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
3919         Likewise.
3920         * common.opt (-fassociative-math, -freciprocal-math): New flags.
3921
3922 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
3923
3924         PR c++/18608
3925         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
3926
3927 2007-09-04  Jan Hubicka  <jh@suse.cz>
3928
3929         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
3930
3931 2007-09-04  Jan Hubicka  <jh@suse.cz>
3932
3933         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
3934         and corresponding MATCH_DUP.
3935
3936 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
3937
3938         PR middle-end/33187
3939         * combine.c (subst): Do not try to simplify X if it represents load
3940         of FP constant from the constant pool via float extension.
3941
3942 2007-09-04  Ben Elliston  <bje@au.ibm.com>
3943
3944         * c-opts.c: Include "tm_p.h".
3945         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
3946
3947 2007-09-04  Richard Guenther  <rguenther@suse.de>
3948
3949         PR tree-optimization/33291
3950         * tree-pretty-print.c (dump_generic_node): Dump all
3951         qualifiers for pointer types, not only first.  Dump
3952         qualifiers for aggregate types as well.
3953         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
3954         use the canonical type for building ARRAY_REFs.
3955         * gimplify.c (canonicalize_addr_expr): Clean up.  The
3956         correct validness check is compatibility of the pointer
3957         types.  Always use the canonical type for building
3958         ARRAY_REFs and ADDR_EXPRs.
3959         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
3960         change that disabled propagation of ADDR_EXPRs into statements
3961         with volatile ops.
3962
3963 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
3964
3965         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
3966         (umulsi3_highpart): Make into expanders; existing insns are
3967         now named *[insn]_nov6.  Add stars to existing [insn]_v6
3968         counterparts' names.
3969
3970 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
3971
3972         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
3973         (unprotoize.o): Remove SHLIB_MULTILIB.
3974
3975 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
3976
3977         * doc/extend.texi: Document progmem attribute for AVR.
3978
3979 2007-09-03  Anatoly Sokolov <aesok@post.ru>
3980
3981         PR target/28902
3982         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
3983
3984 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
3985
3986         * optabs.c (expand_ffs): Initialize val and defined_at_zero
3987         to avoid warnings.
3988
3989         * optabs.c: Remove unnecessary forward declarations.
3990         (expand_unop_direct): New, broken out of expand_unop.
3991         (expand_doubleword_clz): New.
3992         (expand_ctz): Move above expand_ffs.  Use
3993         start_sequence, end_sequence, add_equal_note, and
3994         expand_unop_direct.  Add more commentary.
3995         (expand_ffs): Try both ctz optab and expand_ctz.
3996         Generate a test and branch if the hardware doesn't give us
3997         a useful value for input zero.  Style improvements similar to
3998         expand_ctz.
3999
4000         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
4001
4002 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4003
4004         * config.gcc: Delete stanza for arm-semi-aof and
4005         armel-semi-aof targets.
4006         * config/arm/arm-protos.h
4007         * config/arm/arm.c
4008         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
4009         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
4010         delete aof_pic_label and remove mention of AOF in comments.
4011         * config/arm/arm.md: Delete patterns used only for AOF assembly.
4012         * config/arm/aof.h
4013         * config/arm/semiaof.h
4014         * config/arm/t-semi: Delete file.
4015
4016 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4017
4018         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
4019         CONST_CAST_BB): New macros for type-specific casts.
4020         (CONST_CAST): Add a TYPE parameter and define it in terms of
4021         CONST_CAST2.
4022
4023         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
4024         * c-lex.c (cb_ident, lex_string): Likewise,
4025         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
4026         * config/i386/i386.c (ix86_function_regparm,
4027         ix86_function_sseregparm): Use CONST_CAST_TREE.
4028         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
4029         CONST_CAST.
4030         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
4031         give_switch, set_multilib_dir): Likewise,
4032         * gengtype-parse.c (string_seq, typedef_name): Likewise,
4033         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
4034         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
4035         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
4036         * prefix.c (update_path): Likewise,
4037         * pretty-print.c (pp_base_destroy_prefix): Likewise,
4038         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
4039         * tree-cfg.c (tree_can_merge_blocks_p,
4040         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
4041         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
4042         * tree.c (build_string): Supply a TYPE for CONST_CAST.
4043         (attribute_list_contained): Use CONST_CAST_TREE.
4044
4045 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
4046
4047         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
4048
4049 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
4050
4051         PR middle-end/33290
4052         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
4053         before forcing them into a register.
4054
4055 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
4056
4057         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
4058         rather than define_code_macro.
4059
4060 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4061
4062         * gcc.c (xputenv): New function.
4063         (putenv_from_prefixes): Use xputenv instead of putenv.
4064         (process_command): Use xputenv instead of putenv.
4065         (set_collect_gcc_options): Use xputenv instead of putenv.
4066         (main): Use xputenv instead of putenv.
4067
4068 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
4069
4070         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
4071         availability of swap instruction.
4072         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
4073
4074 2007-09-03  Revital Eres  <eres@il.ibm.com>
4075
4076         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
4077         Documentation.
4078
4079 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
4080             Ayal Zaks  <zaks@il.ibm.com>
4081             Revital Eres  <eres@il.ibm.com>
4082
4083         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
4084         compute_split_row): New functions.
4085         (ps_unschedule_node): Remove.
4086         (normalize_sched_times): Iterate over the already scheduled
4087         insns instead of the number of nodes.
4088         (MAX_SPLIT_NUM): New definition.
4089         (sms_schedule_by_order): Change the scheduling heuristic to
4090         avoid useless increases of initiation interval ii.
4091         (get_sched_window): Add dump printouts.
4092
4093 2007-09-02  David Daney  <ddaney@avtrex.com>
4094
4095         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
4096         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
4097         (optab, insn): Add more attributes.
4098         (fetchop_bit): New code macro.
4099         (immediate_insn): New code macro attribute.
4100         (sync): Change condition to ISA_HAS_SYNC.
4101         (rdhwr): Change predicate for operand 0 to register_operand.
4102         (memory_barrier): New expand.
4103         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
4104         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
4105         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
4106         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
4107         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
4108         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
4109         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
4110         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
4111         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
4112         
4113 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
4114             Hans-Peter Nilsson  <hp@axis.com>
4115
4116         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
4117         Defined to describe availability and behavior of CLZ.
4118         * config/cris/cris.md (clzsi2): Implement using lz instruction.
4119         * config/cris/cris.opt: Tweak comment for "-metrax4".
4120         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
4121         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
4122         (count_leading_zeros): Define.
4123
4124 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4125
4126         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
4127
4128 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
4129
4130         PR middle-end/33272
4131         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
4132         decayed from array.
4133
4134 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
4135
4136         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
4137         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
4138         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
4139         sched-deps.c, sched-int.h, system.h, target.h,
4140         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
4141         tree.def: Fix comment typos.
4142
4143 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
4144
4145         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
4146         (override_options): Turn on -mstrict-align on non-ColdFire
4147         targets.
4148         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
4149
4150 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4151
4152         * c-common.c (const_strip_array_types): Delete.
4153         * c-common.h (const_strip_array_types): Likewise.
4154         * emit-rtl.c (const_next_insn, const_previous_insn,
4155         const_next_nonnote_insn, const_prev_nonnote_insn,
4156         const_next_real_insn, const_prev_real_insn,
4157         const_next_active_insn, const_prev_active_insn, const_next_label,
4158         const_prev_label): Delete.
4159         * gimple-low.c (block_may_fallthru): Use expr_last.
4160         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
4161         * rtl.h (const_previous_insn, const_next_insn,
4162         const_prev_nonnote_insn, const_next_nonnote_insn,
4163         const_prev_real_insn, const_next_real_insn,
4164         const_prev_active_insn, const_next_active_insn, const_prev_label,
4165         const_next_label): Delete.
4166         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
4167         * system.h (CONST_CAST): Update comment.
4168         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
4169         (const_first_stmt, const_last_stmt): Delete.
4170         (tree_block_ends_with_condjump_p): Use last_stmt.
4171         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
4172         * tree-iterator.c (const_expr_first, const_expr_last,
4173         const_expr_only): Delete.
4174         * tree.c (const_lookup_attribute): Likewise.
4175         (attribute_list_contained): Use lookup_attribute.
4176         * tree.h (const_lookup_attribute, const_expr_first,
4177         const_expr_last, const_expr_only): Delete.
4178
4179 2007-09-01  Richard Guenther  <rguenther@suse.de>
4180
4181         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
4182         instead of TREE_THIS_VOLATILE.
4183         * tree-ssa-operands.c (add_virtual_operand): Do not set
4184         has_volatile_ops.  Do not check s_ann for NULL.
4185         (get_indirect_ref_operands): Likewise.
4186         (get_expr_operands): Likewise.  For all reference trees
4187         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
4188         check base of reference for TREE_THIS_VOLATILE.
4189
4190 2007-09-01  Richard Guenther  <rguenther@suse.de>
4191
4192         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
4193         between integral types.  Also allow conversions between
4194         pointer types.
4195
4196 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4197
4198         * optabs.c (prepare_float_lib_cmp): Use
4199         libgcc_cmp_return_mode instead of word_mode.
4200         * config/dfp-bit.h: Likewise.
4201         * config/fp-bit.h: Likewise.
4202         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
4203         New function.
4204         (spu_libgcc_shift_count_mode): New function.
4205         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
4206         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
4207
4208 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
4209
4210         * tree-pretty-print.c: Include output.h.
4211         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
4212         HOST_WIDE_INT_PRINT_DEC.
4213         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
4214
4215 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
4216
4217         PR rtl-optimization/33224
4218         * loop-iv.c (latch_dominating_def): Check that the definition belongs
4219         to the analysed region.
4220
4221 2007-08-31  Richard Guenther  <rguenther@suse.de>
4222
4223         * function.c (allocate_struct_function): Do not set
4224         current_function_returns_pointer.
4225         * function.h (struct var_refs_queue): Remove.
4226         (struct simple_obstack_stack): Likewise.
4227         (struct function): Remove fixup_var_refs_queue member.
4228         Remove returns_pointer flag.
4229         (current_function_returns_pointer): Remove define.
4230
4231 2007-08-31  Nick Clifton  <nickc@redhat.com>
4232
4233         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
4234         secondary keys in order to obtain a stable sort.
4235
4236 2007-08-31  Nick Clifton  <nickc@redhat.com>
4237
4238         PR target/33132
4239         * config/m32r/constraints.md: Add W constraint for integer zero.
4240         * config/m32r/m32r.md (get_pc): Use W and i constraints.
4241         Fix length calculation by using alternatives.
4242
4243 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
4244
4245         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
4246         split out from expand_binop.
4247         (avoid_expensive_constant): New function.
4248         (expand_binop_directly): Remove commutative_op argument and
4249         (expand_binop_directly): Remove commutative_op argument and
4250         call cummutative_optab_p instead.  Do not change op0 or op1
4251         when swapping xop0 and xop1.  Apply avoid_expensive_constant
4252         to each argument after potential swapping.  Enforce the
4253         canonical order of commutative operands.
4254         (expand_binop): Use shift_optab_p and commutative_optab_p.
4255         Update the calls to expand_binop_directly.  Only force constants
4256         into registers when widening an operation.  Only swap operands
4257         once a direct expansion has been rejected.
4258         (expand_twoval_binop): Only force constants into registers when
4259         using a direct expansion.
4260
4261 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
4262
4263         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
4264         (sched_analyze_insn): Don't postprocess speculative dependencies when
4265         target has no scheduling.
4266         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
4267         'uninitialized' warning.
4268
4269 2007-08-31  Richard Guenther  <rguenther@suse.de>
4270
4271         * tree.c (build_complex_type): Always set TYPE_NAME for
4272         comples types.
4273
4274 2007-08-31  Olivier Hainque  <hainque@adacore.com>
4275
4276         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
4277         internal macro. Default alignment factor for csect directives, chosen
4278         to match what BIGGEST_ALIGNMENT allows.
4279         (DATA_SECTION_ASM_OP): Use it.
4280         * config/rs6000/rs6000.c
4281         (rs6000_xcoff_output_readonly_section_asm_op):
4282         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
4283         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
4284         
4285 2007-08-31  Olivier Hainque  <hainque@adacore.com>
4286
4287         * dbxout.c (dbxout_block): Move declaration within the first
4288         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
4289         block to include the definition, together with the associated
4290         helpers.
4291
4292 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
4293             Revital Eres  <eres@il.ibm.com>
4294
4295         * doc/invoke.texi (-mpaired): Document flag.
4296         * config.gcc: Include paired.h in powerpc extra_headers and
4297         750cl.h in powerpc-*-linux*paired*.
4298         * config/rs6000/rs6000.opt (-mpaired): New flag.
4299         * config/rs6000/rs6000.c (paired_init_builtins,
4300         paired_expand_builtin, paired_expand_lv_builtin,
4301         paired_expand_stv_builtin, paired_expand_predicate_builtin):
4302         New functions to support the paired single builtin functions.
4303         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
4304         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
4305         single builtins.
4306         (bdesc_paired_preds): New structure for paired predicate
4307         instructions.
4308         (rs6000_expand_builtin): Expand paired single builtins.
4309         (rs6000_init_builtins): Init paired single builtins.
4310         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
4311         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
4312         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
4313         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
4314         (rs6000_vector_mode_supported_p): Support paired vector mode.
4315         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
4316         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
4317         New.
4318         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
4319         (DATA_ALIGNMENT): Likewise.
4320         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
4321         (rs6000_builtins): Add PAIRED builtins.
4322         * config/rs6000/rs6000.md: Include paired.md.
4323         * config/rs6000/paired.h: New.
4324         * config/rs6000/paired.md: New.
4325         * config/rs6000/750cl.h: New.
4326         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
4327
4328 2007-08-30  Ollie Wild  <aaw@google.com>
4329
4330         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
4331         * gcc.c (default_compilers): Add -fno-directives-only to
4332         @assembler-with-cpp.
4333
4334 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
4335
4336         PR middle-end/33211
4337
4338         * regclass.c (initial_fixed_regs): Revert previous change and make
4339         it const again.
4340         (initial_call_used_regs): Likewise.
4341         (initial_call_really_used_regs): Delete, reverting previous addition.
4342         (initial_reg_names): Likewise.
4343         (init_reg_sets): Revert previous change.
4344         (saved_fixed_regs): New.
4345         (saved_call_used_regs): New.
4346         (saved_call_really_used_regs): New.
4347         (saved_reg_names): New.
4348         (save_register_info): New.
4349         (restore_register_info): New.
4350         (init_reg_sets_1): Replace reset of register info with call to
4351         restore_register_info.
4352         * rtl.h (save_register_info): Declare.
4353         * toplev.c (backend_init): Call save_register_info.
4354
4355 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4356
4357         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
4358         from the original statement.
4359
4360 2007-08-30  Chao-ying Fu  <fu@mips.com>
4361
4362         * c-lex.c (interpret_fixed): Declare.
4363         (interpret_float): Process _Fract and _Accum.
4364         (interpret_fixed): New function.
4365         * final.c (output_addr_const): Process CONST_FIXED.
4366         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
4367         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
4368         SS_DIV, US_DIV.
4369         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
4370         US_DIV, US_ASHIFT.
4371         (simplify_immed_subreg): Support CONST_FIXED.
4372         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
4373         (simplify_subreg): Support CONST_FIXED.
4374
4375 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4376
4377         * config/rs6000/ppu_intrinsics.h: New file.
4378         * config.gcc (powerpc*-*-* <extra_headers>): Install
4379         ppu_intrinsics.h.
4380
4381 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
4382
4383         * cfg.c (dump_flow_info): Change to also print entry and exit
4384         block info.
4385         * print-rtl.c (print_rtl_single): Allow to print rtl with
4386         -fdump-unnumbered.
4387         
4388 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
4389
4390         * df-core.h (df_dump_region): New function.
4391         * df.h (df_dump_region): New function.
4392         * loop-invariant.c (find_defs): Add call to df_dump_region.
4393         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
4394         df_dump_region.
4395         
4396 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
4397
4398         PR target/33168
4399         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
4400         true if any of the compare_section_name calls returned true,
4401         rather than if any returned false.
4402
4403 2007-08-30  Richard Guenther  <rguenther@suse.de>
4404
4405         PR tree-optimization/33199
4406         * tree-ssa-structalias.c (handle_lhs_call): New function.
4407         (find_func_aliases): In non-IPA mode make sure that for
4408         calls that return a pointer we add a constraint for the
4409         result to point to anything.
4410
4411 2007-08-30  Richard Guenther  <rguenther@suse.de>
4412
4413         * doc/invoke.texi (-mveclibabi): Document new target option.
4414         * config/i386/i386.opt (-mveclibabi): New target option.
4415         * config/i386/i386.c (ix86_veclib_handler): Handler for
4416         vectorization library support.
4417         (override_options): Handle the -mveclibabi option, initialize
4418         the vectorization library handler.
4419         (ix86_builtin_vectorized_function): As fallback call the
4420         vectorization library handler, if set.
4421         (ix86_veclibabi_acml): New static function for ACML ABI style
4422         vectorization support.
4423
4424 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
4425
4426         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
4427         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
4428         SImode and update m.  Don't run gen_lowpart_common on arbitrary
4429         memory address, force it to register first.
4430
4431         PR middle-end/32758
4432         * dce.c (dce_process_block): Don't delete setters of
4433         artificially used registers.
4434
4435 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4436
4437         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
4438         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
4439         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
4440
4441 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4442
4443         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
4444         pattern.
4445         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
4446         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
4447
4448 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4449
4450         * system.h: Activate -Wcast-qual as warning-only.
4451
4452 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
4453
4454         PR target/33168
4455         * config/rs6000/rs6000.c (compare_section_name): New function.
4456         (rs6000_elf_in_small_data_p): Compare section prefixes instead
4457         of full name.
4458
4459 2007-08-29  Olivier Hainque  <hainque@adacore.com>
4460
4461         * xcoffout.c: #include debug.h.
4462         * Makefile.in (xcoffout.o): Add debug.h dependency.
4463
4464 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
4465
4466         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
4467         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
4468
4469 2007-08-29  Richard Guenther  <rguenther@suse.de>
4470
4471         * tree-pretty-print.c (dump_generic_node): Print
4472         label DECL_UID as D.%u.
4473         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
4474
4475 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4476
4477         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
4478         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
4479
4480 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
4481
4482         PR c++/33194
4483         * tree.c (build_type_attribute_qual_variant): Set canonical types
4484         on the final, unqualified attribute variant before building the
4485         qualified version.
4486
4487 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
4488
4489         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
4490         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
4491
4492 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
4493
4494         Revert
4495         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
4496         * config/bfin/bfin.md (composev2hi): Put operands into vector
4497         with correct order.
4498
4499 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
4500
4501         * config/bfin/bfin.md (composev2hi): Put operands into vector
4502         with correct order.
4503
4504 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
4505
4506         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
4507         attribute when appropriate.
4508         (bfin_handle_l1_text_attribute): New.
4509         (bfin_handle_l1_data_attribute): New.
4510         (bfin_attribute_table): Add attributes: l1_text, l1_data,
4511         l1_data_A and l1_data_B.
4512         * doc/extend.texi (node Function Attributes): Document l1_text
4513         function attribute.
4514         (Variable Attributes): Add Blackfin subsection. Document l1_data,
4515         l1_data_A and l1_data_B variable attributes.
4516
4517 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
4518
4519         * config/bfin/bfin.opt (minline-plt): Add.
4520         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
4521         call to global functions.
4522         * doc/invoke.texi (Option Summary): Mention -minline-plt.
4523         (Blackfin Options): Document -minline-plt.
4524
4525 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
4526
4527         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
4528         given a non-function.
4529         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
4530
4531 2007-08-28  DJ Delorie  <dj@redhat.com>
4532
4533         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
4534
4535 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4536
4537         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
4538
4539 2007-08-28  Richard Guenther  <rguenther@suse.de>
4540
4541         * tree.h (struct tree_function_decl): Increase size of
4542         function_code bitfield.
4543
4544 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
4545             Kazu Hirata  <kazu@codesourcery.com>
4546
4547         * gcc/config/m68k/linux.h
4548         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
4549         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
4550         (m68k_return_in_memory): New.
4551         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
4552         New.
4553
4554 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
4555
4556         PR target/32661
4557         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
4558         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
4559         operand) when top VEC_SELECT extracts scalar element.
4560         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
4561         (*vec_extract_v4sf_mem): Ditto.
4562
4563 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
4564
4565         PR middle-end/32370
4566         * passes.c (init_optimization_passes): Move pass_df_finish
4567         after pass_postreload sublist.
4568
4569         PR rtl-optimization/33148
4570         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
4571         (neg (lt X 0)) if X has scalar int mode.
4572
4573         PR debug/32914
4574         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
4575         initializer, use build_vector_from_ctor if possible to create
4576         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
4577         even after this, return NULL.
4578
4579 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4580
4581         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
4582
4583 2007-08-28  Richard Guenther  <rguenther@suse.de>
4584
4585         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
4586         (struct tree_function_decl): Make function_code a bitfield.
4587         Add disregard_inline_limits flag.
4588         * cgraphunit.c (cgraph_process_new_functions): Check
4589         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
4590         (cgraph_preserve_function_body_p): Likewise.
4591         * ipa-inline.c (compute_inline_parameters): Likewise.
4592         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
4593         for GNU C extern inline functions.
4594         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
4595         * tree-inline.c (disregard_inline_limits_p): Remove.
4596         * tree-inline.h (disregard_inline_limits_p): Likewise.
4597         * c-common.c (handle_always_inline_attribute): Set
4598         DECL_DISREGARD_INLINE_LIMITS.
4599         * langhooks.c (add_builtin_function): Verify the function code
4600         fits in the bitfield.
4601
4602 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
4603             Vladimir Yanovsky  <yanov@il.ibm.com>
4604             Revital Eres  <eres@il.ibm.com>
4605             Andrey Belevantsev  <abel@ispras.ru>
4606
4607         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
4608         is set.
4609         * modulo-sched.c: Add documentation regarding do-loop.
4610         (doloop_register_get): Change number of arguments to support
4611         the new do-loop pattern and check whether COUNT_REG has no other
4612         occurences in the loop besides in the control part.
4613         (duplicate_insns_of_cycles): Do not duplicate the insn which
4614         changes count_reg as it is already adjusted.
4615         (generate_prolog_epilog): New argument to support the new
4616         do-loop pattern.  Change the subtract instruction to use
4617         expand_simple_binop.  Call duplicate_insns_of_cycles with new
4618         argument.
4619         (sms_schedule): Call doloop_register_get and
4620         generate_prolog_epilog with new argument.  Do not handle loops
4621         with single sets insns with subreg in their lhs.
4622         * loop-doloop.c (doloop_optimize): Support for another do-loop
4623         pattern.
4624         (doloop_condition_get): Gets an instruction instead of a pattern
4625         and change the return condition when the do-loop pattern is
4626         not parallel.
4627         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
4628         deps when considering to not create edges.
4629
4630 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
4631
4632         * doc/extend.texi (gnu_inline funtion attribute): Document C++
4633         behavior.
4634
4635 2007-08-27  Jason Merrill  <jason@redhat.com>
4636
4637         PR c++/31337
4638         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
4639         zero-sized types after calling gimplify_modify_expr_rhs.
4640
4641 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
4642
4643         * regclass.c (init_reg_autoinc): Fix typo.
4644
4645 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
4646         
4647         Fix PR tree-optimization/33173
4648         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
4649
4650 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
4651
4652         PR target/31385
4653         * config/i386/i386.h (VALID_DFP_MODE_P): New.
4654         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
4655         GPR.
4656
4657 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
4658             David Ung  <davidu@mips.com>
4659             Nigel Stephens <nigel@mips.com>
4660
4661         Separate target-specific initialization from general
4662         back-end initialization.
4663
4664         * toplev.c (init_alignments): New, split out from...
4665         (process_options): ...here.
4666         (backend_init_target): New, split out from...
4667         (backend_init): ...here.
4668         (lang_dependent_init_target): New, split out from...
4669         (lang_dependent_init): ...here.
4670         (target_reinit): New.
4671         * toplev.h (target_reinit): Declare.
4672         * expr.c (init_expr_target): Renamed from init_expr_once, since it
4673         now can be called more than once.  Update comments.
4674         * expr.h (init_expr_target): Likewise.
4675         * alias.c (init_alias_target): Renamed from init_alias_once, since it
4676         now can be called more than once.  Explicitly zero
4677         static_reg_base_value.
4678         * emit-rtl.c (init_emit_regs): New, split out from...
4679         (init_emit_once): Here.
4680         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
4681         non-const, so that changes from command-line arguments can overwrite
4682         values provided by the static initializers.
4683         (initial_call_really_used_regs): New, used similarly to the above.
4684         (initial_reg_names): Likewise.
4685         (last_mode_for_init_move_cost): Promoted function-local static to
4686         file-scope static to make it accessible outside init_move_cost.
4687         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
4688         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
4689         reg_names since it is needed for parsing command-line options.
4690         (init_move_cost): Use last_mode_for_init_move_cost instead of
4691         function-local static.
4692         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
4693         call_really_used_regs now.  Reinitialize reg_names.  Also
4694         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
4695         reg_class_superunion.  Clear losing_caller_save_reg_set.
4696         Preserve global registers if called more than once.  Reset
4697         move cost, may_move_in_cost, may_move_out_cost, and
4698         last_mode_for_init_move_cost.
4699         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
4700         can now be invoked more than once.  Update comments.
4701         (init_regs): Update comments.
4702         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
4703         and initial_call_really_used_regs, instead of the non-initial 
4704         variables.  This allows us to save the command-line register settings
4705         after target reinitialization.
4706         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
4707         * rtl.h (init_emit_regs): Declare.
4708         (init_reg_modes_target, init_alias_target): Renamed as described
4709         above.
4710         * reload1.c (init_reload): Update comments.
4711         * optabs.c (init_optabs): Likewise.
4712         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
4713         
4714 2007-08-26  Chao-ying Fu  <fu@mips.com>
4715
4716         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
4717         __typeof().
4718
4719 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4720
4721         * alias.c (memory_modified_1, memory_modified_in_insn_p):
4722         Constify.
4723         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
4724         Likewise.
4725         * bb-reorder.c (copy_bb_p): Likewise.
4726         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
4727         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
4728         block_ends_with_condjump_p): Likewise.
4729         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
4730         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
4731         block_ends_with_condjump_p): Likewise.
4732         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
4733         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
4734         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
4735         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
4736         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
4737         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
4738         debug_true_const_tree instad of debug_true_tree.
4739         * debug.c (do_nothing_debug_hooks): Likewise.
4740         * debug.h (ignore_block, debug_true_const_tree): Constify.
4741         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
4742         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
4743         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
4744         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
4745         dbx_reg_number, is_based_loc, field_type,
4746         simple_type_align_in_bits, simple_decl_align_in_bits,
4747         simple_type_size_in_bits, field_byte_offset, insert_float,
4748         type_tag, member_declared_type, is_redundant_typedef,
4749         secname_for_decl, is_inlined_entry_point): Likewise.
4750         * emit-rtl.c (const_next_insn, const_previous_insn,
4751         const_next_nonnote_insn, const_prev_nonnote_insn,
4752         const_next_real_insn, const_prev_real_insn,
4753         const_next_active_insn, const_prev_active_insn, const_next_label,
4754         const_prev_label): Likewise.
4755         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
4756         Likewise.
4757         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
4758         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
4759         sched_insn_is_legitimate_for_speculation_p): Likewise.
4760         * jump.c (reversed_comparison_code_parts,
4761         reversed_comparison_code, reversed_comparison, condjump_label):
4762         Likewise.
4763         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
4764         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
4765         Likewise.
4766         * rtl.h (const_previous_insn, const_next_insn,
4767         const_prev_nonnote_insn, const_next_nonnote_insn,
4768         const_prev_real_insn, const_next_real_insn,
4769         const_prev_active_insn, const_next_active_insn, const_prev_label,
4770         const_next_label, modified_between_p, modified_in_p,
4771         const_note_storeskeep_with_call_p, condjump_label,
4772         reversed_comparison, reversed_comparison_code,
4773         reversed_comparison_code_parts, memory_modified_in_insn_p,
4774         stack_regs_mentioned): Likewise.
4775         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
4776         keep_with_call_p): Likewise.
4777         * sched-deps.c (deps_may_trap_p, sched_get_condition,
4778         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
4779         sd_lists_size, sd_lists_empty_p): Likewise.
4780         * sched-int.h (sched_insns_conditions_mutex_p,
4781         haifa_classify_insn, no_real_insns_p,
4782         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
4783         sd_lists_size, sd_lists_empty_p): Likewise.
4784         * sdbout.c (sdb_debug_hooks): Likewise.
4785         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
4786         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
4787         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
4788         Likewise.
4789         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
4790         tree_can_throw_internal): Likewise.
4791         * tree-flow-inline.h (phi_nodes): Likewise.
4792         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
4793         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
4794         * tree-gimple.c (const_get_call_expr_in): Likewise.
4795         * tree-gimple.h (const_get_call_expr_in): Likewise.
4796         * tree.c (const_lookup_attribute, attribute_list_equal,
4797         attribute_list_contained): Likewise.
4798         * tree.h (attribute_list_equal, attribute_list_contained,
4799         const_lookup_attribute): Likewise.
4800         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
4801
4802 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
4803
4804         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
4805         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
4806
4807 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
4808
4809         PR target/32991
4810         * config/alpha/constraints.md: Delete "svn:mime-type" property
4811         with svn propdel "svn:mime-type".
4812
4813 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
4814
4815         PR middle-end/33181
4816         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
4817         non NOTE insn doesn't cross basic block.
4818         (noce_try_abs): Likewise.
4819         (noce_process_if_block): Likewise.
4820
4821 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
4822
4823         PR target/33151
4824         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
4825         operand without auto-inc-dec.
4826         * config/rs6000/rs6000.md (floatsidf2_internal): Use
4827         offsettable_mem_operand.
4828         (floatunssidf2_internal): Same.
4829         (fix_truncdfsi2_internal): Same.
4830         (floatsidf_ppc64): Same.
4831         (floatunssidf_ppc64): Same.
4832         (fix_trunctfsi2_internal): Same.
4833
4834 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
4835
4836         PR bootstrap/30620
4837         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
4838         pass defines needed for version.c.
4839
4840 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
4841
4842         * configure.ac (--debug-prefix-map check): Change assembler
4843         version presumed to have feature to 2.18.
4844         * configure: Regenerate.
4845
4846 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4847
4848         * c-common.c (vector_types_convertible_p,
4849         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
4850         self_promoting_args_p): Constify.
4851         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
4852         c_promoting_integer_type_p, self_promoting_args_p,
4853         anon_aggr_type_p, vector_types_convertible_p): Likewise.
4854         * c-decl.c (anon_aggr_type_p): Likewise.
4855         * * c-dump.c (dump_stmt): Likewise.
4856         * c-objc-common.c (has_c_linkage): Likewise.
4857         * c-tree.h (same_translation_unit_p): Likewise.
4858         * c-typeck.c (null_pointer_constant_p,
4859         tagged_types_tu_compatible_p, function_types_compatible_p,
4860         type_lists_compatible_p, lvalue_or_else, lvalue_p,
4861         comptypes_internal, struct tagged_tu_seen_cache,
4862         same_translation_unit_p, alloc_tagged_tu_seen_cache,
4863         c_size_in_bytes): Likewise.
4864         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
4865         hash_ptr, eq_ptr): Likewise.
4866         * langhooks-def.h (lhd_decl_ok_for_sibcall,
4867         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
4868         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
4869         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
4870         Likewise.
4871         * optabs.c (optab_for_tree_code): Likewise.
4872         * optabs.h (optab_for_tree_code): Likewise.
4873         * rtl.h (simplify_rtx): Likewise.
4874         * simplify-rtx.c (simplify_rtx): Likewise.
4875         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
4876         dump_flag, dump_node): Likewise.
4877         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
4878         queue_and_dump_type, dump_flag): Likewise.
4879         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
4880         * tree-pass.h (dump_node): Likewise.
4881         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
4882         supportable_narrowing_operation): Likewise.
4883         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
4884         supportable_narrowing_operation): Likewise.
4885         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
4886         is_negative_overflow_infinity, is_positive_overflow_infinity,
4887         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
4888         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
4889         update_value_range, add_equivalence, ssa_name_nonnegative_p,
4890         ssa_name_nonzero_p, fp_predicate): Likewise.
4891         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
4892         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
4893         ssa_name_nonnegative_p): Likewise.
4894
4895 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
4896
4897         * config.gcc : Add x86_64-elf target.
4898
4899 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
4900
4901         * expr.c (store_expr): Fix order of store_by_pieces arguments.
4902
4903 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
4904             Nigel Stephens <nigel@mips.com>
4905
4906         PR target/11787
4907
4908         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
4909         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
4910         * expr.c (SET_BY_PIECES_P): Define.
4911         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
4912         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
4913         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
4914         store_by_pieces.
4915         * expr.h (SET_RATIO): Define.
4916         (can_store_by_pieces, store_by_pieces): Update prototypes.
4917         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
4918         can_store_by_pieces/store_by_pieces.
4919         (expand_builtin_memcpy_args): Likewise.
4920         (expand_builtin_strncpy): Likewise.
4921         (expand_builtin_memset_args): Likewise.  Also remove special case
4922         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
4923         decide what to do instead.
4924         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
4925         to can_store_by_pieces.
4926
4927         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
4928         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
4929
4930         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
4931         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
4932         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
4933         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
4934         (STORE_BY_PIECES_P): Define.
4935
4936 2007-08-24  Tom Tromey  <tromey@redhat.com>
4937
4938         * varpool.c (varpool_last_needed_node): Fix comment typo.
4939         * c-decl.c (duplicate_decls): Fix comment typo.
4940         (clone_underlying_type): Update comment.
4941
4942 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4943
4944         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
4945         alpha_in_small_data_p, alpha_split_complex_arg,
4946         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
4947         Constify.
4948         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
4949         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
4950         Likewise.
4951         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
4952         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
4953         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
4954         * config/darwin.c (darwin_binds_local_p): Likewise.
4955         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
4956         Likewise.
4957         * config/i386/i386-protos.h (i386_pe_binds_local_p,
4958         i386_pe_valid_dllimport_attribute_p): Likewise.
4959         * config/i386/i386.c (ix86_function_regparm,
4960         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
4961         x86_can_output_mi_thunk, ix86_mangle_type,
4962         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
4963         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
4964         i386_pe_binds_local_p): Likewise.
4965         * config/ia64/ia64.c
4966         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
4967         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
4968         ia64_invalid_conversion, ia64_invalid_unary_op,
4969         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
4970         Likewise.
4971         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
4972         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
4973         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
4974         * config/mips/mips.c (mips_use_blocks_for_constant_p,
4975         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
4976         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
4977         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
4978         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
4979         * config/pa/pa.c (pa_commutative_p): Likewise.
4980         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
4981         Likewise.
4982         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
4983         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
4984         rs6000_use_blocks_for_constant_p,
4985         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
4986         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
4987         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
4988         * config/s390/s390.c (s390_mangle_type,
4989         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
4990         Likewise.
4991         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
4992         th_in_small_data_p): Likewise.
4993         * config/sh/sh.c (sh_ms_bitfield_layout_p,
4994         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
4995         Likewise.
4996         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
4997         sparc_mangle_type): Likewise.
4998         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
4999         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
5000         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
5001         Likewise.
5002         * hooks.c (hook_bool_mode_const_rtx_false,
5003         hook_bool_mode_const_rtx_true,
5004         hook_bool_const_tree_hwi_hwi_const_tree_false,
5005         hook_bool_const_tree_hwi_hwi_const_tree_true,
5006         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
5007         hook_constcharptr_const_tree_null,
5008         hook_constcharptr_const_rtx_null,
5009         hook_constcharptr_const_tree_const_tree_null,
5010         hook_constcharptr_int_const_tree_null,
5011         hook_constcharptr_int_const_tree_const_tree_null): New.
5012         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
5013         hook_bool_tree_hwi_hwi_tree_false,
5014         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
5015         hook_int_tree_tree_1, hook_constcharptr_tree_null,
5016         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
5017         hook_constcharptr_int_tree_null,
5018         hook_constcharptr_int_tree_tree_null): Delete.
5019         (default_can_output_mi_thunk_no_vcall): Constify.
5020         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
5021         hook_bool_tree_hwi_hwi_tree_false,
5022         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
5023         hook_int_tree_tree_1, hook_constcharptr_tree_null,
5024         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
5025         hook_constcharptr_int_tree_null,
5026         hook_constcharptr_int_tree_tree_null): Delete.
5027         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
5028         hook_bool_const_tree_hwi_hwi_const_tree_false,
5029         hook_bool_const_tree_hwi_hwi_const_tree_true,
5030         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
5031         hook_constcharptr_const_tree_null,
5032         hook_constcharptr_const_rtx_null,
5033         hook_constcharptr_const_tree_const_tree_null,
5034         hook_constcharptr_int_const_tree_null,
5035         hook_constcharptr_int_const_tree_const_tree_null): New.
5036         (default_can_output_mi_thunk_no_vcall): Constify.
5037         * integrate.c (function_attribute_inlinable_p): Likewise.
5038         * integrate.h (function_attribute_inlinable_p): Likewise.
5039         * jump.c (rtx_renumbered_equal_p): Likewise.
5040         * output.h (decl_readonly_section, categorize_decl_for_section,
5041         default_use_anchors_for_symbol_p, default_binds_local_p,
5042         default_binds_local_p_1): Likewise.
5043         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
5044         Likewise.
5045         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5046         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
5047         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
5048         TARGET_COMP_TYPE_ATTRIBUTES,
5049         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
5050         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
5051         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
5052         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
5053         TARGET_DWARF_CALLING_CONVENTION): Likewise.
5054         * target.h (can_output_mi_thunk, needs_block_p,
5055         first_cycle_multipass_dfa_lookahead_guard_spec,
5056         vector_alignment_reachable, comp_type_attributes,
5057         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
5058         commutative_p, use_blocks_for_constant_p,
5059         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
5060         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
5061         invalid_within_doloop, valid_dllimport_attribute_p,
5062         split_complex_arg, invalid_arg_for_unprototyped_fn,
5063         invalid_conversion, invalid_unary_op, invalid_binary_op):
5064         Likewise.
5065         * targhooks.c (default_invalid_within_doloop,
5066         hook_invalid_arg_for_unprototyped_fn,
5067         default_builtin_vector_alignment_reachable): Likewise.
5068         (hook_bool_rtx_commutative_p): Delete.
5069         (hook_bool_const_rtx_commutative_p): New.
5070         * targhooks.h (default_invalid_within_doloop,
5071         default_builtin_vector_alignment_reachable,
5072         hook_invalid_arg_for_unprototyped_fn): Constify.
5073         (hook_bool_rtx_commutative_p): Delete.
5074         (hook_bool_const_rtx_commutative_p): New.
5075         * varasm.c (bss_initializer_p, decl_default_tls_model,
5076         categorize_decl_for_section, decl_readonly_section,
5077         default_use_anchors_for_symbol_p, default_binds_local_p,
5078         default_binds_local_p_1): Constify.
5079
5080 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5081
5082         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
5083         __NO_BUILTIN if -fno-builtin.
5084
5085 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5086
5087         * config/bfin/bfin.c (print_operand): Report error instead of
5088         ICE for wrong operand.
5089
5090 2007-08-24  Michael Matz  <matz@suse.de>
5091
5092         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
5093
5094 2007-08-24  Richard Guenther  <rguenther@suse.de>
5095
5096         PR middle-end/33166
5097         * tree-ssa.c (useless_type_conversion_p): Split into a
5098         recursive and a non-recursive part.
5099         (useless_type_conversion_p_1): New function.
5100         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
5101         from maybe_fold_offset_to_reference is trivially convertible
5102         to the desired type before doing the simplification.
5103
5104 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
5105
5106         * expr.c (store_expr): Optimize initialization of an array
5107         with STRING_CST.
5108         * expr.h (builtin_strncpy_read_str): New prototype.
5109         * builtins.c (builtin_strncpy_read_str): Remove prototype.
5110         No longer static.
5111
5112 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
5113
5114         PR middle-end/33157
5115         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
5116         field when initializing if_info structure.
5117
5118 2007-08-24  Richard Guenther  <rguenther@suse.de>
5119
5120         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
5121         dependencies.
5122         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
5123         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
5124         * tree-inline.c (inlinable_function_p): Fold in common parts of
5125         the cannot_inline_tree_fn langhook.
5126         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
5127         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
5128         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
5129         cannot_inline_tree_fn langhook.
5130         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
5131         cannot_inline_tree_fn member.
5132
5133 2007-08-24  Richard Guenther  <rguenther@suse.de>
5134
5135         * expr.c (get_inner_reference): Do computation of bitoffset
5136         from offset in a way we can detect overflow reliably.
5137
5138 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5139
5140         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
5141
5142 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5143
5144         * config/bfin/bfin.opt (mfast-fp): Add.
5145         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
5146         libbffastfp override libgcc if -mfast-fp.
5147         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
5148         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
5149         (Blackfin Options): Document -mfast-fp.
5150
5151 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
5152
5153         PR tree-optimization/32573
5154         PR middle-end/32946
5155         * tree-data-ref.c (initialize_data_dependence_relation): Clear
5156         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
5157         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
5158         (build_classic_dist_vector): Return false rather than true if
5159         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
5160         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
5161         returned false.  Don't call save_dist_v before calling
5162         build_classic_dist_vector_1.
5163         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
5164         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
5165         DDR_DIR_VECTS vectors.
5166
5167 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
5168
5169         * configure.ac (leb128): Modify sed statement to work with any
5170         binutils version string.
5171         * configure: Regenerate
5172
5173 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5174
5175         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
5176         Wrap in RTX_CODE macro guard.
5177         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
5178         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
5179         arm_mark_dllimport, arm_pe_encode_section_info,
5180         arm_pe_unique_section): Use ISO-C function declarations.
5181         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
5182         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
5183         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
5184         Likewise.
5185         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
5186         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
5187         defining.
5188         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
5189         warnings.
5190         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
5191         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
5192         (register_move_cost): Use ISO-C function declarations.
5193         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
5194         * config/score/score-protos.h (score_declare_object): Add
5195         ATTRIBUTE_PRINTF_4.
5196         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
5197         warnings.
5198         * final.c (profile_function): Avoid empty if-bodies.
5199         
5200         
5201         * calls.c (must_pass_in_stack_var_size,
5202         must_pass_in_stack_var_size_or_pad): Constify.
5203         * config/alpha/alpha-protos.h (function_value): Likewise.
5204         * config/alpha/alpha.c (alpha_return_in_memory,
5205         alpha_pass_by_reference, function_value,
5206         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
5207         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5208         Likewise.
5209         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
5210         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5211         TARGET_PROMOTE_PROTOTYPES): Likewise.
5212         * config/arm/arm-protos.h (arm_return_in_memory,
5213         arm_pad_arg_upward, arm_function_value): Likewise.
5214         * config/arm/arm.c (arm_pass_by_reference,
5215         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
5216         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5217         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
5218         Likewise.
5219         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
5220         * config/avr/avr-protos.h (avr_function_value): Likewise.
5221         * config/avr/avr.c (avr_return_in_memory,
5222         gas_output_limited_string, gas_output_ascii, avr_function_value,
5223         avr_return_in_memory): Likewise.
5224         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
5225         * config/bfin/bfin.c (bfin_pass_by_reference,
5226         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
5227         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
5228         Likewise.
5229         * config/cris/cris.c (cris_pass_by_reference,
5230         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
5231         * config/crx/crx.c (crx_return_in_memory): Likewise.
5232         * config/darwin.c (function_base, machopic_function_base_name):
5233         Likewise.
5234         * config/fr30/fr30.c (fr30_must_pass_in_stack,
5235         TARGET_PROMOTE_PROTOTYPES): Likewise.
5236         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
5237         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
5238         * config/i386/i386-protos.h (ix86_return_in_memory,
5239         ix86_sol10_return_in_memory): Likewise.
5240         * config/i386/i386.c (ix86_function_value,
5241         ix86_function_sseregparm, ix86_must_pass_in_stack,
5242         type_natural_mode, classify_argument, examine_argument,
5243         construct_container, ix86_pass_by_reference, function_value_32,
5244         function_value_64, ix86_function_value_1, return_in_memory_32,
5245         return_in_memory_64, return_in_memory_ms_64,
5246         ix86_return_in_memory, ix86_sol10_return_in_memory,
5247         TARGET_PROMOTE_PROTOTYPES): Likewise.
5248         * config/ia64/ia64-protos.h (ia64_function_value,
5249         ia64_hpux_function_arg_padding): Likewise.
5250         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
5251         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
5252         ia64_hpux_function_arg_padding): Likewise.
5253         * config/iq2000/iq2000-protos.h (function_arg,
5254         iq2000_function_value): Likewise.
5255         * config/iq2000/iq2000.c (iq2000_return_in_memory,
5256         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
5257         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5258         function_arg, iq2000_function_value): Likewise.
5259         * config/m32c/m32c-protos.h (m32c_function_value,
5260         m32c_promote_function_return): Likewise.
5261         * config/m32c/m32c.c (m32c_pass_by_reference,
5262         m32c_promote_prototypes, m32c_promote_function_return,
5263         m32c_function_value): Likewise.
5264         * config/m32r/m32r.c (m32r_return_in_memory,
5265         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
5266         m32r_in_small_data_p): Likewise.
5267         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
5268         Likewise.
5269         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
5270         m68hc11_function_arg_padding): Likewise.
5271         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
5272         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
5273         m68k_function_value): Likewise.
5274         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
5275         mcore_function_value): Likewise.
5276         * config/mcore/mcore.c (handle_structs_in_regs,
5277         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
5278         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5279         mcore_num_arg_regs, mcore_function_value): Likewise.
5280         * config/mips/mips-protos.h (mips_pad_arg_upward,
5281         mips_function_value): Likewise.
5282         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
5283         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
5284         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5285         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
5286         mips_function_value): Likewise.
5287         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
5288         Likewise.
5289         * config/mmix/mmix.c (mmix_pass_by_reference,
5290         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
5291         mmix_encode_section_info): Likewise.
5292         * config/mn10300/mn10300-protos.h (mn10300_function_value):
5293         Likewise.
5294         * config/mn10300/mn10300.c (mn10300_return_in_memory,
5295         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
5296         mn10300_function_value): Likewise.
5297         * config/mt/mt-protos.h (mt_function_value): Likewise.
5298         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
5299         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
5300         * config/pa/pa-protos.h (function_arg_padding, function_value,
5301         pa_return_in_memory): Likewise.
5302         * config/pa/pa.c (pa_pass_by_reference,
5303         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5304         function_arg_padding, function_value, pa_return_in_memory):
5305         Likewise.
5306         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
5307         * config/rs6000/rs6000-protos.h (rs6000_function_value,
5308         function_arg_padding): Likewise.
5309         * config/rs6000/rs6000.c (rs6000_return_in_memory,
5310         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
5311         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
5312         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5313         function_arg_padding, altivec_expand_dst_builtin,
5314         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
5315         altivec_init_builtins, rs6000_common_init_builtins,
5316         rs6000_function_value): Likewise.
5317         * s390/s390-protos.h (s390_function_value): Likewise.
5318         * config/s390/s390.c (s390_function_arg_size,
5319         s390_pass_by_reference, s390_return_in_memory,
5320         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
5321         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
5322         * config/score/score-protos.h (score_function_value): Likewise.
5323         * config/score/score.c (score_arg_partial_bytes,
5324         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5325         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
5326         score_pass_by_reference, score_add_offset, score_function_value):
5327         Likewise.
5328         * config/sh/sh-protos.h (sh_attr_renesas_p,
5329         sh_promote_prototypes): Likewise.
5330         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
5331         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
5332         sh_attr_renesas_p): Likewise.
5333         * config/sparc/sparc-protos.h (function_value,
5334         function_arg_padding): Likewise.
5335         * config/sparc/sparc.c (sparc_promote_prototypes,
5336         sparc_return_in_memory, sparc_pass_by_reference,
5337         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5338         function_arg_record_value_2, function_arg_record_value_1,
5339         function_arg_record_value, function_arg_record_value,
5340         function_arg_padding, function_value): Likewise.
5341         * config/spu/spu-protos.h (spu_function_value): Likewise.
5342         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
5343         spu_function_value): Likewise.
5344         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
5345         Likewise.
5346         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
5347         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
5348         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5349         Likewise.
5350         * config/v850/v850.c (v850_return_in_memory,
5351         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
5352         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
5353         * config/xtensa/xtensa.c (xtensa_return_in_msb,
5354         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
5355         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5356         Likewise.
5357         * explow.c (promote_mode, hard_function_value): Likewise.
5358         * expr.h (hard_function_value, promote_mode): Likewise.
5359         * function.c (aggregate_value_p): Likewise.
5360         * hooks.c (hook_bool_const_tree_true): New.
5361         * hooks.h (hook_bool_const_tree_true): New.
5362         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
5363         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
5364         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5365         TARGET_RETURN_IN_MSB): Likewise.
5366         * target.h (promote_function_args, promote_function_return,
5367         promote_prototypes, return_in_memory, return_in_msb,
5368         pass_by_reference, must_pass_in_stack, callee_copies,
5369         function_value): Likewise.
5370         * targhooks.c (default_return_in_memory,
5371         hook_pass_by_reference_must_pass_in_stack,
5372         hook_callee_copies_named,
5373         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
5374         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
5375         default_function_value): Likewise. 
5376         * targhooks.h (default_return_in_memory,
5377         hook_pass_by_reference_must_pass_in_stack,
5378         hook_callee_copies_named,
5379         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
5380         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
5381         default_function_value): Likewise.
5382         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
5383         (equiv_class_label_hash, equiv_class_label_eq): Constify.
5384         * tree-vectorizer.c (bb_in_loop_p): Likewise.
5385         * tree.c (needs_to_live_in_memory): Likewise.
5386         * tree.h (struct tree_type, needs_to_live_in_memory,
5387         aggregate_value_p, must_pass_in_stack_var_size,
5388         must_pass_in_stack_var_size_or_pad): Likewise.
5389         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
5390         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
5391         lookup_filename): Likewise.
5392
5393 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
5394
5395         PR target/17390
5396         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
5397         fake fcomi i387 instruction for !TARGET_CMOVE.
5398         (ix86_expand_branch): Expand natural sequence with one jump for
5399         all targets, not only TARGET_CMOVE.
5400         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
5401         pattern to implement fake fcomi sequence.  Split instruction after
5402         reload to correct compare sequences.
5403         (*cmpfp_xf_cc): Ditto.
5404         (*cmpfp_<mode>_cc): Ditto.
5405         (*cmpfp_u_cc): Ditto.
5406         (*cmpfp_<mode>_cc): Ditto.
5407
5408 2007-08-23  Richard Guenther  <rguenther@suse.de>
5409
5410         * tree-pretty-print.c (dump_generic_node): Annotate
5411         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
5412
5413 2007-08-23  Richard Guenther  <rguenther@suse.de>
5414
5415         * builtins.c (expand_builtin_mathfn): Wrap argument in
5416         save_expr directly instead of re-building the call.
5417         (expand_builtin_mathfn_2): Likewise.
5418         (expand_builtin_mathfn_3): Likewise.
5419         (expand_builtin_interclass_mathfn): Likewise.
5420         (expand_builtin_int_roundingfn): Set arg.
5421         (expand_builtin_int_roundingfn_2): Likewise.
5422
5423 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
5424
5425         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
5426         *sse_nand<mode>3, *sse_xor<mode>3): New.
5427
5428 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
5429
5430         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
5431         * config/i386/i386.c (print_operand): Handle ';' code.  Output
5432         semicolon for TARGET_MACHO.
5433         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
5434         emit semicolon after 'lock' prefix.
5435         (sync_double_compare_and_swap<mode>): Ditto.
5436         (*sync_double_compare_and_swapdi_pic): Ditto.
5437         (*sync_compare_and_swap_cc<mode>): Ditto.
5438         (sync_double_compare_and_swap_cc<mode>): Ditto.
5439         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
5440         (sync_old_add<mode>): Ditto.
5441         (sync_add<mode>): Ditto.
5442         (sync_sub<mode>): Ditto.
5443         (sync_ior<mode>): Ditto.
5444         (sync_and<mode>): Ditto.
5445         (sync_xor<mode>): Ditto.
5446
5447 2007-08-22  Chao-ying Fu  <fu@mips.com>
5448
5449         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
5450         in DEF_RTL_EXPR.
5451         (copy_rtx): Handle CONST_FIXED.
5452         (rtx_equal_p): Likewise.
5453         * rtl.h (fixed_value.h): New include.
5454         (rtx_def): Add a new field of fixed_value to u.
5455         (XCNMPFV): Define for accessing fixed_value.
5456         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
5457         Define.
5458         * rtl.def (CONST_FIXED): New constant.
5459         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
5460         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
5461         US_ASHIFT): New codes.
5462         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
5463         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
5464         unsigned_fract_convert, unsigned_sat_fract): Document them.
5465         * varasm.c (assemble_integer): Extend to support fixed-point constants
5466         by using different machine classes.
5467         (decode_addr_const): Handle FIXED_CST.
5468         (const_hash_1): Likewise.
5469         (compare_constant): Likewise.
5470         (copy_constant): Likewise.
5471         (const_rtx_hash_1): Handle CONST_FIXED.
5472         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
5473         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
5474         MODE_VECTOR_UACCUM.
5475         (initializer_constant_valid_p): Handle FIXED_CST.
5476         (output_constant): Support FIXED_POINT_TYPE.
5477         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
5478         * cse.c (hash_rtx): Support CONST_FIXED.
5479         (exp_equiv_p): Likewise.
5480         (cannon_reg): Likewise.
5481         (fold_rtx): Likewise.
5482         (equiv_constant): Likewise.
5483         (cse_process_notes_1): Likewise.
5484         (count_reg_usage): Likewise.
5485         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
5486         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
5487         (wrap_constant): Check CONST_FIXED.
5488         (cselib_hash_rtx): Support CONST_FIXED.
5489         (cselib_subst_to_values): Likewise.
5490         * df-scan.c (df_uses_record): Likewise.
5491         * gcse.c (want_to_gcse_p): Likewise.
5492         (oprs_unchanged_p): Likewise.
5493         (oprs_not_set_p): Likewise.
5494         (compute_transp): Likewise.
5495         (extract_mentioned_regs_helper): Likewise.
5496         * genemit.c (gen_exp): Likewise.
5497         * local-alloc.c (equiv_init_varies_p): Likewise.
5498         (contains_replace_regs): Likewise.
5499         (memref_referenced_p): Likewise.
5500         * loop-invariant.c (check_maybe_invariant): Likewise.
5501         (hash_invariant_expr_1): Likewise.
5502         (invariant_expr_equal_p): Likewise.
5503         * postreload-gcse.c (oprs_unchanged_p): Likewise.
5504         * regclass.c (reg_scan_mark_refs): Likewise.
5505         * regrename.c (scan_rtx): Likewise.
5506         * resource.c (mark_referenced_resources): Likewise.
5507         (mark_set_resources): Likewise.
5508         * rtlanal.c (rtx_unstable_p): Likewise.
5509         (rtx_varies_p): Likewise.
5510         (count_occurrences): Likewise.
5511         (reg_mentioned_p): Likewise.
5512         (modified_between_p): Likewise.
5513         (modified_in_p): Likewise.
5514         (volatile_insn_p): Likewise.
5515         (volatile_refs_p): Likewise.
5516         (side_effects_p): Likewise.
5517         (may_trap_p_1): Likewise.
5518         (inequality_comparisons_p): Likewise.
5519         (computed_jump_p_1): Likewise.
5520         (commutative_operand_precedence): Likewise.
5521         * sched-deps.c (sched_analyze_2): Likewise.
5522         * sched-vis.c (print_value): Likewise.
5523         * reload.c (operands_match_p): Likewise.
5524         (subst_reg_equivs): Likewise.
5525         * reload1.c (eliminate_regs_1): Likewise.
5526         (elimination_effects): Likewise.
5527         (scan_paradoxical_subregs): Likewise.
5528         * alias.c (rtx_equal_for_memref_p): Likewise.
5529         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
5530         * emit-rtl.c (const_fixed_htab): New hash table.
5531         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
5532         Declare.
5533         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
5534         const_fixed_from_fixed_value): New functions.
5535         (verify_rtx_sharing): Handle CONST_FIXED.
5536         (copy_rtx_if_shared_1): Likewise.
5537         (reset_used_flags): Likewise.
5538         (set_used_flags): Likewise.
5539         (copy_insn_1): Likewise.
5540         (init_emit_once): Create const_fixed_htab.
5541         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
5542
5543 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
5544
5545         PR tree-optimization/32949
5546         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
5547         before failing for ivs with non-constant step.
5548
5549 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
5550
5551         * doc/md.texi (Iterators): Renamed from Macros.  All contents
5552         changed to reflect rename of respectively define_code_macro and
5553         define_mode_macro to define_code_iterator and define_mode_iterator.
5554         (Mode Iterators, Code Iterators): Similar.
5555         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
5556         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
5557         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
5558         (initialize_iterators, find_iterator, check_code_iterator)
5559         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
5560         (read_mapping, read_rtx_1): Similar.
5561         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
5562         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
5563         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
5564         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
5565         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
5566         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
5567         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
5568         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
5569         config/rs6000/sync.md, config/rs6000/rs6000.md,
5570         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
5571         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
5572         config/vax/vax.md, config/bfin/bfin.md: Similar.
5573
5574 2007-08-22  David Daney  <ddaney@avtrex.com>
5575
5576         * doc/install.texi (Testing): Mention testing on a simulator.
5577
5578 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
5579
5580         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
5581
5582         * doc/libgcc.texi (Decimal float library routines): Fix formatting
5583         and rearrange floating point conversion functions into different
5584         categories.
5585
5586 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
5587
5588         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
5589         dfa_post_advance_cycle): New scheduler hooks.
5590         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
5591         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
5592         new hooks.
5593         (TARGET_SCHED): Use them.
5594         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
5595         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
5596         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
5597
5598         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
5599         function to facilitate debugging.
5600         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
5601         (output_insn_has_dfa_reservation_p): New static function to output
5602         insn_has_dfa_reservation_p ().
5603         (write_automata): Use it.
5604         * genattr.c (main): Output declaration for
5605         insn_has_dfa_reservation_p ().
5606
5607 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
5608             Richard Guenther <rguenther@suse.de>
5609         
5610         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
5611         * simplify_rtx (simplify_binary_operation_1): Likewise.
5612                 
5613 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5614
5615         PR rtl-optimization/32557
5616         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
5617         of REGNO (mws->mw_reg).
5618
5619 2007-08-22  Richard Guenther  <rguenther@suse.de>
5620
5621         PR middle-end/33007
5622         * builtins.c (expand_builtin_int_roundingfn): Replace call
5623         argument wrapped with SAVE_EXPR directly.
5624         (expand_builtin_int_roundingfn_2): Likewise.
5625
5626 2007-08-22  Richard Guenther  <rguenther@suse.de>
5627
5628         * tree-inline.c (inlinable_function_p): Restore disregarding
5629         inline limits for GNU extern inline functions.
5630
5631 2007-08-22  Richard Guenther  <rguenther@suse.de>
5632
5633         PR middle-end/32563
5634         * tree.c (host_integerp): Treat sizetype as signed as it is
5635         sign-extended.
5636
5637 2007-08-21  Ian Lance Taylor  <iant@google.com>
5638
5639         PR tree-optimization/33134
5640         * tree-vrp.c (adjust_range_with_scev): Call
5641         set_value_range_to_value.
5642
5643 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
5644
5645         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
5646         prototype.
5647         
5648 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
5649
5650         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
5651         whitespace.
5652
5653 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
5654
5655         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
5656         cases to set eight bytes at a time.
5657         (expand_block_move): Likewise.
5658         
5659 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
5660
5661         PR debug/32610
5662         * dwarf2out.c (gen_decl_die): Don't call
5663         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
5664
5665 2007-08-21  Paul Brook  <paul@codesourcery.com>
5666             Nathan Sidwell  <nathan@codesourcery.com>
5667             Mark Mitchell  <mark@codesourcery.com>
5668             Joseph Myers  <joseph@codesourcery.com>
5669
5670         * configure.ac: Add --with-pkgversion and --with-bugurl.
5671         * configure: Regenerate.
5672         * doc/install.texi: Document them.
5673         * version.c (version_string): Remove VERSUFFIX.
5674         (VERSUFFIX): Remove.
5675         (pkgversion_string): New.
5676         (bug_report_url): Do not hard-code initializer.
5677         * version.h (pkgversion_string): Declare.
5678         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
5679         Define.
5680         (version.o): Define PKGVERSION and BUGURL.
5681         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
5682         (%.pod): Define BUGURL.
5683         * gcc.c (process_command, main): Use pkgversion_string.
5684         * toplev.c (compile_file, print_version): Likewise.
5685         * protoize.c (main): Likewise.
5686         * gcov.c (print_version): Likewise.  Update copyright date.
5687         * gcov-dump.c (print_version): Likewise.  Update copyright date.
5688         * mips-tdump.c (main): Likewise.  Update copyright date.
5689         * mips-tfile.c (main): Likewise.  Update copyright date.
5690         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
5691         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
5692         shorten description.
5693         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
5694         * doc/gccint.texi: Likewise.
5695         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
5696         Update copyright date.
5697
5698 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
5699
5700         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
5701         (ix86_expand_strlensi_unroll_1): Ditto.
5702         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
5703         (ix86_expand_carry_flag_compare): Update comment.
5704
5705 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
5706
5707         PR middle-end/32912
5708         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
5709         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
5710
5711 2007-08-21  Richard Guenther  <rguenther@suse.de>
5712
5713         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
5714
5715 2007-08-21  Richard Guenther  <rguenther@suse.de>
5716
5717         PR middle-end/33122
5718         * fold-const.c (fold_binary): Remove index +p PTR folding.
5719         Fix types of POINTER_PLUS_EXPR generated by folding of
5720         (PTR +p B) +p A.
5721
5722 2007-08-20  Chao-ying Fu  <fu@mips.com>
5723
5724         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
5725         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
5726         RID_ONEWAY, so that it can be checked in declspecs_add_type.
5727         (c_common_fixed_point_type_for_size): Declare.
5728         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
5729         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
5730         (c_token_starts_declspecs): Likewise.
5731         (c_parser_declspecs): Likewise.
5732         (c_parser_attributes): Likewise.
5733         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
5734         (c_declspecs): Add saturating_p.
5735         * c-decl.c (build_null_declspecs): Initialize saturating_p.
5736         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
5737         _Sat.  Handle RID_SAT.
5738         Avoid using void, bool, char, int, float, double, _Decimal32,
5739         _Decimal64, _Decimal128, and complex with _Sat.
5740         Handle RID_FRACT and RID_ACCUM.
5741         Make sure _Sat is used with _Fract or _Accum.
5742         (finish_declspecs): Handle cts_fract and cts_accum.
5743         * c-common.c (fixed-value.h): New include.
5744         (constant_expression_warning): Handle FIXED_CST.
5745         (overflow_warning): Likewise.
5746         (warnings_for_convert_and_check): Likewise.
5747         (c_common_fixed_point_type_for_size): New.
5748         (c_common_type_for_mode): Handle fixed-point modes to
5749         return various saturating/non-saturating, signed/unsigned types.
5750         (c_common_signed_or_unsigned_type): Support fixed-point types.
5751         (shorten_compare): Check fixed-point zero.
5752         Handle FIXED_POINT_TYPE.
5753         (c_common_truthvalue_conversion): Handle FIXED_CST.
5754         Handle FIXED_POINT_TYPE.
5755         (c_common_nodes_and_builtins): Record builtin types for fixed-point
5756         types.
5757         (handle_mode_attribute): Handle fixed-point modes.  Need to check
5758         if the signness of base type and fixed-point modes are consistent.
5759         (handle_vector_size_attribute): Handle fixed-point modes.
5760         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
5761         (warn_for_div_by_zero): Check fixed-point zero.
5762         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
5763         a common fixed-point type based on fbit, ibit, sign, and saturation.
5764         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
5765         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
5766         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
5767         (convert_for_assignment): Support FIXED_POINT_TYPE.
5768         (digest_init): Handle FIXED_POINT_TYPE.
5769         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
5770         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
5771         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
5772         GE_EXPR, LT_EXPR, GT_EXPR.
5773         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
5774         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
5775         * target.h (gcc_target): Add fixed_point_supported_p.
5776         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
5777         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
5778         (default_fixed_point_supported_p): Define.
5779         * targhooks.h (default_fixed_point_supported_p): Declare.
5780         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
5781         * doc/install.texi (Configuration): Add --enable-fixed-point.
5782         * configure.ac (--enable-fixed-point): New to enable fixed-point
5783         arithmetic extension to C.  For mips targets, we enable it by default.
5784         * configure, config.in: Regenerate.
5785
5786 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
5787
5788         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
5789
5790 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
5791
5792         * dwarf2out.c (text_section_used): Move declaration outside ifdef
5793         DWARF2_DEBUGGING_INFO.
5794         (cold_text_section_used): Same.
5795         (cold_text_section): Same.
5796
5797 2007-08-20  Richard Guenther  <rguenther@suse.de>
5798
5799         * c-typeck.c (convert_for_assignment): Use the type of
5800         the member for the initialization.
5801
5802 2007-08-20  Richard Guenther  <rguenther@suse.de>
5803
5804         * c-objc-common.c (c_disregard_inline_limits): Remove.
5805         * c-objc-common.h (c_disregard_inline_limits): Likewise.
5806         * cgraphunit.c (cgraph_process_new_functions): Call
5807         disregard_inline_limits_p.
5808         (cgraph_preserve_function_body_p): Likewise.
5809         * ipa-inline.c (compute_inline_parameters): Likewise.
5810         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
5811         Remove.
5812         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
5813         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
5814         disregard_inline_limits langhook.
5815         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
5816         Remove.
5817         * langhooks.h (lang_hooks_for_tree_inlining): Remove
5818         disregard_inline_limits langhook.
5819         * tree-inline.c (disregard_inline_limits_p): New function.
5820         * tree-inline.h (disregard_inline_limits_p): Declare.
5821
5822 2007-08-20  Richard Guenther  <rguenther@suse.de>
5823
5824         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
5825         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
5826         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
5827         auto_var_in_fn_p langhook.
5828         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
5829         move ...
5830         * tree.c (auto_var_in_fn_p): ... here.
5831         (find_var_from_fn): Call auto_var_in_fn_p directly.
5832         * langhooks.h (lang_hooks_for_tree_inlining): Remove
5833         auto_var_in_fn_p langhook.
5834         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
5835         (copy_body_r): Likewise.
5836         (self_inlining_addr_expr): Likewise.
5837         * tree.h (auto_var_in_fn_p): Declare.
5838
5839 2007-08-20  Richard Guenther  <rguenther@suse.de>
5840
5841         * tree.c (WALK_SUBTREE): Call walk_tree_1.
5842         (walk_type_fields): Take lh parameter.
5843         (walk_tree): Rename to ...
5844         (walk_tree_1): ... this.  Do not call the walk_subtrees
5845         langhook but the now passed callback.  Pass lh on recursion.
5846         (walk_tree_without_duplicates): Rename to ...
5847         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
5848         and call walk_tree_1.
5849         * tree.h (walk_tree_lh): New typedef.
5850         (walk_tree_1): Declare.
5851         (walk_tree_without_duplicates_1): Likewise.
5852         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
5853         (walk_tree_without_duplicates): New define to
5854         walk_tree_without_duplicates_1 with NULL lh parameter.
5855         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
5856         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
5857         langhook.
5858         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
5859         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
5860         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
5861         initializer.
5862
5863 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5864
5865         PR middle-end/30564
5866         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
5867         code in front of the compacting of basic blocks.
5868         Move the folding of statements inbetween the cgraph checking
5869         and compacting of basic blocks.
5870
5871 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5872            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
5873
5874         PR target/32522
5875         * config/alpha/alpha.c (va_list_skip_additions): Check for
5876         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
5877         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
5878         PLUS_EXPR when checking ap.__base.
5879         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
5880         when doing addition on pointer types.  Use size_int instead of
5881         build_int_cst.
5882         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
5883         ptr_type in the second operand.
5884
5885 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
5886
5887         PR target/33115
5888         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
5889
5890 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5891
5892         PR middle-end/32940
5893         * cfgexpand.c  (expand_one_register_var): Mark pointer
5894         DECL_ARTIFICIAL as REG_POINTER also.
5895         * stmt.c (expand_decl): Likewise.
5896
5897 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
5898
5899         Fix PR 32772
5900         Fix PR 32716
5901         Fix PR 32328
5902         Fix PR 32303
5903
5904         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
5905         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
5906         on_worklist argument and avoid adding things to worklist multiple
5907         times.
5908         (add_to_worklist): Ditto.
5909         (mark_aliases_call_clobbered): Mark entire structure clobbered if
5910         single SFT is clobbered.
5911         (set_initial_properties): Ditto.
5912         (compute_call_clobbered): Update for changes to function
5913         arguments.
5914         (create_overlap_variables_for): Always create SFT for offset 0.
5915         (create_structure_vars): Handle PHI's, since we are in SSA form at
5916         this point.
5917         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
5918         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
5919         TARGET_MEM_REF.
5920         (add_vars_for_offset): Figure out aliases from access + points-to.
5921         (add_virtual_operand): Use add_vars-for_offset.
5922         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
5923         (add_call_clobber_ops): Remove makes_clobbering_call set.
5924         (get_expr_operands): Always pass through the INDIRECT_REF
5925         reference.
5926         * tree-ssa-structalias.c (struct constraint_graph): Remove
5927         variables member.
5928         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
5929         address_taken, pt_used, number_incoming.
5930         (FIRST_ADDR_NODE): Removed.
5931         (merge_graph_nodes): Remove broken code for the moment.
5932         (init_graph): New function.
5933         (build_pred_graph): Remove code to init_graph.
5934         Add location equivalence support.
5935         (struct scc_info): Rename roots to deleted.
5936         (scc_visit): Ditto.
5937         (init_scc_info): Ditto
5938         (init_topo_info): Use graph->size.
5939         (compute_topo_order): Ditto.
5940         (do_da_constraint): Removed.
5941         (do_sd_constraint): Remove calls to find().
5942         set_union_with_increment should always get 0 as last arg here.
5943         (do_complex_constraint): Replace do_da_constraint with assert.
5944         Stop calling find.
5945         (struct equiv_class_label): New.
5946         (pointer_equiv_class_table): Ditto.
5947         (location_equiv_class_table): Ditto.
5948         (equiv_class_label_hash): Ditto.
5949         (equiv_class_label_eq): Ditto
5950         (equiv_class_lookup): Ditto.
5951         (equiv_class_ladd): Ditto.
5952         (pointer_equiv_class): Ditto.
5953         (location_equiv_class): Ditto.
5954         (condense_visit): Rename and rewrite from label_visit to do only
5955         SCC related stuff for HU.
5956         (label_visit): Do HU work for HU.
5957         (perform_var_substitution): Update to do HU and location
5958         equivalence.
5959         (free_var_substitution_info): Update to free HU and location
5960         equivalence structures.  */
5961         (find_equivalent_node): Update for pointer but not location
5962         equivalence.
5963         (unite_pointer_equivalences): New function.
5964         (move_complex_constraints): Rewrite to only do moving.
5965         (rewrite_constraints): Split out of move_complex_constraints.
5966         (solve_graph): Use graph->size.
5967         (process_constraint_1): Add from_call argument, use it.
5968         Split *a = &b into two constraints.
5969         (process_constraint): Use new process_constraint_1.
5970         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
5971         (get_constraint_for): Handle non-pointer integers properly.
5972         Remove code that used to handle structures.
5973         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
5974         with unknown addends.
5975         (handle_rhs_call): New function.
5976         (find_func_aliases): Use handle_rhs_call.
5977         (set_uids_in_ptset): Add an assert.
5978         (set_used_smts): Fix bug in not considering unified vars.
5979         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
5980         (compute_points_to_sets): Update for other function changes.
5981         (delete_points_to_sets): Ditto.
5982         (ipa_pta_execute): Ditto.
5983         (pass_ipa_pta): We need to update SSA after ipa_pta.
5984         
5985 2007-08-19  Jan Hubicka  <jh@suse.cz>
5986
5987         * i386.md: Replace "rim" and "mri" constraints by "g".
5988
5989 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
5990
5991         * dwarf2out.c (text_section_used, cold_text_section_used,
5992         cold_text_section, dwarf2out_note_section_used): New.
5993         (dwarf2out_init): Initialize cold_text_section.
5994         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
5995         dwarf2out_note_section_used.
5996         (size_of_aranges): Only count entry for text section if it was
5997         used.  Count entry for cold text section if it was used.
5998         (output_aranges): Only output entries for text section and cold
5999         text section if they were used.
6000
6001 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
6002
6003         * tree-pretty-print.c (debug_generic_expr): Add a comment about
6004         the function.
6005         (debug_generic_stmt): Likewise.
6006         (debug_tree_chain): Likewise.
6007
6008 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6009
6010         * tree-data-refs.c (split_constant_offset): Expose.
6011         * tree-data-refs.h (split_constant_offset): Add declaration.
6012
6013         * tree-vectorizer.h (dr_alignment_support): Renamed
6014         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
6015         Added a new value dr_explicit_realign.
6016         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
6017         dr_offset, dr_step, and dr_aligned_to, along with new access
6018         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
6019         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
6020         STMT_VINFO_DR_ALIGNED_TO.
6021
6022         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
6023         documentation.
6024         In case of outer-loop vectorization with non-fixed misalignment - use
6025         the dr_explicit_realign scheme instead of the optimized realignment
6026         scheme.
6027         (new_stmt_vec_info): Initialize new fields.
6028
6029         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
6030         'nested_in_vect_loop' case. Change verbosity level.
6031         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
6032         Don't fail on zero step in the outer-loop for loads.
6033         (vect_analyze_data_refs): Call split_constant_offset to calculate
6034         base, offset and init relative to the outer-loop.
6035
6036         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
6037         BSI function argument with a new function argument - at_loop.
6038         Simplify the condition that determines STEP. Takes additional argument
6039         INV_P. Support outer-loop vectorization (handle the
6040         nested_in_vect_loop case), including zero step in the outer-loop. Call
6041         vect_create_addr_base_for_vector_ref with additional argument.
6042         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
6043         Updated function documentation. Handle the 'nested_in_vect_loop' case.
6044         Fixed and simplified calculation of step.
6045         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
6046         of bsi, and with additional argument. Call bump_vector_ptr with
6047         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
6048         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
6049         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
6050         when the realignment setup needs to take place inside the loop.
6051         Support the dr_explicit_realign scheme. Allow generating the optimized
6052         realignment scheme for outer-loop vectorization. Added documentation.
6053         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
6054         the 'nested_in_vect_loop' case, including loads that are invariant in
6055         the outer-loop and the realignment schemes. Handle the case when the
6056         realignment setup needs to take place inside the loop. Call
6057         vect_setup_realignment with additional arguments.  Call
6058         vect_create_data_ref_ptr with additional argument and with loop instead
6059         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
6060         (vect_gen_niters_for_prolog_loop): Call
6061         vect_create_addr_base_for_vector_ref with additional arguments.
6062         (vect_create_cond_for_align_checks): Likewise.
6063         (bump_vector_ptr): Updated to support the new dr_explicit_realign
6064         scheme: takes additional argument bump; argument ptr_incr is now
6065         optional; updated documentation.
6066         (vect_init_vector): Takes additional argument (bsi). Use it, if
6067         available, to insert the vector initialization.
6068         (get_initial_def_for_induction): Pass additional argument in call to
6069         vect_init_vector.
6070         (vect_get_vec_def_for_operand): Likewise.
6071         (vect_setup_realignment): Likewise.
6072         (vectorizable_load): Likewise.
6073
6074 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6075
6076         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
6077         as argument instead of struct loop.
6078         (nested_in_vect_loop_p): New function.
6079         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
6080         vect_used_in_outer.
6081         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
6082         from other phis in the loop.
6083         (destroy_loop_vec_info): Add additional argument to declaration.
6084
6085         * tree-vectorizer.c (supportable_widening_operation): Also check if
6086         nested_in_vect_loop_p (don't allow changing the order in this case).
6087         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
6088         of struct loop. Call nested_in_vect_loop_p and don't require
6089         flag_unsafe_math_optimizations if it returns true.
6090         (new_stmt_vec_info): When setting def_type for phis differentiate 
6091         loop-header phis from other phis.
6092         (bb_in_loop_p): New function.
6093         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
6094         just update their loop_vinfo.  Order of BB traversal now matters -
6095         call dfs_enumerate_from with bb_in_loop_p.
6096         (destroy_loop_vec_info): Takes additional argument to control whether
6097         stmt_vinfo of the loop stmts should be destroyed as well.
6098         (vect_is_simple_reduction): Allow the "non-reduction" use of a
6099         reduction stmt to be defines by a non loop-header phi.
6100         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
6101
6102         * tree-vect-transform.c (vectorizable_reduction): Call
6103         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
6104         (vectorizable_call): Likewise.
6105         (vectorizable_conversion): Likewise.
6106         (vectorizable_operation): Likewise.
6107         (vectorizable_type_promotion): Likewise.
6108         (vectorizable_type_demotion): Likewise.
6109         (vectorizable_store): Likewise.
6110         (vectorizable_live_operation): Likewise.
6111         (vectorizable_reduction): Likewise. Also pass loop_info to
6112         vect_is_simple_reduction instead of loop.
6113         (vect_init_vector): Call nested_in_vect_loop_p.
6114         (get_initial_def_for_reduction): Likewise.
6115         (vect_create_epilog_for_reduction): Likewise.
6116         (vect_init_vector): Check which loop to work with, in case there's an
6117         inner-loop.
6118         (get_initial_def_for_inducion): Extend to handle outer-loop
6119         vectorization. Fix indentation.
6120         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
6121         In the case vect_induction_def get the vector def from the induction
6122         phi node, instead of calling get_initial_def_for_inducion.
6123         (get_initial_def_for_reduction): Extend to handle outer-loop 
6124         vectorization.
6125         (vect_create_epilog_for_reduction): Extend to handle outer-loop
6126         vectorization.
6127         (vect_transform_loop): Change assert to just skip this case.  Add a
6128         dump printout.
6129         (vect_finish_stmt_generation): Add a couple asserts.
6130
6131         (vect_estimate_min_profitable_iters): Multiply
6132         cost of inner-loop stmts (in outer-loop vectorization) by estimated
6133         inner-loop bound.
6134         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
6135         this is an inner-loop reduction in outer-loop vectorization.
6136
6137         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
6138         Same code as what used to be vect_analyze_scalar_cycles, only with
6139         additional argument loop, and loop_info passed to
6140         vect_is_simple_reduction instead of loop.
6141         (vect_analyze_scalar_cycles): Code factored out into
6142         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
6143         Updated documentation.
6144         (analyze_operations): Check for inner-loop loop-closed exit-phis during
6145         outer-loop vectorization that are live or not used in the outerloop,
6146         cause this requires special handling.
6147         (vect_enhance_data_refs_alignment): Don't consider versioning for
6148         nested-loops.
6149         (vect_analyze_data_refs): Check that there are no datarefs in the
6150         inner-loop.
6151         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
6152         and vect_used_in_outer_by_reduction cases.
6153         (process_use): Also consider the case of outer-loop stmt defining an
6154         inner-loop stmt and vice versa.
6155         (vect_analyze_loop_1): New function.
6156         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
6157         loops.  Call vect_analyze_loop_1.
6158         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
6159         been vectorized.  Call destroy_loop_vec_info with additional argument.
6160
6161         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
6162         in the inner-loop when doing outer-loop vectorization. Add
6163         documentation and printout.
6164         (vect_recog_dot_prod_pattern): Likewise. Also add check for
6165         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
6166
6167 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
6168
6169         * tree-affine.h (print_aff): New prototype.
6170         (debug_aff): Likewise.
6171         * tree-affine.c (print_aff): New function.
6172         (debug_aff): Likewise.
6173
6174 2007-08-18  Paul Brook  <paul@codesourcery.com>
6175             Joseph Myers  <joseph@codesourcery.com>
6176
6177         * common.opt (-fdebug-prefix-map=): New option.
6178         * opts.c: Include debug.h.
6179         (common_handle_option): Handle -fdebug-prefix-map.
6180         * final.c: Include ggc.h.
6181         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
6182         remap_debug_filename): New.
6183         * Makefile.in (final.o, opts.o): Update dependencies.
6184         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
6185         * configure.ac: Check for assembler --debug-prefix-map support.
6186         * configure, config.in: Regenerate.
6187         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
6188         (ASM_DEBUG_SPEC): Include ASM_MAP.
6189         * doc/install.texi (--with-debug-prefix-map): Document.
6190         * doc/invoke.texi (-fdebug-prefix-map): Document.
6191         * dbxout.c (dbxout_init, dbxout_start_source_file,
6192         dbxout_source_file): Call remap_debug_filename.
6193         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
6194         dwarf2out_start_source_file, dwarf2out_finish): Call
6195         remap_debug_filename.
6196         (file_table_relative_p): Do not check d->emitted_number.
6197         * toplev.c (output_file_directive): Call remap_debug_filename.
6198         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
6199         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
6200
6201 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6202
6203         * loop-invariant.c (find_invariants_to_move): Add missing macro
6204         argument.
6205
6206 2007-08-17  Tom Tromey  <tromey@redhat.com>
6207
6208         * tree.h (struct tree_label_decl): Removed old "java" fields.
6209
6210 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
6211             Nigel Stephens  <nigel@mips.com>
6212
6213         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
6214         Treat -mno-data-in-code and -mcode-xonly as aliases for
6215         -mcode-readable=no and -mcode-readable=pcrel respectively.
6216         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
6217         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
6218         (MULTILIB_DIRNAMES): Update accordingly.
6219
6220 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
6221
6222         * Makefile.in (version.o): Depend on $(REVISION) only if
6223         REVISION_s is defined.
6224
6225 2007-08-17  Sa Liu  <saliu@de.ibm.com>
6226             Ulrich Weigand  <uweigand@de.ibm.com>
6227
6228         PR middle-end/32970
6229         * tree.c (reconstruct_complex_type): For a pointer to a vector,
6230         use build_qualified_type to retain qualifiers of the base type.
6231
6232 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
6233
6234         * config/score/score.md : Update pattern tablejump.
6235         * config/score/score.c : Update score_initialize_trampoline 
6236         function.
6237         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
6238         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
6239         * doc/contrib.texi: Add my entry.
6240
6241 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
6242
6243         * Makefile.in (REVISION): New.
6244         (REVISION_c): New.
6245         (REVISION_s): New.
6246         (version.o): Also depend on $(REVISION). Add
6247         -DREVISION=$(REVISION_s).
6248
6249         * version.c (version_string): Add REVISION.
6250
6251 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
6252
6253         * tree-eh.c (lower_try_finally_onedest): Reset the locus
6254         of GOTO that's relocated to a different block.
6255
6256 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6257
6258         * c-common.c (const_strip_array_types): New.
6259         * c-common.h (lang_missing_noreturn_ok_p): Delete.
6260         (const_strip_array_types): New.
6261         * c-objc-common.c (c_disregard_inline_limits,
6262         c_warn_unused_global_decl): Constify.
6263         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
6264         c_vla_type_p, c_incomplete_type_error): Likewise.
6265         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
6266         * hooks.c (hook_bool_const_tree_false): New.
6267         * hooks.h (hook_bool_const_tree_false): Likewise.
6268         * langhooks-def.h (lhd_warn_unused_global_decl,
6269         lhd_incomplete_type_error, lhd_expr_size,
6270         lhd_tree_inlining_disregard_inline_limits,
6271         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
6272         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
6273         * langhooks.c (lhd_warn_unused_global_decl,
6274         lhd_incomplete_type_error,
6275         lhd_tree_inlining_disregard_inline_limits,
6276         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
6277         lhd_expr_size): Likewise.
6278         * langhooks.h (lang_hooks_for_tree_inlining,
6279         lang_hooks_for_tree_dump, lang_hooks_for_types,
6280         lang_hooks_for_decls, lang_hooks): Likewise.
6281         * pointer-set.c (pointer_set_t, pointer_set_create,
6282         pointer_set_contains, insert_aux, pointer_set_insert,
6283         pointer_set_traverse, pointer_map_t, pointer_map_create,
6284         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
6285         Likewise.
6286         * pointer-set.h (pointer_set_contains, pointer_set_insert,
6287         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
6288         pointer_map_traverse): Likewise.
6289         * predict.c (assert_is_empty): Likewise.
6290         * tree-affine.c (free_name_expansion): Likewise.
6291         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
6292         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
6293         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
6294
6295 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
6296
6297         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
6298         field.
6299         (destroy_loop_vec_info): Add call to VEC_free.
6300         * tree-vectorizer.h (may_alias_ddrs): Define.
6301         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
6302         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
6303         Change reporting to dump.
6304         (vect_is_duplicate_ddr): New.
6305         (vect_mark_for_runtime_alias_test): New.
6306         (vect_analyze_data_ref_dependences) Add call to
6307         vect_mark_for_runtime_alias_test.
6308         (vect_enhance_data_refs_alignment): Define local variable
6309         vect_versioning_for_alias_required, don't perform
6310         peeling for alignment if versioning for alias is
6311         required.
6312         (vect_enhance_data_refs_alignment): Use
6313         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
6314         PARAM_VECT_MAX_VERSION_CHECKS.
6315         * tree-vect-transform.c
6316         (vect_create_cond_for_alias_checks): New.
6317         (vect_transform_loop): Add call to
6318         vect_create_cond_for_alias_checks.
6319         (vect_vfa_segment_size): New.
6320         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
6321         Rename.
6322         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
6323         * gcc/doc/invoke.texi
6324         (vect-max-version-for-alignment-checks): Document.
6325         (vect-max-version-for-alias-checks): Document.
6326         (vect-max-version-checks): Remove.
6327      
6328 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
6329
6330         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
6331         the same line as the instruction for all asm dialects.
6332         (*rep_movsi): Ditto.
6333         (*rep_movsi_rex64): Ditto.
6334         (*rep_movqi): Ditto.
6335         (*rep_movqi_rex64): Ditto.
6336         (*rep_stosdi_rex64): Ditto.
6337         (*rep_stossi): Ditto.
6338         (*rep_stossi_rex64): Ditto.
6339         (*rep_stosqi): Ditto.
6340         (*rep_stosqi_rex64): Ditto.
6341         (*cmpstrnqi_nz_1): Ditto.
6342         (*cmpstrnqi_nz_rex_1): Ditto.
6343         (*cmpstrnqi_1): Ditto.
6344         (*cmpstrnqi_rex_1): Ditto.
6345         (*strlenqi_1): Ditto.
6346         (*strlenqi_rex_1): Ditto.
6347         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
6348         prefix on the same line as the instruction for all asm dialects.
6349         (sync_double_compare_and_swap<mode>): Ditto.
6350         (*sync_double_compare_and_swapdi_pic): Ditto.
6351         (*sync_compare_and_swap_cc<mode>): Ditto.
6352         (sync_double_compare_and_swap_cc<mode>): Ditto.
6353         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
6354         (sync_old_add<mode>): Ditto.
6355         (sync_add<mode>): Ditto.
6356         (sync_sub<mode>): Ditto.
6357         (sync_ior<mode>): Ditto.
6358         (sync_and<mode>): Ditto.
6359         (sync_xor<mode>): Ditto.
6360
6361 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
6362
6363         PR middle-end/32897
6364         * reload.c (find_reloads): Check that the memory returned by
6365         find_reloads_toplev was not the result of forcing a constant
6366         to memory.
6367         (find_reloads_toplev): Always use simplify_gen_subreg to get
6368         the subreg of a constant.  If the result is also a constant,
6369         but not a legitimate one, force it into the constant pool
6370         and reload its address.
6371
6372 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
6373
6374         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
6375         POPCOUNT.
6376
6377 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
6378
6379         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
6380         directive for the current vector ABI.
6381
6382 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
6383
6384         PR target/32963
6385         * caller-save.c (reg_save_code): Set invalide status on restore code.
6386         
6387 2007-08-15  Diego Novillo  <dnovillo@google.com>
6388
6389         * tree-ssa-alias.c (compute_memory_partitions): Use
6390         alias_bitmap_obstack to allocate bitmaps.
6391         (reset_alias_info): Factor out of init_alias_info.
6392         Mark all name tags not associated to an SSA name for renaming.
6393         (init_alias_info): Call it.
6394         (create_name_tags): Tidy.  Add comments.
6395         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
6396
6397 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
6398
6399         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
6400         scheduler dependencies.
6401
6402 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6403
6404         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
6405         "register_operand".
6406         (*iorsi_1_zext): Likewise.
6407         (*iorsi_1_zext_imm): Likewise.
6408         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
6409         with "rm"/"xm" constraint.
6410         (sse2_vmsqrtv2df2): Likewise.
6411
6412 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
6413
6414         PR middle-end/33074
6415         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
6416         REG_LIBCALL note.
6417
6418 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
6419
6420         * tree-pass.h (PROP_pta): Removed.
6421         (TODO_rebuild_alias): New.
6422         (pass_may_alias): Removed.
6423         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
6424         aliasing if we changed something.
6425         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
6426         SSA internally.
6427         (pass_may_alias): Removed.
6428         (create_structure_vars): Return TODO_rebuild_alias.
6429         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
6430         * tree-sra.c (tree_sra): Only rebuild aliasing if something
6431         changed.
6432         (tree_sra_early): We never affect aliasing right now.
6433         * tree-flow.h (compute_may_aliases): New prototype.
6434         * passes.c: Remove pass_may_alias from the passes.
6435         (execute_function_todo): Support TODO_rebuild_alias.    
6436
6437 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
6438
6439         * i386.c: (legitimize_address): Move dllimported variable check
6440         infront of legitimizing pic address of CONST symbols.
6441
6442 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
6443
6444         PR tree-optimization/32941
6445         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
6446         (goto_queue_cmp): Remove.
6447         (find_goto_replacement): Change search method.
6448         (maybe_record_in_goto_queue): Add assert.
6449         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
6450         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
6451
6452 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6453
6454         * alias.c (component_uses_parent_alias_set): Constify.
6455         * alias.h (component_uses_parent_alias_set): Likewise.
6456         * cfgrtl.c (print_rtl_with_bb): Likewise.
6457         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
6458         mpz_get_double_int): Likewise.
6459         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
6460         mpz_get_double_int): Likewise.
6461         * expr.c (is_aligning_offset, undefined_operand_subword_p,
6462         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
6463         Likewise.
6464         * expr.h (safe_from_p): Likewise.
6465         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
6466         Likewise.
6467         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
6468         zero_sized_type, goa_lhs_expr_p): Likewise.
6469         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
6470         * rtl.h (print_rtl_with_bb): Likewise.
6471         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
6472         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
6473         * tree-flow-inline.h (bb_stmt_list): Constify.
6474         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
6475         cbsi_stmt): New.
6476         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
6477         const_first_stmt, const_last_stmt): New.
6478         (block_may_fallthru, empty_block_p): Constify.
6479         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
6480         EXPR_ONLY_BODY): New.
6481         (expr_first, expr_last, expr_only): Use macro for body.
6482         (const_expr_first, const_expr_last, const_expr_only): New.
6483         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
6484         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
6485         ctsi_prev, ctsi_stmt): New.
6486         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
6487         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
6488         * tree-ssa-loop-niter.c (loop_only_exit_p,
6489         derive_constant_upper_bound): Likewise.
6490         * tree-ssa-phiopt.c (empty_block_p): Likewise.
6491         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
6492         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
6493         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
6494         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
6495         * tree.c (get_type_static_bounds): Likewise.
6496         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
6497         (get_type_static_bounds): Constify.
6498
6499 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6500
6501         PR target/30315
6502         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
6503         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
6504         (*<addsub><mode>3_cc_overflow): New.
6505         (*add<mode>3_cconly_overflow): New.
6506         (*sub<mode>3_cconly_overflow): New.
6507         (*<addsub>si3_zext_cc_overflow): New.
6508         * config/i386/predicates.md (fcmov_comparison_operator): Accept
6509         CCCmode for LTU, GTU, LEU and GEU.
6510         (ix86_comparison_operator): Likewise.
6511         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
6512         * config/i386/i386.c (put_condition_code): Support CCCmode.
6513         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
6514         or MINUS expressions.
6515
6516 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
6517
6518         PR c/30428
6519         * c-typeck.c (build_binary_op): Disallow vector float types with
6520         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
6521
6522 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
6523
6524         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
6525         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
6526         (dep_def): New typedef.
6527         (init_dep_1, sd_debug_dep): Declare functions.
6528         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
6529         (debug_dep_links): Remove.
6530         (struct _deps_list): New field 'n_links'.
6531         (DEPS_LIST_N_LINKS): New macro.
6532         (FOR_EACH_DEP_LINK): Remove.
6533         (create_deps_list, free_deps_list, delete_deps_list): Remove
6534         declaration.
6535         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
6536         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
6537         (copy_deps_list_change_con, move_dep_link): Ditto.
6538         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
6539         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
6540         'dep_count'.
6541         (INSN_BACK_DEPS): Remove.
6542         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
6543         New macros.
6544         (INSN_DEP_COUNT): Remove.
6545         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
6546         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
6547         Declare global variables.
6548         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
6549         (add_forw_dep, compute_forward_dependences): Remove declarations.
6550         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
6551         (add_back_forw_dep, delete_back_forw_dep): Ditto.
6552         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
6553         functions.
6554         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
6555         New constants.
6556         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
6557         (sd_list_types_def): New typedef.
6558         (sd_next_list): Declare function.
6559         (struct _sd_iterator): New type.
6560         (sd_iterator_def): New typedef.
6561         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
6562         functions.
6563         (FOR_EACH_DEP): New cycle wrapper.
6564         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
6565         Declare functions.
6566         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
6567         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
6568         Ditto.
6569
6570         * sched-deps.c (init_dep_1): Make global.
6571         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
6572         constants.
6573         (dump_dep): New static function.
6574         (dump_dep_flags): New static variable.
6575         (sd_debug_dep): New function.
6576         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
6577         the list.
6578         (move_dep_link): Use remove_from_deps_list (), instead of
6579         detach_dep_link ().
6580         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
6581         (dep_link_is_detached_p): New static function.
6582         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
6583         instead.
6584         (dn_pool, dl_pool): New alloc_pools.
6585         (dn_pool_diff, dl_pool_diff): New static variables.
6586         (create_dep_node, delete_dep_node): New static function.
6587         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
6588         (deps_list_empty_p): Make it static.  Use 'n_links' field.
6589         (deps_pools_are_empty_p): New static function.
6590         (alloc_deps_list, delete_deps_list): Remove.
6591         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
6592         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
6593         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
6594         (forward_dependency_cache): Remove.
6595         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
6596         'back' from the names.  Change signature to use dep_t instead of
6597         equivalent quad.
6598         (add_back_dep): Ditto.  Make global.
6599         (check_dep_status): Rename to check_dep ().
6600         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
6601         New functions.
6602         (sd_finish_insn): Ditto.
6603         (sd_find_dep_between_no_cache): New static function.
6604         (sd_find_dep_between): New function.
6605         (ask_dependency_caches, set_dependency_caches): New static functions.
6606         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
6607         (add_or_update_dep_1): Separate pieces of functionality into
6608         ask_dependency_caches (), update_dependency_caches (),
6609         change_spec_dep_to_hard (), update_dep ().
6610         (get_back_and_forw_lists): New static function.
6611         (sd_add_dep): Separate setting of dependency caches into
6612         set_dependency_caches ().
6613         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
6614         New functions.
6615         (sd_delete_dep): Ditto.
6616         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
6617         (dump_lists): New static function.
6618         (sd_debug_lists): New debug function.
6619         (delete_all_dependences, fixup_sched_groups): Update to use
6620         sd_* infrastructure.
6621         (sched_analyze_2): Create data-speculative dependency only if
6622         data-speculation is enabled.
6623         (sched_analyze_insn): If insn cannot be speculative, make all its
6624         dependencies non-speculative.
6625         (sched_analyze): Use sd_init_insn ().
6626         (add_forw_dep, compute_forward_dependencies): Remove.
6627         (delete_dep_nodes_in_back_deps): New static function.
6628         (sched_free_deps): New function.
6629         (init_dependency_caches): Init alloc_pools.
6630         (extend_depedency_caches): Update after removing of
6631         forward_dependency_cache.
6632         (free_dependency_caches): Ditto.  Free alloc_pools.
6633         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
6634         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
6635         Ditto.
6636         (add_back_forw_dep, delete_back_forw_dep): Ditto.
6637         (add_dependence): Use init_dep ().
6638         (get_dep_weak_1): New static function.
6639         (get_dep_weak): Move logic to get_dep_weak_1 ().
6640         (dump_ds): New static function moved from haifa-sched.c:
6641         debug_spec_status ().
6642         (debug_ds): New debug function.
6643         (check_dep_status): Rename to check_dep ().  Update to check whole
6644         dependencies.
6645
6646         * haifa-sched.c (spec_info): Make global.
6647         (added_recovery_block_p): Rename to
6648         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
6649         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
6650         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
6651         to use new interfaces.
6652         (ok_for_early_queue_removal): Ditto.
6653         (schedule_block): Initialize logical uids of insns emitted by the
6654         target.
6655         (sched_init): Initialize new variable.
6656         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
6657         interfaces.
6658         (extend_global): Initialize insn data.
6659         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
6660         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
6661         new interfaces.
6662         (add_to_speculative_block): Update to use new interfaces.
6663         (create_recovery_block): Set new variables.
6664         (create_check_block_twin, fix_recovery_deps): Update to use new
6665         interfaces.
6666         (sched_insn_is_legitimate_for_speculation_p): New function.
6667         (speculate_insn): Move checking logic to
6668         sched_insn_is_legitimate_for_speculation_p ().
6669         (sched_remove_insn): Finalize sched-deps information of instruction.
6670         (clear_priorities, add_jump_dependencies): Update to use new
6671         interfaces.
6672         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
6673         
6674         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
6675         to use new interfaces.
6676         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
6677         (new_ready): Try to use control speculation only if it is available.
6678         (add_branch_dependences): Update to use new interfaces.
6679         (compute_block_backward_dependences): Rename to
6680         compute_block_dependences ().  Call
6681         targetm.sched.dependencies_evaluation_hook ().
6682         (free_block_dependencies): New static function.
6683         (debug_dependencies): Update to use new interfaces.
6684         (schedule_region): Remove separate computation of forward dependencies.
6685         Move call of targetm.sched.dependencies_evaluation_hook () to
6686         compute_block_dependences ().  Free dependencies at the end of
6687         scheduling the region.
6688
6689         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
6690         new interfaces.
6691         (add_deps_for_risky_insns): Ditto.
6692         (schedule_ebb): Remove separate computation of forward dependencies.
6693         Free dependencies at the end of scheduling the ebb.
6694
6695         * ddg.c (create_ddg_dependence): Update to use new interfaces.
6696         (build_intra_loop_deps): Ditto.  Remove separate computation of
6697         forward dependencies.  Free sched-deps dependencies.
6698
6699         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
6700         to use new interfaces.
6701         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
6702
6703         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
6704         new interfaces.
6705         (is_costly_group): Ditto.
6706
6707 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6708
6709         * alias.c (rtx_equal_for_memref_p): Constify.
6710         * basic-block.h (const_edge, const_basic_block): New.
6711         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
6712         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
6713         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
6714         probably_never_executed_bb_p, edge_probability_reliable_p,
6715         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
6716         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
6717         Likewise.
6718         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
6719         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
6720         Likewise.
6721         * cfganal.c (flow_active_insn_p, forwarder_block_p,
6722         flow_nodes_print, dfs_enumerate_from): Likewise.
6723         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
6724         control_flow_insn_p, count_basic_blocks): Likewise.
6725         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
6726         get_loop_body_with_size, loop_exit_edge_p): Likewise.
6727         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
6728         average_num_loop_insns, loop_exit_edge_p,
6729         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
6730         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
6731         average_num_loop_insns, seq_cost): Likewise.
6732         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
6733         * dominance.c (dominated_by_p): Likewise.
6734         * emit-rtl.c (validate_subreg): Likewise.
6735         * except.c (can_throw_internal, can_throw_external): Likewise.
6736         * except.h (can_throw_internal, can_throw_external): Likewise.
6737         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
6738         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
6739         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
6740         simple_mem, store_ops_ok, load_kills_store, find_loads,
6741         store_killed_in_insn, store_killed_after, store_killed_before,
6742         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
6743         Likewise.
6744         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
6745         noce_mem_write_may_trap_or_fault_p): Likewise.
6746         * pointer-set.c (pointer_set_contains, pointer_map_contains):
6747         Likewise.
6748         * pointer-set.h (pointer_set_contains, pointer_map_contains):
6749         Likewise.
6750         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
6751         probably_cold_bb_p, probably_never_executed_bb_p,
6752         edge_probability_reliable_p, br_prob_note_reliable_p,
6753         can_predict_insn_p): Likewise.
6754         * regclass.c (reg_set_to_hard_reg_set): Likewise.
6755         * resource.c (return_insn_p): Likewise.
6756         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
6757         Likewise.
6758         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
6759         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
6760         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
6761         verify_gimple_modify_stmt): Likewise.
6762         * tree-chrec.c (is_not_constant_evolution,
6763         is_multivariate_chrec_rec, is_multivariate_chrec,
6764         chrec_contains_symbols, chrec_contains_undetermined,
6765         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
6766         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
6767         eq_evolutions_p, scev_direction): Likewise.
6768         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
6769         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
6770         chrec_contains_symbols_defined_in_loop,
6771         chrec_contains_undetermined, tree_contains_chrecs,
6772         evolution_function_is_affine_multivariate_p,
6773         evolution_function_is_univariate_p, chrec_zerop,
6774         evolution_function_is_constant_p, evolution_function_is_affine_p,
6775         evolution_function_is_affine_or_constant_p,
6776         tree_does_not_contain_chrecs, chrec_type): Likewise.
6777         * tree-data-ref.c (tree_fold_divides_p,
6778         object_address_invariant_in_loop_p, dr_may_alias_p,
6779         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
6780         same_access_functions, constant_access_functions,
6781         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
6782         Likewise.
6783         * tree-flow.h (scev_direction): Likewise.
6784         * tree-gimple.c (is_gimple_stmt): Likewise.
6785         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
6786         Likewise.
6787         * tree-pretty-print.c (op_prio): Likewise.
6788         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
6789         analyzable_condition, backedge_phi_arg_p): Likewise.
6790         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
6791         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
6792         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
6793         Likewise.
6794
6795 2007-08-13  Dan Hipschman  <dsh@google.com>
6796
6797         PR c/32953
6798         * c-format.c (check_format_arg): Move check for zero-length
6799         format strings below the check for unterminated strings.
6800
6801 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
6802
6803         PR C/30427
6804         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
6805         types.
6806
6807 2007-08-13  Nick Clifton  <nickc@redhat.com>
6808
6809         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
6810
6811 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6812
6813         PR fortran/32860
6814         * c-format.c (gcc_gfc_length_specs): New array.
6815         (gcc_gfc_char_table): Add unsigned specifier, and references to
6816         the l length modifier.
6817         (format_types_orig): Use the new gcc_gfc_length_specs.
6818
6819 2007-08-12  Sa Liu  <saliu@de.ibm.com>
6820
6821         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
6822         and with REG_RETVAL note after split.
6823
6824 2007-08-11  David Daney  <ddaney@avtrex.com>
6825
6826         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
6827         as ATTRIBUTE_UNUSED.
6828
6829 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
6830             Segher Boessenkool  <segher@kernel.crashing.org>
6831
6832         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
6833         HAVE_LOCAL_CPU_DETECT not defined.
6834
6835 2007-08-11  Jan Hubicka  <jh@suse.cz>
6836
6837         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
6838         (cgraph_process_new_functions): Honor previous value of
6839         disregard_inline_limits.
6840         * ipa-inline.c (compute_inline_parameters): Likewise.
6841
6842 2007-08-11  Ian Lance Taylor  <iant@google.com>
6843
6844         * alias.h (alias_set_type): Define new type.
6845         (ALIAS_SET_MEMORY_BARRIER): Use it.
6846         * rtl.h: Include alias.h.
6847         (struct mem_attrs): Use alias_set_type.
6848         * tree.h: Include alias.h
6849         (struct tree_type): Use alias_set_type.
6850         (struct tree_struct_field_tag): Likewise.
6851         (struct tree_decl_common): Likewise.
6852         * alias.c (struct alias_set_entry): Use alias_set_type.
6853         (get_alias_set_entry, alias_set_subset_of): Likewise.
6854         (alias_sets_conflict_p): Likewise.
6855         (alias_sets_must_conflict_p): Likewise.
6856         (objects_must_conflict_p): Likewise.
6857         (get_alias_set, new_alias_set): Likewise.
6858         (record_alias_subset, record_component_aliases): Likewise.
6859         (varargs_set, frame_set): Change to alias_set_type.
6860         (get_varargs_alias_set): Use alias_set_type.
6861         (get_frame_alias_set): Likewise.
6862         * builtins.c (setjmp_alias_set): Change to alias_set_type.
6863         * dse.c (struct store_info): Use alias_set_type.
6864         (struct read_info, struct clear_alias_mode_holder): Likewise.
6865         (clear_alias_set_lookup, canon_address): Likewise.
6866         (record_store, check_mem_read_rtx): Likewise.
6867         (dse_record_singleton_alias_set): Likewise.
6868         (dse_invalidate_singleton_alias_set): Likewise.
6869         * emit-rtl.c (get_mem_attrs): Likewise.
6870         (set_mem_attributes_minus_bitpos): Likewise.
6871         (set_mem_alias_set): Likewise.
6872         * expr.c (store_constructor_field, store_field): Likewise.
6873         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
6874         * langhooks.c (lhd_get_alias_set): Likewise.
6875         * langhooks-def.h (lhd_get_alias_set): Likewise.
6876         * reload1.c (alter_reg): Likewise.
6877         * tree-flow.h (struct fieldoff): Likewise.
6878         * tree-ssa-alias.c (struct alias_map_d): Likewise.
6879         (may_alias_p, get_smt_for, create_sft): Likewise.
6880         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
6881         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
6882         (merge_smts_into): Likewise.
6883         * varasm.c (const_alias_set): Likewise.
6884         * c-common.c (strict_aliasing_warning): Likewise.
6885         (c_common_get_alias_set): Likewise.
6886         * dse.h (dse_record_singleton_alias_set): Update declaration.
6887         (dse_invalidate_singleton_alias_set): Likewise.
6888         * emit-rtl.h (set_mem_alias_set): Likewise.
6889         * c-common.h (c_common_get_alias_set): Likewise.
6890         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
6891         * print-tree.c (print_node): Likewise.
6892         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
6893         alias_set_type.
6894         (alpha_setup_incoming_varargs): Use alias_set_type.
6895         * config/i386/i386.c (setup_incoming_varargs_64): Use
6896         alias_set_type.
6897         (setup_incoming_varargs_ms_64): Likewise.
6898         (ix86_GOT_alias_set): Likewise.
6899         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
6900         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
6901         (set): Change to alias_set_type.
6902         (get_TOC_alias_set): Use alias_set_type.
6903         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
6904         declaration.
6905         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
6906         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
6907         alias_set_type.
6908         (struct_value_alias_set): Likewise.
6909         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
6910
6911 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
6912
6913         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
6914         * config/vxworks.h (TARGET_VXWORKS): Override.
6915         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
6916         "mips" if TARGET_VXWORKS.
6917
6918 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
6919
6920         * calls.c (avoid_likely_spilled_reg): New function.
6921         (expand_call): Use it.
6922
6923 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6924
6925         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
6926
6927 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
6928
6929         * config/mips/predicates.md (const_call_insn_operand): Invoke
6930         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
6931
6932 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
6933
6934         PR target/33042
6935         * config/rs6000/driver-rs6000.c: Include link.h.
6936         Use ElfW instead of wordsize-specif typedef.
6937
6938 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6939
6940         * system.h (CONST_CAST): New.
6941         * c-decl.c (c_make_fname_decl): Use it.
6942         * c-lex.c (cb_ident, lex_string): Likewise.
6943         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
6944         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
6945         give_switch, set_multilib_dir): Likewise.
6946         * gengtype-parse.c (string_seq, typedef_name): Likewise.
6947         * passes.c (execute_one_pass): Likewise.
6948         * prefix.c (update_path): Likewise.
6949         * pretty-print.c (pp_base_destroy_prefix): Likewise.
6950         * tree.c (build_string): Likewise.
6951
6952 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
6953
6954         * tree-flow-inline.h (is_exec_stmt): Remove.
6955         (is_label_stmt): Remove.
6956         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
6957         is_label_stmt.
6958
6959 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
6960
6961         * lower-subreg.c (resolve_shift_zext): Don't adjust
6962         src_reg_num for wordmode operands.
6963
6964 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
6965             David Ung  <davidu@mips.com>
6966
6967         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
6968         (TARGET_SCHED_REORDER2): Define.
6969         (mips_maybe_swap_ready): New.
6970         (mips_last_74k_agen_insn): New.
6971         (mips_74k_agen_init): New.
6972         (mips_74k_agen_reorder): New function to group loads and stores
6973         in the ready queue.
6974         (mips_sched_init): New.  
6975         (mips_sched_reorder): Don't do initialization here.  Call
6976         mips_74k_agen_reorder.
6977         (mips_variable_issue): Call mips_74k_agen_init.
6978
6979 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
6980
6981         * tree-flow-inline.h (get_filename): Remove.
6982
6983 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
6984
6985         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
6986         argument.
6987         (mips_fetch_insns): Delete in favor of...
6988         (mips_load_store_insns): ...this new function.
6989         * config/mips/mips.c (mips_address_insns): Add a boolean argument
6990         to say whether multiword moves _might_ be split.
6991         (mips_fetch_insns): Delete in favor of...
6992         (mips_load_store_insns): ...this new function.
6993         (mips_rtx_costs): Update the call to mips_address_insns.
6994         (mips_address_cost): Likewise.
6995         * config/mips/mips.md (length): Use mips_load_store_insns instead
6996         of mips_fetch_insns.
6997         * config/mips/constraints.md (R): Use mips_address_insns rather
6998         than mips_fetch_insns.  Assume that the move never needs to be split.
6999
7000 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
7001
7002         * config/mips/mips.opt (mhard-float, msoft-float): Make these
7003         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
7004         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
7005         * config/mips/mips.h (mips16_hard_float): Delete.
7006         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
7007         definitions, and replace with....
7008         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
7009         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
7010         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
7011         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
7012         (override_options): Replace MASK_SOFT_FLOAT references with
7013         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
7014         and mips16_hard_float when TARGET_MIPS16.
7015         
7016 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7017
7018         PR c/32796
7019         * c-typeck.c (build_binary_op): Check for non pointer types before
7020         calling int_fits_type_p.
7021
7022 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7023
7024         PR middle-end/32813
7025         * fold-const.c (omit_one_operand): Return only the ommitted expression
7026         if the result is an empty statement.
7027         (pedantic_omit_one_operand): Likewise.
7028
7029 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
7030
7031         * c-typeck.c (readonly_error): Improve error for assignment.
7032         
7033         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
7034         expression. 
7035         (pp_c_expression): Ditto.
7036
7037 2007-08-09  Simon Baldwin  <simonb@google.com>
7038
7039         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
7040         break that was preventing simplify_associative_operation() for xor.
7041
7042 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
7043             Nigel Stephens  <nigel@mips.com>
7044
7045         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
7046         Document change in interpretation of value from boolean to
7047         tri-state integer.
7048         * optabs.c (expand_ffs, expand_ctz): New functions to compute
7049         ffs and ctz using clz.
7050         (expand_unop): Call them.
7051         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
7052         result value.
7053         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
7054         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
7055         enable the new ffs expansion on this target.
7056
7057 2007-08-09  Jan Hubicka  <jh@suse.cz>
7058
7059         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
7060         (expand_ternary_op): Likewise.
7061         (expand_vec_shift_expr): Likewise.
7062         (expand_binop_directly): Likewise.
7063         (expand_binop): Likewise.
7064         (sign_expand_binop): Likewise.
7065         (expand_twoval_unop): Likewise.
7066         (expand_twoval_binop): Likewise.
7067         (expand_twoval_binop_libfunc): Likewise.
7068         (widen_clz): Likewise.
7069         (widen_bswap): Likewise.
7070         (expand_parity): Likewise.
7071         (expand_unop): Likewise.
7072         (expand_abs_nojump): Likewise.
7073         (expand_copysign): Likewise.
7074         (emit_no_conflict_block): Likewise.
7075         (emit_libcall_block): Likewise.
7076         (can_compare_p): Likewise.
7077         (prepare_cmp_insn): Likewise.
7078         (emit_cmp_and_jump_insn_1): Likewise.
7079         (prepare_float_lib_cmp): Likewise.
7080         (emit_conditional_add): Likewise.
7081         (gen_add2_insn): Likewise.
7082         (have_add2_insn): Likewise.
7083         (gen_sub2_insn): Likewise.
7084         (have_sub2_insn): Likewise.
7085         (can_extend_p): Likewise.
7086         (can_fix_p): Likewise.
7087         (can_float_p): Likewise.
7088         (expand_float): Likewise.
7089         (expand_fix): Likewise.
7090         (expand_sfix_optab): Likewise.
7091         (new_optab): Likewise.
7092         (new_convert_optab): Likewise.
7093         (init_libfuncs): Likewise.
7094         (init_interclass_conv_libfuncs): Likewise.
7095         (init_intraclass_conv_libfuncs): Likewise.
7096         (set_conv_libfunc): Likewise.
7097         (init_optabs): Likewise.
7098         (debug_optab_libfuncs): Likewise.
7099         (gen_cond_trap): Likewise.
7100         * optabs.h (optab_handler, convert_optab_hanlder): New.
7101         * genopinit.c: Update optabs generation table.
7102         * reload.c (find_reloads_address_1): Use optabs accestors.
7103         * builtins.c (expand_builtin_mathfn): Likewise.
7104         (expand_builtin_mathfn_2): Likewise.
7105         (expand_builtin_mathfn_3): Likewise.
7106         (expand_builtin_interclass_mathfn): Likewise.
7107         (expand_builtin_sincos): Likewise.
7108         (expand_builtin_cexpi): Likewise.
7109         (expand_builtin_powi): Likewise.
7110         (expand_builtin_strlen): Likewise.
7111         * dojump.c (do_jump): Likewise.
7112         * expr.c (convert_move): Likewise.
7113         (move_by_pieces): Likewise.
7114         (move_by_pieces_ninsns): Likewise.
7115         (can_store_by_pieces): Likewise.
7116         (store_by_pieces_1): Likewise.
7117         (emit_move_via_integer): Likewise.
7118         (emit_move_complex): Likewise.
7119         (emit_move_ccmode): Likewise.
7120         (emit_move_insn_1): Likewise.
7121         (emit_single_push_insn): Likewise.
7122         (store_constructor): Likewise.
7123         (expand_expr_real_1): Likewise.
7124         (do_store_flag): Likewise.
7125         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
7126         (enumerate_modes): Likewise.
7127         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
7128         (supportable_widening_operation): Likewise.
7129         (supportable_narrowing_operation): Likewise.
7130         * expmed.c (store_bit_field_1): Likewise.
7131         (extract_bit_field_1): Likewise.
7132         (expand_mult_highpart_optab): Likewise.
7133         (expand_smod_pow2): Likewise.
7134         (expand_divmod): Likewise.
7135         (emit_store_flag): Likewise.
7136         * tree-vect-patterns.c
7137         (vect_pattern_recog_1): Likewise.
7138         * tree-ssa-loop-prefetch.c
7139         (nontemporal_store_p): Likewise.
7140         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
7141         (vect_create_epilog_for_reduction): Likewise.
7142         (vectorizable_reduction): Likewise.
7143         (vectorizable_operation): Likewise.
7144         (vect_strided_store_supported): Likewise.
7145         (vectorizable_store): Likewise.
7146         (vect_strided_load_supported): Likewise.
7147         (vectorizable_load): Likewise.
7148         * combine.c (simplify_comparison): Likewise.
7149         * tree-vect-generic.c
7150         (type_for_widest_vector_mode): Likewise.
7151         (expand_vector_operations_1): Likewise.
7152         * config/spu/spu.c (spu_expand_mov): Likewise.
7153         (spu_emit_vector_compare): Likewise.
7154         * config/rs6000/rs6000.c
7155         (rs6000_emit_vector_compare): Likewise.
7156         * stmt.c (add_case_node): Likewise.
7157         * reload1.c (gen_reload):
7158
7159 2007-08-09  Michael Matz  <matz@suse.de>
7160
7161         * tree.h (fixed_zerop): Declare as taking a const_tree.
7162         * tree.c (fixed_zerop): Take a const_tree.
7163
7164 2007-08-09  Ira Rosen  <irar@il.ibm.com>
7165
7166         * tree-vect-transform.c (vectorizable_store): Remove call to
7167         copy_virtual_operands() and call mark_symbols_for_renaming() for
7168         the created vector store.
7169         (vect_setup_realignment): Don't call copy_virtual_operands() and
7170         update_vuses_to_preheader(). 
7171         (vectorizable_load): Don't call copy_virtual_operands(). 
7172         (update_vuses_to_preheader): Remove.
7173
7174 2007-08-08  Chao-ying Fu  <fu@mips.com>
7175
7176         * tree.def (FIXED_POINT_TYPE): New type.
7177         (FIXED_CST): New constant.
7178         (FIXED_CONVERT_EXPR): New expr.
7179         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
7180         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
7181         * tree.h (struct tree_base): Add saturating_flag.
7182         Remove one bit of spare for saturating_flag.
7183         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
7184         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
7185         FIXED_POINT_TYPE_P): Define.
7186         (TYPE_SATURATING): Define.
7187         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
7188         (struct tree_fixed_cst): New.
7189         (TYPE_IBIT, TYPE_FBIT): Define.
7190         (tree_node): Add fixed_cst.
7191         (enum tree_index): Add new enumeration values of
7192         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
7193         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
7194         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
7195         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
7196         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
7197         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
7198         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
7199         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
7200         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
7201         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
7202         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
7203         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
7204         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
7205         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
7206         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
7207         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
7208         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
7209         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
7210         (sat_short_fract_type_node, sat_fract_type_node,
7211         sat_long_fract_type_node, sat_long_long_fract_type_node,
7212         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
7213         sat_unsigned_long_fract_type_node,
7214         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
7215         fract_type_node, long_fract_type_node, long_long_fract_type_node,
7216         unsigned_short_fract_type_node, unsigned_fract_type_node,
7217         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
7218         sat_short_accum_type_node, sat_accum_type_node,
7219         sat_long_accum_type_node, sat_long_long_accum_type_node,
7220         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
7221         sat_unsigned_long_accum_type_node,
7222         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
7223         accum_type_node, long_accum_type_node, long_long_accum_type_node,
7224         unsigned_short_accum_type_node, unsigned_accum_type_node,
7225         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
7226         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
7227         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
7228         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
7229         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
7230         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
7231         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
7232         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
7233         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
7234         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
7235         sat_uda_type_node, sat_uta_type_node): New macro.
7236         (make_fract_type, make_accum_type): Declare.
7237         (make_signed_fract_type, make_unsigned_fract_type,
7238         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
7239         make_signed_accum_type, make_unsigned_accum_type,
7240         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
7241         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
7242         make_or_reuse_sat_signed_fract_type,
7243         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
7244         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
7245         make_or_reuse_sat_unsigned_accum_type): New macro.
7246         (fixed_zerop): Declare.
7247         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
7248         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
7249         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
7250         LONG_LONG_ACCUM_TYPE_SIZE): Define.
7251         * treestruct.def: Add TS_FIXED_CST.
7252         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
7253         (tree.o): Likewise.
7254         (tree-dump.o): Likewise.
7255         (print-tree.o): Likewise.
7256         (tree-pretty-print.o): Likewise.
7257         (fold-const.o): Likewise.
7258         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
7259         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
7260         (is_gimple_min_invariant): Handle FIXED_CST.
7261         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
7262         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
7263         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7264         (layout_type): Handle FIXED_POINT_TYPE.
7265         (make_fract_type, make_accum_type): New functions.
7266         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
7267         * tree-dump.c (fixed-value.h): New include.
7268         (dump_fixed): New function.
7269         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
7270         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
7271         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
7272         * tree-pretty-print.c (fixed-value.h): New include.
7273         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
7274         FIXED_CONVERT_EXPR.
7275         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
7276         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
7277         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
7278         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
7279         for non-saturating fixed-point types.
7280         (reassociate_bb): Likewise.
7281         * emit-rtl.c (fixed-value.h): New include.
7282         (fconst0, fconst1): New array.
7283         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
7284         * tree-vect-generic.c expand_vector_operation): Support
7285         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
7286         MODE_VECTOR_UACCUM.
7287         (type_for_widest_vector_mode): Add one parameter for the 
7288         saturating flag.
7289         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
7290         vector mode.
7291         Pass the satp parameter to type_for_mode for fixed-point types.
7292         (expand_vector_operations_1): Pass the saturating flag to
7293         type_for_widest_vector_mode.
7294         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7295         and MODE_VECTOR_UACCUM.
7296         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
7297         (vectorizable_condition): Likewise.
7298         * tree.c (fixed-value.h): New include.
7299         (tree_code_size): Support FIXED_CST.
7300         (build_fixed): New function.
7301         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
7302         (fixed_zerop): New function.
7303         (tree_node_structure): Support FIXED_CST.
7304         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
7305         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
7306         (type_hash_eq): Handle FIXED_POINT_TYPE.
7307         (simple_cst_equal): Support FIXED_CST.
7308         (iterative_hash_expr): Handle FIXED_CST.
7309         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
7310         (get_narrower): Likewise.
7311         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
7312         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
7313         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
7314         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
7315         nodes.
7316         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
7317         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7318         (initializer_zerop): Support FIXED_CST.
7319         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
7320         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
7321         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
7322         (is_base_type): Handle FIXED_POINT_TYPE.
7323         (add_type_attribute): Handle FIXED_POINT_TYPE.
7324         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
7325         * print-tree.c (fixed-value.h): New include.
7326         (print_node_brief): Support FIXED_CST.
7327         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
7328         * c-pretty-print.c (fixed-value.h): New include.
7329         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
7330         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
7331         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
7332         Support fixed-point types for inner items in VECTOR_TYPE.
7333         (pp_c_direct_declarator): Likewise.
7334         (pp_c_declarator): Likewise.
7335         (pp_c_fixed_constant): New function.
7336         (pp_c_constant): Handle FIXED_CST.
7337         (pp_c_primary_expression): Likewise.
7338         (pp_c_expression): Likewise.
7339         * fold-const.c (fixed-value.h): New include.
7340         (negate_expr_p): Return true for FIXED_CST.
7341         (fold_negate_expr): Support FIXED_CST.
7342         (split_tree): Support FIXED_CST.
7343         (const_binop): Support FIXED_CST.
7344         (fold_convert_const_int_from_fixed): New function to convert from
7345         fixed to int.
7346         (fold_convert_const_real_from_fixed): New function to convert from
7347         fixed to real.
7348         (fold_convert_const_fixed_from_fixed): New function to convert from
7349         fixed to another fixed.
7350         (fold_convert_const_fixed_from_int): New function to convert from
7351         int to fixed.
7352         (fold_convert_const_fixed_from_real): New function to convert from
7353         real to fixed.
7354         (fold_convert_const): Support conversions from fixed to int, from
7355         fixed to real, from fixed to fixed, from int to fixed, and from real
7356         to fixed.
7357         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
7358         (operand_equal_p): Support FIXED_CST.
7359         (make_range): For fixed-point modes, we need to pass the
7360         saturating flag as the 2nd parameter.
7361         (tree_swap_operands_p): Handle FIXED_CST.
7362         (fold_plusminus_mult_expr): For fract modes, we cannot generate
7363         constant 1.
7364         (fold_unary): Support FIXED_CONVERT_EXPR.
7365         (fold_binary): Handle FIXED_CST.
7366         Make sure the type is not saturating, before associating operations.
7367         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
7368         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
7369         (fold_negate_const): Support FIXED_CST.
7370         (fold_relational_const): Support FIXED_CST.
7371         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
7372         (gimplify_expr): Handle FIXED_CST.
7373         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
7374         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
7375         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
7376         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
7377         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
7378         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
7379         LONG_LONG_ACCUM_TYPE_SIZE.
7380         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
7381         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
7382         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
7383         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
7384         MODE_ACCUM, and MODE_UACCUM.
7385         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
7386         fixed-point types to disable reduction.
7387         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
7388
7389 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
7390
7391         * config/rs6000/x-rs6000: New file.
7392         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
7393         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
7394         (EXTRA_SPEC_FUNCTIONS): Define.
7395         (HAVE_LOCAL_CPU_DETECT): Define.
7396         (CC1_CPU_SPEC): Define.
7397         * config/rs6000/driver-rs6000.c: New file.
7398         * config/rs6000/aix.h (CC1_SPEC): Define.
7399         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
7400         * config.host: Add x-rs6000 to host_xmake_file if host and target
7401         are rs6000 or powerpc.
7402
7403 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
7404
7405         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
7406
7407 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7408             Sandra Loosemore  <sandra@codesourcery.com>
7409             Chao-ying Fu  <fu@mips.com>
7410             Nigel Stephens  <nigel@mips.com>
7411             David Ung  <davidu@mips.com>
7412
7413         * doc/invoke.texi (-mcode-readable): Document.
7414         * config/mips/mips.opt (mcode-readable): New option.
7415         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
7416         * config/mips/mips.h (mips_code_readable_setting): New enum.
7417         (mips_code_readable): Declare.
7418         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
7419         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
7420         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
7421         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
7422         boiler-plate comments.
7423         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
7424         * config/mips/mips.c (mips_code_readable): New variable.
7425         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
7426         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
7427         context and -mcode-readable setting to restrict the use of
7428         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
7429         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
7430         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
7431         (mips_blocks_for_constant_p): Only return false for
7432         TARGET_MIPS16_PCREL_LOADS.
7433         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
7434         for MIPS16.  Handle SYMBOL_32_HIGH.
7435         (mips_const_insns): Allow HIGHs for MIPS16 too.
7436         (mips_unspec_address_offset): New function, split out from...
7437         (mips_unspec_address): ...here.
7438         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
7439         16-bit symbolic constants.  Assert approropiate conditions for
7440         using the "la" and "dla" macros.
7441         (mips_handle_option): Handle -mcode-readable=.
7442         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
7443         Set up mips_lo_relocs[SYMBOL_32_HIGH].
7444         (mips_strip_unspec_address): New function, split out from...
7445         (print_operand_reloc): ...here.
7446         (print_operand): Pass constants through mips_strip_unspec_address.
7447         (print_operand_address): Likewise.
7448         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
7449         (mips_select_rtx_section): Remove MIPS16 handling.
7450         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
7451         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
7452         (mips16_lay_out_constants): Do nothing unless
7453         TARGET_MIPS16_PCREL_LOADS.
7454         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
7455         * config/mips/mips.md: Split HIGHs for MIPS16.
7456         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
7457
7458 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7459
7460         * config/mips/mips-protos.h (mips_emit_move): Declare.
7461         * config/mips/mips.c (mips_emit_move): New function.
7462         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
7463         (mips_legitimize_const_move): Likewise.
7464         (mips_legitimize_move): Likewise.
7465         (mips_split_64bit_move): Likewise.
7466         (mips_restore_gp): Likewise.
7467         (mips_load_call_address): Likewise.
7468         (mips_emit_fcc_reload): Likewise.
7469         (mips_set_return_address): Likewise.
7470         (mips_block_move_straight): Likewise.
7471         (mips_block_move_loop): Likewise.
7472         (mips_setup_incoming_varargs): Likewise.
7473         (mips_save_reg): Likewise.
7474         (mips_expand_prologue): Likewise.
7475         (mips_restore_reg): Likewise.
7476         (mips_expand_epilogue): Likewise.
7477         (mips_output_mi_thunk): Likewise.
7478         (build_mips16_call_stub): Likewise.
7479         (mips_builtin_branch_and_move): Likewise.
7480         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
7481         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
7482         (fixuns_truncdfdi2): Likewise.
7483         (fixuns_truncsfsi2): Likewise.
7484         (fixuns_truncsfdi2): Likewise.
7485         (loadgp_absolute): Likewise.
7486         (builtin_setjmp_setup): Likewise.
7487         (builtin_longjmp): Likewise.
7488         (untyped_call): Likewise.
7489
7490 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7491
7492         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
7493         an "rtx *" argument.  Return a bool.
7494         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
7495         values and return true if they can be split.  Take the same kind of
7496         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
7497         and store the lo_sum there if nonnull.  Use the symbol type to
7498         determine whether a $gp or HIGH is needed.
7499         (mips_legitimize_address): Update call to mips_split_symbol and
7500         simplify accordingly.
7501         (mips_legitimize_const_move): Likewise.
7502         * config/mips/mips.md: In the combine define_split,
7503         check mips_split_symbol instead of splittable_symbolic_operand.
7504         Update use of mips_split_symbol in the generator code.
7505         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
7506
7507 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7508
7509         * config/mips/mips.c (mips_symbolic_address_p): Delete.
7510         (mips_symbol_insns_1): New function, split out from...
7511         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
7512         and stores separately from load addresses.
7513         (mips_classify_address): Replace uses of mips_symbolic_address_p
7514         with uses of mips_symbol_insns.
7515         (mips_address_insns): Update calls to mips_symbol_insns.
7516         (mips_const_insns): Likewise.
7517         (mips_legitimize_address): Likewise.
7518
7519 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7520
7521         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
7522         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
7523         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
7524         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
7525         non-call contexts if TARGET_MIPS16.
7526         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
7527         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
7528         code for SYMBOL_ABSOLUTE.
7529         (mips_symbol_insns): Likewise.
7530
7531 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7532
7533         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
7534         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
7535         (mips_symbolic_constant_p): Likewise.  Update the call to
7536         mips_classify_symbol.
7537         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
7538         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
7539         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
7540         (print_operand_reloc): Add a context argument.  Update the call to
7541         mips_symbolic_constant_p.
7542         (print_operand): Update the calls to print_operand_reloc.
7543         (print_operand_address): Use print_operand_reloc rather than
7544         print_operand.
7545         (mips_rewrite_small_data_p): Add a context argument.  Update the call
7546         to mips_symbolic_constant_p.
7547         (mips_small_data_pattern_1): Make DATA the containing mem.
7548         Update the call to mips_rewrite_small_data_p.
7549         (mips_rewrite_small_data_1): Likewise.
7550         (mips_use_anchors_for_symbol_p): Update the call to
7551         mips_symbolic_constant_p.
7552         * config/mips/predicates.md (const_call_insn_operand): Likewise.
7553         (splittable_symbolic_operand): Likewise.
7554         (move_operand): Likewise.
7555         (absolute_symbolic_operand): Likewise.
7556         (got_disp_operand): Likewise.
7557         (got_page_ofst_operand): Likewise.
7558
7559 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
7560
7561         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
7562         (SYMBOL_ABSOLUTE): ...this.
7563         (SYMBOL_SMALL_DATA): Rename to...
7564         (SYMBOL_GP_RELATIVE): ...this.
7565         (SYMBOL_CONSTANT_POOL): Rename to...
7566         (SYMBOL_PC_RELATIVE): ...this.
7567         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
7568         (mips_symbolic_address_p, mips_symbol_insns, override_options)
7569         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
7570         after above changes.
7571         * config/mips/predicates.md (const_call_insn_operand): Likewise.
7572         (general_symbolic_operand): Rename to...
7573         (absolute_symbolic_operand): ...this.
7574         * config/mips/mips.md: Update after above changes.
7575
7576 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
7577             Revital Eres  <eres@il.ibm.com>
7578
7579         * ddg.c (print_ddg): Add dump information.
7580         * modulo-sched.c (print_node_sched_params): Add parameter and
7581         verbosity.
7582         (calculate_maxii): Remove function.
7583         (undo_generate_reg_moves): Likewise.
7584         (undo_permute_partial_schedule): Likewise.
7585         (kernel_number_of_cycles): Likewise.
7586         (MAXII_FACTOR): New definition to calculate the upper bound of II.
7587         (sms_schedule): Use it.  Remove profitability checks.
7588         (sms_schedule_by_order): Fix order of nodes within the cycle.
7589
7590 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
7591
7592         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
7593         -profile option, add pie support.
7594         (ENDFILE_SPEC): New spec.
7595         * config/gnu.h (LIB_SPEC): Add -profile option.
7596
7597 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
7598
7599         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
7600         * config/gnu.h (LIB_SPEC): Likewise.
7601
7602 2007-08-07  Yaz Saito  <saito@google.com>
7603             Ian Lance Taylor  <iant@google.com>
7604
7605         * common.opt (finstrument-functions-exclude-function-list): New
7606         option.
7607         (finstrument-functions-exclude-file-list): New option.
7608         * opts.c (char_p): Define and DEF_VEC.
7609         (flag_instrument_functions_exclude_functions): New static
7610         variable.
7611         (flag_instrument_functions_exclude_files): New static variable.
7612         (add_instrument_functions_exclude_list): New static function.
7613         (flag_instrument_functions_exclude_p): New function.
7614         (common_handle_option): Handle new options.
7615         * flags.h (flag_instrument_functions_exclude_p): Declare.
7616         * gimplify.c (gimplify_function_tree): Call
7617         flag_instrument_functions_exclude_p.
7618         * doc/invoke.texi (Option Summary): Mention new options.
7619         (Code Gen Options): Document new options.
7620
7621 2007-08-07  Ian Lance Taylor  <iant@google.com>
7622
7623         PR rtl-optimization/32776
7624         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
7625         (resolve_use): Likewise.
7626         (decompose_multiword_subregs): Remove "changed" local variable.
7627
7628 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
7629
7630         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
7631         * configure: Regenerate.
7632         * config.in: Regenerate.
7633         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
7634         spec string.
7635
7636 2007-08-07  Ian Lance Taylor  <iant@google.com>
7637
7638         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
7639         note, just delete the insn.
7640
7641 2007-08-07  Andreas Schwab  <schwab@suse.de>
7642
7643         PR bootstrap/32973
7644         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
7645         struct definition.
7646
7647 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
7648
7649         * lower-subreg.c (resolve_subreg_use): Remove assertion.
7650         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
7651         (decompose_multiword_subregs): Use the functions above to decompose
7652         multiword shifts and zero-extends.
7653
7654 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7655
7656         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
7657         "assemble" descriptions which were swapped.
7658
7659 2007-08-06  Chao-ying Fu  <fu@mips.com>
7660
7661         * fixed-value.h: New file.
7662         * fixed-value.c: New file.
7663         * Makefile.in (OBJS-common): Add fixed-value.o.
7664         (fixed-value.o): New rule.
7665         (GTFILES): Add fixed-value.h.
7666         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
7667         to compare a.low and b.low.
7668         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
7669
7670 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
7671             Daniel Jacobowitz  <dan@codesourcery.com>
7672
7673         PR target/31868
7674         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
7675         tmake_file.
7676         (x86_64-*-netbsd*): Likewise.
7677         (x86_64-*-linux*): Likewise.
7678         (x86_64-*-kfreebsd*-gnu): Likewise.
7679         (x86_64-*-knetbsd*-gnu): Likewise.
7680         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
7681
7682         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
7683
7684         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
7685         Add -fno-asynchronous-unwind-tables.
7686
7687         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
7688         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
7689         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
7690         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
7691         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
7692
7693 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
7694
7695         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
7696         (TARGET_C_MODE_FOR_SUFFIX): New.
7697
7698 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
7699
7700         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
7701
7702 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
7703
7704         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
7705
7706 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
7707
7708         * config/i386/i386.md: Check TARGET_ macros and optimize_size
7709         before checking function returns in conditional expressions.
7710
7711 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
7712
7713         PR pch/13676
7714         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
7715
7716 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7717
7718         PR middle-end/32988
7719         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
7720         for INTEGRAL_TYPE_P.
7721
7722 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
7723
7724         * configure.ac: Remove --enable-checking=df from default settings.
7725         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
7726         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
7727         if the parameter is true.
7728         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
7729         DF_VERIFY_SCHEDULED flag is true.
7730         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
7731         (df_finish_pass): Adjust prototype.
7732         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
7733         true.
7734
7735         * see.c (pass_see): Add TODO_df_verify.
7736         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
7737         * global.c (rest_of_handle_global_alloc): Schedule verification
7738         after the pass.
7739         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
7740         before the pass.
7741         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
7742         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
7743         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
7744
7745         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
7746         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
7747         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
7748
7749 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
7750             Revital Eres <eres@il.ibm.com>
7751
7752         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
7753         flag.
7754         * ddg.c (create_ddg_dependence): Rename to...
7755         (create_ddg_dep_from_intra_loop_link): This.  Do not check
7756         for interloop edges.  Do not create anti dependence edge when
7757         a true dependence edge exists in the opposite direction and
7758         -fmodulo-sched-allow-regmoves is set.
7759         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
7760         (add_cross_iteration_register_deps): Create anti dependence edge
7761         when -fno-modulo-sched-allow-regmoves is set.
7762         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
7763
7764 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
7765
7766         * config/arm/arm.md (movsi): Add braces.
7767
7768 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7769
7770         PR middle-end/32780
7771         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
7772         operands for the folding of "A - (A & B)" into "~B & A"; cast them
7773         to type.
7774
7775 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
7776
7777         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
7778         state accessor functions.
7779         * cfgloopmanip.c (remove_path, create_preheaders,
7780         force_single_succ_latches, fix_loop_structure): Ditto.
7781         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
7782         tree_duplicate_loop_to_header_edge): Ditto.
7783         * cfgloopanal.c (mark_irreducible_loops): Ditto.
7784         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
7785         Ditto.
7786         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
7787         cleanup_tree_cfg): Ditto.
7788         * tree-cfg.c (tree_merge_blocks): Ditto.
7789         * cfgloop.c (rescan_loop_exit, record_loop_exits,
7790         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
7791         loop_preheader_edge, single_exit): Ditto.
7792         (flow_loops_find): Do not clear loops->state.
7793         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
7794         loops_state_clear): New functions.
7795
7796 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7797
7798         PR middle-end/32399
7799         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
7800         when adding to the base and convert ELT to sizetype instead of type.
7801
7802 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7803
7804         PR middle-end/32304
7805         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
7806         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
7807
7808 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7809
7810         PR middle-end/32935
7811         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
7812          correct type the negate expression.
7813
7814 2007-08-03  Jan Hubicka  <jh@suse.cz>
7815
7816         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
7817         stack boundary.
7818
7819 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
7820
7821         * config/rs6000/rs6000.c (struct processor_cost): Change
7822         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
7823         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
7824         information.
7825         (rios1_costs, rios2_cost): Correct cache line size.
7826         (rs6000_override_options): Set l2-cache-size parameter.
7827
7828 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7829             Diego Novillo  <dnovillo@google.com>
7830
7831         PR 31521
7832         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
7833         if the range includes 0.
7834
7835 2007-08-03  Ben Elliston  <bje@au.ibm.com>
7836
7837         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
7838         mode to unspec expressions to silence a warning from the generator
7839         programs.
7840         
7841 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
7842
7843         * config/ia64/constraints.md ("U"): Make constraint vector only.
7844
7845 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
7846
7847         PR middle-end/25446
7848         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
7849         always_inline attribute on the function decl.
7850
7851 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
7852
7853         PR middle-end/25445
7854         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
7855         if we are compiling with -fPIC.
7856
7857 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
7858             Nigel Stephens  <nigel@mips.com>
7859
7860         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
7861         Define for MIPS32 and MIPS64.
7862
7863 2007-08-02  Nick Clifton  <nickc@redhat.com>
7864
7865         * config/host-hpux.c: Change copyright header to refer to version
7866         3 of the GNU General Public License and to point readers at the
7867         COPYING3 file and the FSF's license web page.
7868         * config/alpha/predicates.md, config/alpha/vms-ld.c,
7869         config/alpha/linux.h, config/alpha/alpha.opt,
7870         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
7871         config/alpha/vms-unwind.h, config/alpha/ev4.md,
7872         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
7873         config/alpha/alpha.h, config/alpha/sync.md,
7874         config/alpha/openbsd.h, config/alpha/alpha.md,
7875         config/alpha/alpha-modes.def, config/alpha/ev5.md,
7876         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
7877         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
7878         config/alpha/constraints.md, config/alpha/osf.h,
7879         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
7880         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
7881         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
7882         config/frv/frv-asm.h, config/frv/frv-protos.h,
7883         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
7884         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
7885         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
7886         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
7887         config/s390/s390.opt, config/s390/s390-modes.def,
7888         config/s390/fixdfdi.h, config/s390/constraints.md,
7889         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
7890         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
7891         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
7892         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
7893         config/m32c/prologue.md, config/m32c/m32c.abi,
7894         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
7895         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
7896         config/m32c/t-m32c, config/m32c/m32c-modes.def,
7897         config/m32c/jump.md, config/m32c/shift.md,
7898         config/m32c/m32c-protos.h, config/libgloss.h,
7899         config/spu/spu-protos.h, config/spu/predicates.md,
7900         config/spu/spu-builtins.h, config/spu/spu.c,
7901         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
7902         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
7903         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
7904         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
7905         config/sparc/hypersparc.md, config/sparc/predicates.md,
7906         config/sparc/linux.h, config/sparc/sp64-elf.h,
7907         config/sparc/supersparc.md, config/sparc/cypress.md,
7908         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
7909         config/sparc/niagara.md, config/sparc/sparc.md,
7910         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
7911         config/sparc/sparc.opt, config/sparc/sync.md,
7912         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
7913         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
7914         config/sparc/sparc.c, config/sparc/little-endian.opt,
7915         config/sparc/sysv4-only.h, config/sparc/sparc.h,
7916         config/sparc/linux64.h, config/sparc/freebsd.h,
7917         config/sparc/sol2.h, config/sparc/rtemself.h,
7918         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
7919         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
7920         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
7921         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
7922         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
7923         config/m32r/linux.h, config/m32r/constraints.md,
7924         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
7925         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
7926         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
7927         config/i386/i386.md, config/i386/netware-crt0.c,
7928         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
7929         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
7930         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
7931         config/i386/sol2.h, config/i386/constraints.md,
7932         config/i386/netware-libgcc.c, config/i386/sysv5.h,
7933         config/i386/predicates.md, config/i386/geode.md,
7934         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
7935         config/i386/freebsd64.h, config/i386/vxworksae.h,
7936         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
7937         config/i386/rtemself.h, config/i386/netbsd-elf.h,
7938         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
7939         config/i386/netware.h, config/i386/i386-modes.def,
7940         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
7941         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
7942         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
7943         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
7944         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
7945         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
7946         config/i386/xm-mingw32.h, config/i386/linux64.h,
7947         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
7948         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
7949         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
7950         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
7951         config/i386/cygwin2.c, config/i386/i386-protos.h,
7952         config/i386/sync.md, config/i386/openbsd.h,
7953         config/i386/host-mingw32.c, config/i386/i386-aout.h,
7954         config/i386/nto.h, config/i386/biarch64.h,
7955         config/i386/i386-coff.h, config/i386/freebsd.h,
7956         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
7957         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
7958         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
7959         config/darwin-protos.h, config/linux.opt, config/sol2.c,
7960         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
7961         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
7962         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
7963         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
7964         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
7965         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
7966         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
7967         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
7968         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
7969         config/sh/superh64.h, config/sh/rtemself.h,
7970         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
7971         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
7972         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
7973         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
7974         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
7975         config/avr/predicates.md, config/avr/constraints.md,
7976         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
7977         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
7978         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
7979         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
7980         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
7981         config/c4x/c4x-modes.def, config/c4x/rtems.h,
7982         config/c4x/predicates.md, config/c4x/c4x.h,
7983         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
7984         config/xtensa/predicates.md, config/xtensa/xtensa.c,
7985         config/xtensa/linux.h, config/xtensa/xtensa.h,
7986         config/xtensa/elf.h, config/xtensa/xtensa.md,
7987         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
7988         config/xtensa/xtensa-protos.h, config/dbx.h,
7989         config/stormy16/predicates.md, config/stormy16/stormy16.md,
7990         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
7991         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
7992         config/host-solaris.c, config/fr30/fr30.h,
7993         config/fr30/predicates.md, config/fr30/fr30-protos.h,
7994         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
7995         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
7996         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
7997         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
7998         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
7999         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
8000         config/host-linux.c, config/interix3.h, config/cris/cris.c,
8001         config/cris/predicates.md, config/cris/linux.h,
8002         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
8003         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
8004         config/cris/aout.opt, config/cris/cris-protos.h,
8005         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
8006         config/iq2000/iq2000.h, config/iq2000/predicates.md,
8007         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
8008         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
8009         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
8010         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
8011         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
8012         config/chorus.h, config/mn10300/mn10300.c,
8013         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
8014         config/mn10300/mn10300.h, config/mn10300/linux.h,
8015         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
8016         config/mn10300/mn10300.md, config/ia64/predicates.md,
8017         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
8018         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
8019         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
8020         config/ia64/freebsd.h, config/ia64/ia64.md,
8021         config/ia64/ia64-modes.def, config/ia64/constraints.md,
8022         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
8023         config/gofast.h, config/rtems.h, config/sol2-10.h,
8024         config/m68k/predicates.md, config/m68k/m68k.md,
8025         config/m68k/linux.h, config/m68k/m68k-modes.def,
8026         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
8027         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
8028         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
8029         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
8030         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
8031         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
8032         config/m68k/constraints.md, config/m68k/rtemself.h,
8033         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
8034         config/m68k/uclinux.h, config/rs6000/power4.md,
8035         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
8036         config/rs6000/linux.h, config/rs6000/eabi.h,
8037         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
8038         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
8039         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
8040         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
8041         config/rs6000/windiss.h, config/rs6000/603.md,
8042         config/rs6000/aix41.h, config/rs6000/cell.md,
8043         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
8044         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
8045         config/rs6000/darwin.md, config/rs6000/darwin64.h,
8046         config/rs6000/default64.h, config/rs6000/7xx.md,
8047         config/rs6000/darwin.opt, config/rs6000/spe.md,
8048         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
8049         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
8050         config/rs6000/7450.md, config/rs6000/linux64.h,
8051         config/rs6000/constraints.md, config/rs6000/440.md,
8052         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
8053         config/rs6000/rs6000.c, config/rs6000/aix52.h,
8054         config/rs6000/rs6000.h, config/rs6000/power6.md,
8055         config/rs6000/predicates.md, config/rs6000/altivec.md,
8056         config/rs6000/aix64.opt, config/rs6000/rios1.md,
8057         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
8058         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
8059         config/rs6000/darwin7.h, config/rs6000/dfp.md,
8060         config/rs6000/linux64.opt, config/rs6000/sync.md,
8061         config/rs6000/vxworksae.h, config/rs6000/power5.md,
8062         config/rs6000/lynx.h, config/rs6000/biarch64.h,
8063         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
8064         config/rs6000/eabispe.h, config/rs6000/e500.h,
8065         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
8066         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
8067         config/rs6000/aix.h, config/rs6000/vxworks.h,
8068         config/rs6000/40x.md, config/rs6000/aix51.h,
8069         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
8070         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
8071         config/arc/arc.h, config/mcore/mcore-elf.h,
8072         config/mcore/mcore-protos.h, config/mcore/predicates.md,
8073         config/mcore/mcore.md, config/mcore/mcore.c,
8074         config/mcore/mcore.opt, config/mcore/mcore.h,
8075         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
8076         config/score/predicates.md, config/score/score-version.h,
8077         config/score/score-protos.h, config/score/misc.md,
8078         config/score/elf.h, config/score/score.c, config/score/mac.md,
8079         config/score/score7.md, config/score/score.h,
8080         config/score/score-conv.h, config/score/score-mdaux.c,
8081         config/score/score.md, config/score/score.opt,
8082         config/score/score-modes.def, config/score/score-mdaux.h,
8083         config/score/mul-div.S, config/arm/uclinux-elf.h,
8084         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
8085         config/arm/symbian.h, config/arm/linux-elf.h,
8086         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
8087         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
8088         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
8089         config/arm/strongarm-pe.h, config/arm/arm.h,
8090         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
8091         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
8092         config/arm/arm-modes.def, config/arm/linux-eabi.h,
8093         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
8094         config/arm/arm-cores.def, config/arm/arm-protos.h,
8095         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
8096         config/arm/wince-pe.h, config/arm/neon.md,
8097         config/arm/constraints.md, config/arm/neon.ml,
8098         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
8099         config/arm/arm.opt, config/arm/arm926ejs.md,
8100         config/arm/predicates.md, config/arm/iwmmxt.md,
8101         config/arm/arm_neon.h, config/arm/unknown-elf.h,
8102         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
8103         config/arm/neon-testgen.ml, config/arm/arm.md,
8104         config/arm/xscale-coff.h, config/arm/pe.c,
8105         config/arm/arm-generic.md, config/arm/pe.h,
8106         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
8107         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
8108         config/arm/strongarm-elf.h, config/arm/cirrus.md,
8109         config/arm/netbsd-elf.h, config/arm/vxworks.h,
8110         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
8111         config/pa/predicates.md, config/pa/pa64-hpux.h,
8112         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
8113         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
8114         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
8115         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
8116         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
8117         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
8118         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
8119         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
8120         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
8121         config/pa/pa64-regs.h, config/pa/pa-modes.def,
8122         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
8123         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
8124         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
8125         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
8126         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
8127         config/mips/linux64.h, config/mips/elforion.h,
8128         config/mips/constraints.md, config/mips/generic.md,
8129         config/mips/predicates.md, config/mips/4300.md,
8130         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
8131         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
8132         config/mips/5k.md, config/mips/vr4120-div.S,
8133         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
8134         config/mips/mips-protos.h, config/mips/6000.md,
8135         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
8136         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
8137         config/mips/mips-modes.def, config/mips/vr.h,
8138         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
8139         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
8140         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
8141         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
8142         config/vax/openbsd1.h, config/vax/netbsd.h,
8143         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
8144         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
8145         config/h8300/rtems.h, config/h8300/predicates.md,
8146         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
8147         config/h8300/h8300.md, config/h8300/h8300.opt,
8148         config/h8300/coff.h, config/h8300/h8300-protos.h,
8149         config/v850/v850.md, config/v850/predicates.md,
8150         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
8151         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
8152         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
8153         config/mmix/mmix.h, config/mmix/predicates.md,
8154         config/mmix/mmix-protos.h, config/mmix/mmix.md,
8155         config/mmix/mmix.c, config/mmix/mmix.opt,
8156         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
8157         config/bfin/rtems.h, config/bfin/bfin-modes.def,
8158         config/bfin/predicates.md, config/bfin/bfin-protos.h,
8159         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
8160         Likewise.
8161
8162 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
8163
8164         * emit-rtl.c (reset_used_decls): Rename to...
8165         (set_used_decls): ...this.  Set the used flag rather than clearing it.
8166         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
8167         DECL_RTLs rather than resetting them.
8168
8169 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
8170
8171         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
8172
8173 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
8174
8175         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
8176         argument to find_reloads_address.
8177
8178 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
8179
8180         PR tree-optimization/32919
8181         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
8182         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
8183         (coalesce_ssa_name): Call it.
8184
8185 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
8186             David Ung  <davidu@mips.com>
8187
8188         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
8189         (__mips16_unorddf2, __mips16_floatunsidf): New.
8190         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
8191         above functions.
8192         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
8193
8194 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8195
8196         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
8197         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
8198         * tree.h (OMP_SECTIONS_CONTROL): New macro.
8199         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
8200         * omp-low.c (get_ws_args_for, determine_parallel_type,
8201         expand_omp_for_generic, expand_omp_for_static_nochunk,
8202         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
8203         Work with more precise CFG.
8204         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
8205         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
8206         OMP_CONTINUE.
8207         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
8208         * gimple-low.c (lower_stmt): Ditto.
8209         * tree-inline.c (estimate_num_insns_1): Ditto.
8210         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
8211         (OMP_SECTIONS_SWITCH): New.
8212         * tree-cfgcleanup.c (cleanup_omp_return): New.
8213         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
8214         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
8215         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
8216         (tree_redirect_edge_and_branch): Handle omp constructs.
8217
8218         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
8219         with three arguments.
8220
8221 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8222
8223         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
8224         in loop closed ssa.
8225
8226 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8227
8228         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
8229         the loop structures may need fixing.
8230         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
8231         New functions.
8232         (cleanup_tree_cfg_loop): Removed.
8233         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
8234         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
8235         instead of running cleanup_tree_cfg_loop.
8236         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
8237         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
8238         (tree_predictive_commoning): Declaration changed.
8239         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
8240
8241 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8242
8243         * doc/invoke.texi (l1-cache-size): Update documentation.
8244         (l2-cache-size): Document.
8245         * params.h (L2_CACHE_SIZE): New macro.
8246         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
8247         that L1_CACHE_SIZE is in kB now.
8248         (L2_CACHE_SIZE_BYTES): New macro.
8249         (tree_ssa_prefetch_arrays): Show size in kB.
8250         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
8251         and l2_cache_size fields.
8252         * config/i386/driver-i386.c (describe_cache): Detect cache size
8253         in kB.
8254         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
8255         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
8256         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
8257         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
8258         (override_options): Set l1-cache-size and l2-cache-size to default
8259         values if not specified otherwise.
8260         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
8261         (PARAM_L2_CACHE_SIZE): New.
8262
8263 2007-08-01  Nigel Stephens  <nigel@mips.com>
8264             David Ung  <davidu@mips.com>
8265             Thiemo Seufer  <ths@mips.com>
8266             Chris Dearman  <chris@mips.com>
8267             Richard Sandiford  <richard@codesourcery.com>
8268
8269         * config.gcc (mips*-sde-elf*): New stanza.
8270         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
8271         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
8272         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
8273         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
8274         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
8275         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
8276         to tmake_file.
8277         * config/mips/sde.h: New file.
8278         * config/mips/t-libgcc-mips16: Likewise.
8279         * config/mips/t-sde: Likewise.
8280         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
8281         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
8282         _MIPS_FPSET and _MIPS_SZINT.
8283         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
8284         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
8285         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
8286         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
8287         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
8288         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
8289         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
8290         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
8291         _MIPS_SZPTR and _MIPS_FPSET.
8292         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
8293         architecture is specified.
8294         (MIPS_32BIT_OPTION_SPEC): New macro.
8295
8296 2007-07-31  Dan Hipschman  <dsh@google.com>
8297
8298         * gcc.c (end_going_arg): New function.
8299         (do_spec_2): Use it.
8300         (do_spec_1): Use it.
8301
8302 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8303
8304         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
8305         only if ENABLE_CHECKING is defined.
8306
8307 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
8308
8309         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
8310         df_ru_add_problem, df_ru_get_bb_info): Removed.
8311         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
8312         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
8313         df_ru_free_bb_info, df_ru_alloc,
8314         df_ru_bb_local_compute_process_def,
8315         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
8316         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
8317         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
8318         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
8319         df_ru_add_problem): Removed.
8320
8321 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8322
8323         PR target/32847
8324         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
8325         (casesi32p, casesi64p): Likewise.
8326         (casesi): Adjust for above.
8327
8328 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
8329
8330         * mode-switching.c (create_pre_exit): Don't search past calls.
8331
8332 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
8333
8334         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
8335
8336 2007-07-31  Revital Eres  <eres@il.ibm.com>
8337
8338         * ddg.c (add_deps_for_def): Rename to...
8339         (add_cross_iteration_register_deps): This.  Change implementation
8340         to use only reaching def and def-use chains to construct the
8341         inter loop dependencies.
8342         (add_deps_for_use): Remove function.
8343         (build_inter_loop_deps): Call add_cross_iteration_register_deps
8344         function to build the inter loop dependencies.
8345         * modulo-sched.c (sms_schedule): Build only
8346         reaching def and def-use chains for the propose of the ddg
8347         construction.
8348
8349 2007-07-31  Julian Brown  <julian@codesourcery.com>
8350
8351         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
8352         New define_insns. Use correct RTL.
8353         (vec_set<mode>): Write as expander.
8354
8355 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
8356
8357         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
8358         to an unallocated space.
8359
8360 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
8361
8362         * tree-data-ref.c
8363         (split_constant_offset): Enable split_constant_offset to extract
8364         constants from other statements.
8365         * tree-vect-transform.c
8366         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
8367         to a temp var. Force base_offset to be simple.
8368
8369 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
8370
8371         * df-scan.c (df_scan_verify): Remove artificial limit on
8372         the number of blocks for verification.
8373         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
8374         df_simulate_defs): Avoid unnecessary insn checking for defs.
8375
8376 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
8377
8378         * config/m68k/lb1sf68.asm (FUNC): New macro.
8379         (__mulsi3): Use it.
8380         (__udivsi3): Likewise.
8381         (__divsi3): Likewise.
8382         (__umodsi3): Likewise.
8383         (__modsi3): Likewise.
8384         (__subdf3): Likewise.
8385         (__adddf3): Likewise.
8386         (__muldf3): Likewise.
8387         (__divdf3): Likewise.
8388         (__negdf2): Likewise.
8389         (__cmpdf2): Likewise.
8390         (__subsf3): Likewise.
8391         (__addsf3): Likewise.
8392         (__mulsf3): Likewise.
8393         (__divsf3): Likewise.
8394         (__negsf2): Likewise.
8395         (__cmpsf2): Likewise.
8396         (__eqdf2): Likewise.
8397         (__nedf2): Likewise.
8398         (__gtdf2): Likewise.
8399         (__gedf2): Likewise.
8400         (__ltdf2): Likewise.
8401         (__ledf2): Likewise.
8402         (__eqsf2): Likewise.
8403         (__nesf2): Likewise.
8404         (__gtsf2): Likewise.
8405         (__gesf2): Likewise.
8406         (__ltsf2): Likewise.
8407         (__lesf2): Likewise.
8408
8409 2007-07-30  Ollie Wild  <aaw@google.com>
8410
8411         * c-ppoutput.c (print_lines_directives_only): New function.
8412         (scan_translation_unit_directives_only): New function.
8413         (preprocess_file): Add call to scan_translation_unit_directives_only.
8414         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
8415         (sanitize_cpp_opts): Add default flag_dump_macros setting for
8416         -fdirectives-only.  Add errors for -fdirectives-only conflict with
8417         -Wunused-macros and -traditional.
8418         (finish_options): Add builtin macro initialization for
8419         -fdirectives-only + -fpreprocessed.
8420         * c.opt (fdirectives-only): New.
8421         * doc/cppopts.texi (fdirectives-only): New.
8422
8423 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8424
8425         * alias.c (record_set, memory_modified_1): Constify.
8426         * bt-load.c (note_btr_set): Likewise.
8427         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
8428         * combine.c (set_nonzero_bits_and_sign_copies,
8429         expand_field_assignment, record_dead_and_set_regs_1,
8430         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
8431         likely_spilled_retval_1): Likewise.
8432         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
8433         frv_io_handle_set): Likewise.
8434         * config/mips/mips.c (mips_sim_record_set,
8435         vr4130_true_reg_dependence_p_1): Likewise.
8436         * config/mt/mt.c (insn_dependent_p_1): Likewise.
8437         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
8438         * config/sh/sh.c (flow_dependent_p_1): Likewise.
8439         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
8440         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
8441         * ddg.c (mark_mem_store): Likewise.
8442         * df-problems.c (df_urec_mark_reg_change): Likewise.
8443         * function.c (update_epilogue_consts): Likewise.
8444         * gcse.c (record_set_info, record_last_set_info,
8445         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
8446         reg_clear_last_set): Likewise.
8447         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
8448         Likewise.
8449         * jump.c (reversed_comparison_code_parts): Likewise.
8450         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
8451         reg_is_set): Likewise.
8452         * loop-iv.c (mark_altered): Likewise.
8453         * mode-switching.c (reg_becomes_live): Likewise.
8454         * optabs.c (no_conflict_move_test): Likewise.
8455         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
8456         Likewise.
8457         * postreload.c (reload_combine_note_store, move2add_note_store):
8458         Likewise.
8459         * regmove.c (flags_set_1): Likewise.
8460         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
8461         Likewise.
8462         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
8463         Likewise. 
8464         * resource.c (update_live_status): Likewise.
8465         * rtl.h (set_of, note_stores): Likewise.
8466         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
8467         note_stores, parms_set): Likewise.
8468         * sched-rgn.c (sets_likely_spilled_1): Likewise.
8469         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
8470         Likewise. 
8471         * var-tracking.c (count_stores, add_stores): Likewise.
8472
8473 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8474
8475         * alias.c (mems_in_disjoint_alias_sets_p,
8476         fixed_scalar_and_varying_struct_p, aliases_everything_p,
8477         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
8478         write_dependence_p, mems_in_disjoint_alias_sets_p,
8479         read_dependence, true_dependence, canon_true_dependence,
8480         anti_dependence, output_dependence): Constify.
8481         * combine.c (extended_count): Likewise.
8482         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
8483         * cselib.c (get_value_hash, references_value_p,
8484         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
8485         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
8486         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
8487         * function.c (contains, prologue_epilogue_contains,
8488         sibcall_epilogue_contains): Likewise. 
8489         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
8490         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
8491         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
8492         reg_or_subregno): Likewise.
8493         * recog.c (asm_noperands): Likewise.
8494         * reload1.c (function_invariant_p): Likewise.
8495         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
8496         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
8497         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
8498         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
8499         true_regnum, reg_or_subregno, condjump_in_parallel_p,
8500         extended_count, prologue_epilogue_contains,
8501         sibcall_epilogue_contains, function_invariant_p, true_dependence,
8502         canon_true_dependence, read_dependence, anti_dependence,
8503         output_dependence): Likewise.
8504         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
8505
8506 2007-07-30  Julian Brown  <julian@codesourcery.com>
8507
8508         * config/arm/neon.md (V_ext): New mode attribute.
8509         (neon_vget_lane<mode>): Replace with define_expand.
8510         (neon_vget_lane<mode>_sext_internal)
8511         (neon_vget_lane<mode>_zext_internal): New define_insns for double
8512         and quad precision vectors.
8513         (neon_vget_lanedi): Add bounds check. Remove dead comment.
8514         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
8515         have typeless 32-bit result.
8516
8517 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8518
8519         PR tree-opt/32527
8520         * tree-affine.h (aff_tree): The type of rest is sizetype for types
8521         of pointers.
8522         * tree-affine.c (aff_combination_scale): If type is a pointer type,
8523         use sizetype for rest.
8524         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
8525         (aff_combination_convert): Don't convert rest for pointer types.
8526
8527 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
8528
8529         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
8530
8531         * tree-ssa-alias.c: Add alloc-pool.h.
8532         (init_alias_info): Free alias_bitmap_obstack.
8533         (delete_alias_info): Call delete_mem_ref_stats.
8534         (get_mem_sym_stats_for): Use alloc_pool.
8535         (init_mem_ref_stats): Do not delete mem_ref_stats here.
8536         (delete_mem_sym_stats): Removed.
8537         
8538 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
8539
8540         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
8541         functions cannot be represented as classical distance vectors.
8542
8543 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8544
8545         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
8546         * builtins.c (validate_arg, builtin_mathfn_code,
8547         validate_arglist): Likewise.
8548         * calls.c (call_expr_flags): Likewise.
8549         * combine.c (reg_nonzero_bits_for_combine,
8550         reg_num_sign_bit_copies_for_combine, get_last_value,
8551         reg_truncated_to_mode): Likewise.
8552         * emit-rtl.c (subreg_lowpart_p): Likewise.
8553         * expr.c (highest_pow2_factor_for_target,
8554         categorize_ctor_elements_1, categorize_ctor_elements,
8555         count_type_elements, contains_packed_reference,
8556         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
8557         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
8558         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
8559         native_encode_int, native_encode_real, native_encode_complex,
8560         native_encode_vector, native_encode_expr, native_interpret_int,
8561         native_interpret_real, native_interpret_complex,
8562         native_interpret_vector, native_interpret_expr): Likewise.
8563         * function.c (use_register_for_decl): Likewise.
8564         * gimplify.c (get_name): Likewise.
8565         * langhooks-def.h (lhd_return_null_const_tree): New.
8566         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
8567         * langhooks.c (lhd_return_null_const_tree): New.
8568         * langhooks.h (lang_get_callee_fndecl): Constify.
8569         * output.h (constructor_static_from_elts_p): Likewise.
8570         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
8571         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
8572         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
8573         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
8574         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
8575         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
8576         * rtlhooks-def.h (reg_nonzero_bits_general,
8577         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
8578         Likewise. 
8579         * rtlhooks.c (reg_num_sign_bit_copies_general,
8580         reg_nonzero_bits_general, reg_truncated_to_mode_general):
8581         Likewise. 
8582         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
8583         * stor-layout.c (mode_for_size_tree): Likewise.
8584         * tree-ssa-loop-im.c (memref_eq): Likewise.
8585         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
8586         * tree.c (contains_placeholder_p, type_list_equal,
8587         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
8588         Likewise. 
8589         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
8590         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
8591         contains_placeholder_p, contains_packed_reference,
8592         get_callee_fndecl, operand_equal_for_phi_arg_p,
8593         warn_if_unused_value, is_body_block, native_encode_expr,
8594         native_interpret_expr, fold_convertible_p, operand_equal_p,
8595         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
8596         validate_arglist, simple_cst_equal, type_list_equal,
8597         use_register_for_decl, call_expr_flags, get_name,
8598         highest_pow2_factor): Likewise.
8599         (const_call_expr_arg_iterator_d,
8600         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
8601         first_const_call_expr_arg, more_const_call_expr_args_p,
8602         FOR_EACH_CONST_CALL_EXPR_ARG): New.
8603         * varasm.c (constructor_static_from_elts_p): Constify.
8604
8605 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
8606
8607         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
8608         config/arm/neon-schedgen.ml, config/arm/neon.ml,
8609         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
8610         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
8611         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
8612         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
8613         spelling conventions.
8614         * doc/invoke.texi: Follow spelling conventions.
8615
8616 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
8617             Revital Eres  <eres@il.ibm.com>
8618
8619         * modulo-sched.c (sms_schedule): Avoid loops which includes
8620         auto-increment instructions.
8621
8622 2007-07-28  Richard Guenther  <rguenther@suse.de>
8623
8624         PR middle-end/32920
8625         * fold-const.c (fold_cond_expr_with_comparison): Convert
8626         operand zero of MIN/MAX_EXPR to correct type.
8627
8628 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8629
8630         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
8631         flags_from_decl_or_type): Constify.
8632         * gcc.c (do_spec_1): Likewise.
8633         * print-tree.c (dump_addr, print_node_brief): Likewise.
8634         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
8635         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
8636         tree_purge_all_dead_eh_edges): Likewise.
8637         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
8638         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
8639         Likewise. 
8640         * tree.c (expr_location, expr_has_location, expr_locus,
8641         expr_filename, expr_lineno, get_inner_array_type,
8642         fields_compatible_p): Likewise.
8643         * tree.h (get_inner_array_type, fields_compatible_p,
8644         expr_location, expr_has_location, expr_locus, expr_filename,
8645         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
8646         setjmp_call_p, alloca_call_p): Likewise.
8647
8648 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
8649
8650         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
8651         TV_FLOW_INSENSITIVE.
8652
8653         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
8654         TV_CALL_CLOBBER.
8655         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
8656         (compute_flow_insensitive_aliasing): Ditto for
8657         TV_FLOW_INSENSITIVE.    
8658
8659 2007-07-27  Jan Hubicka  <jh@suse.cz>
8660
8661         * config/i386/i386.c (register_move_cost): Remove accidentally
8662         comitted #if 0 block.
8663
8664         * attribs.c: Include hashtab.h
8665         (attribute_hash): New.
8666         (substring): New structure.
8667         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
8668         New function.
8669         (init_attributes): Initialize attribute hash.
8670         (decl_attributes): Use attribute hash.
8671         * Makefile.in (attribs.c): Depend on hashtab.h.
8672
8673 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
8674
8675         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
8676
8677 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
8678
8679         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
8680         __mips_dspr2 and __mips_dsp_rev macros.
8681         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
8682
8683 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
8684         
8685        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
8686
8687 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
8688
8689         PR middle-end/32749
8690         
8691         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
8692         and the updating of the live and do_not_gen sets.
8693         (df_note_bb_compute): Added updating of live and do_not_gen sets
8694         for regular defs so that the case of clobber inside conditional
8695         call is processed correctly.
8696         
8697 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
8698
8699         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
8700         operands with compatible type.
8701
8702 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
8703
8704         * expr.h (store_bit_field): Don't return a value.
8705         * expmed.c (check_predicate_volatile_ok): New function.
8706         (store_bit_field_1): New function, extracted from store_bit_field.
8707         Take a fallback_p argument and return true if the operation succeeded.
8708         Only use store_fixed_bit_field if fallback_p.  Don't recompute
8709         mode_for_extraction; use op_mode instead.  Try forcing memories
8710         into registers if the insv expander fails.
8711         (store_bit_field): Use store_bit_field_1 with fallback_p true.
8712         Don't return a value.
8713         (convert_extracted_bit_field): New function, extracted from
8714         store_bit_field.
8715         (extract_bit_field_1): Likewise.  Take a fallback_p argument
8716         and return NULL if the operation succeeded.  Only use
8717         extract_fixed_bit_field if fallback_p.  Only calculate one
8718         extraction mode.  Combine code for extv and extzv.  Try forcing
8719         memories into registers if the ext(z)v expander fails.
8720         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
8721
8722 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
8723
8724         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
8725         into bitfields.
8726         (df_ref): Likewise.  Put regno with other integer fields.
8727
8728 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
8729
8730         * df.h (df_mw_hardreg): Remove "loc" field.
8731         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
8732         local variable.
8733         * df-problems.c (df_whole_mw_reg_unused_p): New function,
8734         split out from df_set_unused_notes_for_mw.  Return false for
8735         partial references.  Assert that mw_reg is a REG when returning true.
8736         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
8737         (df_whole_mw_reg_dead_p): New function, split out from
8738         df_set_dead_notes_for_mw.  Return false for partial references.
8739         Assert that mw_reg is a REG when returning true.
8740         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
8741         Remove redundant bitmap check.
8742
8743 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
8744
8745         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
8746         ($(T)crtend.o): Likwise.
8747         ($(T)crtbeginS.o): Likwise.
8748         ($(T)crtendS.o): Likwise.
8749         ($(T)crtfastmath.o): Likwise.
8750
8751 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
8752
8753         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
8754         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
8755         * basic-block.h (struct control_flow_graph): Added x_dom_computed
8756         and x_n_bbs_in_dom_tree fields.
8757
8758 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
8759
8760         PR tree-optimization/32087
8761         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
8762         Do not call scale_bbs_frequencies_int with prob of zero.
8763
8764 2007-07-26  Julian Brown  <julian@codesourcery.com>
8765
8766         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
8767         (neon_element_bits): Add prototypes.
8768         * config/arm/arm.c (bounds_check, neon_lane_bounds)
8769         (neon_const_bounds, neon_element_bits): New functions.
8770         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
8771         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
8772         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
8773         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
8774         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
8775         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
8776         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
8777         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
8778         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
8779         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
8780         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
8781         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
8782         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
8783
8784 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
8785
8786         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
8787         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
8788
8789 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
8790             Julian Brown  <julian@codesourcery.com>
8791
8792         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
8793         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
8794         * config/arm/cortex-a8.md: New.
8795         * config/arm/cortex-a8-neon.md: New.
8796         * config/arm/neon-schedgen.ml: New.
8797         * config/arm/neon.md (vqh_mnem): New.
8798         (neon_type): New.
8799         (Is_float_mode): New.
8800         (Scalar_mul_8_16): New.
8801         (Is_d_reg): New.
8802         (V_mode_nunits): New.
8803         (All instruction patterns): Annotate with neon_type attribute
8804         values.
8805         * config/arm/arm.md: Include cortex-a8.md.
8806         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
8807         values.
8808         Annotate instruction patterns accordingly.
8809         (generic_sched): Do not use generic scheduling for Cortex-A8.
8810         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
8811
8812 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
8813
8814         * fold-const.c (fold_read_from_constant_string): Use
8815         build_int_cst_type.
8816         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
8817
8818 2007-07-26  Nick Clifton  <nickc@redhat.com>
8819
8820         * tree-ssa-operands.h: Change copyright header to refer to version
8821         3 of the GNU General Public License and to point readers at the
8822         COPYING3 file and the FSF's license web page.
8823         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
8824         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
8825         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
8826         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
8827         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
8828         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
8829         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
8830         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
8831         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
8832         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
8833         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
8834         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
8835         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
8836         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
8837         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
8838         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
8839         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
8840         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
8841         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
8842         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
8843         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
8844         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
8845         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
8846         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
8847         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
8848         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
8849         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
8850         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
8851         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
8852         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
8853         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
8854         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
8855         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
8856         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
8857         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
8858         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
8859         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
8860         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
8861         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
8862         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
8863         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
8864         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
8865         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
8866         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
8867         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
8868         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
8869         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
8870         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
8871         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
8872         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
8873         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
8874         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
8875         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
8876         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
8877         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
8878         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
8879         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
8880         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
8881         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
8882         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
8883         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
8884         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
8885         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
8886         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
8887         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
8888         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
8889         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
8890         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
8891         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
8892         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
8893         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
8894         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
8895         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
8896         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
8897         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
8898         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
8899         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
8900         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
8901         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
8902         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
8903         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
8904         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
8905         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
8906         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
8907         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
8908         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
8909         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
8910         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
8911         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
8912         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
8913         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
8914         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
8915         vecprim.h, basic-block.h, tree-ssa-structalias.c,
8916         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
8917         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
8918         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
8919         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
8920         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
8921         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
8922         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
8923         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
8924         convert.c, convert.h, langhooks-def.h, reload1.c,
8925         tree-ssa-operands.c: Likewise.
8926
8927 2007-07-26  Jan Hubicka  <jh@suse.cz>
8928
8929         * tree-ssa-live.c: Include debug.h and flags.h.
8930         (mark_scope_block_unused): New function.
8931         (remove_unused_scope_block_p): New function.
8932         (remove_unused_locals): Remove unused blocks too.
8933
8934 2007-07-25  Ian Lance Taylor  <iant@google.com>
8935
8936         * combine.c (combine_max_regno): Remove.  Remove all uses.
8937         (struct reg_stat_struct): Rename from struct reg_stat.
8938         (reg_stat_type): Define, and declare VECs.
8939         (reg_stat): Change from pointer to VEC.  Change all uses.
8940         (combine_split_insns): New static function.
8941         (try_combine, find_split_point): Call it instead of split_insns.
8942
8943 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
8944
8945         * cfghooks.c (split_block): Fix the information about loop latch.
8946
8947 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
8948
8949         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
8950
8951 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
8952
8953         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
8954         Scan the new edge for loop exit info.
8955
8956 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
8957
8958         * config/darwin.c: Include debug.h.
8959
8960 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
8961
8962         PR target/32218
8963         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
8964
8965 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
8966
8967         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
8968         (HARD_REGNO_MODE_OK): Ditto.
8969         (MODES_TIEABLE_P): Ditto.
8970         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
8971         (CLASS_MAX_NREGS): Ditto.
8972         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
8973         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
8974         (divdf3_internal_thr): Removed.
8975         * config/ia64/div.md: New file.
8976         * config/ia64/constraints.md: Add H constraint.
8977
8978 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8979
8980         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
8981         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
8982         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
8983         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
8984         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
8985         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
8986         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
8987         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
8988         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
8989         dump_sbitmap_file, debug_sbitmap, popcount_table,
8990         sbitmap_popcount): Constify.
8991         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
8992         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
8993         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
8994         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
8995         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
8996         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
8997         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
8998         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
8999         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
9000         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
9001         sbitmap_popcount, sbitmap_verify_popcount): Constify.
9002
9003 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9004
9005         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
9006         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
9007         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
9008         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
9009         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
9010         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
9011         bitmap_intersect_p, bitmap_intersect_compl_p,
9012         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
9013         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
9014         Constify.
9015         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
9016         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
9017         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
9018         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
9019         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
9020         debug_bitmap, debug_bitmap_file, bitmap_print,
9021         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
9022         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
9023
9024 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
9025
9026         * config/darwin.c (darwin_override_options): Additional fix for
9027         debug info formats that don't support var tracking.
9028
9029 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9030
9031         * cselib.c (entry_and_rtx_equal_p): Constify.
9032         * gengtype.c (output_mangled_typename, write_types, write_local):
9033         Likewise.
9034         * gengtype.h (const_type_p): New.
9035         * see.c (eq_descriptor_extension, hash_descriptor_extension):
9036         Constify.
9037         * tlink.c (scan_linker_output): De-constify.
9038         * tree-ssa-loop-im.c (memref_eq): Constify.
9039         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
9040         (shared_bitmap_hash, shared_bitmap_eq): Constify.
9041
9042 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9043
9044         * c-common.c (fname_as_string, c_type_hash): Constify.
9045         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9046         * cgraph.c (edge_hash, edge_eq): Likewise.
9047         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
9048         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
9049         reg_attrs_htab_eq): Likewise.
9050         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
9051         Likewise.
9052         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
9053         const_decl_t, const_state_t, const_automata_list_el_t): New.
9054         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
9055         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
9056         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
9057         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
9058         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
9059         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
9060         compare_max_occ_cycle_nums, out_state_arcs_num,
9061         compare_transition_els_num, units_cmp, state_reservs_cmp):
9062         Constify.
9063         * genmodes.c (cmp_modes): Likewise.
9064         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
9065         * gimplify.c (compare_case_labels): Likewise.
9066         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
9067         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
9068         * matrix-reorg.c (mtt_info_hash): Likewise.
9069         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
9070         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
9071         (htab_hash_bucket, htab_hash_elem): Constify.
9072         * tree-browser.c (TB_parent_eq): Likewise.
9073         * tree-scalar-evolution.c (hash_scev_info): Likewise.
9074         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
9075         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
9076         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
9077         Constify.
9078         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
9079         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
9080         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
9081         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
9082         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
9083         New.
9084         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
9085         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
9086         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
9087         * tree-ssa-threadupdate.c (redirection_data_hash,
9088         redirection_data_eq): Likewise. 
9089         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
9090         * tree-ssa.c (var_ann_eq): Likewise.
9091         * tree-vrp.c (compare_case_labels): Likewise.
9092         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
9093         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
9094         tree_not_check_failed, tree_class_check_failed,
9095         tree_range_check_failed, tree_not_class_check_failed,
9096         omp_clause_check_failed, omp_clause_range_check_failed,
9097         tree_contains_struct_check_failed, tree_operand_check_failed):
9098         Likewise. 
9099         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
9100         tree_not_check_failed, tree_class_check_failed,
9101         tree_range_check_failed, tree_not_class_check_failed,
9102         tree_operand_check_failed, omp_clause_operand_check_failed,
9103         tree_operand_length): Likewise. 
9104         * var-tracking.c (const_variable): New.
9105         (variable_htab_hash, variable_htab_eq): Constify.
9106         * varasm.c (const_desc_hash): Likewise.
9107
9108 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9109
9110         * expr.c (handled_component_p): Constify.
9111         * fold-const.c (fit_double_type): Likewise.
9112         * real.h (real_value_from_int_cst): Likewise.
9113         * tree-flow-inline.h (gimple_in_ssa_p,
9114         gimple_aliases_computed_p, gimple_addressable_vars,
9115         gimple_call_clobbered_vars, gimple_referenced_vars,
9116         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
9117         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
9118         may_aliases, end_readonly_imm_use_p, has_zero_uses,
9119         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
9120         is_label_stmt, is_global_var, phi_ssa_name_p,
9121         factoring_name_p, is_call_clobbered, tree_common_ann,
9122         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
9123         unmodifiable_var_p, array_ref_contains_indirect_ref,
9124         ref_contains_array_ref, lookup_subvars_for_var,
9125         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
9126         gimple_mem_ref_stats): Likewise.
9127         * tree-flow.h (tree_common_ann, var_ann, function_ann,
9128         may_aliases, is_exec_stmt, is_label_stmt,
9129         ref_contains_array_ref, array_ref_contains_indirect_ref,
9130         var_can_have_subvars, overlap_subvar, is_call_clobbered,
9131         unmodifiable_var_p): Likewise.
9132         * tree-gimple.c (is_gimple_min_invariant): Likewise.
9133         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
9134         * tree.c (type_hash_list, attribute_hash_list, tree_size,
9135         cst_and_fits_in_hwi, real_value_from_int_cst,
9136         build_real_from_int_cst, integer_zerop, integer_onep,
9137         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
9138         tree_floor_log2, real_zerop, real_onep, real_twop,
9139         real_minus_onep, really_constant_p, purpose_member, chain_member,
9140         list_length, fields_length, int_size_in_bytes, bit_position,
9141         int_bit_position, byte_position, int_byte_position, expr_align,
9142         array_type_nelts, tree_node_structure,
9143         type_contains_placeholder_1, iterative_hash_pointer,
9144         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
9145         tree_map_base_eq, type_hash_list, type_hash_eq,
9146         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
9147         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
9148         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
9149         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
9150         int_fits_type_p, get_containing_scope, decl_function_context,
9151         decl_type_context, omp_clause_operand_check_failed,
9152         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
9153         * tree.h (omp_clause_operand_check_failed, tree_size,
9154         build_real_from_int_cst, array_type_nelts, purpose_member,
9155         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
9156         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
9157         is_attribute_p, check_qualified_type, expr_align,
9158         int_size_in_bytes, bit_position, int_bit_position, byte_position,
9159         int_byte_position, list_length, fields_length, initializer_zerop,
9160         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
9161         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
9162         tree_node_structure, handled_component_p, get_containing_scope,
9163         decl_function_context, decl_type_context, real_zerop,
9164         type_num_arguments, fit_double_type, really_constant_p,
9165         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
9166         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
9167         real_twop, real_minus_onep, int_cst_value): Likewise.
9168
9169 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9170
9171         * cfglayout.c (insn_scope, insn_line): Constify.
9172         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
9173         const_double_htab_hash, const_double_htab_eq,
9174         mem_attrs_htab_hash): Likewise.
9175         * loop-iv.c (biv_eq): Likewise.
9176         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
9177         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
9178         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
9179         Likewise. 
9180         * rtl-error.c (location_for_asm, diagnostic_for_asm,
9181         error_for_asm, warning_for_asm, _fatal_insn,
9182         _fatal_insn_not_found): Likewise. 
9183         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
9184         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
9185         rtl_check_failed_type2, rtl_check_failed_code1,
9186         rtl_check_failed_code2, rtl_check_failed_code_mode,
9187         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
9188         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
9189         rtl_check_failed_type2, rtl_check_failed_code1,
9190         rtl_check_failed_code2, rtl_check_failed_code_mode,
9191         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
9192         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
9193         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
9194         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
9195         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
9196         rtx_unstable_p, get_integer_term, get_related_value,
9197         offset_within_block_p, reg_mentioned_p, count_occurrences,
9198         reg_referenced_p, reg_used_between_p, no_labels_between_p,
9199         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
9200         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
9201         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
9202         find_constant_src, find_reg_fusage, find_regno_fusage,
9203         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
9204         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
9205         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
9206         computed_jump_p, auto_inc_p, in_expr_list_p,
9207         remove_node_from_expr_list, loc_mentioned_in_p,
9208         label_is_jump_target_p, reversed_comparison_code_parts,
9209         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
9210         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
9211         print_inline_rtx): Likewise.
9212         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
9213         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
9214         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
9215         get_integer_term, get_related_value, offset_within_block_p,
9216         count_occurrences, reg_mentioned_p, no_labels_between_p,
9217         reg_used_between_p, reg_referenced_p, single_set_2,
9218         multiple_sets, set_noop_p, refers_to_regno_p,
9219         reg_overlap_mentioned_p, dead_or_set_p,
9220         covers_regno_no_parallel_p, covers_regno_p,
9221         dead_or_set_regno_p, find_reg_note, find_regno_note,
9222         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
9223         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
9224         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
9225         side_effects_p, may_trap_p_1, may_trap_p,
9226         may_trap_after_code_motion_p, may_trap_or_fault_p,
9227         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
9228         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
9229         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
9230         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
9231         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
9232         Likewise. 
9233         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
9234         warning_for_asm): Likewise.
9235         * tree.h (print_rtl): Likewise.
9236         * varasm.c (get_pool_mode): Likewise.
9237
9238 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9239
9240         * c-lex.c (c_lex_with_flags, lex_string): Constify.
9241         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
9242         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9243         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
9244         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
9245         * ddg.c (compare_sccs): Likewise.
9246         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
9247         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
9248         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
9249         decimal_do_fix_trunc, decimal_real_to_integer,
9250         decimal_real_to_integer2, decimal_real_maxval): Likewise.
9251         * dse.c (const_group_info_t): New.
9252         (invariant_group_base_eq, invariant_group_base_hash): Constify.
9253         * dwarf2out.c (const_dw_die_ref): New.
9254         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
9255         * tree-browser.c (TB_parent_eq): Likewise.
9256         * unwind-dw2-fde.c (__register_frame_info_bases,
9257         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
9258         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
9259         Likewise.
9260         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
9261         * unwind-dw2.c (uw_frame_state_for): Likewise.
9262         * value-prof.c (histogram_hash, histogram_eq): Likewise.
9263         * value-prof.h (const_histogram_value): New.
9264
9265 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
9266
9267         * config/mips/mips.c (machine_function): Add
9268         initialized_mips16_gp_pseudo_p.
9269         (mips16_gp_pseudo_reg): Do not emit the initialization of
9270         mips16_gp_pseudo_rtx when being called from the gimple cost-
9271         calculation routines; emit it on the first use outside those
9272         routines.
9273
9274 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9275
9276         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
9277         New.
9278         
9279         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
9280         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
9281         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
9282         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
9283         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
9284         Preserve const-ness of parameters through use of __typeof(),
9285         also constify and tidy.
9286         
9287         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
9288         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
9289         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
9290         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
9291         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
9292         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
9293         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
9294         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
9295         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
9296
9297 2007-07-25  Julian Brown  <julian@codesourcery.com>
9298             Mark Shinwell  <shinwell@codesourcery.com>
9299
9300         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
9301         (alpha_mangle_type): This.
9302         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9303         (TARGET_MANGLE_TYPE): Define this instead.
9304         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
9305         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
9306         (arm_init_neon_builtins): Fix comment.
9307         (arm_mangle_map_entry): New.
9308         (arm_mangle_map): New.
9309         (arm_mangle_type): New.
9310         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
9311         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
9312         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
9313         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9314         (TARGET_MANGLE_TYPE): Define this instead.
9315         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
9316         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
9317         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
9318         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9319         (TARGET_MANGLE_TYPE): Define this instead.
9320         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
9321         to...
9322         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
9323         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9324         (TARGET_MANGLE_TYPE): Define this instead.
9325         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
9326         (s390_mangle_type): This.
9327         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9328         (TARGET_MANGLE_TYPE): Define this instead.
9329         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
9330         (sparc_mangle_type): This.
9331         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9332         (TARGET_MANGLE_TYPE): Define this instead.
9333         * cp/mangle.c (write_type): Call mangle_type target hook on all
9334         types before mangling.  Use original type, not main variant, as
9335         argument.
9336         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
9337         (TARGET_MANGLE_TYPE): This.
9338         * target.h (gcc_target): Rename mangle_fundamental_type to
9339         mangle_type.
9340         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
9341         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
9342
9343 2007-07-25  Julian Brown  <julian@codesourcery.com>
9344             Paul Brook  <paul@codesourcery.com>
9345             Joseph Myers  <joseph@codesourcery.com>
9346             Mark Shinwell  <shinwell@codesourcery.com>
9347
9348         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
9349         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
9350         (with_fpu): Allow --with-fpu=neon.
9351         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
9352         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
9353         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
9354         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
9355         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
9356         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
9357         (neon_emit_pair_result_insn, neon_disambiguate_copy)
9358         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
9359         (output_move_neon): Add prototypes.
9360         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
9361         (all_fpus): Add FPUTYPE_NEON.
9362         (fp_model_for_fpu): Add NEON field.
9363         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
9364         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
9365         in registers.
9366         (arm_legitimate_address_p): Don't support fancy addressing for NEON
9367         structure moves.
9368         (thumb2_legitimate_address_p): Likewise.
9369         (neon_valid_immediate): Recognize and prepare constants suitable for
9370         NEON instructions.
9371         (neon_immediate_valid_for_move): New function. Recognize and prepare
9372         immediates for NEON move instructions.
9373         (neon_immediate_valid_for_logic): New function. Recognize and
9374         prepare immediates for NEON logic instructions.
9375         (neon_output_logic_immediate): New function. Create asm string
9376         suitable for outputting immediate logic instructions.
9377         (neon_pairwise_reduce): New function. Implement reduction using
9378         pairwise operations.
9379         (neon_expand_vector_init): New function. Expand a (possibly
9380         non-constant) vector initialization.
9381         (neon_vector_mem_operand): New function. Memory operands supported
9382         for quad-word loads/stores to/from ARM or NEON registers. Don't
9383         allow base+offset addressing for core regs.
9384         (neon_struct_mem_operand): New function. Valid mems for NEON
9385         structure moves.
9386         (coproc_secondary_reload_class): Enable NEON registers to be loaded
9387         from neon_vector_mem_operand addresses without a secondary register.
9388         (add_minipool_forward_ref): Handle >8-byte minipool entries.
9389         (add_minipool_backward_ref): Likewise.
9390         (dump_minipool): Likewise.
9391         (push_minipool_fix): Likewise.
9392         (output_move_quad): New function. Output quad-word moves, loads and
9393         stores using ARM registers.
9394         (output_move_vfp): Add support for vectors in VFP (NEON) D
9395         registers.
9396         (output_move_neon): Output a NEON load/store to/from a quadword
9397         register.
9398         (arm_print_operand): Implement new codes:
9399         - 'c' for unadorned integers (without a # sign).
9400         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
9401         mode.
9402         - 'e', 'f' for the low and high D parts of a NEON Q register.
9403         - 'q' outputs a NEON Q register.
9404         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
9405         - 'T' prints NEON opcode features from a coded bitmask.
9406         - 'F' is similar to T, but signed/unsigned codes both print as
9407         'i'.
9408         - 't' is similar to T, but 'u' is printed instead of 'p'.
9409         - 'O' prints 'r' if NEON instruction should perform rounding (as
9410         specified by bitmask), else prints nothing.
9411         - '#' is a punctuation character to stop operand numbers from
9412         running together with following digits in the assembler
9413         strings for instructions (when using mode attributes).
9414         (arm_assemble_integer): Handle extra NEON vector modes. Permute
9415         constant vectors in big-endian mode, where necessary.
9416         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
9417         Handle EI, OI, CI, XI modes.
9418         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
9419         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
9420         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
9421         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
9422         (neon_builtin_type_bits): Add enumeration, one bit for each vector
9423         type.
9424         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
9425         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
9426         to turn v8qi, etc. into bits defined above.
9427         (neon_itype): New enumeration. Classifications of NEON builtins.
9428         (neon_builtin_datum): Define struct. Contains information about
9429         a single builtin (with multiple modes).
9430         (CF): Define helper macro for...
9431         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
9432         modes.
9433         (neon_builtin_data): New array. Define information about builtins
9434         for use during initialization/expansion.
9435         (arm_init_neon_builtins): New function.
9436         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
9437         true.
9438         (neon_builtin_compare): New function.
9439         (locate_neon_builtin_icode): New function. Find an insn code for a
9440         builtin given a function code for that builtin. Also return type of
9441         builtin (NEON_BINOP, NEON_UNOP etc.).
9442         (builtin_arg): New enumeration. Types of arguments for builtins.
9443         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
9444         Takes a variable argument list of builtin_arg types, terminated by
9445         NEON_ARG_STOP.
9446         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
9447         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
9448         (neon_emit_pair_result_insn): New function. Support returning pairs
9449         of vectors via a pointer.
9450         (neon_disambiguate_copy): New function. Set up operands for a
9451         multi-word copy such that registers do not get clobbered.
9452         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
9453         ARM_BUILTIN_NEON_BASE.
9454         (arm_file_start): Set float-abi attribute for NEON.
9455         (arm_vector_mode_supported_p): Enable NEON vector modes.
9456         (arm_mangle_map_entry): New.
9457         (arm_mangle_map): New.
9458         (arm_mangle_vector_type): New.
9459         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
9460         when appropriate.
9461         (TARGET_NEON): New macro. Target supports NEON.
9462         (fputype): Add FPUTYPE_NEON.
9463         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
9464         for vectorization based on command-line arg.
9465         (NEON_REGNO_OK_FOR_NREGS): Define.
9466         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
9467         (VALID_NEON_STRUCT_MODE): Define.
9468         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
9469         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
9470         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
9471         (consttable_16): Add pattern for outputting 16-byte minipool
9472         entries.
9473         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
9474         vec-common.md).
9475         (vec-common.md, neon.md): Include md files.
9476         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
9477         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
9478         (memory_constraint "Ut", "Un", "Us"): Define.
9479         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
9480         (MMX_char): New mode attribute.
9481         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
9482         (*add<mode>3_iwmmxt): New insn pattern.
9483         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
9484         (*sub<mode>3_iwmmxt): New insn pattern.
9485         (mulv4hi3): Rename to...
9486         (*mulv4hi3_iwmmxt): This.
9487         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
9488         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
9489         (uminv4hi3, uminv2si3): Remove. Replace with...
9490         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
9491         (*umin<mode>3_iwmmxt): These.
9492         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
9493         (ashr<mode>3_iwmmxt): This new pattern.
9494         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
9495         (lshr<mode>3_iwmmxt): This new pattern.
9496         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
9497         (ashl<mode>3_iwmmxt): This new pattern.
9498         * config/arm/neon-docgen.ml: New file. Generate documentation for
9499         intrinsics.
9500         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
9501         * config/arm/arm_neon.h: New (autogenerated).
9502         * config/arm/neon-testgen.ml: New file. Generate NEON tests
9503         automatically.
9504         * config/arm/neon.md: New file. Define NEON instructions.
9505         * config/arm/neon.ml: New file. Abstract description of NEON
9506         instructions, used to generate arm_neon.h header, documentation and
9507         tests.
9508         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
9509         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
9510         support.
9511         * doc/extend.texi (ARM Built-in Functions): Rename and remove
9512         extraneous comma.
9513         (ARM NEON Intrinsics): New subsection.
9514         * doc/arm-neon-intrinsics.texi: New (autogenerated).
9515
9516 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
9517
9518         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
9519         prototype.
9520
9521 2007-07-24  Jan Hubicka  <jh@suse.cz>
9522
9523         * regclass.c (move_table): New type.
9524         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
9525         (init_move_cost): Break out from ...
9526         (init_reg_sets_1): ... here; simplify computation of
9527         have_regs-of_mode and contains_reg_of_mode.
9528         (record_reg_classes): Unswitch internal loops.
9529         (copy_cost): Trigger lazy initialization of move cost
9530         (record_address_regs): Likewise.
9531
9532 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
9533
9534         * config/darwin.c (darwin_override_options): Don't force on
9535         flag_var_tracking_uninit when no debug info is requested.
9536
9537 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9538
9539         * cfgloop.c (init_loops_structure): New function.
9540         (flow_loops_find): Create root of the loop tree unconditionally.
9541
9542 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
9543
9544         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
9545
9546 2007-07-24  Jan Hubicka  <jh@suse.cz>
9547
9548         * caller-save.c: Include ggc.h, gt-caller-save.h
9549         (reg_save_code, reg_restore_code): Rename to ...
9550         (cached_reg_save_code, cached_reg_restore_code): ... those.
9551         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
9552         (reg_save_code, reg_restore_code): New functions.
9553         (init_caller_save): Do not intialize
9554         reg_save_code/reg_restore_code tables.
9555         * Makefile.in: (gt-caller-save.h): New.
9556
9557 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
9558
9559         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
9560         with the mode of the original operand instead of
9561         integer_one_node.
9562
9563 2007-07-23  Jan Hubicka  <jH@suse.cz>
9564
9565         * i386.c (ix86_secondary_memory_needed): Break out to...
9566         (inline_secondary_memory_needed): ... here.
9567         (ix86_memory_move_cost): Break out to ...
9568         (inline_memory_move_cost): ... here; add support for IN value of 2 for
9569         maximum of input and output; fix handling of Q_REGS on 64bit.
9570         (ix86_secondary_memory_needed): Microoptimize.
9571
9572 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
9573
9574         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
9575         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
9576         stmts_from_loop, known_dependences_p, build_rdg): New.
9577         * tree-data-ref.h: Depends on graphds.h.
9578         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
9579         (build_rdg): Declared.
9580         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
9581
9582 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
9583
9584         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
9585         ccp_min_invariant.
9586
9587 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
9588             Jakub Jelinek  <jakub@redhat.com>
9589
9590         PR middle-end/PR28690
9591         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
9592         EQ compares.
9593         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
9594         and MEM_POINTER operands over REG and MEM operands.
9595         (swap_commutative_operands_p): Change return value to bool.
9596         * rtl.h: Update the corresponding prototype.
9597         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
9598         instead of gen_rtx_PLUS.
9599         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
9600         value to bool.  Change function arguments to rtx's and update code
9601         to match.
9602         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
9603         calls to match the new declaration.
9604         * simplify-rtx.c (simplify_associative_operation): Don't
9605         reorder simplify_binary_operation arguments.
9606
9607 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
9608
9609         * config/mips/mips.c (override_options): Use mips_costs to derive
9610         the default branch cost.
9611         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
9612         than mips_costs.
9613         * config/mips/mips.opt (mbranch-cost=): New option.
9614         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
9615
9616 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
9617
9618         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
9619         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
9620         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
9621         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
9622
9623 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
9624
9625         * config/mips/constraints.md (ks): New constraint.
9626         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
9627         (*add<mode>3_mips16): ...here.
9628
9629 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
9630
9631         * optabs.h (enum optab_index): Add new OTI_signbit.
9632         (signbit_optab): Define corresponding macro.
9633         (enum insn_code signbit_optab[]): Remove array.
9634         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
9635         (expand_copysign_absneg): If back end provides signbit insn, use it
9636         instead of bit operations on floating point argument.
9637         * builtins.c (enum insn_code signbit_optab[]): Remove array.
9638         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
9639         for availability of signbit insn.
9640
9641         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
9642         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
9643         SSE mode is not active.
9644         (isinf<mode>2): Disable for mfpmath=sse,387.
9645
9646 2007-07-22  Ben Elliston  <bje@au.ibm.com>
9647
9648         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
9649         `class' parameter.
9650         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
9651
9652 2007-07-20  Richard Guenther  <rguenther@suse.de>
9653
9654         * tree-cfg.c (verify_expr): COND_EXPRs can have any
9655         integral typed condition.
9656         * tree-ssa.c (useless_type_conversion_p): Do not preserve
9657         booleanness.  Only preserve conversions from a non-base
9658         type to a base type, not in general between types with
9659         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
9660         * tree.def (COND_EXPR): Document that the condition
9661         can be of any integral type.
9662
9663 2007-07-20  Nigel Stephens  <nigel@mips.com>
9664             Richard Sandiford  <richard@codesourcery.com>
9665
9666         * config/mips/mips.h (mips_dwarf_regno): Declare.
9667         (DBX_REGISTER_NUMBER): Remove redundant brackets.
9668         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
9669         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
9670         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
9671         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
9672         (REG_CLASS_NAMES): Update accordingly.
9673         * config/mips/mips.c (mips_dwarf_regno): New array.
9674         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
9675         (mips_subword): Remove special handling for accumulator registers.
9676         (override_options): Initiailize mips_dwarf_regno.  Remove use
9677         of ACC_HI_REG_P.
9678         (mips_swap_registers): New function.
9679         (mips_conditional_register_usage): Swap accumulator registers
9680         around if TARGET_LITTLE_ENDIAN.
9681         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
9682         * config/mips/constraints.md (h, l): Use the endianness to choose
9683         between MD0_REG and MD1_REG.
9684         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
9685         alternative-dependent template.
9686
9687 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
9688
9689         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
9690         no_new_pseudos.
9691
9692 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
9693
9694         * function.c (thread_prologue_and_epilogue_insns): Fix exit
9695         predecessor fallthru flags.
9696
9697 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
9698
9699         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
9700         of compare to the same type.
9701         * cfgloopmanip.c (add_loop): Update information about loop exits.
9702         (loop_version): Remove the innermost loop requirement.
9703         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
9704         to sizetype for pointers.
9705
9706 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
9707
9708         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
9709         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
9710         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
9711
9712         * config/dfp-bit.c: Empty for TFmode conversions.
9713
9714 2007-07-18  Caroline Tice  <ctice@apple.com>
9715         
9716         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
9717         and handle them correctly; check that src is not NULL before
9718         trying to use it.
9719         (find_src_set_src): Likewise.
9720         
9721 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
9722         
9723         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
9724         (struct alignment_context, init_alignment_context): New.
9725         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
9726         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
9727         (XCHAL_HAVE_S32C1I): Likewise.
9728         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
9729         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
9730         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
9731         (ATOMIC, HQI): New macros.
9732         (memory_barrier, *memory_barrier): New.
9733         (sync_lock_releasesi): New.
9734         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
9735         (sync_lock_test_and_set<mode>): New.
9736         (sync_<atomic><mode>): New.
9737         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
9738         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
9739         (xtensa_expand_atomic): New.
9740         
9741 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9742
9743         PR target/30652
9744
9745         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
9746         transformation for builtin ISNORMAL.
9747         (expand_builtin): Handle BUILT_IN_ISNORMAL.
9748         * builtins.def (BUILT_IN_ISNORMAL): New.
9749         * doc/extend.texi: Document isnormal.
9750
9751 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9752
9753         PR target/30652
9754
9755         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
9756         optabs infrastructure.  Provide generic implementation for
9757         FINITE/ISFINITE.
9758         (expand_builtin): Handle FINITE/ISFINITE.
9759         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
9760         (fold_builtin_1): Likewise.
9761
9762         * builtins.def (BUILT_IN_ISFINITE): New.
9763
9764         * doc/extend.texi: Document isfinite.
9765
9766 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9767
9768         PR target/30652
9769         PR middle-end/20558
9770
9771         * builtins.c (expand_builtin_interclass_mathfn): Provide a
9772         generic fallback for isinf.
9773         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
9774         calculation code ...
9775         * real.c (get_max_float): ... to here.
9776         * real.h (get_max_float): New.
9777
9778 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9779
9780         PR middle-end/32668
9781
9782         * builtin-attrs.def (ATTR_TYPEGENERIC,
9783         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
9784
9785         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
9786         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
9787         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
9788         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
9789
9790         * c-common.c (handle_type_generic_attribute): New.
9791         (c_common_attribute_table): Add "type generic".
9792
9793         * c-typeck.c (convert_arguments): Handle "type generic" functions.
9794
9795 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
9796
9797         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
9798         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
9799         properly.
9800
9801 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9802
9803         PR target/32808
9804         * config/cris/cris.c (cris_print_index): Don't use XEXP before
9805         checking that the operand is an expression.
9806
9807 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
9808             Danny Smith  <dannysmith@users.sourceforge.net>
9809
9810         PR/other 30335
9811         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
9812         file mapping object in local namespace if Windows version later
9813         than NT4
9814
9815 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
9816
9817         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
9818         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
9819         arm_cannot_force_const_mem.
9820         (arm_cannot_force_const_mem): New function.
9821         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
9822         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
9823         of arm_tls_referenced_p.
9824         * config/arm/arm.md (movsi): Split out-of-section constants when
9825         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
9826         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
9827
9828 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
9829
9830         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
9831
9832 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
9833
9834         * config/mips/mips.md (*extendqihi2): Convert the destination
9835         to SImode.
9836
9837 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9838
9839         * config/pa/fptr.c: Update license header.
9840         * config/pa/milli64.S: Likewise.
9841
9842 2007-07-17  Nick Clifton  <nickc@redhat.com>
9843
9844         * COPYING_v3: New file.  Contains version 3 of the GNU General
9845         Public License.
9846         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
9847         Lesser General Public License.
9848         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
9849         the GNU General Public License.
9850
9851 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
9852
9853         PR rtl-optimization/32773
9854         * cfglayout.c (force_one_exit_fallthru): New function.
9855         (cfg_layout_finalize): Use it.
9856
9857 2007-07-16  Richard Guenther  <rguenther@suse.de>
9858             Uros Bizjak  <ubizjak@gmail.com>
9859
9860         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
9861         before forcing it to gimple operand.
9862
9863 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
9864             David Ung  <davidu@mips.com>
9865
9866         * config/mips/mips.h (TUNE_24K): Define.
9867         (TUNE_MACC_CHAINS): Add TUNE_24K.
9868         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
9869         imadd.
9870         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
9871         (r74k_int_madd): .. this new reservation.
9872         (define_bypass): Fixed bypasses for r74k_int_madd to use
9873         mips_linked_madd_p.
9874         * config/mips/24k.md (define_bypass): Define new
9875         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
9876
9877 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
9878             Nigel Stephens  <nigel@mips.com>
9879
9880         * config/mips/mips.md: Include 20kc.md.
9881         * config/mips/20kc.md: New file.
9882         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
9883         (mips_adjust_cost): Tweak for 20Kc.
9884         (mips_issue_rate): Likewise.
9885         * config/mips/mips.h (TUNE_20KC): Define.
9886
9887 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
9888
9889         * config/rs6000/rs6000.c (struct processor_cost): Add
9890         cache_line_size, l1_cache_lines, and simultaneous_prefetches
9891         fields.
9892         (*_cost): Add cache information.
9893         (rs6000_override_options): Set cache parameters.
9894
9895 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9896
9897         PR bootstrap/3456
9898         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
9899         * doc/install.texi (mips-sgi-irix6): pthread support works now.
9900
9901 2007-07-16  Paul Brook  <paul@codesourcery.com>
9902
9903         PR target/32753
9904         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
9905         (cirrus_thumb2_movsi_insn): Ditto.
9906
9907 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
9908
9909         * config/rs6000/darwin-fallback.c (interpret_libc): Change
9910         CR2_REGNO to R_CR2.
9911
9912 2007-07-15  Andrew Haley  <aph@redhat.com>
9913
9914         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
9915         before looking in the context.
9916
9917 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9918
9919         PR middle-end/32398
9920         PR middle-end/32769
9921         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
9922         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
9923         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
9924         (pa_output_function_prologue): Use rp_saved and
9925         current_function_is_leaf to generate .CALLINFO statement.
9926         (hppa_expand_prologue): Set rp_saved.
9927         (hppa_expand_epilogue): Use rp_saved.
9928         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
9929         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
9930
9931 2007-07-14  Dirk Mueller  <dmueller@suse.de>
9932
9933         * omega.c (coalesce): Fix memory leak on early exit.
9934         * matrix-reorg.c (check_allocation_function): Likewise.
9935         * tree-vect-transform.c (vect_get_new_vect_var): free result
9936         of concat().
9937         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
9938         pass pointer to edge vector
9939         (partition_hot_cold_basic_blocks): Fix memory leak.
9940         * collect2.c (prefix_from_string): Free temporary storage.
9941         * reload1.c (fixup_abnormal_edges): Free sbitmap.
9942
9943 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
9944
9945         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
9946         (DO_GLOBAL_DTORS_BODY): Likewise.
9947
9948 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
9949             Nigel Stephens  <nigel@mips.com>
9950
9951         * config/mips/mips.c (mips_classify_symbol): Don't return
9952         SYMBOL_SMALL_DATA for constant pool addresses if
9953         TARGET_EMBEDDED_DATA is true.
9954
9955 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
9956
9957         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
9958         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
9959         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
9960         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
9961         __builtin_ia32_storehps, __builtin_ia32_storelps,
9962         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
9963         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
9964         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
9965         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
9966         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
9967         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
9968         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
9969         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
9970         using def_builtin_const.
9971
9972 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
9973
9974         PR tree-optimization/32705
9975         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
9976         (simplify_binary_expression): Use SSA_VAL consistently.
9977
9978 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
9979
9980         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
9981         (SPEFSCR_REGNO): Delete definition.
9982         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
9983         COUNT_REGISTER_REGNUM -> CTR_REGNO.
9984         * config/rs6000/rs6000.h: Do not define *_REGNO.
9985         LINK_REGISTER_REGNUM -> LR_REGNO.
9986         COUNT_REGISTER_REGNUM -> CTR_REGNO.
9987         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
9988         COUNT_REGISTER_REGNUM -> CTR_REGNO.
9989         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
9990         R_VRSAVE, R_VSCR. Use them.
9991         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
9992         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
9993         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
9994         * config/rs6000/aix.h: Define R_LR.  Use it.
9995         
9996 2007-07-13  Caroline Tice  <ctice@apple.com>
9997         
9998         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
9999         flag_var_tracking is explicitly turned off (i.e. when variable
10000         tracking is not feasible); otherwise, turn flag_var_tracking on when
10001         flag_var_tracking_uninit is on.
10002         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
10003         note definitions, to allow recording of initialization status in the
10004         notes.
10005         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
10006         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
10007         determine if two note locations are equal.
10008         (output_loc_list): Don't output list entries whose start & end labels
10009         are the same.
10010         (reg_loc_descriptor): Add parameter for initialization status; pass it
10011         to other loc descriptor functions.
10012         (one_reg_loc_descriptor): Add parameter for initialization status;
10013         check its value and add DW_OP_GNU_uninit to returned loc descr if
10014         appropriate.
10015         (multiple_reg_loc_descriptor): Add parameter for initialization
10016         status;
10017         pass init status argument to other loc descriptor functions; check
10018         value of intialization parameter and add DW_OP_GNU_uninit to returned
10019         loc descr if appropriate.
10020         (based_loc_descr): Add parameter for initialization status; add new
10021         variable for return value; check value of initialization parameter and
10022         add DW_OP_GNU_uninit to returned loc descr if appropriate.
10023         (concatn_mem_loc_descriptor): Add parameter for initialization status;
10024         pass init status argument to other loc descriptor functions; check
10025         value of intialization parameter and add DW_OP_GNU_uninit to returned
10026         loc descr if appropriate.
10027         (mem_loc_descriptor): Likewise.
10028         (concat_loc_descriptor): Likewise.
10029         (concatn_loc_descriptor): Likewise.
10030         (loc_descriptor): Add parameter for initialization status; pass it as
10031         argument to other loc descriptor function calls.
10032         (loc_descriptor_from_tree_1): Add appropriate initialization status
10033         to loc descriptor function calls.
10034         (add_location_or_const_value_attribute): Get initialization status
10035         from VAR_LOCATION note; add initialization status to loc descriptor
10036         function calls.
10037         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
10038         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
10039         status is uninitialized, add "[uninint]" to output.
10040         * common.opt (fvar-tracking-uninit): New option, similar to
10041         fvar-tracking, to turn on tracking of uninitialized variables; creates
10042         a new global flag, flag_var_tracking_uninit.
10043         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
10044         (enum var_init_status): New type, for var initialization status field.
10045         * var-tracking.c (struct location_chain_def): Two new fields, init,
10046         for initialization status, and set_src for the assignment value expr.
10047         (unshare_variable): New parameter for initialization status;
10048         initialize new init and set_src fields.
10049         (var_reg_set): New parameters for initialization status and value;
10050         pass them to set_variable_part.
10051         (var_mem_set): Likewise.
10052         (get_init_value): New function.
10053         (var_reg_delete_and_set): New initialization status & value
10054         parameters; add call to get_init_value if status is unknown; pass new
10055         parameters to clobber_variable_part and var_reg_set.
10056         (var_mem_delete_and_set): Likewise.
10057         (var_reg_delete): Pass null set_src value to clobber_variable_part.
10058         (var_mem_delete): Likewise.
10059         (variable_union): Pass status to unshare_variable; initialize new init
10060         and set_src fields. If flag_var_tracking_uninit is not set, force
10061         status to initialized.
10062         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
10063         used later to get the set_src value.
10064         (find_src_status): New function.
10065         (find_src_set_src): New function.
10066         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
10067         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
10068         MO_SET, get set_src value and pass it to var_reg_delete_and_set
10069         and var_mem_delete_and_set.
10070         (dump_variable): Print out "[uninit]" if appropriate.
10071         (set_variable_part): Add new initialization and set_src parameters;
10072         pass status to unshare_variable; set node->init and node- >set_src
10073         fields and modify slot in hash table appropriately; save the init and
10074         set_src values if appropriate and assign to the new node.
10075         (clobber_variable_part): New set_src parameter; if two nodes have
10076         same variable and same location but different set_src (assignment)
10077         values, clobber old node.
10078         (delete_variable_part): Pass init status to unshare_variable.
10079         (emit_note_insn_var_location): Add initialized var; assign var's init
10080         status to new 'initialized'; pass new init status field to calls to
10081         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
10082         status to initialized.
10083         (emit_notes_in_bb): Pass initialization status to calls to
10084         var_reg_set, var_mem_set, var_reg_delete_and_set and
10085         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
10086         var_reg_delete_and_set and var_mem_delete_and_set; call
10087         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
10088         make up for change in add_stores.
10089         (vt_add_function_parameters): Add status to calls to
10090         set_variable_part.
10091         * config/darwin.c (darwin_override_options): Turn on uninitialized
10092         tracking automatically, if var_tracking is on and the system is
10093         10.5 or higher.
10094         
10095 2007-07-13  Sa Liu  <saliu@de.ibm.com>
10096
10097         * config.gcc: Add options for arch and tune on SPU.
10098         * config/spu/predicates.md: Add constant operands 0 and 1.
10099         * config/spu/spu-builtins.def: Add builtins for double precision 
10100         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
10101         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
10102         spu_testsv.
10103         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
10104         a CELLEDP target.
10105         * config/spu/spu-protos.h: Add new function prototypes. 
10106         * config/spu/spu.c (spu_override_options): Check options -march and
10107         -mtune.
10108         (spu_comp_icode): Add comparison code for DFmode and vector mode.
10109         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
10110         mode comparison.
10111         (spu_const_from_int): New.  Create a vector constant from 4 ints.
10112         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
10113         (spu_emit_vector_compare): New.  Emit vector compare.
10114         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
10115         * config/spu/spu.h: Add options -march and -mtune.  Define processor
10116         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
10117         CANONICALIZE_COMPARISON.
10118         * config/spu/spu.md: Add new insns for double precision compare
10119         and double precision vector compare.  Add vcond and smax/smin patterns
10120         to enable DFmode vector conditional expression.
10121         * config/spu/spu.opt: Add options -march and -mtune.
10122         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
10123         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
10124         both CELL and CELLEDP targets: spu_testsv.
10125         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
10126         values.
10127
10128 2007-07-13  Richard Guenther  <rguenther@suse.de>
10129
10130         PR tree-optimization/32721
10131         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
10132         TREE_THIS_VOLATILE on the folded reference.
10133         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
10134         if the array reference has TREE_THIS_VOLATILE set.
10135
10136 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
10137
10138         PR other/32188
10139         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
10140
10141 2007-07-13  Andreas Schwab  <schwab@suse.de>
10142
10143         * gengtype-lex.l: Allow declarations to be indented.
10144
10145 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
10146
10147         * ginclude/tgmath.h: New.
10148         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
10149         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
10150         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
10151         * configure: Regenerate.
10152
10153 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10154
10155         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
10156         correct index when setting register save state for xd
10157         registers.
10158
10159 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10160
10161         * config/sh/sh.c (mark_use): Remove.
10162
10163 2007-07-12  Paul Brook  <paul@codesourcery.com>
10164
10165         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
10166         reg does not overlap return value.
10167
10168 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
10169
10170         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
10171         (set_expression_vuses): Ditto.
10172         (init_pre): Initialize expression_vuses.
10173
10174 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
10175
10176         * config/i386/sse.md (storentdf, storentsf): New.
10177
10178 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
10179
10180         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
10181         FUNCTION_DECL.
10182         * tree.c (build_decl_stat): Move code from here...
10183         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
10184         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
10185         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
10186         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
10187         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
10188         FUNCTION_BOUNDARY.
10189
10190 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
10191             Devang Patel  <dpatel@apple.com>
10192
10193         PR tree-optimization/25413
10194         * targhooks.c (default_builtin_vector_alignment_reachable): New.
10195         * targhooks.h (default_builtin_vector_alignment_reachable): New.
10196         * tree.h (contains_packed_reference): New.
10197         * expr.c (contains_packed_reference): New.
10198         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
10199         (vect_enhance_data_refs_alignment): Call
10200         vector_alignment_reachable_p.
10201         * target.h (vector_alignment_reachable): New builtin.
10202         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
10203         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
10204         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
10205
10206 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
10207
10208         * target.h (builtin_vectorization_cost): Add new target builtin.
10209         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
10210         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
10211         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
10212         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
10213         uninitialized variables.
10214         * tree-vect-transform.c (cost_for_stmt): New function.
10215         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
10216         using cost 1 for all scalar stmts. Be less conservative when
10217         estimating the number of prologue/epulogue iterations. Call
10218         targetm.vectorize.builtin_vectorization_cost. Return
10219         min_profitable_iters-1.
10220         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
10221         initialization cost instead of TARG_VEC_STMT_COST. Use
10222         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
10223         epilogue code. Fix epilogue cost computation.
10224         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
10225         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
10226         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
10227         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
10228         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
10229         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
10230
10231 2007-07-12  Richard Guenther  <rguenther@suse.de>
10232
10233         * gimplify.c (gimplify_conversion): Make sure that the result
10234         from maybe_fold_offset_to_reference is trivially convertible
10235         to the desired type before doing the simplification.
10236         (gimplify_expr): Likewise.
10237         * fold-const.c (fold_binary): Use the correct types for
10238         building the simplified expression.
10239
10240 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
10241
10242         PR rtl-optimization/32729
10243         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
10244         that fallthru to exit.
10245
10246 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10247
10248         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
10249         (symDTPOFF2reg): Likewise.
10250
10251 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
10252
10253         PR tree-optimization/32663
10254         
10255         * tree.h (VALUE_HANDLE_VUSES): Remove.
10256         (struct tree_value_handle): Remove vuses.
10257
10258         * tree-vn.c (create_value_handle_for_expr): Don't set
10259         VALUE_HANDLE_VUSES. 
10260
10261         * tree-ssa-pre.c (expression_vuses): New.
10262         (alloc_expression_id): Set up expression_vuses.
10263         (get_expression_vuses): New.
10264         (set_expression_vuses): Ditto.
10265         (clear_expression_ids): Modify for expression_vuses.
10266         (phi_translate_1): Ditto.
10267         (phi_translate_set): Ditto.
10268         (value_dies_in_block_x): Ditto
10269         (valid_in_sets): Ditto.
10270         (add_to_sets): Ditto.
10271         (find_existing_value_expr): Ditto.
10272         (create_value_handle_for_expr): Ditto.
10273         (make_values_for_stmt): Ditto.
10274         (vuse_equiv): Remove.
10275
10276 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
10277
10278         * Makefile.in (mostlyclean): Remove object files.
10279
10280 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
10281
10282         * toplev.c (no_new_pseudos): Deleted.
10283         * rtl.h (no_new_pseudos): Deleted.
10284         * tree-pass.h (pass_no_new_pseudos): Deleted. 
10285         * passes.c (pass_no_new_pseudos): Deleted.
10286         * final.c (rest_of_clean_state): Removed no_new_pseudos.
10287         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
10288         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
10289         reload_completed.
10290         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
10291         * rtlhooks.c (gen_lowpart_general): Ditto.
10292         * optabs.c (prepare_operand): Ditto.
10293         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
10294         no_new_pseudos.
10295         * modulo-sched.c (rest_of_handle_sms): Ditto.
10296         * see.c (rest_of_handle_see): Ditto.
10297         * ifcvt.c (if_convert): Ditto.
10298         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
10299         reload_completed.
10300         * init-regs.c (gate_initialize_regs): Deleted set of
10301         no_new_pseudos.
10302         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
10303         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
10304         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
10305         
10306 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
10307
10308         PR target/32661
10309         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
10310         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
10311         (*vec_extractv2di_1_rex64): New insn pattern.
10312
10313 2007-07-11  David Daney  <ddaney@avtrex.com>
10314
10315         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
10316         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
10317         for SIGNAL_UNWIND_RETURN_COLUMN.
10318         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
10319         (DWARF_FRAME_REGNUM): Rewrite.
10320         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
10321
10322 2007-07-11  Nick Clifton  <nickc@redhat.com>
10323
10324         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
10325         delta and use gen_int_mode in place of GET_INT instead.
10326
10327 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
10328
10329         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
10330         and letter field.
10331
10332 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
10333
10334         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
10335         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
10336         types or not.
10337         * params.h (VERIFY_CANONICAL_TYPES): Remove.
10338         (USE_CANONICAL_TYPES): New.
10339         * doc/invoke.texi (verify-canonical-types): Remove.
10340         (use-canonical-types): Add.
10341
10342 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
10343
10344         * config/spu/spu.c (spu_optimization_options): Remove setting of
10345         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
10346         (spu_override_options): Move it here.
10347
10348 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
10349
10350         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
10351         * config/mips/mips.c (mips_cpu_info_table): Mention
10352         MIPS_ISA_LEVEL_SPEC in the comment.
10353
10354 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
10355
10356         PR tree-optimization/32713
10357         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
10358
10359 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
10360
10361         PR middle-end/30482
10362         * c-opts.c (c_common_post_options): Do not change flag_complex_method
10363         conditional to flag_isoc99.
10364         (c_common_init_options): Do it here, unconditionally.
10365
10366 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
10367
10368         PR tree-optimization/32589
10369         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
10370         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
10371         * tree-ssa-propagate.c (valid_gimple_expression_p): New
10372         predicate, extracted from...
10373         (set_rhs): ...here.  Call it for the expression on entry.
10374         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
10375         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
10376         (simplify_binary_expression): Use valid_gimple_expression_p
10377         to validate the simplification.
10378         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
10379
10380 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
10381
10382         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
10383         DWARF2_DEBUG on 32 bit target too.
10384         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
10385
10386 2007-07-11  Nick Clifton  <nickc@redhat.com>
10387
10388         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
10389         version for 64-bit hosts.
10390
10391 2007-07-10  David Daney  <ddaney@avtrex.com>
10392
10393         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
10394         predicate.
10395         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
10396         call.
10397         * config/mips/mips.c (mips_expand_synci_loop): New function.
10398         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
10399         (UNSPEC_RDHWR): Same.
10400         (UNSPEC_SYNCI): Same.
10401         (UNSPEC_SYNC): Same.
10402         (clear_cache): New expand.
10403         (sync): New insn.
10404         (synci): Same.
10405         (rdhwr): Same.
10406         (clear_hazard): Same.
10407         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
10408         function.
10409         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
10410         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
10411
10412 2007-07-10  Ian Lance Taylor  <iant@google.com>
10413
10414         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
10415         no_new_pseudos.
10416
10417 2007-07-10  David Daney  <ddaney@avtrex.com>
10418
10419         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
10420         * builtins.c (expand_builtin___clear_cache): New function.
10421         (expand_builtin): Call expand_builtin___clear_cache for
10422         BUILT_IN_CLEAR_CACHE case.
10423         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
10424         * doc/md.texi (clear_cache): Document new instruction pattern.
10425         * testsuite/gcc.dg/builtins-64.c: New test.
10426
10427 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
10428
10429         * config/cris/cris.md ("movsi"): Fix typo in last change.
10430
10431 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
10432
10433         PR 32617
10434         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
10435         FUNCTION_DECLs.
10436         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
10437         * varasm.c (assemble_start_function): Honor DECL_ALIGN
10438         for FUNCTION_DECLs.  Don't use align_functions_log if
10439         DECL_USER_ALIGN.
10440         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
10441         even for FUNCTION_DECLs.
10442         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
10443         FUNCTION_DECLs.
10444         * tree.h (DECL_ALIGN): Update for new location of 'align'.
10445         (DECL_FUNCTION_CODE): Update for new location and name of
10446         'function_code'.
10447         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
10448         (struct tree_decl_common): Move 'align' and 'off_align' out
10449         of union, ensure they're still on a 32-bit boundary.  Remove
10450         other fields in union 'u1'.
10451         (struct tree_function_decl): Add field 'function_code' replacing
10452         'u1.f' in tree_decl_common.
10453         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
10454         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
10455         (Variable Attributes): Cross-reference 'aligned' attribute
10456         to Function Attributes.
10457         * flags.h (force_align_functions_log): Delete.
10458         * toplev.c (force_align_functions_log): Delete.
10459
10460 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
10461
10462         PR target/32708
10463         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
10464         (*vec_concatv2di_rex): New insn pattern.
10465
10466 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10467
10468         PR target/32538
10469         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
10470
10471 2007-07-10  Ian Lance Taylor  <iant@google.com>
10472
10473         Replace no_new_pseudos in backends.
10474         * rtl.h (can_create_pseudo_p): Define.
10475         * config/darwin.c (machopic_indirect_data_reference): Use
10476         can_create_pseudo_p () instead of no_new_pseudos.
10477         (machopic_indirect_data_reference): Likewise.
10478         (machopic_legitimize_pic_address): Likewise.
10479         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
10480         (alpha_emit_set_const_1): Likewise.
10481         (alpha_emit_set_const): Likewise.
10482         (alpha_emit_conditional_move): Likewise.
10483         (alpha_split_conditional_move): Likewise.
10484         * config/alpha/alpha.md (various splitters): Likewise.
10485         (movti): Likewise.
10486         * config/arm/arm.c (legitimize_pic_address): Likewise.
10487         (arm_load_pic_register): Likewise.
10488         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
10489         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
10490         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
10491         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
10492         * config/cris/cris.md (movsi): Likewise.
10493         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
10494         (symGOTOFF2reg_hilo): Likewise.
10495         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
10496         * config/h8300/h8300.md (insv, extzv): Likewise.
10497         * config/i386/i386.c (ix86_expand_move): Likewise.
10498         (ix86_expand_vector_move): Likewise.
10499         (ix86_prepare_fp_compare_args): Likewise.
10500         (ix86_expand_carry_flag_compare): Likewise.
10501         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
10502         (tls_dynamic_gnu2_combine_32): Likewise.
10503         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
10504         * config/ia64/ia64.c (ia64_expand_move): Likewise.
10505         (ia64_expand_movxf_movrf): Likewise.
10506         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
10507         (m32c_split_move): Likewise.
10508         (m32c_expand_insv): Likewise.
10509         * config/m68k/m68k.md (movsi): Likewise.
10510         * config/mips/mips.c (mips_force_temporary): Likewise.
10511         (mips_split_symbol): Likewise.
10512         (mips_move_integer): Likewise.
10513         (mips_legitimize_const_move): Likewise.
10514         * config/mn10300/mn10300.md (movsi): Likewise.
10515         * config/pa/pa.c (emit_move_sequence): Likewise.
10516         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
10517         (rs6000_got_register): Likewise.
10518         (create_TOC_reference): Likewise.
10519         (rs6000_machopic_legitimize_pic_address): Likewise.
10520         * config/rs6000/rs6000.md (add<mode>3): Likewise.
10521         (various splitters): Likewise.
10522         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
10523         (movsi_got): Likewise.
10524         * config/s390/s390.c (emit_symbolic_move): Likewise.
10525         * config/s390/s390.md (movhi, movqi): Likewise.
10526         (load_multiple, store_multiple): Likewise.
10527         * config/score/score.c (score_force_temporary): Likewise.
10528         * config/sh/sh.c (prepare_move_operands): Likewise.
10529         (prepare_cbranch_operands): Likewise.
10530         (emit_fpu_switch): Likewise.
10531         (fpscr_set_from_mem): Likewise.
10532         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
10533         (adddi3, subsi3): Likewise.
10534         (various splitters): Likewise.
10535         (divsi_inv_fp_combine): Likewise.
10536         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
10537         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
10538         (sne): Likewise.
10539         * config/sh/predicates.md (xor_operand): Likewise.
10540         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
10541         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
10542         (movdi_pic_label_ref): Likewise.
10543         * config/spu/spu.c (spu_split_immediate): Likewise.
10544         * config/alpha/alpha.md (various splitters): Remove test
10545         !no_new_pseudos || reload_completed.
10546         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
10547         no_new_pseudos.
10548         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
10549         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10550         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
10551         * config/score/score.c (th_output_mi_thunk): Likewise.
10552         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
10553         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10554
10555 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
10556
10557         PR rtl-optimization/32664
10558         * mode-switching.c (create_pre_exit): Skip barrier insns.
10559
10560 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
10561
10562         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
10563         force_gimple_operand_bsi.
10564         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
10565         rewrite_use_compare): Ditto.
10566         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
10567         Ditto.
10568         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
10569         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
10570         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
10571         * tree-profile.c (prepare_instrumented_value,
10572         tree_gen_interval_profiler, tree_gen_pow2_profiler,
10573         tree_gen_one_value_profiler, tree_gen_ic_profiler,
10574         tree_gen_ic_func_profiler, tree_gen_average_profiler,
10575         tree_gen_ior_profiler): Ditto.
10576         * tree-ssa-reassoc.c (negate_value): Ditto.
10577         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
10578         Use force_gimple_operand_bsi.
10579         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
10580         * tree-if-conv.c (add_to_dst_predicate_list,
10581         find_phi_replacement_condition): Ditto.
10582         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
10583         Call mark_symbols_for_renaming for new statements.
10584         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
10585
10586 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
10587
10588         * cfghooks.c (remove_edge): New function.
10589         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
10590         loop exit rescans.
10591         * cfghooks.h (remove_edge): Declare.
10592         * cfg.c (remove_edge): Renamed to remove_edge_raw.
10593         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
10594
10595 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
10596
10597         * optabs.h: Added declaration for signbit_optab.  
10598         * optabs.c: (init_optabs): Added initialization for signbit_optab.
10599         * genoptinit.c (optabs): Added entry for signbit insns.  
10600         * builtins.c (expand_builtin_signbit): Added code to use a signbit
10601         insn, if available.  
10602         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
10603         * config/s390/s390.md (signbit<mode>2): New expander.  
10604
10605 2007-07-09  Richard Guenther  <rguenther@suse.de>
10606
10607         PR middle-end/32698
10608         * fold-const.c (fold_plusminus_mult_expr): Move constant
10609         arguments second to allow decomposing.
10610
10611 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
10612
10613         Revert:
10614         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
10615         PR debug/23551
10616         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
10617         Disregard DECL_FROM_INLINE.
10618
10619 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
10620
10621         PR target/27855
10622         * doc/invoke.texi: Add ftree-reassoc flag.
10623         * common.opt (ftree-reassoc): New flag.
10624         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
10625         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
10626
10627 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
10628
10629         PR tree-optimization/32681
10630         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
10631         saved in second_edge->aux when first_bb is a loop header.
10632
10633 2007-07-09  Jan HUbicka  <jh@suse.cz>
10634
10635         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
10636
10637 2007-07-09  Richard Guenther  <rguenther@suse.de>
10638
10639         * c-decl.c (start_function): Do not promote return type.
10640
10641 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
10642
10643         * function.c (do_warn_unused_parameter): Do not warn if
10644         TREE_NO_WARNING is set.
10645
10646 2007-07-08  Andreas Schwab  <schwab@suse.de>
10647
10648         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
10649
10650 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
10651
10652         Revert this patch:
10653         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
10654
10655         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
10656         apply to assembly language, too.
10657         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
10658
10659 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
10660
10661         Revert (note the sccvn portions are *not* reverted)
10662         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
10663
10664         Fix PR tree-optimization/23488
10665
10666         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
10667         handles.
10668         * tree-flow-inline.h (get_value_handle): Ditto.
10669         * tree-ssa-pre.c (decl_vh_map): New.
10670         (decl_node_pool): New.
10671         (can_value_number_operation): Support DECL_P.
10672         (can_PRE_operation): Ditto.
10673         (create_expression_by_pieces): Ditto.
10674         (find_existing_value_expr): Modify to differnetiate between
10675         addressing and top level.
10676         (create_value_handle_for_expr): Handle DECL's.
10677         (poolify_tree): Ditto.
10678         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
10679         (make_values_for_stmt): Handle DECL's properly.
10680         (init_pre): Reorg to not init useless things during FRE.
10681         (fini_pre): Ditto.
10682         * tree-flow.h: Include pointer-set.h.
10683         (decl_vh_map): Declare.
10684         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
10685
10686 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
10687
10688         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
10689         the constraint description.
10690         * doc/md.texi: Update documentation of AVR constraints.
10691
10692 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
10693
10694         * auto-inc-dec.c, config/arm/arm.c,
10695         config/m32r/constraints.md, config/mips/mips.md,
10696         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
10697         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
10698         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
10699         typos.  Follow spelling conventions.
10700         * doc/invoke.texi, doc/rtl.texi: Fix typos.
10701
10702         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
10703         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
10704
10705         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
10706         realloc_vuse): Remove.
10707         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
10708         and realloc_vuse.
10709
10710 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
10711
10712         Fix PR tree-optimization/23488
10713
10714         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
10715         (try_to_simplify): Ditto.
10716         (visit_use): Ditto.
10717         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
10718         handles.
10719         * tree-flow-inline.h (get_value_handle): Ditto.
10720         * tree-ssa-pre.c (decl_vh_map): New.
10721         (decl_node_pool): New.
10722         (can_value_number_operation): Support DECL_P.
10723         (can_PRE_operation): Ditto.
10724         (create_expression_by_pieces): Ditto.
10725         (find_existing_value_expr): Modify to differnetiate between
10726         addressing and top level.
10727         (create_value_handle_for_expr): Handle DECL's.
10728         (poolify_tree): Ditto.
10729         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
10730         (make_values_for_stmt): Handle DECL's properly.
10731         (init_pre): Reorg to not init useless things during FRE.
10732         (fini_pre): Ditto.
10733         * tree-flow.h: Include pointer-set.h.
10734         (decl_vh_map): Declare.
10735         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
10736                 
10737 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
10738
10739         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
10740         apply to assembly language, too.
10741         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
10742
10743 2007-07-06  Ian Lance Taylor  <iant@google.com>
10744             Zack Weinberg  <zackw@panix.com>
10745
10746         PR middle-end/32441
10747         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
10748
10749 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
10750
10751         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
10752         (prefetch): Likewise if "pref" would be used.
10753
10754 2007-07-06  Josh Conner  <jconner@apple.com>
10755
10756         PR middle-end/32602
10757         PR middle-end/32603
10758         * calls.c (store_one_arg): Handle arguments which are partially
10759         on the stack when detecting argument overlap.
10760
10761 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
10762
10763         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
10764         chosen during find_reloads.
10765
10766 2007-07-06  Richard Guenther  <rguenther@suse.de>
10767
10768         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
10769         TYPE_ARG_TYPES for verification of argument types.  Use
10770         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
10771         parameters as variable arguments.
10772
10773 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
10774
10775         * libgcc2.h (word_type): Type definition removed.
10776         (cmp_return_type, shift_count_type): Type definitions added.
10777         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
10778         replaced with shift_count_type.
10779         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
10780         cmp_return_type.
10781         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
10782         changed from word_type to Wtype.
10783         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
10784         replaced with shift_count_type.
10785         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
10786         cmp_return_type.
10787         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
10788         and libgcc_shift_count attribute added.
10789         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
10790         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
10791         (TARGET_INITIALIZER): New target hooks added.
10792         * targhooks.c (default_libgcc_cmp_return_mode,
10793         default_libgcc_shift_count_mode): Default implementations for the new
10794         target hooks added.
10795         * targhooks.h (default_libgcc_cmp_return_mode,
10796         default_libgcc_shift_count_mode): Function prototypes added.
10797         * target.h (struct gcc_target): Fields for the new target hooks added.
10798         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
10799         as library call.
10800         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
10801         library call.
10802
10803         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
10804         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
10805
10806         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
10807         s390_libgcc_shift_count_mode): Functions added.
10808         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
10809         Target hooks defined.
10810
10811 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
10812
10813         * config/mips/mips.c (compute_frame_size): Restore the original
10814         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
10815         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
10816         Document why the difference is needed.
10817
10818 2007-07-06  Richard Guenther  <rguenther@suse.de>
10819
10820         * c-common.c (boolean_increment): Use correctly typed
10821         constant.
10822
10823 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
10824
10825         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
10826         the topmost argument register is not also included in the save mask.
10827         (mips16e_collect_argument_save_p): Take a pointer to the argument
10828         register, rather than a pointer to the number of arguments.
10829         (mips16e_collect_argument_saves): Only include argument saves
10830         that aren't in the register mask.
10831
10832 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
10833
10834         PR rtl-optimization/32450
10835         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
10836         to ensure that instructions are not moved into the prologue when
10837         profiling is on.  Remove unused prologue_end variable.
10838         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
10839         as a scheduling barrier.
10840
10841 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
10842
10843         PR debug/23551
10844         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
10845         Disregard DECL_FROM_INLINE.
10846
10847 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
10848
10849         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
10850         IORing with a constant.
10851
10852 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
10853
10854         PR rtl-optimization/32475
10855         * df-scan.c (df_def_record_1): Add a use of the stack pointer
10856         for every definition of the stack pointer.
10857
10858 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
10859
10860         * arm.c (vfp3_const_double_index): Copy signed results of
10861         REAL_VALUE_TO_INT into unsigned vars.
10862
10863 2007-07-05  Richard Guenther  <rguenther@suse.de>
10864
10865         PR middle-end/32639
10866         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
10867         FUNCTION_TYPE.
10868         * tree-ssa.c (useless_type_conversion_p): Check canonical
10869         types early.
10870
10871 2007-07-05 Anatoly Sokolov <aesok@post.ru>
10872
10873         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
10874         zero_extendhisi2): Change to define_insn_and_split. 
10875         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
10876
10877 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
10878
10879         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
10880         pass_match_asm_constraints): New.
10881         * passes.c (init_optimization_passes): Add new pass.
10882         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
10883         * function.h (struct function): Add has_asm_statement bit.
10884         (current_function_has_asm_statement): New.
10885         * tree-pass.h (pass_match_asm_constraints): New.
10886
10887 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
10888
10889         * config/mips/mips.c (mips_file_start): Avoid declaration
10890         after code.
10891
10892 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
10893
10894         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
10895
10896 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
10897
10898         * rtl.def (NOTE): Change print format string to print
10899         operand 5 as a note insn name.
10900
10901 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
10902             David Ung  <davidu@mips.com>
10903
10904         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
10905         * doc/invoke.texi: (MIPS Options): Document them.
10906
10907 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
10908             David Ung  <davidu@mips.com>
10909
10910         Add support for SmartMIPS ASE.
10911
10912         * optabs.c (expand_binop_directly): New, broken out from...
10913         (expand_binop): Here.  Make it try rotating in the other
10914         direction even when the second operand isn't constant.
10915         * config/mips/mips.md (*lwxs): New.
10916         * config/mips/mips.opt (msmartmips): New.
10917         * config/mips/mips.c (mips_lwxs_address_p): New.
10918         (mips_rtx_costs): Make it recognize scaled indexed addressing.
10919         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
10920         __mips_smartmips when compiling for TARGET_SMARTMIPS.
10921         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
10922         (ISA_HAS_LWXS): New.
10923         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
10924         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
10925         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
10926         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
10927         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
10928         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
10929         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
10930
10931 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
10932
10933         * tree-vectorizer.c (new_loop_vec_info): Initialize
10934         LOOP_VINFO_COST_MODEL_MIN_ITERS.
10935         * tree-vectorizer.h (_loop_vec_info): Added new filed
10936         min_profitable_iters.
10937         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
10938         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
10939         * tree-vect-analyze.c (vect_analyze_operations): Set
10940         LOOP_VINFO_COST_MODEL_MIN_ITERS.
10941         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
10942         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
10943         Fix calculation of peel_iters_prologue. Move consideration of epilogue
10944         and prologue cost to after they are computed.
10945         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
10946         TARG_VEC_STMT_COST.
10947         (vect_model_simple_cost): Takes additional argument dt. Consider cost
10948         of creating vectors from scalars according to dt.
10949         (vect_model_store_cost): Likewise.
10950         (vectorizable_call): Use dt array instead of scalar dt. Call
10951         vect_model_simple_cost with additional argument dt.
10952         (vectorizable_assignment): Likewise.
10953         (vectorizable_operation): Likewise.
10954         (vectorizable_type_demotion): Likewise.
10955         (vectorizable_type_promotion): Likewise.
10956         (vectorizable_store): Use dt array instead of scalar dt. Call
10957         vect_model_store_cost with additional argument dt.
10958         (vect_do_peeling_for_loop_bound): Don't call
10959         vect_estimate_min_profitable_iters. Instead, lookup
10960         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
10961         "may not be profitable".
10962
10963 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
10964
10965         PR testsuite/32014
10966         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
10967         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
10968         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
10969         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
10970
10971 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
10972
10973         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
10974         addressing modes cheaper.
10975
10976 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
10977
10978         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
10979         (dw_ranges_struct): Rename block_num to num.  Adjust.
10980         (dw_ranges_by_label_struct): New.
10981         (ranges_by_label, ranges_by_label_allocated,
10982         ranges_by_label_in_use): New variables.
10983         (add_ranges_num): Factored most of the code out of...
10984         (add_ranges): ... this one.  Rewrite in terms of the former.
10985         (add_ranges_by_labels): New.
10986         (output_ranges): Output by-label ranges.
10987         (dwarf2out_finish): Output range for multiple-section
10988         compile_unit.  Output standard DW_AT_low_pc in addition to
10989         unexpected DW_AT_entry_pc.
10990
10991 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
10992
10993         PR tree-optimization/32604
10994         PR tree-optimization/32606
10995
10996         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
10997         (compute_antic_safe): Removed.
10998         (ANTIC_SAFE_LOADS): Ditto.
10999         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
11000         (execute_pre): Don't call compute_antic_safe.
11001         (vuse_equiv): New function.
11002         (make_values_for_stmt): Use it
11003         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
11004         not always true.
11005
11006 2007-07-04 Anatoly Sokolov <aesok@post.ru>
11007
11008         PR target/31331
11009         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
11010         rather than a decl. 
11011         (avr_attribute_table): Make "naked" attribute apply to function types
11012         rather than to decls.
11013         (avr_handle_fntype_attribute): New function.
11014
11015 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
11016
11017         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
11018         after \.
11019
11020 2007-07-04  David Ung  <davidu@mips.com>
11021             Joseph Myers  <joseph@codesourcery.com>
11022
11023         * config/mips/mips.md (type): Add logical, signext and move.
11024         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
11025         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
11026         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
11027         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
11028         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
11029         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
11030         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
11031         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
11032         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
11033         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
11034         movv2sf_hardfloat_64bit): Use the new types.
11035         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
11036         *movdf_softfloat, *movdf_mips16): Use "multi".
11037         (extendqihi2): Replace with a define_expand.
11038         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
11039         Based on extend<SHORT:mode><GPR:mode>2 patterns.
11040         * config/mips/74k.md (r74k_int_logical): New reservation and
11041         bypasses.
11042         (r74k_int_arith): Remove "slt".
11043         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
11044         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
11045         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
11046         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
11047         reservations for "arith".
11048
11049 2007-07-04  Richard Guenther  <rguenther@suse.de>
11050
11051         * tree-ssa.c (useless_type_conversion_p): Add handling for
11052         scalar float and vector types.  Only call the types_compatible_p
11053         langhook for aggregate types as last resort.  Follow the
11054         rules.
11055
11056 2007-07-04  Richard Guenther  <rguenther@suse.de>
11057
11058         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
11059         the same as NOP_EXPR.
11060
11061 2007-07-04  Nick Clifton  <nickc@redhat.com>
11062
11063         * target.h (struct gcc_target): Add target_help field.
11064         * target-def.h (TARGET_HELP): New.
11065         (TARGET_INITIALIZER): Use TARGET_HELP.
11066         * opts.c (command_handle_option): Invoke target_help function, if
11067         defined, when the user has specified --target-help on the command
11068         line.
11069         * doc/invoke.texi: Mention that --target-help might print
11070         additional information.
11071         * doc/tm.texi: Document TARGET_HELP hook.
11072
11073         * arm.c (TARGET_HELP): Override default definition.
11074         (arm_target_help): New - display a wrapped list of cores and
11075         architectures supported.
11076
11077 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11078
11079         * config/v850/v850.c (expand_prologue): Make sure
11080         GEN_INT() argument is sign extended rather than zero extended.
11081         (expand_epilogue): Likewise.
11082         (output_move_double): Delete.
11083         * config/v850/v850-protos.h (output_move_double): Delete.
11084         * config/v850/v850.md (movdi): Delete.
11085         (*movdi_internal): Delete.
11086         (movdf): Delete.
11087         (*movdf_internal): Delete.
11088
11089 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11090
11091         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
11092         unless compiling RTP PIC.
11093
11094 2007-07-04  Richard Guenther  <rguenther@suse.de>
11095
11096         PR tree-optimization/32482
11097         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
11098         original ssa name if we didn't find a shift expression.
11099         Fix shift constant for bit zero test.
11100
11101 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11102
11103         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
11104
11105 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11106
11107         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
11108         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
11109         * config/arm/vxworks.h (ASM_SPEC): Delete.
11110         (SUBTARGET_EXTRA_ASM_SPEC): Define.
11111
11112 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
11113
11114         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
11115         (DDR_REVERSED_P): New.
11116         * tree-data-ref.c (initialize_data_dependence_relation,
11117         build_classic_dist_vector): Set DDR_REVERSED_P.
11118
11119 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
11120
11121         PR middle-end/32457
11122         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
11123         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
11124         init_omega_for_ddr_1): Use non conservative number of iterations
11125         estimations.
11126         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
11127         (analyze_siv_subscript): Remove FIXME and reinitialization of 
11128         last_conflicts to chrec_dont_know.
11129         * testsuite/gfortran.dg/vect/pr32457.f90: New.
11130
11131 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
11132
11133         * tree.c (maybe_canonicalize_argtypes): Improve description.
11134
11135 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
11136
11137         * tree.c (maybe_canonicalize_argtypes): New.
11138         (build_function_type): Set canonical type.
11139         (build_method_type_directly): Ditto.
11140         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
11141         properly.
11142
11143 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11144
11145         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
11146         like PLUS_EXPR.
11147         (rewrite_use_nonlinear_expr): Likewise.
11148
11149 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
11150
11151         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
11152
11153 2007-07-04  Ben Elliston  <bje@au.ibm.com>
11154
11155         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
11156         of this file.
11157
11158         * c-objc-common.c (c_types_compatible_p): Fix indentation.
11159
11160         * doc/tm.texi (Run-time Target): Capitalise "CPU".
11161         (Exception Handling): Likewise.
11162
11163 2007-07-03  Jan Hubicka  <jh@suse.cz>
11164
11165         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
11166
11167 2007-07-03  Eric Christopher  <echristo@apple.com>
11168
11169         * doc/cppopts.texi: Add conflicting option note to -dM.
11170         * doc/invoke.texi: Add note about possible conflicts with
11171         -E for -dCHARS and note that -dM will not produce
11172         any results if there is no machine dependent reorg.
11173         
11174 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
11175
11176         * tree.h (DECL_ALIGN): Back out previous change.
11177
11178 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
11179
11180         * configure.ac: Test for .dtprelword support on MIPS.
11181         * configure, config.in: Regenerate.
11182         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
11183         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
11184
11185 2007-07-03  Julian Brown  <julian@codesourcery.com>
11186
11187         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
11188         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
11189         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
11190         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
11191         capability.
11192         (all_fpus): Add FPUTYPE_VFP3.
11193         (fp_model_for_fpu): Add VFPv3 field.
11194         (arm_rtx_costs_1): Give cost to VFPv3 constants.
11195         (vfp3_const_double_index): New function. Return integer index of
11196         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
11197         isn't suitable.
11198         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
11199         and argument represents a valid RTX for a VFPv3 constant.
11200         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
11201         two instructions.
11202         (vfp_emit_fstmd): Similar, for fstmd.
11203         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
11204         constants, represented as integer indices.
11205         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
11206         VFP_REGNO_OK_FOR_DOUBLE macros.
11207         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
11208         (arm_file_start): Set float-abi attribute for VFPv3, and output
11209         correct ".fpu" assembler directive.
11210         (arm_dbx_register_numbering): Add FIXME.
11211         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
11212         (fputype): Add FPUTYPE_VFP3.
11213         (FIXED_REGISTERS): Add 32 registers for D16-D31.
11214         (CALL_USED_REGISTERS): Likewise.
11215         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
11216         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
11217         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
11218         (D7_VFP_REGNUM): New.
11219         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
11220         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
11221         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
11222         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
11223         (REG_ALLOC_ORDER): Adjust for VFPv3.
11224         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
11225         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
11226         VFP_LO_REGS, VFP_HI_REGS.
11227         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
11228         (IS_VFP_CLASS): Define macro.
11229         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
11230         IS_VFP_CLASS.
11231         (REGISTER_MOVE_COST): Likewise.
11232         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
11233         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
11234         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
11235         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
11236         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
11237         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
11238         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
11239         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
11240         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
11241         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
11242         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
11243         where appropriate for single-word registers.
11244         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
11245         As above. Fix type attributes.
11246         * config/arm/constraints.md (register_contraint "t"): Define.
11247         (register_constraint "w"): Change to D0-D15, or D0-D31 for
11248         VFPv3/NEON.
11249         (register_constraint "x"): Define.
11250         (constraint "Dv"): Define.
11251
11252 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
11253
11254         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
11255
11256 2007-07-03  Tom Tromey  <tromey@redhat.com>
11257
11258         * c-parser.c (objc_pq_context): Removed.
11259         (objc_need_raw_identifier): Likewise.
11260         (c_parser) <objc_pq_context>: New field.
11261         <objc_need_raw_identifier>: Likewise.
11262         (OBJC_NEED_RAW_IDENTIFIER): Removed.
11263         (c_lex_one_token): Update.
11264         (c_parser_objc_protocol_definition): Update.
11265         (c_parser_objc_method_definition): Update.
11266         (c_parser_objc_methodproto): Update.
11267         (c_parser_declspecs): Update.
11268
11269 2007-07-03  David Ung  <davidu@mips.com>
11270
11271         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
11272
11273 2007-07-03  David Ung  <davidu@mips.com>
11274             Richard Sandiford  <richard@codesourcery.com>
11275
11276         * doc/invoke.texi: Document -march=74kf3_2.
11277         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
11278         (TUNE_74K): Check for it.
11279         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
11280         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
11281         * config/mips/mips.md (cpu): Add 74kf3_2.
11282         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
11283         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
11284         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
11285         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
11286         74kf3_2 to the CPU list.
11287         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
11288         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
11289         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
11290         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
11291         (r74kf3_2_fxfer_from_c1): New insn reservations.
11292
11293 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
11294             David Ung  <davidu@mips.com>
11295
11296         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
11297         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
11298         and 74k[fx].  Document aliases for the new options.
11299         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
11300         (PROCESSOR_24KF2_1): ...this.
11301         (PROCESSOR_24KX): Rename to...
11302         (PROCESSOR_24KF1_1): ...this.
11303         (PROCESSOR_74KF): Rename to...
11304         (PROCESSOR_74KF2_1): ...this.
11305         (PROCESSOR_74KX): Rename to...
11306         (PROCESSOR_74KF1_1): ...this.
11307         (TUNE_74K): Update PROCESSOR_* names.
11308         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
11309         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
11310         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
11311         (mips_rtx_cost_data): Update processor names in comments.
11312         (mips_issue_rate): Update PROCESSOR_* names.
11313         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
11314         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
11315         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
11316         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
11317         Update cpu attribute names.
11318         (r24k_fpu_iss): Rename this reservation to...
11319         (r24kf2_1_fpu_iss): ...this and update all uses.
11320         (r24kx_fpu_iss): Rename this reservation to...
11321         (r24kf1_1_fpu_iss): ...this and update all uses.
11322         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
11323         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
11324         Update cpu attribute names.
11325
11326 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
11327
11328         * config/m32r/constraints.md: New file.
11329         * config/m32r/m32r.c: Include tm-constrs.h.
11330         (small_data_operand): Use satisfies_constraint_* instead of macro.
11331         (addr24_operand, gen_compare): Likewise.
11332         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
11333         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
11334         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
11335         EXTRA_CONSTRAINT): Likewise.
11336         * config/m32r/m32r.md: Include constraints.md.
11337         (*movsi_insn): Use satisfies_constraint_* instead of macro.
11338         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
11339         * config/m32r/predicates.md (conditional_move_operand): Likewise.
11340         (two_insn_const_operand, int8_operand, uint16_operand,
11341         reg_or_int16_operand, reg_or_uint16_operand,
11342         reg_or_cmp_int16_operand, cmp_int16_operand,
11343         seth_add3_operand): Likewise.
11344
11345 2007-07-03  Eric Christopher  <echristo@gmail.com>
11346
11347         * libgcc2.h: Conditionally declare __bswapsi2 and
11348         __bswapdi2.
11349         
11350 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
11351
11352         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
11353         defined.
11354
11355 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11356
11357         PR target/28307
11358         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
11359         (__gthrw_pragma): Provide default definition.
11360         (__gthrw2): Use it.
11361         * gthr-posix.c (__gthrw_pragma): Define.
11362
11363 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
11364
11365         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
11366         before declaring inequality.
11367
11368 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11369
11370         * combine.c (recog_for_combine): Log the success or failure of
11371           matching new insn patterns against the machine description in
11372           detailed dumps.
11373
11374 2007-07-03  Revital Eres  <eres@il.ibm.com>
11375
11376         * ddg.c (print_sccs): New function.
11377         (check_sccs): New function.
11378         (create_ddg_all_sccs): Use it.
11379         * ddg.h (print_sccs): Declare.
11380         * modulo-sched.c (sms_order_nodes): Call print_sccs.
11381
11382 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
11383
11384         * targhooks.h (default_mode_for_suffix): New function declaration.
11385         * targhooks.c (default_mode_for_suffix): New default target hook.
11386         * target.h (struct c): New structure in the targetm struct.
11387         (mode_for_suffix): New target hook as part of struct c.
11388         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
11389         default_mode_for_suffix.
11390         (TARGET_C): New define.
11391         * c-lex.c: Include "target.h".
11392         (interpret_float): Use targetm.c.mode_for_suffix to determine
11393         the mode for a given non-standard suffix.
11394         Makefile.in (c-lex.o): Depend on $(TARGET_H).
11395
11396         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
11397         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
11398
11399         * doc/extend.texi (Floating Types): New node.  Document __float80 and
11400         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
11401
11402 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
11403
11404         PR target/32506
11405         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
11406         predicate instead of target_operand.
11407         (divsi3_i1_media, divsi3_media_2): Likewise.
11408
11409 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
11410
11411         * tree.h (alias_sets_might_conflict_p): Rename into
11412         alias_sets_must_conflict_p.
11413         * alias.c (alias_sets_might_conflict_p): Likewise.
11414         (alias_sets_conflict_p): Use it.
11415         (objects_must_conflict_p): Likewise.
11416         * c-common.c (strict_aliasing_warning): Adjust.
11417
11418 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11419
11420         * rtlhooks.c (gen_lowpart_if_possible): Check for
11421         invalid subreg before calling gen_lowpart_SUBREG.
11422
11423 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
11424
11425         * config/darwin9.h: Add copyright notice.
11426         (LINK_COMMAND_SPEC): Add comment.
11427         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
11428         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
11429         DARWIN_LIBSYSTEM_HAS_UNWIND.
11430
11431 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
11432
11433         PR libgomp/32468
11434         * omp-low.c (check_combined_parallel): New function.
11435         (lower_omp_parallel): Call it via walk_stmts, set
11436         OMP_PARALLEL_COMBINED if appropriate.
11437         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
11438         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
11439         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
11440         don't consider it as combined parallel.
11441
11442 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
11443
11444         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
11445         (gcc_tooldir): Likewise.
11446         * configure: Regenerate.
11447         * Makefile.in (libsubdir_to_prefix): New variable, based on the
11448         old configure.ac gcc_tooldir setting.
11449         (prefix_to_exec_prefix): New variable.
11450         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
11451         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
11452
11453 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
11454
11455         Fix PR tree-optimization/32583
11456         Fix PR tree-optimization/32584
11457         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
11458         (phi_translate_set): Use phi_translate directly now.
11459         (make_values_for_stmt): Don't value number RHS if we already know
11460         it is constant.
11461
11462 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
11463             Jim Wilson <wilson@specifix.com>
11464
11465         PR target/31684
11466         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
11467         copy_insn.
11468
11469 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
11470             Richard Sandiford  <richard@codesourcery.com>
11471             Nigel Stephens  <nigel@mips.com>
11472
11473         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
11474         (mips16e_output_save_restore): Declare.
11475         (mips16e_save_restore_pattern_p): Likewise.
11476         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
11477         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
11478         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
11479         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
11480         (BITSET_P): New global macro, extracted from...
11481         (mips_for_each_saved_reg): ...here.
11482         (mips16e_save_restore_info): New struct.
11483         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
11484         (mips16e_save_restore_regs): New variable.
11485         (mips_split_plus, mips16e_find_first_register): New functions.
11486         (mips16e_mask_registers): New function.
11487         (compute_frame_size): Expand the commentary before the function.
11488         Enforce the MIPS16e save and restore register range restrictions.
11489         Pad the general register save area at the low end.
11490         (mips16e_save_restore_reg, mips16e_build_save_restore)
11491         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
11492         (mips16e_output_save_restore, mips16e_collect_propagate_value)
11493         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
11494         New functions.
11495         (mips_expand_prologue, mips_expand_epilogue): Handle
11496         GENERATE_MIPS16E_SAVE_RESTORE.
11497         * config/mips/mips.md (*mips16e_save_restore): New pattern.
11498
11499 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
11500
11501         PR tree-optimization/31966
11502         PR tree-optimization/32533
11503         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
11504         "basic_block" description as its third argument.  Update function
11505         calls to get destination bb from "edge" argument.  Save "cond" into
11506         aux field of the edge.  Update prototype for changed arguments.
11507         (if_convertible_loop_p): Clear aux field of incoming edges if bb
11508         contains phi node.
11509         (find_phi_replacement_condition): Operate on incoming edges, not
11510         on predecessor blocks.  If there is a condition saved in the
11511         incoming edge aux field, AND it with incoming bb predicate.
11512         Return source bb of the first edge.
11513         (clean_predicate_lists): Clean aux field of outgoing node edges.
11514         (tree_if_conversion): Do not initialize cond variable. Move
11515         variable declaration into the loop.
11516         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
11517         initializations of new_stmt, arg0 and arg1 variables.
11518
11519 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
11520
11521         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
11522         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
11523
11524 2007-07-02  Richard Guenther  <rguenther@suse.de>
11525
11526         * tree-ssa.c (useless_type_conversion_p): Document
11527         future intent as defining the middle-end type system.
11528         Re-structure to call langhook last, group by type class,
11529         mark questionable parts.
11530
11531 2007-07-02  Richard Guenther  <rguenther@suse.de>
11532
11533         * tree-flow.h (types_compatible_p): Declare.
11534         * tree-ssa.c (types_compatible_p): New function.
11535         * ipa-type-escape.c (discover_unique_type): Use
11536         types_compatible_p instead of lang_hooks.types_compatible_p.
11537         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
11538         * tree-vn.c (expressions_equal_p): Likewise.
11539         * tree.c (fields_compatible_p): Likewise.
11540         * tree-ssa-dom.c (avail_expr_eq): Likewise.
11541         (cprop_operand): Use useless_type_conversion_p instead of
11542         lang_hooks.types_compatible_p.
11543         * tree-inline.c (setup_one_parameter): Likewise.
11544         (declare_return_variable): Likewise.
11545         * tree-nrv.c (tree_nrv): Likewise.
11546         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
11547         (maybe_fold_offset_to_component_ref): Likewise.
11548         (maybe_fold_offset_to_reference): Likewise.
11549         * tree-ssa-copy.c (may_propagate_copy): Likewise.
11550         (merge_alias_info): Likewise.
11551         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
11552         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
11553         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
11554         * tree-tailcall.c (find_tail_calls): Likewise.
11555         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
11556         * gimplify.c (canonicalize_addr_expr): Likewise.
11557         (fold_indirect_ref_rhs): Likewise.
11558         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
11559         (cpt_same_type): Likewise.
11560         (check_pointer_types_r): Swap parameters to cpt_same_type
11561         where appropriate.
11562         * fold-const.c (fold_convert): Revert fix for PR15988.
11563         * tree-inline.c (setup_one_parameter): Instead fix it here by
11564         using fold_build1 instead of fold_convert and checking for
11565         error_mark_node.  Convert only if the conversion is necessary.
11566
11567 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
11568
11569         * configure.ac: Check for .gnu_attribute on Power.
11570         * configure: Regenerate.
11571         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
11572         attribute for floating-point ABI.
11573
11574 2007-07-02  Ira Rosen  <irar@il.ibm.com>
11575
11576         PR tree-optimization/32230
11577         PR tree-optimization/32477
11578         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
11579         address is a constant.
11580
11581 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
11582
11583         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
11584         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
11585         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
11586         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
11587         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
11588         64-bit targets.  Add support for *-elfoabi*.
11589         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
11590         different settings if $(tm_defines) does not select the EABI.
11591         (MULTILIB_EXCLUSIONS): Define in those circumstances.
11592         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
11593         (MIPS_ARCH_OPTION_SPEC): Likewise.
11594         (MIPS_ISA_LEVEL_SPEC): Likewise.
11595         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
11596         * config/mips/elfoabi.h: New file.
11597
11598 2007-07-02  Richard Guenther  <rguenther@suse.de>
11599
11600         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
11601         (useless_type_conversion_p): ... this.
11602         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
11603         (useless_type_conversion_p): ... this.
11604         * builtins.c (fold_builtin_memory_op): Rename
11605         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
11606         * tree-cfg.c (verify_expr): Likewise.
11607         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
11608         * tree-ssa-ccp.c (ccp_fold): Likewise.
11609         * tree-ssa-copy.c (may_propagate_copy): Likewise.
11610         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
11611         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
11612         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
11613         * tree-ssa-pre.c (eliminate): Likewise.
11614         * tree-ssa.c (delete_tree_ssa): Likewise.
11615         (tree_ssa_useless_type_conversion): Likewise.
11616         * tree.c (build2_stat): Likewise.
11617
11618 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
11619
11620         Fix PR tree-optimization/32571
11621         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
11622         simplifying them.
11623
11624 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
11625
11626         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
11627         and other expected operations explicitly, change default to
11628         gcc_unreachable. 
11629
11630 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
11631
11632         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
11633         PARALLEL.
11634         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
11635         (tls_load_dot_plus_eight): Move the label number into the unspec.
11636         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
11637
11638 2007-07-01  Andreas Schwab  <schwab@suse.de>
11639
11640         * dwarf2out.c (initial_return_save): Define only if used.
11641
11642 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
11643
11644         Unreverting Richard's Revert of:
11645
11646         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
11647
11648         * dce.c (deletable_insn_p_1): New function, split out from...
11649         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
11650         specially, not those inside PARALLELs.  Remove BODY argument
11651         and adjust recursive call accordingly.
11652         (prescan_insns_for_dce): Update call to delete_insn_p.
11653
11654 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
11655             Revital Eres  <eres@il.ibm.com>
11656
11657         * ddg.c (create_ddg_all_sccs): Fix missed
11658         initialization of scc_nodes.
11659
11660 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
11661
11662         PR middle-end/32559
11663         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
11664         X + ~X to 1 only for INTEGRAL_TYPE_P type.
11665
11666 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
11667
11668         * configure.ac: Check for .gnu_attribute on MIPS.
11669         * configure, config.in: Regenerate.
11670         * config/mips/mips.c (mips_file_start): If supported, output
11671         attribute for floating-point ABI.
11672
11673 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
11674
11675         PR target/32433
11676         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
11677         (ffs_cmove): New expander to expand using ctz pattern.
11678         (*ffs_cmove): Remove pattern.
11679         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
11680         (ffsdi2): Expand using ctz pattern.
11681         (*ffs_rex64): Remove pattern.
11682
11683 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11684
11685         PR rtl-optimization/32296
11686         * pa.md (return): Delete pattern.
11687         (return_internal): Remove "(const_int 1)" from pattern.
11688         (epilogue): Use return_internal pattern for trivial returns.
11689         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
11690         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
11691
11692 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
11693
11694         * tree-ssa-pre.c (is_exception_related): New function
11695         (can_value_number_operation): Use it.
11696
11697 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
11698         
11699         Fix PR tree-optimization/32540
11700         Fix PR tree-optimization/31651
11701
11702         * tree-ssa-sccvn.c: New file.
11703
11704         * tree-ssa-sccvn.h: Ditto.
11705         
11706         * tree-vn.c: Include tree-ssa-sccvn.h
11707         (val_expr_paid_d): Removed.
11708         (value_table): Ditto.
11709         (vn_compute): Ditto.
11710         (val_expr_pair_hash): Ditto.
11711         (val_expr_pair_expr_eq): Ditto.
11712         (copy_vuses_from_stmt): Ditto.
11713         (vn_delete): Ditto.
11714         (vn_init): Ditto.
11715         (shared_vuses_from_stmt): Ditto.
11716         (print_creation_to_file): Moved up.
11717         (sort_vuses): Ditto.
11718         (sort_vuses_heap): Ditto.
11719         (set_value_handle): Make non-static.
11720         (make_value_handle): Ditto.
11721         (vn_add): Rewritten to use sccvn lookups.
11722         (vn_add_with_vuses): Ditto.
11723         (vn_lookup): Ditto (and second argument removed).
11724         (vn_lookup_with_vuses): Ditto.
11725         (vn_lookup_or_add): Ditto (and second argument removed);
11726         (vn_lookup_or_add_with_vuses): Ditto.
11727         (vn_lookup_with_stmt): New.
11728         (vn_lookup_or_add_with_stmt): Ditto.
11729         (create_value_handle_for_expr): Ditto.
11730
11731         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
11732         (seen_during_translate): New function.
11733         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
11734         (phi_trans_add): Ditto.
11735         (constant_expr_p): FIELD_DECL is always constant.
11736         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
11737         Use constant_expr_p.
11738         Avoid infinite recursion on mutually valued expressions.
11739         Change callers of vn_lookup_or_add.
11740         (phi_translate): New function.
11741         (compute_antic_safe): Allow phi nodes.
11742         (create_component_ref_by_pieces): Update for FIELD_DECL change.
11743         (find_or_generate_expression): Rewrite slightly.
11744         (create_expression_by_pieces): Updated for vn_lookup_or_add
11745         change.
11746         Update VN_INFO for new names.
11747         (insert_into_preds_of_block): Update for new names.
11748         (add_to_exp_gen): New function.
11749         (add_to_sets): Use vn_lookup_or_add_with_stmt.
11750         (find_existing_value_expr): Rewrite to changed vn_lookup.
11751         (create_value_expr_from): Ditto, and use add_to_exp_gen.
11752         (try_look_through_load): Removed.
11753         (try_combine_conversion): Ditto.
11754         (get_sccvn_value): New function.
11755         (make_values_for_phi): Ditto.
11756         (make_values_for_stmt): Ditto.
11757         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
11758         SCCVN.
11759         (init_pre): Update for SCCVN changes.
11760         (fini_pre): Ditto.
11761         (execute_pre): Ditto.
11762
11763         * tree-flow.h (make_value_handle): Declare.
11764         (set_value_handle): Ditto.
11765         (sort_vuses_heap): Ditto.
11766         (vn_lookup_or_add_with_stmt): Ditto.
11767         (vn_lookup_with_stmt): Ditto.
11768         (vn_compute): Remove.
11769         (vn_init): Ditto.
11770         (vn_delete): Ditto.
11771         (vn_lookup): Update arguments.
11772
11773         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
11774         (tree-vn.o): Ditto.
11775         (tree-ssa-sccvn.o): New.
11776         (OBJS-common): Add tree-ssa-sccvn.o
11777         
11778 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11779
11780         PR c/4076
11781         * c-typeck.c (build_external_ref): Don't mark as used if called
11782         from itself.
11783         * calls.c (rtx_for_function_call): Likewise.
11784         
11785 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
11786
11787         Revert:
11788
11789         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
11790
11791         * dce.c (deletable_insn_p_1): New function, split out from...
11792         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
11793         specially, not those inside PARALLELs.  Remove BODY argument
11794         and adjust recursive call accordingly.
11795         (prescan_insns_for_dce): Update call to delete_insn_p.
11796
11797 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
11798
11799         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
11800         (try_combine): Move potential calls to undo_all() so they happen
11801         before we commit to using the combined insns.
11802
11803 2006-06-30  Jan Hubicka  <jh@suse.cz>
11804
11805         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
11806         code.
11807
11808 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
11809
11810         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
11811         (cgraph_remove_unreachable_nodes): Likewise.
11812         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
11813         * ipa-inline.c (update_caller_keys): Cast according to the coding
11814         conventions.
11815         (cgraph_decide_recursive_inlining): Likewise.
11816         (cgraph_decide_inlining_of_small_function): Likewise.
11817         (try_inline): Likewise.
11818         (cgraph_decide_inlining_incrementally): Likewise.
11819         * ipa-pure-const.c (get_function_state): Likewise.
11820         (scan_function): Likewise.
11821         (analyze_function): Likewise.
11822         (static_execute): Likewise.
11823         * ipa-reference.c (scan_for_static_refs): Likewise.
11824         (merge_callee_local_info): Likewise.
11825         (analyze_function): Use type safe memory macros.
11826         (static_execute): Likewise. Cast according to the coding conventions.
11827         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
11828         conventions.
11829         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
11830         names.
11831         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
11832         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
11833         variable names.
11834
11835 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11836
11837         PR middle-end/30024
11838         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
11839         for complex modes (both int and real).
11840
11841 2007-06-29  Jan Hubicka  <jh@suse.cz>
11842
11843         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
11844
11845 2007-06-29  Jan Hubicka  <jh@suse.cz>
11846
11847         PR middle-end/32372
11848         * cse.c (cse_insn): Avoid invalid sharing in between register note and
11849         the insn pattern.
11850
11851 2007-06-29  Anatoly Sokolov <aesok@post.ru>
11852
11853         PR target/32335
11854         * config/avr/avr.c: Include dataflow header file.
11855         (expand_prologue): Adjust for prologue insn change.
11856         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
11857         inside a insn.
11858
11859 2007-06-29  Richard Guenther  <rguenther@suse.de>
11860
11861         PR middle-end/32493
11862         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
11863         during type verification.
11864
11865 2007-06-29  Jan Hubicka  <jh@suse.cz>
11866
11867         * recog.c (validate_change_rtx_1): Unshare TO argument.
11868
11869 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
11870
11871         PR tree-optimization/24659
11872         * tree-vect-transform.c (vectorizable_call): Handle
11873         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
11874
11875         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
11876         * config/i386/i386.c (enum ix86_builtins)
11877         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
11878         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
11879         description.
11880         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
11881         const using def_builtin_const.
11882         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
11883         input operands in the same modes as the result.
11884         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
11885
11886 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
11887
11888         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
11889         (df_set_dead_notes_for_mw): Likewise.
11890
11891 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
11892
11893         * c-common.c (pointer_int_sum): Do the negation in sizetype.
11894
11895 2007-06-28  DJ Delorie  <dj@redhat.com>
11896
11897         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
11898
11899 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
11900
11901         * doc/invoke.texi (C++ Dialect Options): Document
11902         fvisibility-ms-compat.
11903         * c.opt (fvisibility-ms-compat): New.
11904
11905 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11906
11907         PR tree-opt/32417
11908         * tree-affine.c (aff_combination_add_elt): Handle
11909         pointer addition specially.
11910
11911 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
11912
11913         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
11914         decl is non-external for AIX ABI.
11915
11916 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
11917
11918         * config/rs6000/predicates.md (current_file_function_operand):
11919         Ensure the symbol is non-external for AIX ABI.
11920
11921 2007-06-28  Nick Clifton  <nickc@redhat.com>
11922
11923         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
11924         (fdce, fdse, fpredictive-commoning): Likewise.
11925
11926 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
11927
11928         PR other/31400
11929         * gcc.c (process_command): Recognize the new -static-libgfortran
11930         option.
11931
11932 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11933
11934         PR target/32418
11935         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
11936         Use a call clobbered hard reg instead of a pseudo reg.
11937
11938 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11939
11940         * config/sh/sh.md (load_gbr): Use correct operand constraint.
11941
11942 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11943
11944         PR target/32479
11945         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
11946         REG_LIBCALL and REG_RETVAL notes.
11947         (divsi3, mulsi3): Likewise.
11948         (mulhisi3): Likewise.  Use emit_libcall_block.
11949         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
11950
11951 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
11952
11953         PR rtl-optimization/32481
11954         * combine.c (adjust_for_new_dest): Rescan the changed insn.
11955
11956 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
11957
11958         * dce.c (deletable_insn_p_1): New function, split out from...
11959         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
11960         specially, not those inside PARALLELs.  Remove BODY argument
11961         and adjust recursive call accordingly.
11962         (prescan_insns_for_dce): Update call to delete_insn_p.
11963
11964 2007-06-27  Richard Guenther  <rguenther@suse.de>
11965
11966         PR middle-end/32492
11967         * tree.h (fold_convertible_p): Declare.
11968         * fold-const.c (fold_convertible_p): New function.
11969         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
11970         instead of lang_hooks.types_compatible_p.
11971
11972 2007-06-26  Jan Hubicka  <jh@suse.cz>
11973
11974         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
11975         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
11976         early use validate_unshare_change.
11977         (reload_combine): Likewise.
11978         * recog.c (change_t): New field unshare.
11979         (validate_change_1): Rename from validate_change; add argument unshare.
11980         (validate_change): Turn into wrapper of validate_change_1; update
11981         prototype for bools.
11982         (validate_unshare_change): New.
11983         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
11984         calls of df_insn_rescan.
11985         * recog.h (validate_change): Replace ints by bools.
11986         (validate_unshare_change): Declare.
11987
11988 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
11989
11990         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
11991         
11992 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
11993
11994         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
11995
11996 2007-06-25  Jan Hubicka  <jh@suse.cz>
11997
11998         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
11999         uninlinable call.
12000         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
12001         cgraph_decide_inlining_incrementally): Move uninlinability checks to
12002         places other call site specific checks are performed.
12003
12004 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12005
12006         PR tree-opt/32421
12007         * tree-vect-transform.c (vectorizable_operation): Convert
12008         POINTER_PLUS_EXPR over to PLUS_EXPR.
12009
12010 2007-06-25  Chao-ying Fu  <fu@mips.com>
12011
12012         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
12013         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
12014         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
12015         Document GET_MODE_IBIT, and GET_MODE_FBIT.
12016
12017         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
12018         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
12019         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
12020         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
12021         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
12022         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
12023         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
12024         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
12025         ALL_FIXED_POINT_MODE_P): New define.
12026         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12027         MODE_UACCUM.
12028         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
12029
12030         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
12031         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
12032         MODE_VECTOR_UACCUM): New mode classes.
12033
12034         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
12035         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
12036         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
12037         USA, UDA, and UTA.
12038
12039         * genmodes.c (struct mode_data): Add ibit and fbit fields.
12040         (blank_mode): Initialize ibit and fbit.
12041         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
12042         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12043         MODE_UACCUM.
12044         (new_adjust): Change required_class to required_class_from and
12045         required_class_to for testing within a range.
12046         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12047         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
12048         MODE_VECTOR_UACCUM.
12049         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
12050         (make_fixed_point_mode): New.
12051         (_ADD_ADJUST): Change C to C1 and C2.
12052         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
12053         use a range for machine classes.
12054         (ADJUST_IBIT, ADJUST_FBIT): New.
12055         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
12056         CONST_MODE_FBIT.
12057         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
12058         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
12059         Emit adjustment for ibit and fbit.
12060         (emit_mode_ibit, emit_mode_fbit): New.
12061         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
12062
12063 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
12064
12065         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
12066         as the source of the set.
12067
12068 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
12069
12070         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
12071         FP_REGNO_P): Use IN_RANGE.
12072         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
12073         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
12074         (DATA_REG_P): Use DATA_REGNO_P.
12075         (FP_REG_P): Use FP_REGNO_P.
12076         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
12077         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
12078         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
12079
12080 2007-06-24  Jan Hubicka  <jh@suse.cz>
12081
12082         PR middle-end/30563
12083         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
12084
12085 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
12086
12087         PR middle-end/32461
12088         * fold-const.c (fold_binary): Strip nops of operand 0
12089         of BIT_NOT_EXPR before calling operand_equal_p.
12090         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
12091         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
12092
12093 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
12094
12095         * doc/extend.texi: Document that dllimport and dllexport imply
12096         default visibility.
12097         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
12098         imported or exported declaration, including type declarations.
12099         * c-common.c (handle_visibility_attribute): Check for conflicts
12100         with dllimport/dllexport.
12101         (c_determine_visibility): Handle dllimport/dllexport as an
12102         explicit visibility atttribute.
12103
12104 2007-06-23  Richard Guenther  <rguenther@suse.de>
12105
12106         PR tree-optimization/16876
12107         PR middle-end/29478
12108         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
12109         for CALL_EXPRs.
12110         * tree-inline.c (initialize_inlined_parameters): Do not call
12111         lang_hooks.tree_inlining.convert_parm_for_inlining.
12112         * cgraphbuild.c (initialize_inline_failed): Set inline failed
12113         reason for mismatched types.
12114         * gimplify.c (gimplify_call_expr): Verify the call expression
12115         arguments match the called function type signature.  Otherwise
12116         mark the call expression to be not considered for inlining
12117         using CALL_CANNOT_INLINE_P flag.
12118         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
12119         edges call expression.
12120         (cgraph_decide_inlining_of_small_function): Likewise.
12121         (cgraph_decide_inlining): Likewise.
12122         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
12123         Remove define.
12124         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
12125         * c-typeck.c (c_convert_parm_for_inlining): Remove.
12126         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
12127         Remove declaration.
12128         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
12129         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
12130         Remove.
12131         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
12132         convert_parm_for_inlining member.
12133
12134 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
12135
12136         PR target/31152
12137         * arm.md (negscc): Match the correct operand for optimized LT0 test.
12138         Remove optimization for GT.
12139
12140 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
12141
12142         PR middle-end/32437
12143         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
12144         is a PARALLEL.
12145         (prescan_insns_for_dce): Add extra parameter.
12146         
12147 2007-06-23  Jan Hubicka  <jh@suse.cz>
12148
12149         PR middle-end/31541
12150         * gimplify.c (mark_addressable): New function.
12151         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
12152
12153 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12154
12155         PR middle-end/32374
12156         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
12157
12158 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12159
12160         PR target/32413
12161         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
12162         moves between MMX/SSE registers to at least 8 units to prevent
12163         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
12164
12165 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12166
12167         * config/i386/i386.c (override_options): Correct x86_sahf
12168         setting condition.
12169
12170 2007-06-21  David Daney  <ddaney@avtrex.com>
12171
12172         PR target/32406
12173         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
12174         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
12175         (exception_receiver): Renamed to ...
12176         (nonlocal_goto_receiver): ... this.
12177
12178 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
12179
12180         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
12181         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
12182         partial register accesses.
12183
12184 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
12185
12186         * fold-const.c (debug_fold_checksum): Move it under
12187         ENABLE_FOLD_CHECKING.
12188
12189 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
12190
12191         PR middle-end/20623
12192         * tree.h (debug_fold_checksum): Declared.
12193         * fold-const.c (build_fold_addr_expr_with_type_1): New.
12194         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
12195         build_fold_addr_expr_with_type_1.
12196         (fold_addr_expr, debug_fold_checksum): New.
12197         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
12198         (fold_unary, fold_comparison, split_address_to_core_and_offset):
12199         Use fold_addr_expr.
12200         
12201 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
12202
12203         PR tree-optimization/19590
12204         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
12205         of scev is a constant.
12206
12207 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
12208
12209         * df-problems.c (df_note_bb_compute): Made computation of live
12210         info consistent with df_lr.
12211
12212 2007-06-21  Richard Guenther  <rguenther@suse.de>
12213
12214         PR tree-optimization/32453
12215         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
12216         for pointer anti-range.
12217
12218 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
12219
12220         * config/i386/i386.c (processor_target_table): Increase maximum
12221         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
12222         default 64bit.
12223
12224         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
12225         byte alignment if > 8 byte alignment is preferred.
12226         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
12227
12228 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
12229
12230         PR tree-optimization/31866
12231         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
12232         if ASM_EXPR's input is not a SSA_NAME.
12233
12234         PR middle-end/32362
12235         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
12236         but decl is a global var, instead return decl.
12237         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
12238         even for is_global_var decls, if they are private in some outer
12239         context.
12240
12241 2007-06-21  Richard Guenther  <rguenther@suse.de>
12242
12243         PR tree-optimization/32451
12244         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
12245
12246 2007-06-21  Christian Bruel  <christian.bruel@st.com>
12247
12248         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
12249         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
12250         (push_regs): Changed saving order or banked registers.
12251         (sh_expand_epilogue): Likewise.
12252         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
12253         (FIRST_BANKED_REG): Likewise.
12254         (LAST_BANKED_REG): Likewise.
12255         * config/sh/sh.md (banked) New attribute.
12256         (in_delay_slot): Check banked attribute.
12257         
12258 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
12259
12260         PR tree-optimization/32075
12261         * tree-data-ref.c (subscript_dependence_tester_1, 
12262         analyze_miv_subscript, analyze_overlapping_iterations,
12263         add_distance_for_zero_overlaps, build_classic_dist_vector,
12264         subscript_dependence_tester_1, analyze_overlapping_iterations,
12265         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
12266         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
12267         to evolution_function_is_affine_multivariate_p.
12268
12269 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
12270
12271         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
12272
12273 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12274
12275         PR target/32335
12276         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
12277         for TARGET_A16.
12278         * config/m32c/prologue.md (epilogue_exitd_16): New.
12279         (epilogue_reit_16): New.
12280         (epilogue_exitd): Rename to epilogue_exitd_24.
12281         (epilogue_reit): Rename to epilogue_reit_24.
12282
12283 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
12284             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12285
12286         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
12287         New counters.
12288         * haifa-sched.c (queue_to_ready): Don't requeue next insn
12289         if dbg_cnt (sched_insn) reaches the limit.
12290         (choose_ready): New parameter INSN_PTR and new return value.
12291         (schedule_block): Handle dbg_cnt (sched_insn). Handle
12292         the new return value from choose_ready.
12293         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
12294         (rest_of_handle_global_alloc): New global_alloc_at_func.
12295
12296 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
12297
12298         PR tree-optimization/25737
12299         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
12300         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
12301         * tree-flow.h (struct fieldoff): Add new field alias_set.
12302         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
12303         argument addressable_type.  Set alias_set of fieldoff.
12304         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
12305         (create_overlap_variables_for): Pass alias_set from fieldoff to
12306         create_sft.
12307         * alias.c (get_alias_set): Use alias_set from SFT if set.
12308
12309 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
12310
12311         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
12312         of a variable as an unsigned HOST_WIDE_INT integer.
12313
12314 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
12315
12316         PR rtl-optimization/32405
12317         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
12318
12319 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
12320
12321         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
12322
12323         PR middle-end/31959
12324         * builtins.c: Include diagnostic.h.
12325         (expand_builtin_expect): Make gcc_assert more permissive.
12326         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
12327
12328         PR inline-asm/32109
12329         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
12330         and !allows_mem.
12331
12332         PR middle-end/32285
12333         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
12334         if ACCUMULATE_OUTGOING_ARGS.
12335
12336 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12337
12338         * config/m68hc11/m68hc11.c: Include dataflow header file.
12339         (m68hc11_reorg): Port to dataflow.
12340
12341 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
12342
12343         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
12344         (struct df_problem.free_blocks_on_set_blocks): New field.
12345         (struct dataflow.optional_p): New field.
12346         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
12347         (df_live_set_all_dirty): New function.
12348         * df-scan.c (df_scan_alloc): Initialize optional_p.
12349         (problem_SCAN): Initialize free_blocks_on_set_blocks.
12350         * df-core.c (df_set_blocks): Removed use of
12351         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
12352         df_problem.free_blocks_on_set_blocks to determine which blocks are
12353         recycled.
12354         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
12355         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
12356         uses dataflow.optional_p to determine if problem should be
12357         deleted.
12358         (rest_of_handle_df_initialize): Only start live problem if 
12359         -02 or above.
12360         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
12361         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
12362         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
12363         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
12364         problem_NOTE): Initialize free_blocks_on_set_blocks.
12365         (df_lr_bb_local_compute): Recompute luids if df_live problem is
12366         not active.
12367         (df_live_set_all_dirty, df_note_alloc): New function.
12368         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
12369         df_get_live_*.
12370         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
12371         * postreload.c (reload_combine): Ditto.
12372         * cse.c (cse_extended_basic_block): Ditto.
12373         * regmove.c (mark_flags_life_zones): Ditto.
12374         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
12375         erase_matching_seqs): Ditto.
12376         * bt-load.c (compute_defs_uses_and_gen): Ditto.
12377         * integrate (allocate_initial_values): Ditto.
12378         * combine.c (reg_dead_at_p): Ditto.
12379         * resource.c (mark_target_live_regs): Ditto.
12380         * sched-rgn.c (check_live_1, update_live_1): Ditto.
12381         * config/sh/sh.c (find_r0_life_regions): Ditto.
12382         * global.c (rest_of_handle_global_alloc): Only add back df_live
12383         for -O > 1.
12384         * local-alloc.c (rest_of_handle_local_alloc): Only remove
12385         df_live for -O > 1.
12386         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
12387         df_get_live_*.
12388         (if_convert): Make sure df_live is there at -O == 1.
12389         (pass_if_after_combine): Cleanup flags.
12390         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
12391         is there at -O == 1.
12392         
12393 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
12394
12395         * config/arm/arm.c (arm_get_frame_offsets): Set
12396         offsets->locals_base to avoid negative stack size.
12397         (thumb1_expand_prologue): Assert on negative stack size.
12398
12399 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
12400
12401         PR tree-optimization/32367
12402         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
12403         of the chrec has no evolution in that loop.
12404         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
12405
12406 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
12407
12408         * config/xtensa/xtensa.c: Include "df.h".
12409         (xtensa_builtin_saveregs): Use adjust_address instead of
12410         change_address.
12411         (xtensa_va_start): Invoke make_tree with sizetype for
12412         expand_builtin_saveregs and then convert the result to a pointer.
12413         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
12414         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
12415         Subtract argument size from index value as integers and then use
12416         POINTER_PLUS_EXPR to add the result to the array address.
12417         
12418 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12419
12420         PR target/32335
12421         * config/m32c/m32c.c: Include dataflow header file.
12422         (m32c_emit_prologue): Adjust for prologue insn change.
12423         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
12424         once inside a PARALLEL. Assume frame size passed in operand 0
12425         includes space to save the fb register.
12426         (prologue_enter_24): Likewise.
12427         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
12428
12429 2007-06-19  David Daney  <ddaney@avtrex.com
12430
12431         PR target/32313
12432         * config/mips/mips.md (cprestore): Mark $gp as used.
12433
12434 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12435
12436         PR target/32369
12437         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
12438         (frv_ifcvt_modify_insn): Likewise.
12439
12440 2007-06-19  Richard Guenther  <rguenther@suse.de>
12441
12442         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
12443         only handle positive offsets that fit in a HOST_WIDE_INT.
12444
12445 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
12446
12447         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
12448         result of rsqrt insn for zero input argument to avoid NaN.
12449
12450 2007-06-19  Richard Guenther  <rguenther@suse.de>
12451
12452         PR middle-end/31950
12453         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
12454
12455 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
12456
12457         PR tree-optimization/32353
12458         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
12459
12460 2007-06-19  Nick Clifton  <nickc@redhat.com>
12461
12462         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
12463
12464 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
12465
12466         PR target/32389
12467         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
12468         * config/i386/i386.c (assign_386_stack_local): Assert that
12469         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
12470         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
12471         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
12472         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
12473
12474 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
12475
12476         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
12477
12478 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
12479
12480         PR rtl-optimization/32321
12481         * gcse.c (replace_store_insn): Update the note before
12482         calling emit_insn_after.
12483
12484 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
12485
12486         PR middle-end/32355
12487         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
12488         cse_main.
12489         * df-problems.c (df_note_bb_compute): Fix dumping info.
12490         
12491 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
12492
12493         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
12494         insn with emit_jump_insn.
12495
12496 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
12497
12498         PR tree-optimization/32383
12499         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
12500         * targhooks.h (default_builtin_reciprocal): Update prototype.
12501         * target.h (struct gcc_target): Update builtin_reciprocal.
12502         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
12503         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
12504         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
12505         when fndecl is in BUILT_IN_MD class.
12506         (execute_convert_to_rsqrt): Ditto.
12507
12508         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
12509         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
12510         Convert BUILT_IN_SQRTF code only  when md_fn is false.
12511
12512 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
12513
12514         * bt-load.c (move_btr_def): Fix the order of arguments
12515         to validate_replace_rtx.
12516
12517 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
12518
12519         * config/m68k/m68k-devices.def: Add 54450..54455.
12520
12521 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
12522
12523         PR rtl-optimization/32366
12524         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
12525         FLOAT_EXTEND]: Prevent non-scalar modes from entering
12526         significand_size.
12527
12528 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
12529
12530         PR middle-end/32349
12531         * modulo-sched (generate_reg_moves): Added rescan parameter and if
12532         this is true, rescan insn being modified.
12533         (sms_schedule): Added rescan parameter.
12534         (rest_of_handle_sms): Moved freeing of dominance info to before
12535         getting out of cfg_layout.
12536         
12537 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
12538
12539         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
12540         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
12541         appropriate.
12542
12543         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
12544         FL_CF_EMAC from the entry for isac.
12545
12546         * config/m68k/predicates.md (const_call_operand): Adjust comment.
12547         (const_sibcall_operand): New.
12548         (sibcall_operand): Use it.
12549         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
12550         (m68k_isas): ISAC does not imply FPU or EMAC.
12551         (override_options): Add ISA_C logic for symbolic jump & call.
12552
12553 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
12554
12555         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
12556         return mode from the builtin itself.
12557         (sparc_fold_builtin): Fix cast of zero constant.
12558
12559 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
12560
12561         * targhooks.c (default_builtin_reciprocal): New default target hook.
12562         * targhooks.h (default_builtin_reciprocal): Add prototype.
12563         * hooks.c (hook_tree_tree_bool_null): Remove hook.
12564         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
12565         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
12566         default_builtin_reciprocal.
12567
12568 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
12569
12570         PR middle-end/31723
12571         * hooks.c (hook_tree_tree_bool_null): New hook.
12572         * hooks.h (hook_tree_tree_bool_null): Add prototype.
12573         * tree-pass.h (pass_convert_to_rsqrt): Declare.
12574         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
12575         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
12576         and convert it to reciprocal a*rfunc(b).
12577         (execute_convert_to_rsqrt): New function.
12578         (gate_convert_to_rsqrt): New function.
12579         (pass_convert_to_rsqrt): New pass definition.
12580         * target.h (struct gcc_target): Add builtin_reciprocal.
12581         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
12582         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
12583         TARGET_BUILTIN_RECIPROCAL.
12584         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
12585
12586         * config/i386/i386.h (TARGET_RECIP): New define.
12587         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
12588         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
12589         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
12590         and not optimizing for size.
12591         (*rcpsf2_sse): New insn pattern.
12592         (*rsqrtsf2_sse): Ditto.
12593         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
12594         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
12595         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
12596         and not optimizing for size.
12597         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
12598         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
12599         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
12600         and not optimizing for size.
12601         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
12602         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
12603         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
12604         and not optimizing for size.
12605         (*sse_rsqrtv4sf2): Do not export.
12606         (sqrtv4sf2): Ditto.
12607         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
12608         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
12609         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
12610         and not optimizing for size.
12611         (sqrtv4sf2): Ditto.
12612         * config/i386/i386.opt (mrecip): New option.
12613         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
12614         (ix86_emit_swsqrtsf): Ditto.
12615         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
12616         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
12617         builtin definition.
12618         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
12619         ix86_expand_unop1_builtin.
12620         (ix86_emit_swdivsf): New function.
12621         (ix86_emit_swsqrtsf): Ditto.
12622         (ix86_builtin_reciprocal): New function.
12623         (TARGET_BUILTIN_RECIPROCAL): Use it.
12624         (ix86_vectorize_builtin_conversion): Rename from
12625         ix86_builtin_conversion.
12626         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
12627         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
12628         "i386 and x86_64 Options" section.
12629         (Intel 386 and AMD x86_64 Options): Document -mrecip.
12630
12631 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
12632             Zdenek Dvorak <dvorakz@suse.cz>
12633             Richard Guenther  <rguenther@suse.de>
12634             Kaz Kojima  <kkojima@gcc.gnu.org>
12635
12636         * tree-vrp.c (compare_values_warnv): Convert val2 to
12637         the type of val1.
12638         (extract_range_from_assert): Create
12639         POINTER_PLUS_EXPR for pointer types.
12640         (extract_range_from_binary_expr): Handle
12641         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
12642         for pointer types.
12643         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
12644         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
12645         POINTER_PLUS_EXPR as PLUS_EXPR.
12646         (number_of_iterations_lt_to_ne):
12647         For pointer types, use sizetype when
12648         creating MINUS_EXPR/PLUS_EXPRs.
12649         (assert_loop_rolls_lt): For pointer types, use sizetype when
12650         creating MINUS_EXPR/PLUS_EXPRs.
12651         (number_of_iterations_le): Likewise.
12652         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
12653         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
12654         like PLUS_EXPR and MINUS_EXPR.
12655         * tree-pretty-print.c (dump_generic_node): Handle
12656         POINTER_PLUS_EXPR.
12657         (op_prio): Likewise.
12658         (op_symbol_1): Likewise.
12659         * optabs.c (optab_for_tree_code): Likewise.
12660         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
12661         specially.
12662         * tree-tailcall.c (process_assignment): Mention
12663         POINTER_PLUS_EXPR in a TODO comment.
12664         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
12665         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
12666         not used with a pointer and an integer type.
12667         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
12668         increment using chrec_convert_rhs instead of chrec_convert.
12669         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
12670         PLUS_EXPR except for the right hand side's type will be
12671         sizetype.
12672         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
12673         (fold_used_pointer_cast): Kill.
12674         (pointer_offset_p): Kill.
12675         (fold_used_pointer): Kill.
12676         (pointer_used_p): Kill.
12677         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
12678         call fold_used_pointer.
12679         (instantiate_parameters_1): Convert the increment
12680         using chrec_convert_rhs instead of chrec_convert.
12681         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
12682         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
12683         instead of PLUS_EXPR.
12684         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
12685         PLUS_EXPR for pointers.
12686         (std_gimplify_va_arg_expr): Likewise.
12687         (fold_builtin_memory_op): Likewise.
12688         (fold_builtin_strstr): Likewise.
12689         (fold_builtin_strchr): Likewise.
12690         (fold_builtin_strrchr): Likewise.
12691         (fold_builtin_strpbrk): Likewise.
12692         (expand_builtin_memory_chk): Likewise.
12693         (fold_builtin_memory_chk): Likewise.
12694         (std_expand_builtin_va_start): Use
12695         sizetype for the call to make_tree and then convert
12696         to the pointer type.
12697         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
12698         instead of PLUS_EXPR for adding to a pointer.
12699         (std_gimplify_va_arg_expr): Use fold_build2 for
12700         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
12701         the operands to sizetype first and then cast the BIT_AND_EXPR
12702         back to the pointer type.
12703         * fold-const.c (build_range_check): Handle pointer types
12704         specially.
12705         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
12706         of PLUS_EXPR's. Make sure the offset is converted to
12707         sizetype.
12708         (try_move_mult_to_index): Strip the NOPs from the offset.
12709         Remove code argument and replace all uses with PLUS_EXPR.
12710         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
12711         specially. Don't use a pointer type for MINUS_EXPR.
12712         (fold_unary): Handle for (T1)(X op Y),
12713         only p+ as that is the only as that can be handled for
12714         binary operators now.
12715         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
12716         POINTER_PLUS_EXPR.
12717         <case PLUS_EXPR>: Add folding of PTR+INT into
12718         PTR p+ INT.
12719         Don't call try_move_mult_to_index.
12720         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
12721         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
12722         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
12723         Don't call try_move_mult_to_index.
12724         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
12725         (tree_expr_nonzero_p): Likewise.
12726         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
12727         of PLUS_EXPR for the complex expression folding.
12728         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
12729         first chrec is a pointer type, then the second should
12730         be sizetype and not the first's type.
12731         For POINTER_PLUS_EXPR, use a different right hand side type.
12732         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
12733         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
12734         different right hand side type.
12735         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
12736         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
12737         instead of PLUS_EXPR.
12738         When either operand is zero, convert the other operand.
12739         (chrec_apply): Use chrec_convert_rhs
12740         on the argument x instead of chrec_convert.
12741         (reset_evolution_in_loop): For pointer types, the new_evol
12742         should be sizetype.
12743         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
12744         different right hand side type.
12745         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
12746         (chrec_convert_rhs): New function.
12747         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
12748         different right hand side type.
12749         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
12750         * tree-chrec.h (chrec_convert_rhs): New prototype.
12751         (build_polynomial_chrec): For pointer types, the right hand
12752         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
12753         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
12754         Remove subtraction case as it is always addition now.
12755         Make sure the offset is converted to sizetype.
12756         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
12757         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
12758         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
12759         PLUS_EXPR in pointer type.
12760         Handle POINTER_PLUS_EXPR.
12761         (tree_to_aff_combination): Likewise.
12762         (force_expr_to_var_cost): Likewise.
12763         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
12764         instead of PLUS_EXPR for pointers.
12765         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
12766         instead of PLUS_EXPR of pointer types.
12767         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
12768         as PLUS_EXPR.
12769         (check_va_list_escapes): Likewise.
12770         (check_all_va_list_escapes): Likewise.
12771         * dwarf2out.c (loc_descriptor_from_tree_1):
12772         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
12773         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
12774         (string_constant): Likewise.
12775         * tree-ssa-address.c (tree_mem_ref_addr): When adding
12776         the offset to the base, use POINTER_PLUS_EXPR.
12777         (add_to_parts): Convert the index to sizetype.
12778         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
12779         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
12780         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
12781         Offset only holds something for PLUS_EXPR.
12782         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
12783         a PLUS_EXPR.
12784         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
12785         and not PLUS_EXPR.
12786         (analyze_accesses_for_modify_stmt): Likewise.
12787         Remove comment about the type being integral type as it is
12788         wrong now.
12789         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
12790         PLUS_EXPR.
12791         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
12792         and not PLUS_EXPR.
12793         Correct the type which the artimentic is done in (is now
12794         sizetype).
12795         Reindent one loop.
12796         * tree-data-ref.c (split_constant_offset): Handle
12797         POINTER_PLUS_EXPR
12798         * tree-affine.c (tree_to_aff_combination): Likewise.
12799         * c-typeck.c (build_unary_op): For pointers create the increment
12800         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
12801         for pointers.
12802         * gimplify.c (gimplify_self_mod_expr): Create a
12803         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
12804         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
12805         * tree.def (POINTER_PLUS_EXPR): New tree code.
12806         * tree-predcom.c (ref_at_iteration): If we have a pointer
12807         type do the multiplication in sizetype.
12808         * tree-mudflap.c (mf_xform_derefs_1): Create a
12809         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
12810         * tree-ssa-forwprop.c 
12811         (forward_propagate_addr_into_variable_array_index):
12812         Don't expect there to be a cast for the index as that
12813         does not exist anymore.
12814         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
12815         instead of PLUS_EXPR.
12816         Don't check for the first operand of the POINTER_PLUS_EXPR
12817         was the index as it cannot be.
12818         Call forward_propagate_addr_into_variable_array_index with
12819         the SSA_NAME instead of the statement.
12820         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
12821         (compare_constant): Likewise.
12822         (copy_constant): Likewise.
12823         (compute_reloc_for_constant): Likewise.
12824         (output_addressed_constants): Likewise.
12825         (initializer_constant_valid_p): Likewise.
12826         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
12827         Convert the MIN/MAX of the inner type to the outer
12828         type before comparing them.
12829         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
12830         POINTER_PLUS_EXPR instead of PLUS_EXPR.
12831         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
12832         of PLUS_EXPR for pointers.
12833         * tree-inline.c (estimate_num_insns_1): Handle
12834         POINTER_PLUS_EXPR.
12835         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
12836         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
12837         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
12838         instead of PLUS_EXPR for the pointer increment statement.
12839         (vect_update_ivs_after_vectorizer): For pointer types, create
12840         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
12841         MULT_EXPR in sizetype.
12842         (vect_gen_niters_for_prolog_loop): Add a cast when creating
12843         byte_misalign.
12844         * tree-object-size.c (plus_expr_object_size): Handle
12845         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
12846         code which is trying to figure out which side is a pointer and 
12847         is the index.
12848         (check_for_plus_in_loops_1): Likewise.
12849         (check_for_plus_in_loops): Likewise.
12850         * c-common.c (pointer_int_sum): Create a
12851         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
12852         * tree-ssa-structalias.c (handle_ptr_arith): Handle
12853         only POINTER_PLUS_EXPR.  Removing all the extra
12854         code which is trying to figure out which side is a pointer and 
12855         is the index.
12856         * tree-cfg.c (verify_expr): Add extra checking for pointers and
12857         PLUS_EXPR and MINUS_EXPR.
12858         Also add checking to make sure the operands of POINTER_PLUS_EXPR
12859         are correct.
12860         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
12861         with make_tree, instead of a pointer type.
12862         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
12863         for pointers instead of PLUS_EXPR.
12864         (s390_gimplify_va_arg): Likewise.
12865         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
12866         instead of PLUS_EXPR when doing addition on pointer
12867         types.  Use sizetype for the second operand.
12868         (spu_gimplify_va_arg_expr): Likewise.
12869         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
12870         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
12871         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
12872         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
12873         for the pointer addition and also use size_int/sizetype
12874         for the offset.
12875         (ix86_gimplify_va_arg): Likewise.
12876         Perform BIT_AND_EXPR on sizetype arguments.
12877         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
12878         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
12879         for the pointer additions and also use size_int for the offsets.
12880         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
12881         additions and also use size_int for the offsets.  Perform
12882         BIT_AND_EXPR on sizetype arguments.
12883         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
12884         POINTER_PLUS_EXPR for pointers and create the
12885         BIT_AND_EXPR in sizetype.
12886         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
12887         instead of PLUS_EXPR for pointer addition.
12888         (rs6000_va_start): Likewise.
12889         Also use sizetype for the offset.
12890         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
12891         as PLUS_EXPR/MINUS_EXPR.
12892         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
12893         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
12894         Don't use BIT_AND_EXPR on a pointer type, convert the
12895         expression to sizetype first.
12896         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
12897         for pointers.
12898         (mips_gimplify_va_arg_expr): Likewise.
12899         Don't create BIT_AND_EXPR in a pointer type.
12900
12901 2007-06-15  Eric Christopher  <echristo@apple.com>
12902
12903         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
12904         (x86_64-*-darwin*): Ditto.
12905         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
12906         for above.
12907
12908 2007-06-15  Matthew Wilcox <matthew@wil.cx>
12909
12910         * doc/extend.texi: Document behavior of __attribute__((aligned))
12911         on typedefs.
12912
12913 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
12914
12915         * rtlanal.c (note_stores): Improve documentation.
12916
12917 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
12918
12919         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
12920         LOCAL_LABEL_PREFIX): Delete.
12921         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
12922         (bfin_internal_label): Delete.
12923
12924 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
12925
12926         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
12927         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
12928         otherwise define to LIBGCC2_TF_CEXT.
12929         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
12930         (LIBGCC_TF_CEXT): Ditto.
12931         (TF_SIZE): Ditto.
12932
12933 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
12934
12935         PR rtl-optimization/32339
12936         * df-scan.c (df_uses_record): Don't modify flags but just add to
12937         it for df_ref_record.
12938
12939 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12940
12941         * tree-mudflap.c: Fix whitespace issues.
12942
12943 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
12944
12945         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
12946
12947 2007-06-14  Eric Christopher  <echristo@apple.com>
12948
12949         * config/i386/sse.md (movdi_to_sse): Rewrite body.
12950         (movv4sf): Use gcc_unreachable instead of abort.
12951
12952 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
12953
12954         PR target/32268
12955         * config/i386/sfp-machine.h (CMPtype): New define.
12956         (mach stubs): Use CMPtype instead of int as a return type.
12957
12958 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
12959
12960         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
12961         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
12962         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
12963         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
12964         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
12965         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
12966         config/soft-fp/soft-fp.h: Update from glibc CVS.
12967
12968 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
12969
12970         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
12971
12972 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12973
12974         PR target/32341
12975         * config/v850/v850.c: Include dataflow header file.
12976         (substitute_ep_register): Fix typo.
12977
12978 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
12979
12980         * configure.ac: Fix earlier checkin.
12981         * configure: Regenerated.
12982
12983 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
12984
12985         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
12986         * aclocal.m4: Regenerate.
12987         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
12988         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
12989         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
12990         * configure: Regenerate.
12991         * Makefile.in (LOOSE_WARN): Subst loose_warn.
12992
12993         * Makefile.in (quickstrap): Build libgcc too.
12994
12995 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
12996
12997         * configure.ac: Add --enable-checking=df.  Explicitly mention that
12998         the variables are initialized as for "release".
12999         * df-core.c: Use it.
13000         * configure: Regenerate.
13001         * config.in: Regenerate.
13002
13003 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
13004
13005         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
13006         validate_replace_rtx instead of replace_rtx.
13007         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
13008
13009 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
13010
13011         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
13012         (DWARF2_UNWIND_INFO): Override default if configured with
13013         SJLJ EH disabled.
13014         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
13015         (ENDFILE_SPEC): Add crtend.o.
13016         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
13017         (ENDFILE_SPEC): Add crtend.o.
13018         (TARGET_USE_JCR_SECTION): Define.
13019         (MD_UNWIND_SUPPORT): Define for 32-bit target.
13020
13021         * config/i386/cygming-crtbegin.c: New file.
13022         * config/i386/cygming-crtend.c: New file.
13023
13024 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
13025
13026         * config/i386/w32-unwind.h: New file.
13027
13028 2007-06-13  Eric Christopher  <echristo@apple.com>
13029
13030         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
13031         the user set a value below STACK_BOUNDARY.
13032
13033 2007-06-13  Thiemo Seufer  <ths@networkno.de>
13034
13035         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
13036         imply -lpthread for -pthread.
13037
13038 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
13039
13040         * basic-block.h: Remove the prototype for
13041         free_basic_block_vars.
13042         * cfglayout.h: Remove the prototype for
13043         insn_locators_initialize.
13044         * tree.h: Remove the prototype for emit_line_note.
13045
13046         * tree-ssa-pre.c (mergephitemp): Remove.
13047         (init_pre): Don't use mergephitemp.
13048
13049 2007-06-13  Eric Christopher  <echristo@apple.com>
13050
13051         * config/i386/i386.c (override_options): If we've specified
13052         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
13053
13054 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
13055
13056         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
13057         is defined.
13058
13059 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13060
13061         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
13062         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
13063         (eh_store_handler): New pattern.
13064         (eh_return): Emit it instead of a plain move.
13065
13066 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
13067
13068         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
13069         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
13070         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
13071         def_builtin_const.
13072
13073 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13074
13075         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
13076         (find_next_insn_start, find_load): New functions.
13077         (bfin_reorg): Use them to deal with the fact that parallel insns are
13078         no longer represented as a SEQUENCE.
13079
13080 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
13081
13082         * config/sparc/sparc.c (sparc_override_options): Initialize
13083         fpu mask correctly.
13084
13085 2007-06-13  Dave Korn  <dave.korn@artimi.com>
13086
13087         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
13088         df_get_live_out.
13089
13090 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
13091
13092         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
13093         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
13094         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
13095         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
13096         tree-vect-transform.c: Fix comment typos.  Follow spelling
13097         conventions.
13098
13099 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
13100
13101        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
13102        to the exit block use set.
13103        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
13104        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
13105        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
13106
13107 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
13108
13109         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
13110         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
13111         to indicate an error.
13112         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
13113         New functions.
13114         (dbg_cnt_process_opt): Print an error on a bad argument.
13115         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
13116         * common.opt (-fdbg-cnt-list): New.
13117         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
13118
13119 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13120
13121         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
13122         flag on ref-all pointers.
13123
13124 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13125
13126         PR middle-end/31579
13127         * expr.c (expand_expr_addr_expr_1): Call expand_expr
13128         for the offset with the modifier as EXPAND_INITIALIZER
13129         if the modifier is EXPAND_INITIALIZER.
13130         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
13131         a register if we had an overflow.
13132
13133 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13134
13135         * real.c (real_isfinite): New.
13136         (real_sqrt): Use it.
13137         * real.h (real_isfinite): New.
13138         * builtins.c: Use it.
13139
13140 2007-06-12  Ian Lance Taylor  <iant@google.com>
13141             Daniel Berlin  <dberlin@dberlin.org>
13142
13143         PR libstdc++/29286
13144         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
13145         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
13146         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
13147         (DECL_NO_TBAA_P): Define.
13148         (struct tree_decl_common): Add no_tbaa_flag field.
13149         * tree-ssa-structalias.c (struct variable_info): Add
13150         no_tbaa_pruning field.
13151         (new_var_info): Initialize no_tbaa_pruning field.
13152         (unify_nodes): Copy no_tbaa_pruning field.
13153         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
13154         (dump_solution_for_var): Print no_tbaa_pruning flag.
13155         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
13156         callers.
13157         (compute_tbaa_pruning): New static function.
13158         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
13159         Call compute_tbaa_pruning.
13160         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
13161         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
13162         * gimple-low.c (lower_stmt): Likewise.
13163         * tree-gimple.c (is_gimple_stmt): Likewise.
13164         * tree-ssa-operands.c (get_expr_operands): Likewise.
13165         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13166         * tree-inline.c (estimate_num_insns_1): Likewise.
13167         (copy_result_decl_to_var): Likewise.
13168         * expr.c (expand_expr_real_1): Likewise.
13169         * tree-pretty-print.c (dump_generic_node): Likewise.
13170         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
13171         * omp-low.c (omp_copy_decl_2): Likewise.
13172         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
13173         * doc/c-tree.texi (Expression trees): Document
13174         CHANGE_DYNAMIC_TYPE_EXPR.
13175
13176 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13177
13178         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
13179         with !HONOR_NANS and !HONOR_INFINITIES.
13180         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
13181
13182 2007-06-12  Tristan Gingold  <gingold@adacore.com>
13183
13184         * gcov.c: Comments updated.
13185         (source_info): Add file_time field.
13186         (source_index): New variable.
13187         (mutiple_files): New variable.
13188         (generate_results): New function extracted from process_file.
13189         (process_file): Save and restore chain of functions, generate
13190         results and free structures only if not merging results.
13191         (release_structures): File names are now freed in create_file_names
13192         (create_file_names): Free previous file names.
13193         (find_source): File date is now read here and modifications in
13194         source files is checked here.
13195         (read_graph_file): Only reverse order of functions for the current
13196         object file.
13197         (make_gcov_file_name): Do not generate long names if input_name is
13198         NULL.
13199         (output_lines): If merging results do not display graph, data and
13200         runs informations.
13201         Checking source file modification is done in find_source.
13202
13203         * doc/gcov.texi: Append an s to sourcefile.
13204
13205 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
13206
13207         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
13208         (forced_nop): New pattern.
13209         * config/bfin/bfin.c: Include "df.h".
13210         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
13211         (bfin_discover_loop): Use df_get_live_in instead of
13212         global_live_at_start.
13213         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
13214         df_analyze when done.
13215         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
13216         the insns.  Use QImode for the final insn in a bundle.  Call
13217         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
13218         gen_nop.
13219         (reorder_var_tracking_notes): New function.
13220         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
13221         update_life_info.  Call df_analyze after scheduling and bundle
13222         generation.  Call reorder_var_tracking_notes if generating these
13223         notes.  Call df_finish_pass at the end.
13224
13225 2007-06-12  Dirk Mueller  <dmueller@suse.de>
13226
13227         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
13228         a comparison, not an assignment.
13229
13230 2007-06-12  Olivier Hainque  <hainque@adacore.com>
13231
13232         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
13233         Request walking the subtrees only, leaving the current is_lhs/val_only
13234         untouched.
13235         (convert_non_local_reference): Likewise.
13236
13237 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
13238
13239         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
13240
13241 2007-06-12  Richard Guenther  <rguenther@suse.de>
13242
13243         PR tree-optimization/15353
13244         PR tree-optimization/31657
13245         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
13246         * timevar.def: Add TV_TREE_IFCOMBINE.
13247         * tree-pass.h (pass_tree_ifcombine): Declare.
13248         * tree-ssa-ifcombine.c: New file.
13249         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
13250         * tree-flow.h (blocks_in_phiopt_order): Declare.
13251         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
13252         (tree-ssa-ifcombine.o): New dependencies.
13253
13254 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
13255
13256         PR rtl-optimization/32293
13257         * combine.c (simplify_if_then_else): Truncate return from
13258         nonzero_bits() to correct mode.
13259
13260 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
13261
13262         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
13263         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
13264
13265 2007-06-11  Diego Novillo  <dnovillo@google.com>
13266
13267         * Makefile.in (reload1.o-warn): Remove.
13268
13269 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
13270
13271         * combine.c (subst): Use reg_overlap_mentioned_p
13272         instead of comparing register numbers directly.
13273
13274 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13275
13276         * reload1.c (mark_home_live_1): Use the mode parameter.
13277
13278 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13279
13280         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
13281         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
13282         word "deferred".
13283         * df-core.c: Ditto.
13284
13285 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
13286
13287         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
13288
13289 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
13290
13291         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
13292         from integer registers.
13293         (FP mode splitters): Handle TFmode.
13294
13295 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
13296
13297         * tree-ssa-structalias.c (find_what_p_points_to): Return false
13298         for ref-all pointers that point-to anything.
13299
13300 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
13301
13302         * config/arm/arm.c (arm_output_dwarf_dtprel,
13303         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
13304
13305 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
13306
13307         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
13308         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
13309         to memory moves.
13310
13311 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
13312
13313         * tree.c (signed_or_unsigned_type_for): New.
13314         (unsigned_type_for): Use signed_or_unsigned_type_for.
13315         (signed_type_for): Use signed_or_unsigned_type_for.
13316         * tree.h (signed_or_unsigned_type_for): New.
13317         (get_signed_or_unsigned_type): Remove.
13318         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
13319         lang_hooks.types.signed_type
13320         (size_diffop): Likewise.
13321         (all_ones_mask_p): Likewise.
13322         (build_range_check): Likewise.
13323         (fold_cond_expr_with_comparison): Likewise.
13324         (fold_cond_expr_with_comparison): Likewise.
13325         (unextend): Likewise.
13326         (extract_muldiv_1): Likewise.
13327         (fold_single_bit_test_into_sign_test): Likewise.
13328         (fold_binary): Likewise.
13329         (fold_ternary): Likewise.
13330         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
13331         instead of get_signed_or_unsigned_type.
13332         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
13333         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
13334         * expr.c (signed_or_unsigned_type_for): Use
13335         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
13336         * langhooks.c (get_signed_or_unsigned_type): Remove.
13337         (lhd_signed_or_unsigned_type): Remove.
13338         * langhooks.h (lang_hooks_for_types): Remove signed_type and
13339         signed_or_unsigned_type.
13340         (lhd_signed_or_unsigned_type): Remove.
13341         * expmed.c (make_tree): Use signed_type_for instead of
13342         lang_hooks.types.signed_type.
13343         * c-common.c (same_scalar_type_ignoring_signedness): Use
13344         c_common_signed_type instead of lang_hooks.types.signed_type.
13345         (c_common_unsigned_type): New.
13346         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
13347         (shorten_compare): Use c_common_unsigned_type instead of
13348         c_common_signed_or_unsigned_type.
13349         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
13350         unsigned_type_for.
13351         * convert.c (convert_to_integer): Use signed_type_for instead of
13352         lang_hooks.types.signed_type.
13353         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
13354         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
13355         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
13356         * c-format.c (check_format_types): Use c_common_unsigned_type
13357         instead of unsigned_type_for.
13358         * c-decl.c (groakdeclarator): Likewise.
13359         * c-typeck.c (convert_for_assignment): Likewise.
13360         * c-common.h (c_common_unsigned_type): New.
13361
13362 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
13363
13364         PR target/32280
13365         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
13366         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
13367
13368 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
13369
13370         PR middle-end/32279
13371         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
13372         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
13373
13374 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
13375             Sebastian Pop  <sebpop@gmail.com>
13376
13377         * lambda-code.c (remove_iv): New.
13378         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
13379
13380 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
13381
13382         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
13383         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
13384         * tree-ssa-loop-prefetch.c: Include optabs.h.
13385         (FENCE_FOLLOWING_MOVNT): New macro.
13386         (struct mem_ref): Add independent_p and storent_p fields.
13387         (record_ref): Initalize the new fields.
13388         (gather_memory_references_ref): Return true if the reference
13389         could be analysed.
13390         (gather_memory_references): Check whether all memory accesses
13391         in loop were recorded.
13392         (should_issue_prefetch_p): Return false for nontemporal stores.
13393         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
13394         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
13395         (determine_loop_nest_reuse): Detect independent memory references.
13396         (loop_prefetch_arrays): Call mark_nontemporal_stores.
13397         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
13398         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
13399         * config/i386/i386.h (x86_mfence): Declare.
13400         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
13401         * config/i386/i386.c (x86_mfence): New variable.
13402         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
13403
13404         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
13405         * optabs.c (init_optabs): Initialize storent_optab.
13406         * optabs.h (enum optab_index): Add OTI_storent.
13407         (storent_optab): Declare.
13408         * genopinit.c (optabs): Add initialization for storent_optab.
13409         * tree.h (MOVE_NONTEMPORAL): New macro.
13410         * expr.c (expand_assignment, store_expr, store_constructor_field,
13411         store_constructor, store_field, expand_expr_real_1): Propagate
13412         nontemporality of the expanded store.
13413         (emit_storent_insn): New function.
13414         * expr.h (expand_assignment, store_expr): Declaration changed.
13415         * function.c (assign_parm_setup_reg): Pass false as nontemporality
13416         to expand_assignment.
13417         * stmt.c (expand_asm_expr): Ditto.
13418         * calls.c (initialize_argument_information): Pass false as
13419         nontemporality to store_expr.
13420         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
13421         storentsi): New.
13422
13423 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
13424
13425         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
13426         parameter, use it.
13427         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
13428
13429 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
13430
13431         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
13432         and allow DECL_P here.
13433
13434 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
13435
13436         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
13437         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
13438         track of the size of the expression.
13439         * cfghooks.c (merge_blocks): Remove block from loops structure only
13440         after call of the merge_blocks hook.
13441
13442 2007-06-09  Tom Tromey  <tromey@redhat.com>
13443
13444         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
13445         (deprecated_state): Removed.
13446         (start_decl): Update.
13447         (enum deprecated_states): Moved earlier.
13448         (groktypename): Update.
13449         (push_parm_decl): Likewise.
13450         (grokfield): Likewise.
13451         (start_function): Likewise.
13452
13453 2007-06-09  Ian Lance Taylor  <iant@google.com>
13454
13455         PR tree-optimization/32169
13456         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
13457         CONVERT_EXPR, check whether min and max both converted to an
13458         overflow infinity representation.
13459
13460 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
13461
13462         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
13463         not inserted on the edge.
13464
13465 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
13466
13467         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
13468         instructions if they are supported.
13469         (__divsi3, __umodsi3, __modsi3): Likewise.
13470         (__ashldi3, __ashrdi3, __lshrdi3): New.
13471         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
13472
13473 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
13474             Tony Linthicum <tony.linthicum@amd.com>
13475
13476         * doc/invoke.texi: Add fvect-cost-model flag.
13477         * common.opt (fvect-cost-model): New flag.
13478         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
13479         cost fields in stmt_vec_info struct for STMT.
13480         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
13481         fields in stmt_vec_info struct and access functions for the same.
13482         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
13483         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
13484         load, store and vector to scalar operation.
13485         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
13486         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
13487         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
13488         (TARG_VEC_STORE_COST): Define cost of vector store.
13489         (vect_estimate_min_profitable_iters): Define new function.
13490         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
13491         check to evaluate if loop iterations are less than minimum profitable
13492         iterations determined by cost model or minimum vect loop bound defined
13493         by user, whichever is more conservative.
13494         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
13495         run-time check to evaluate if loop iterations are less than minimum
13496         profitable iterations determined by cost model or minimum vect loop
13497         bound defined by user, whichever is more conservative.
13498         (vect_estimate_min_profitable_iterations): New function to estimate
13499         mimimimum iterartions required for vector version of loop to be
13500         profitable over scalar version.
13501         (vect_model_reduction_cost): New function.
13502         (vect_model_induction_cost): New function.
13503         (vect_model_simple_cost): New function.
13504         (vect_cost_strided_group_size): New function.
13505         (vect_model_store_cost): New function.
13506         (vect_model_load_cost): New function.
13507         (vectorizable_reduction): Call vect_model_reduction_cost during
13508         analysis phase.
13509         (vectorizable_induction): Call vect_model_induction_cost during
13510         analysis phase.
13511         (vectorizable_load): Call vect_model_load_cost during analysis phase.
13512         (vectorizable_store): Call vect_model_store_cost during analysis phase.
13513         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
13514         vectorizable_promotion, vectorizable_demotion): Call
13515         vect_model_simple_cost during analysis phase.
13516
13517 2007-06-08  Simon Baldwin  <simonb@google.com>
13518
13519         * reg-stack.c (get_true_reg): Readability change.  Moved default case
13520         label into direct switch statement scope.
13521
13522 2007-06-08  Simon Baldwin  <simonb@google.com>
13523
13524         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
13525         in gcc_assert() with '==' comparison.
13526
13527 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
13528
13529         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
13530         TARGET_ABM handling of x86_popcnt variable.
13531
13532 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
13533
13534         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
13535         __builtin_copysignq and __builtin_infq built-in functions.
13536
13537 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
13538
13539         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
13540         SSE4.2 section.  Correct built-in function names in SSE4A section.
13541
13542 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
13543
13544         PR tree-optimization/32243
13545         * tree-vect-transform.c (vectorizable_type_promotion): Move check
13546         for ncopies after ratio check between nunits_out and nunits_in.
13547         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
13548
13549 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
13550
13551         PR tree-optimization/32224
13552         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
13553         vectorization upon a non GIMPLE_MODIFY_STMT.
13554
13555 2007-06-08  Christian Bruel  <christian.bruel@st.com>
13556
13557         PR target/29953
13558         * config/sh/sh.md (doloop_end): New pattern and splitter.
13559         * loop-iv.c (simple_rhs_p): Check for hardware registers.
13560
13561 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
13562
13563         PR middle-end/32209
13564         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
13565         functions.
13566         (verify_dominators): Do not change dominance tree.
13567
13568 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
13569
13570         * config/sh/constraints.md: New file.
13571         * config/sh/sh.c: Include tm-constrs.h.
13572         (reg_class_from_letter): Remove.
13573         (prepare_cbranch_operands): Use satisfies_constraint_*
13574         function instead of macro.
13575         (andcosts, broken_move, sh_secondary_reload): Likewise.
13576         * config/sh/predicates.md (trapping_target_operand): Likewise.
13577         (and_operand, arith_operand, arith_reg_or_0_operand,
13578         cmp_operand, logical_operand, target_operand,
13579         ua_address_operand, ua_offset, xor_operand): Likewise.
13580         * config/sh/sh.md: Include constraints.md.
13581         (*movsicc_t_false): Use satisfies_constraint_* function
13582         instead of macro.
13583         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
13584         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
13585         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
13586         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
13587         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
13588         (REG_CLASS_FROM_CONSTRAINT): Remove.
13589         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
13590         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
13591         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
13592         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
13593         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
13594         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
13595         function instead of macro.
13596         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
13597         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
13598         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
13599         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
13600         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
13601         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
13602         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
13603         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
13604         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
13605         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
13606         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
13607         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
13608         EXTRA_CONSTRAINT_STR): Likewise.
13609         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
13610
13611 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
13612
13613         * config/i386/darwin.h (STACK_BOUNDARY): Define.
13614
13615 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
13616
13617         PR c++/30759
13618         * c-common.h (flag_cpp0x): Replaced by...
13619         (cxx_dialect): ... this new variable specifying the C++ dialect that
13620         is used.
13621         * c-common.c (flag_cpp0x): Removed.
13622         (cxx_dialect): Defined.
13623         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
13624         cxx_dialect.
13625         * c-opts.c (c_common_post_options): Likewise.
13626         (set_std_cxx98): Set cxx_dialect to cxx98.
13627         (set_std_cxx0x): Set cxx_dialect to cxx0x.
13628
13629 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
13630             Hui-May Chang <hm.chang@apple.com>
13631
13632         * doc/invoke.texi (Darwin Options): Update documentation for
13633         -mmacosx-version-min.
13634         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
13635         * config/darwin-driver.c: New file.
13636         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
13637         * config/t-darwin (darwin-driver.o): New rule.
13638
13639         * config/darwin-c.c (version_as_macro): Ignore low digit.
13640
13641 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
13642
13643         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
13644         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
13645         (CSGNMODE): New mode macro.
13646         (CSGNVMODE): New mode attribute.
13647         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
13648         expander using CSGNMODE mode macro.  Handle TFmode.
13649         (copysign<mode>3_const): Rename from copysignsf3_const and
13650         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
13651         Handle TFmode.
13652         (copysign<mode>3_var): Rename from copysignsf3_var and
13653         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
13654         Handle TFmode.
13655         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
13656         mode macro.  Handle TFmode.
13657         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
13658         (iortf3, *iortf3): Ditto.
13659         (xortf3, *xortf3): Ditto.
13660         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
13661         TFmode and TImode masks.
13662         (ix86_expand_copysign): Expand TFmode copysign insn.
13663         (IX86_BUILTIN_INFQ): New.
13664         (IX86_BUILTIN_FABSQ): Ditto.
13665         (IX86_BUILTIN_COPYSIGNQ): Ditto.
13666         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
13667         [__builtin_fabsq]: Ditto.
13668         [__builtin_copysignq]: Ditto.
13669         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
13670         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
13671         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
13672         ix86_expand_binop_builtin().
13673
13674 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
13675
13676         * config/xtensa/lib1funcs.asm: Clean up whitespace.
13677
13678 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
13679
13680         PR target/31850
13681         * rtl.h (push_to_sequence2): New.
13682         * emit-rtl.c (push_to_sequence2): New.
13683         * function.c (assign_parm_data_all): Add new fields.
13684         (assign_parm_setup_block): Call push_to_sequence2 instead of
13685         push_to_sequence.
13686         (assign_parm_setup_reg): Ditto.
13687         (assign_parm_setup_stack): Ditto.
13688         (assign_parms_unsplit_complex): Ditto.
13689         (assign_parms): Change field name.
13690
13691 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
13692
13693         PR tree-optimization/32220
13694         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
13695         phi node is reached before defining statement.
13696
13697 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13698
13699         PR tree-opt/32231
13700         * tree-vect-transform.c (vectorizable_call): Call update_stmt
13701         after changing the right hand side of the assignment.
13702
13703 2007-06-06  Eric Christopher  <echristo@apple.com>
13704
13705         * config.gcc (i?86-*-darwin*): Remove arch parameter.
13706         (x86_64-*-darwin*): Ditto.
13707         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
13708         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
13709
13710 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
13711
13712         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
13713         coding conventions.
13714         (add_key): Likewise.
13715         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
13716         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
13717         variable names.
13718         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
13719         macros.
13720         (add_cost_one_coalesce): Likewise.
13721         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
13722         variable names. Rename orig to orig_name for consistency.
13723         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
13724         coding conventions.
13725         (cprop_into_successor_phis): Avoid using C++ keywords as variable
13726         names.
13727         (record_equivalences_from_stmt): Likewise.
13728         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
13729         the coding conventions.
13730         (memory_ssa_name_same): Likewise.
13731         (dse_optimize_stmt): Likewise.
13732         (dse_record_phis): Likewise.
13733         (dse_finalize_block): Likewise.
13734         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
13735         keywords as variable names.
13736         (may_move_till): Cast according to the coding conventions.
13737         (force_move_till_expr): Avoid using C++ keywords as variable names.
13738         (force_move_till): Cast according to the coding conventions.
13739         (memref_hash): Likewise.
13740         (memref_eq): Likewise.
13741         (gather_mem_refs_stmt): Likewise.
13742         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
13743         using C++ keywords as variable names.
13744         (idx_find_step): Cast according to the coding conventions.
13745         (idx_record_use): Likewise.
13746         (find_depends): Likewise.
13747         (prepare_decl_rtl): Likewise.
13748         (mbc_entry_hash): Likewise.
13749         (mbc_entry_eq): Likewise.
13750         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
13751         (simplify_replace_tree): Avoid using C++ keywords as variable names.
13752         (idx_infer_loop_bounds): Cast according to the coding conventions.
13753         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
13754         * tree-ssa-math-opts.c (occ_new ): Likwise.
13755         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
13756         macros.
13757         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
13758         variable names.
13759         (add_use_op): Likewise.
13760         (add_vop): Likewise.
13761         (add_vuse_op): Likewise.
13762         (add_vdef_op): Likewise.
13763         (get_expr_operands): Likewise.
13764         (push_stmt_changes): Use type safe memory macros.
13765         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
13766         keywords as variable names.
13767         (conditional_replacement): Likewise.
13768         (minmax_replacement): Likewise.
13769         (abs_replacement): Likewise.
13770         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
13771         coding conventions.
13772         (insert_fake_stores): Avoid using C++ keywords as variable names.
13773         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
13774         conventions.
13775         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
13776         (heapvar_insert): Use type safe memory macros.
13777         (new_var_info): Cast according to the coding conventions.
13778         (new_constraint): Likewise.
13779         (remove_preds_and_fake_succs): Use type safe memory macros.
13780         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
13781         conventions.
13782         (thread_single_edge): Likewise.
13783         (thread_through_loop_header): Likewise.
13784
13785 2007-06-06  Eric Christopher  <echristo@apple.com>
13786
13787         * config/i386/i386.c (override_options): Move handling
13788         of TARGET_SUBTARGET* earlier.
13789
13790 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
13791
13792         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
13793         use %n on printf.
13794
13795 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
13796
13797         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
13798         emited outside of basic block.
13799         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
13800         the created blocks.
13801         * rtl.h (delete_insn_chain): Declaration changed.
13802         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
13803         non-removed insns.
13804         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
13805         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
13806         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
13807         to delete_insn_chain.
13808         (rtl_verify_flow_info_1): Verify that the insns in header and footer
13809         do not have bb field set.
13810         (rtl_verify_flow_info): Verify that insns between basic blocks do not
13811         have bb field set.
13812         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
13813         * cfgcleanup.c (try_optimize_cfg): Ditto.
13814
13815 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
13816
13817         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
13818         (lambda_body_vector_new): Use type safe memory macros.
13819         (lambda_linear_expression_new): Likewise.
13820         (lambda_loopnest_new): Likewise.
13821         (lambda_lattice_new): Likewise.
13822         (replace_uses_equiv_to_x_with_y): Cast according to the coding
13823         conventions. Use type safe memory macros.
13824         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
13825         (lambda_body_vector_s): Likewise.
13826         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
13827         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
13828
13829 2007-06-06  Richard Guenther  <rguenther@suse.de>
13830
13831         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
13832         if we need to schedule cfg_cleanup.
13833         (tree_ssa_forward_propagate_single_use_vars): Do so.
13834
13835 2007-06-06  Ian Lance Taylor  <iant@google.com>
13836
13837         * fold-const.c (merge_ranges): If range_successor or
13838         range_predecessor fail, just return 0.
13839
13840 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
13841
13842         PR tree-optimization/32216
13843         * tree-vectorizer.c (supportable_widening_operation): Determine
13844         signedness of FIX_TRUNC_EXPR from output operand.
13845         (supportable_narrowing_operation): Ditto.
13846         * tree-vect-generic.c (expand_vector_operations_1): Determine
13847         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
13848         from input operand.
13849
13850 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
13851
13852         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
13853         (struct pta): ...from here. Change flags to unsigned to avoid
13854         excessive casting (as it is used as a bit mask).
13855         (override_options): Add casts according to the coding convenventions.
13856         (x86_64_elf_unique_section): Likewise.
13857         (examine_argument): Avoid using C++ keywords as variable names.
13858         (construct_container): Likewise.
13859         (legitimize_pic_address): Likewise.
13860         (get_dllimport_decl): Cast according to the coding conventions. Use
13861         type safe memory macros.
13862         (legitimize_address): Cast according to the coding conventions.
13863         (emit_i387_cw_initialization): Corrected the type of slot to enum
13864         ix86_stack_slot.
13865         (ix86_init_machine_status): Use type safe memory macros.
13866         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
13867         (bdesc_pcmpistr): Likewise.
13868         (bdesc_crc32): Likewise.
13869         (bdesc_sse_3arg): Likewise.
13870         (bdesc_2arg): Likewise.
13871         (bdesc_1arg): Likewise.
13872         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
13873         (ix86_expand_sse_pcmpistr): Likewise.
13874         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
13875         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
13876         int to match the langhook definition.
13877         (ix86_builtin_conversion): Change the type of code to unsigned init to
13878         match the langhook definition.
13879         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
13880         names.
13881         (ix86_preferred_output_reload_class): Likewise.
13882         (ix86_cannot_change_mode_class): Likewise.
13883         (ix86_memory_move_cost): Likewise.
13884         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
13885         avoid excessive casting later on.
13886         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
13887
13888 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
13889
13890         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
13891         as flags setting insn.
13892         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
13893
13894 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
13895
13896         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
13897         (UNSPEC_ROUND): New.
13898         ("sse4_1_round<mode>2"): New insn pattern.
13899         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
13900         SSE4.1 targets.
13901         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
13902         expander using SSEMODEF mode macro.  Expand using
13903         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
13904         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
13905         expander using SSEMODEF mode macro.  Expand using
13906         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
13907         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
13908         expander using SSEMODEF mode macro.  Expand using
13909         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
13910         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
13911         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
13912         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
13913         UNSPEC_ROUNDS.
13914
13915 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
13916             Sebastian Pop  <sebpop@gmail.com>
13917
13918         * lambda.h (build_linear_expr): New.
13919         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
13920         Use build_linear_expr, call fold and force_gimple_operand.
13921         (lambda_loopnest_to_gcc_loopnest): Check that there is
13922         something to insert.
13923         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
13924
13925 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
13926
13927         PR preprocessor/23479
13928         * doc/extend.texi: Document the 0b-prefixed binary integer
13929         constant extension.
13930
13931 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
13932
13933         PR tree-optimization/32215
13934         * tree-vectorizer.c (supportable_widening_operation): Return false
13935         for unsupported FIX_TRUNC_EXPR tree code.
13936         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
13937
13938 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
13939
13940         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
13941         register on SPE targets.  Change documentation to reflect
13942         reality.
13943         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
13944         Change FIXED_SCRATCH to 14 and document why we're keeping r14
13945         out of the register allocation pool.
13946         (rs6000_reg_live_or_pic_offset_p): New function.
13947         (rs6000_emit_prologue): Move the actual saving of LR up to free
13948         r0 for holding r11.  Split saving of SPE 64-bit registers into
13949         its own case.  Ensure that offsets will always be in-range for
13950         'evstdd' by using r11 as a scratch register to point at the start
13951         of the SPE save area.  Save r11 if necessary, as it is the static
13952         chain register.
13953         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
13954         into its own case.  Ensure that offsets will always be in-range
13955         for 'evldd' by using r11 as a scratch register to point at the
13956         start of the SPE save area.  Also adjust r11 when restoring
13957         the stack pointer to compensate for pre-loading r11.
13958
13959 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
13960
13961         * cfg.c (init_flow): Use type safe memory macros.
13962         (alloc_block): Likewise.
13963         (unchecked_make_edge): Likewise.
13964         (dump_flow_info): Avoid using C++ keywords as variable names.
13965         (copy_original_table_clear): Cast according to the coding conventions.
13966         (copy_original_table_set): Likewise.
13967         * cfgexpand (label_rtx_for_bb): Likewise.
13968         (expand_gimple_basic_block): Likewise.
13969         * cfghooks.c (dump_bb): Likewise.
13970         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
13971         variable names.
13972         (lv_add_condition_to_bb): Likewise.
13973         * cfglayout (relink_block_chain): Cast according to the coding
13974         conventions.
13975         (fixup_reorder_chain): Likewise.
13976         (fixup_fallthru_exit_predecessor): Likewise.
13977         * cfgloop.c (glb_enum_p): Likewise.
13978         (get_exit_description): Likewise.
13979         (dump_recorded_exit): Likewise.
13980         * cfgloop.h (enum loop_estimation): Move out of struct scope...
13981         (struct loop): ... from here.
13982         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
13983         conventions.
13984         * cfgrtl.c (rtl_create_basic_block): Likewise.
13985         (rtl_split_block): Likewise.
13986         (rtl_dump_bb): Likewise.
13987         (cfg_layout_split_block): Likewise.
13988         (init_rtl_bb_info): Use typesafe memory macros.
13989
13990         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
13991         * graphds.h: Updated all usages of edge to graph_edge.
13992         * graphds.c: Likewise.
13993         * cfgloopanal.c: Likewise.
13994
13995 2007-06-05  Ian Lance Taylor  <iant@google.com>
13996
13997         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
13998         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
13999         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
14000         expression.
14001         (test_for_singularity): Likewise.
14002
14003 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
14004
14005         * config/i386/constraints.md ("Y2"): Replaced by ...
14006         ("Yt"): This.
14007         * config/i386/i386.md: Likewise.
14008         * config/i386/mmx.md: Likewise.
14009         * config/i386/sse.md: Likewise.
14010
14011 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
14012
14013         * config/i386/constraints.md ("z"): Replaced by ...
14014         ("Y0"): This.
14015         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
14016         (sse4_1_blendvps): Likewise.
14017         (sse4_1_pblendvb): Likewise.
14018         (sse4_2_pcmpestr): Likewise.
14019         (sse4_2_pcmpestrm): Likewise.
14020         (sse4_2_pcmpestr_cconly): Likewise.
14021         (sse4_2_pcmpistr): Likewise.
14022         (sse4_2_pcmpistrm): Likewise.
14023         (sse4_2_pcmpistr_cconly): Likewise.
14024
14025 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
14026
14027         * matrix-reorg.c (transform_access_sites): Fix computation.
14028         (transform_allocation_sites): Same.
14029
14030 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14031
14032         * config/i386/i386.c (override_options): Use
14033         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
14034
14035 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14036
14037         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
14038         (nonimm_not_xmm0_operand): Ditto.
14039         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
14040         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
14041         as operand[2] predicate.  Require "z" class XMM register for
14042         operand[3].  Adjust asm template.
14043         ("sse4_1_blendvpd"): Ditto.
14044         ("sse4_1_pblendvb"): Ditto.
14045         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
14046         force op2 into xmm0 register for variable blend instructions.
14047
14048 2007-06-04  Tom Tromey  <tromey@redhat.com>
14049
14050         * c-tree.h (start_enum): Update.
14051         (build_enumerator): Likewise.
14052         * c-decl.c (enum_next_value): Removed.
14053         (enum_overflow): Likewise.
14054         (start_enum): Add c_enum_contents argument.  Don't use globals.
14055         (build_enumerator): Likewise.
14056         * c-tree.h (struct c_enum_contents): New struct.
14057
14058 2007-06-04  Tom Tromey  <tromey@redhat.com>
14059
14060         * c-common.c (c_common_get_alias_set): Fix indentation.
14061
14062 2007-06-04  Ian Lance Taylor  <iant@google.com>
14063
14064         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
14065         to overflow, reduce overflow infinity to regular infinity.
14066         (vrp_var_may_overflow): New static function.
14067         (vrp_visit_phi_node): Check vrp_var_may_overflow.
14068
14069 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
14070
14071         * stor-layout.c (layout_type): Remove duplicate code.
14072
14073 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
14074
14075         PR c/32191
14076         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
14077         before build_common_builtin_nodes ().
14078
14079 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
14080
14081         PR target/31733
14082         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
14083
14084 2007-06-04  Jan Hubicka  <jh@suse.cz>
14085
14086         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
14087         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
14088         instead of _stat version.
14089
14090 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
14091
14092         PR tree-optimization/32194
14093         * tree-predcom.c (determine_offset): Check that both references have
14094         the same type.
14095
14096 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
14097
14098         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
14099         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
14100         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
14101         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
14102         Add argument to iterate_fix_dominators call.
14103         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
14104         * gcse.c (hoist_code): Change domby to vector.
14105         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
14106         Add argument to iterate_fix_dominators call.
14107         * loop-doloop.c (doloop_modify): Changed recount_dominator to
14108         recompute_dominator.
14109         * lambda-code.c (perfect_nestify): Ditto.
14110         * cfgloopanal.c: Include graphds.h.
14111         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
14112         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
14113         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
14114         add_edge call.
14115         * graphds.c: New file.
14116         * graphds.h: New file.
14117         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
14118         (get_dominated_by, get_dominated_by_region): Change return type to
14119         vector.
14120         (verify_dominators): Recompute all dominators and compare the results.
14121         (recount_dominator): Renamed to ...
14122         (recompute_dominator): ... this.  Do not check that the block is
14123         dominated by entry.
14124         (iterate_fix_dominators): Reimplemented.
14125         (prune_bbs_to_update_dominators, root_of_dom_tree,
14126         determine_dominators_for_sons): New functions.
14127         * et-forest.c (et_root): New function.
14128         * et-forest.h (et_root): Declare.
14129         * Makefile.in (graphds.o): Add.
14130         (cfgloopanal.o): Add graphds.h dependency.
14131         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
14132         * basic-block.h (get_dominated_by, get_dominated_by_region,
14133         iterate_fix_dominators): Declaration changed.
14134         (recount_dominator): Renamed to ...
14135         (recompute_dominator): ... this.
14136         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
14137         (thread_through_all_blocks): Do not free dominance info.
14138
14139 2007-06-03  Andreas Schwab  <schwab@suse.de>
14140
14141         * config/m68k/m68k.c (override_options): Don't override
14142         REAL_MODE_FORMAT.
14143         * config/m68k/m68k-modes.def (SF, DF): Define to use
14144         motorola_single_format and motorola_double_format, resp.
14145         * real.c (motorola_single_format): Renamed from
14146         coldfire_single_format.
14147         (motorola_double_format): Renamed from coldfire_double_format.
14148         (encode_ieee_extended): Generate a proper canonical NaN image
14149         respecting canonical_nan_lsbs_set.
14150         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
14151         true.
14152         * real.h: Adjust declarations.
14153
14154 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14155
14156         PR target/32163
14157         * config/sh/sh.md (symGOT_load): Don't schedule insns when
14158         the symbol is generated with the stack protector.
14159
14160 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
14161
14162         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
14163         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
14164         "interrupt".
14165         * doc/extend.texi (interrupt): Mention m68k.
14166
14167 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
14168
14169         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
14170         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
14171         (ix86_expand_sse_pcmpestr): Do not check operands for
14172         "register_operand", when insn operand predicate is "register_operand".
14173         (ix86_expand_sse_pcmpistr): Ditto.
14174
14175 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
14176             Uros Bizjak  <ubizjak@gmail.com>
14177
14178         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
14179         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
14180         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
14181         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
14182         * config/i386/constraints.md ("z"): New register constraint
14183         for members of SSE_FIRST_REG class.
14184         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
14185         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
14186         SSE_FIRST_REG class.
14187         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
14188         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
14189         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
14190         (IX86_BUILTIN_PCMPESTRM128): Likewise.
14191         (IX86_BUILTIN_PCMPESTRA128): Likewise.
14192         (IX86_BUILTIN_PCMPESTRC128): Likewise.
14193         (IX86_BUILTIN_PCMPESTRO128): Likewise.
14194         (IX86_BUILTIN_PCMPESTRS128): Likewise.
14195         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
14196         (IX86_BUILTIN_PCMPISTRI128): Likewise.
14197         (IX86_BUILTIN_PCMPISTRM128): Likewise.
14198         (IX86_BUILTIN_PCMPISTRA128): Likewise.
14199         (IX86_BUILTIN_PCMPISTRC128): Likewise.
14200         (IX86_BUILTIN_PCMPISTRO128): Likewise.
14201         (IX86_BUILTIN_PCMPISTRS128): Likewise.
14202         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
14203         (struct builtin_description): Change "flag" field to unsigned.
14204         (bdesc_pcmpestr): New builtin description table.
14205         (bdesc_pcmpistr): Likewise.
14206         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
14207         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
14208         Initialize pcmp[ei]str[im] insns for SSE4.2.
14209         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
14210         (ix86_expand_sse_pcmpistr): Likewise.
14211         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
14212         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
14213         (UNSPEC_PCMPISTR): Likewise.
14214         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
14215         (sse4_2_pcmpestri):New isns pattern.
14216         (sse4_2_pcmpestrm): Likewise.
14217         (sse4_2_pcmpestr_cconly): Likewise.
14218         (sse4_2_pcmpistr): New insn patern and splitter.
14219         (sse4_2_pcmpistri):New isns pattern.
14220         (sse4_2_pcmpistrm): Likewise.
14221         (sse4_2_pcmpistr_cconly): Likewise.
14222         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
14223         in SSE4.2.
14224
14225 2007-06-01  David Daney  <ddaney@avtrex.com>
14226
14227         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
14228         LOADGP_ABSOLUTE and not binds_local_p.
14229
14230 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
14231
14232         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
14233
14234 2007-06-01  Ian Lance Taylor  <iant@google.com>
14235
14236         * tree-vrp.c (compare_name_with_value): Always set
14237         used_strict_overflow if we get a result from the variable itself.
14238
14239 2007-06-01  Ian Lance Taylor  <iant@google.com>
14240
14241         PR rtl-optimization/31455
14242         * lower-subreg.c (find_decomposable_subregs): Don't decompose
14243         subregs which have a cast between modes which are not tieable.
14244
14245 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
14246
14247         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
14248         breaks after return statements.
14249
14250 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
14251
14252         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
14253         only after no_new_pseudos.
14254
14255 2007-05-31  Eric Christopher  <echristo@apple.com>
14256
14257         * expr.c (convert_move): Assert that we don't have a BLKmode
14258         operand.
14259         (store_expr): Handle BLKmode moves by calling emit_block_move.
14260
14261 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
14262
14263         * c-typeck.c (build_indirect_ref): Include type in error message.
14264         (build_binary_op): Pass types to binary_op_error.
14265         * c-common.c (binary_op_error): Take two type arguments, print out
14266         types with error.
14267         * c-common.h (binary_op_error): Update prototype.
14268
14269 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
14270
14271         * config/i386/i386.c: Correct coments on -mno-sse4.
14272
14273 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
14274
14275         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
14276         (x86_64-*-*): Likewise.
14277         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
14278         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
14279         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
14280         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
14281         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
14282         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
14283         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
14284         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
14285         (OPTION_MASK_ISA_SSE4): Likewise.
14286         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
14287         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
14288         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
14289         (override_options): Support SSE4.2.
14290         (ix86_build_const_vector): Support SImode and DImode.
14291         (ix86_build_signbit_mask): Likewise.
14292         (ix86_expand_int_vcond): Support V2DImode.
14293         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
14294         (IX86_BUILTIN_CRC32HI): Likewise.
14295         (IX86_BUILTIN_CRC32SI): Likewise.
14296         (IX86_BUILTIN_CRC32DI): Likewise.
14297         (IX86_BUILTIN_PCMPGTQ): Likewise.
14298         (bdesc_crc32): Likewise.
14299         (bdesc_sse_3arg): Likewise.
14300         (ix86_expand_crc32): Likewise.
14301         (ix86_init_mmx_sse_builtins): Support SSE4.2.
14302         (ix86_expand_builtin): Likewise.
14303         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
14304         __SSE4_2__ for -msse4.2.
14305         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
14306         (CRC32MODE): Likewise.
14307         (crc32modesuffix): Likewise.
14308         (crc32modeconstraint): Likewise.
14309         (sse4_2_crc32<mode>): Likewise.
14310         (sse4_2_crc32di): Likewise.
14311         * config/i386/i386.opt (msse4.2): New for SSE4.2.
14312         (msse4): Likewise.
14313         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
14314         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
14315         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
14316         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
14317         (vcondu<mode>): Likewise.
14318         * doc/extend.texi: Document SSE4.2 built-in functions.
14319         * doc/invoke.texi: Document -msse4.2/-msse4.
14320
14321 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
14322
14323         PR tree-optimization/32160
14324         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
14325         variable as gimple reg.
14326         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
14327
14328 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
14329
14330         * gcc.c (main): Don't consider linker options when issuing the
14331         warning about a linker input file not being used.
14332
14333 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14334
14335         * tree-vrp.c (compare_names): Initialize sop.
14336
14337 2007-05-30  Dirk Mueller  <dmueller@suse.de>
14338
14339         * cgraphunit.c (cgraph_analyze_function): Remove
14340         computation of inline parameters.
14341
14342 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
14343
14344         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
14345
14346 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
14347
14348         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
14349         Add vx-common.h.  Include vxworks.h between vx-common.h and
14350         arm/vxworks.h.
14351         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
14352         redefining.
14353         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
14354         (TARGET_ASM_DESTRUCTOR): Likewise.
14355         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
14356         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
14357         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
14358         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
14359         (VXWORKS_ENDIAN_SPEC): Define.
14360         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
14361         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
14362         VXWORKS_* equivalents.
14363         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
14364         (ASM_FILE_START): Delete.
14365         (TARGET_VERSION): Reformat.
14366         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
14367         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
14368         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
14369         (FPBIT, DPBIT): Define.
14370         (fp-bit.c, dp-bit.c): New rules.
14371         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
14372         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
14373         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
14374         * config/arm/arm.h: Include vxworks-dummy.h.
14375         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
14376         Mark with ATTRIBUTE_UNUSED.
14377         (arm_override_options): Do not allow VxWorks RTP PIC to be used
14378         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
14379         make it incompatible with -msingle-pic-base.
14380         (arm_function_ok_for_sibcall): Return false for calls that might
14381         go through a VxWorks PIC PLT entry.
14382         (require_pic_register): New function, split out from...
14383         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
14384         for VxWorks RTPs.
14385         (arm_load_pic_register): Handle the VxWorks RTP initialization
14386         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
14387         (arm_emit_call_insn): New function.
14388         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
14389         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
14390         (pic_offset_arm): New pattern.
14391         (call, call_value): Use arm_emit_call_insn.
14392         (call_internal, call_value_internal): New expanders.
14393         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
14394         VxWorks unless __PIC__.
14395
14396 2007-05-30  Eric Christopher  <echristo@gmail.com>
14397
14398         * genrecog.c: Include regs.h in generated file.
14399         * genemit.c: Ditto. Fix up formatting.
14400         * config/mn10300/constraints.md: New.
14401         * config/mn10300/mn10300.md: Include.
14402         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
14403         Fix up for removed macro.
14404         * config/mn10300/predicates.md (call_address_operand): Ditto.
14405         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
14406         (CONST_OK_FOR_I): Ditto.
14407         (CONST_OK_FOR_J): Ditto.
14408         (CONST_OK_FOR_K): Ditto.
14409         (CONST_OK_FOR_L): Ditto.
14410         (CONST_OK_FOR_M): Ditto.
14411         (CONST_OK_FOR_N): Ditto.
14412         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
14413         (OK_FOR_Q): Ditto.
14414         (OK_FOR_R): Ditto.
14415         (OK_FOR_T): Ditto.
14416         (EXTRA_CONSTRAINT): Ditto.
14417
14418 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
14419
14420         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
14421         Remove defines.
14422         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
14423         OPTION_MASK_ISA_64BIT.
14424         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
14425
14426 2007-05-30  Richard Guenther  <rguenther@suse.de>
14427
14428         PR middle-end/32152
14429         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
14430         types for comparison.
14431         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
14432         with original typed arguments.
14433         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
14434
14435 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
14436
14437         PR tree-optimization/31769
14438         * except.c (duplicate_eh_regions): Clear prev_try if
14439         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
14440
14441 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
14442
14443         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
14444         * tree-ssa-sink.c (statement_sink_location): Return basic block and
14445         bsi of the location where statements should be inserted.
14446         (sink_code_in_bb): Take bsi from statement_sink_location.
14447         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
14448         instead of bsi_start.
14449         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
14450         bsi_insert_after.
14451         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
14452         (bsi_move_before): Document inconsistency with bsi_move_after.
14453         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
14454
14455 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
14456
14457         * config/i386/i386.h (TARGET_ABM): New define.
14458         (TARGET_POPCNT): Ditto.
14459         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
14460         New temporary defines to redefine from OPTION_ISA_* defines.
14461         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
14462         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
14463         (ix86_isa_flags): New extern int declaration.
14464         (TARGET_SUBTARGET_DEFAULT): New define.
14465         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
14466         (TARGET_SUBTARGET32_DEFAULT): Ditto.
14467         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
14468         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
14469         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
14470         * config/i386/darwin.h: Change TARGET_64BIT define to
14471         OPTION_ISA_64BIT.
14472
14473         * config/i386/i386.opt (m3dnowa): Define as undocumented option
14474         using existing "ix86_isa_flags" varible.
14475         (m32, m64): Use existing "ix86_isa_flags" variable.
14476         (mmmx, m3dnow): Ditto.
14477         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
14478         (mabm): Define as non-negative option using "x86_abm" variable.
14479         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
14480
14481         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
14482         Rewrite feature test bitmap.
14483         (ix86_isa_flags): New initialized global int varible.
14484         (ix86_isa_flags_explicit): New static int variable.
14485         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
14486         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
14487         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
14488         target_flags_explicit.
14489         (override_options): Remove "target_enable" and "target_disable" fields
14490         from "struct ptt". Update processor_target_table accordingly. Remove
14491         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
14492         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
14493         "target_flags" and "ix86_isa_flags_explicit" instead of
14494         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
14495         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
14496         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
14497         to true when either of PTA_POPCNT or PTA_ABM is set in
14498         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
14499         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
14500         processor_alias_table flags entry.  Remove handling of
14501         "target_enable" and "target_disable" fields of processor_target_table.
14502         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
14503         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
14504         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
14505         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
14506         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
14507         "target_flags".
14508         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
14509
14510 2007-05-29  David Daney  <ddaney@avtrex.com>
14511
14512         PR gcc/31975
14513         * config/mips/mips.c (mips_output_mi_thunk): Emit
14514         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
14515
14516 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
14517         * config/i386/i386.c (ix86_function_regparm): Added checking of
14518         ix86_force_align_arg_pointer to determine the number of
14519         register parameters.
14520
14521 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
14522
14523         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
14524         (SET_DR_MISALIGNMENT): New.
14525         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
14526         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
14527         Use SET_DR_MISALIGNMENT.
14528         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
14529         pointer.
14530         * tree-data-ref.c (create_data_ref, compute_all_dependences,
14531         find_loop_nest): Export.
14532         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
14533         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
14534         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
14535         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
14536         New macros.
14537         (struct mem_ref): Add field reuse_distance.
14538         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
14539         Initialize reuse_distance field.
14540         (issue_prefetch_ref): Select temporality of prefetch according to
14541         reuse_distance.
14542         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
14543         self_reuse_distance, determine_loop_nest_reuse): New functions.
14544         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
14545         (tree_ssa_prefetch_arrays): Dump L2 cache size.
14546         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
14547         dependency.
14548
14549 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
14550
14551         * tree-ssa-alias.c: Add aliasing overview.
14552
14553 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
14554             Danny Smith  <dannysmith@users.sourceforge.net>
14555
14556         PR target/29498
14557         * config/i386/t-crtfm: Compile crtfastmath.o with
14558         -minline-all-stringops.
14559         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
14560         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
14561
14562 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14563
14564         * doc/md.texi: Document constraints on HP PA-RISC.
14565
14566         * pa/constraints.md: New file.
14567         * pa.md: Include constraints.md.
14568         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
14569         (integer_store_memory_operand, ldil_cint_p): New functions.
14570         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
14571         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
14572         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
14573         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
14574         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
14575
14576 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
14577
14578         PR c/31339
14579         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
14580         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
14581         case POSTDECREMENT_EXPR>): Return the error_mark_node
14582         if either the real or imaginary parts would an
14583         error_mark_node.
14584
14585 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
14586
14587         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
14588         name when we remove it from a call.
14589
14590 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
14591
14592         * targhooks.c (default_narrow_bitfield): Remove.
14593         * targhooks.h: Remove the prototype for
14594         default_narrow_bitfield.
14595
14596         * langhooks-def.h: Remove the prototype for
14597         hook_get_alias_set_0.
14598         * langhooks.c (hook_get_alias_set_0): Remove.
14599
14600         * global.c (EXECUTE_IF_CONFLICT): Remove.
14601
14602 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14603
14604         PR tree-opt/32100
14605         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
14606         return true when truth_value_p is true and the type
14607         is of signed:1.
14608
14609 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
14610
14611         * doc/install.texi (Prerequisites): We no longer require Autoconf
14612         2.13 for the top-level.
14613
14614 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
14615
14616         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
14617         memory access via x86_expand_vector_move_misalign() only for
14618         TImode values on 32-bit targets.
14619
14620 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
14621
14622         * matrix-reorg.c: New file. Implement matrix flattening and
14623         transposing optimization.
14624         * tree-pass.h: Add matrix reorg pass.
14625         * common.opt: Add fipa-mreorg flag.
14626         * Makefile.in: Add matrix-reorg.c.
14627         * passes.c: Add matrix reorg pass.
14628         * varpool.c (add_new_static_var): New function.
14629         * cgraph.h (add_new_static_var): Declare.
14630
14631 2007-05-27  Eric Christopher  <echristo@apple.com>
14632
14633         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
14634         sp_offset depending on stack size. Save r12 depending
14635         on registers we're saving later.
14636         (rs6000_emit_epilogue): Update sp_offset depending only
14637         on stack size.
14638
14639 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
14640
14641         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
14642         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
14643         * ifcvt.c (if_convert): Ditto.
14644         * tree-ssa-threadupdate.c (thread_block): Ditto.
14645         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
14646         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
14647         verify_loop_closed_ssa): Check number_of_loops instead of
14648         current_loops.
14649         * predict.c (tree_estimate_probability): Ditto.
14650         * tree-if-conv.c (main_tree_if_conversion): Ditto.
14651         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
14652         * modulo-sched.c (sms_schedule): Ditto.
14653         * tree-scalar-evolution.c (scev_const_prop): Ditto.
14654         (scev_finalize): Do not do anything if scev analysis was not
14655         initialized.
14656         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
14657         current_loops == NULL.
14658         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
14659         * loop-init.c (loop_optimizer_init): Do not free current_loops when
14660         there are no loops.
14661         (loop_optimizer_finalize): Assert that loops were analyzed.
14662         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
14663         rtl_doloop): Check number_of_loops instead of current_loops.
14664         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
14665         current_loops == NULL.
14666         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
14667         gate_tree_vectorize tree_linear_transform, check_data_deps,
14668         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
14669         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
14670         Check number_of_loops instead of current_loops.
14671         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
14672         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
14673         free loops if available.
14674         (execute_pre): Do not pass do_fre to fini_pre.
14675
14676 2007-05-27  Tobias Burnus  <burnus@net-b.de>
14677
14678         PR middle-end/32083
14679         * real.c (mpfr_from_real): Fix sign of -Inf.
14680
14681 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
14682
14683         * tree-vect-transform.c (vectorizable_conversion): Initialize
14684         tree_code variables to ERROR_MARK.
14685         (vectorizable_type_demotion): Likewise.
14686         (vectorizable_type_promotion): Likewise.
14687
14688 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
14689
14690         PR target/32065
14691         * config/i386/i386.md (movti): Handle push operands via
14692         ix86_expand_push().
14693
14694 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
14695
14696         * basic-block.h: Remove the prototype for merge_seq_blocks.
14697         * cfgcleanup.c (merge_seq_blocks): Remove.
14698
14699         * tree-flow.h: Remove the prototype for is_aliased_with.
14700         * tree-ssa-alias.c (is_aliased_with): Remove.
14701
14702 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
14703
14704         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
14705
14706         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
14707
14708         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
14709         ix86_expand_sse4_unpack if SSE4.1 is enabled.
14710         (vec_unpacks_hi_v16qi): Likewise.
14711         (vec_unpacku_lo_v16qi): Likewise.
14712         (vec_unpacks_lo_v16qi): Likewise.
14713         (vec_unpacku_hi_v8hi): Likewise.
14714         (vec_unpacks_hi_v8hi): Likewise.
14715         (vec_unpacku_lo_v8hi): Likewise.
14716         (vec_unpacks_lo_v8hi): Likewise.
14717         (vec_unpacku_hi_v4si): Likewise.
14718         (vec_unpacks_hi_v4si): Likewise.
14719         (vec_unpacku_lo_v4si): Likewise.
14720         (vec_unpacks_lo_v4si): Likewise.
14721
14722 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
14723
14724         * c-typeck.c, config/arm/arm.c, config/darwin.c,
14725         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
14726         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
14727         follow spelling conventions in various
14728         warning/error/diagnostic messages.
14729
14730         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
14731         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
14732         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
14733         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
14734         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
14735         * doc/tm.texi: Follow spelling conventions.
14736
14737 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14738
14739         PR tree-opt/32090
14740         * tree-ssa-forwprop.c
14741         (forward_propagate_addr_into_variable_array_index): Remove
14742         the lhs argument.  Use the type of def_rhs instead of lhs.
14743         (forward_propagate_addr_expr_1): Update use of
14744         forward_propagate_addr_into_variable_array_index.
14745
14746 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
14747             Nigel Stephens  <nigel@mips.com>
14748
14749         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
14750         function attributes, "far" being an alias for "long_call".
14751         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
14752         (mips_near_type_p, mips_far_type_p): New.
14753         (mips_comp_type_attributes): New function to check that attributes
14754         attached to a function type are compatible.
14755         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
14756         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
14757         to the target function of the thunk.
14758         (mips_encode_section_info): Check for "near" and "far" function
14759         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
14760
14761         * config/mips/predicates.md (const_call_insn_operand): Test only
14762         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
14763
14764         * doc/extend.texi (Function Attributes): Document MIPS "near" and
14765         "far" attributes.
14766
14767         * testsuite/gcc.target/mips/near-far-1.c: New test case.
14768         * testsuite/gcc.target/mips/near-far-2.c: New test case.
14769         * testsuite/gcc.target/mips/near-far-3.c: New test case.
14770         * testsuite/gcc.target/mips/near-far-4.c: New test case.
14771
14772 2007-05-25  Eric Christopher  <echristo@apple.com>
14773
14774         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
14775         to x86-darwin configurations.
14776         * config/i386/t-darwin: Add softfp support.
14777         * config/i386/t-darwin64: Ditto.
14778         * config/i386/sfp-machine.h: If mach then don't use
14779         aliasing, emit a stub to call.
14780
14781 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
14782
14783         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
14784         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
14785         tree-predcom.c, tree-ssa-alias-warnings.c,
14786         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
14787         comment typos.  Follow spelling conventions.
14788         * doc/cpp.texi, doc/invoke.texi: Fix typos.
14789
14790 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
14791
14792         PR target/32065
14793         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
14794         constants into memory.  Expand unaligned memory references for
14795         SSE modes via x86_expand_vector_move_misalign() function.
14796
14797 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
14798
14799         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
14800         "memory" attribute for "sseishft" type insn without operands[2].
14801
14802 2007-05-25  Dirk Mueller  <dmueller@suse.de>
14803             Marcus Meissner <meissner@suse.de>
14804
14805         * doc/extend.texi (alloc_size): New attribute.
14806         * c-common.c (handle_alloc_size_attribute): New.
14807         * tree-object-size.c (alloc_object_size): Use alloc_size
14808         attribute, if available.
14809
14810 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
14811
14812         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
14813         with MASK_SSE2.
14814         (__builtin_ia32_vec_ext_v2di): Likewise.
14815         (__builtin_ia32_vec_ext_v4si): Likewise.
14816         (__builtin_ia32_vec_ext_v8hi): Likewise.
14817         (__builtin_ia32_vec_ext_v16qi): Likewise.
14818         (__builtin_ia32_vec_set_v8hi): Likewise.
14819
14820 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
14821
14822         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
14823
14824 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
14825
14826         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
14827         (arm_is_longcall_p): Rename to...
14828         (arm_is_long_call_p): ...this.  Take a single tree argument and
14829         return a bool.
14830         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
14831         (CUMULATIVE_ARGS): Remove call_cookie.
14832         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
14833         (ENCODED_LONG_CALL_ATTR_P): Delete.
14834         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
14835         LONG_CALL_FLAG_CHAR cases.
14836         (ARM_DECLARE_FUNCTION_SIZE): Delete.
14837         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
14838         ARM_DECLARE_FUNCTION_SIZE.
14839         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
14840         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
14841         (arm_encode_call_attribute, current_file_function_operand): Delete.
14842         (arm_function_in_section_p): New function.
14843         (arm_is_longcall_p): Rename to...
14844         (arm_is_long_call_p): ...this.  Take the target function as a single
14845         argument and return a bool.  Do not rely on call cookies.  Check
14846         whether the target symbol is in the same section as the current
14847         function, not just the same compilation unit.
14848         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
14849         (arm_encode_section_info): Don't encode a call type.
14850         * config/arm/arm.md (call, call_value): Update calls to
14851         arm_is_long(_)call_p.  Simplify logic.
14852         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
14853         Update calls to arm_is_long(_)call_p.
14854
14855 2007-05-25  Richard Guenther  <rguenther@suse.de>
14856
14857         PR tree-optimization/31982
14858         * tree-ssa-forwprop.c
14859         (forward_propagate_addr_into_variable_array_index): Handle arrays
14860         with element size one.
14861
14862 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14863
14864         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
14865         (umulsi3_highpart): Likewise.
14866
14867 2007-05-24  Ian Lance Taylor  <iant@google.com>
14868
14869         PR rtl-optimization/32069
14870         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
14871         is NULL.
14872
14873 2007-05-24  Ollie Wild  <aaw@google.com>
14874
14875         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
14876         description.
14877
14878 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
14879
14880         * postreload-gcse.c (reg_changed_after_insn_p): New function.
14881         (oprs_unchanged_p): Use it to check all registers in a REG.
14882         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
14883         (reg_set_between_after_reload_p): Delete.
14884         (reg_used_between_after_reload_p): Likewise.
14885         (reg_set_or_used_since_bb_start): Likewise.
14886         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
14887         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
14888         Use reg_set_between_p instead of reg_set_between_after_reload_p.
14889         * rtlanal.c (reg_set_p): Check whether REG overlaps
14890         regs_invalidated_by_call, rather than just checking the
14891         membership of REGNO (REG).
14892
14893 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
14894
14895         * doc/passes.texi: Document predictive commoning.
14896         * doc/invoke.texi (-fpredictive-commoning): Document.
14897         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
14898         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
14899         adding indices to the generated name.
14900         (schedule_sm): Pass 0 to get_lsm_tmp_name.
14901         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
14902         * tree-pretty-print.c (op_symbol_1): Renamed to ...
14903         (op_symbol_code): ... and exported.
14904         (dump_omp_clause, op_symbol): Use op_symbol_code
14905         instead of op_symbol_1.
14906         * tree-pass.h (pass_predcom): Declare.
14907         * timevar.def (TV_PREDCOM): New timevar.
14908         * tree-ssa-loop.c (run_tree_predictive_commoning,
14909         gate_tree_predictive_commoning, pass_predcom): New.
14910         * tree-data-ref.c (find_data_references_in_loop): Find the
14911         references in dominance order.
14912         (canonicalize_base_object_address): Ensure that the result has
14913         pointer type.
14914         (dr_analyze_innermost): Export.
14915         (create_data_ref): Code to fail for references with invariant
14916         address moved ...
14917         (find_data_references_in_stmt): ... here.
14918         * tree-data-ref.h (dr_analyze_innermost): Declare.
14919         * tree-affine.c: Include tree-gimple.h and hashtab.h.
14920         (aff_combination_find_elt, name_expansion_hash,
14921         name_expansion_eq, tree_to_aff_combination_expand,
14922         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
14923         New functions.
14924         * tree-affine.h (aff_combination_constant_multiple_p,
14925         tree_to_aff_combination_expand): Declare.
14926         * tree-predcom.c: New file.
14927         * common.opt (fpredictive-commoning): New option.
14928         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
14929         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
14930         * Makefile.in (tree-predcom.o): Add.
14931         (tree-affine.o): Add TREE_GIMPLE_H dependency.
14932         * passes.c (init_optimization_passes): Add dceloop after
14933         copy propagation in loop optimizer.  Add predictive commoning
14934         to loop optimizer passes.
14935
14936 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
14937
14938         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
14939         default hook.
14940
14941 2007-05-24  Jan Hubicka  <jh@suse.cz>
14942
14943         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
14944         statistics.
14945         (genheader): Include statistics.h.
14946
14947         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
14948         notes are gone.
14949         * print-rtl.c (flag_dump_unnumbered): Update comments.
14950         (print_rtl): Fix my previous change.
14951         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
14952         specific data.
14953
14954 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
14955
14956         PR middle-end/32018
14957         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
14958         set_loop_copy.
14959         (thread_through_all_blocks): Call initialize_original_copy_tables
14960         and free_original_copy_tables.
14961         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
14962         Use set_loop_copy.
14963         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
14964         * cfghooks.c (duplicate_block): Use get_loop_copy.
14965         * cfg.c: Include cfgloop.h.
14966         (loop_copy): New hash table.
14967         (initialize_original_copy_tables): Initialize loop_copy table.
14968         (free_original_copy_tables): Free loop_copy table.
14969         (copy_original_table_clear, copy_original_table_set,
14970         set_loop_copy, get_loop_copy): New functions.
14971         (set_bb_original, set_bb_copy): Use copy_original_table_set.
14972         * cfgloop.h (struct loop): Remove copy field.
14973         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
14974         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
14975
14976 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
14977
14978         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
14979         -msse/-msse2/-msse3.
14980
14981 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
14982
14983         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
14984         __builtin_ia32_vec_set_v2di with MASK_64BIT.
14985
14986 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
14987
14988         PR target/27067
14989         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
14990         * targhooks.h (default_mangle_decl_assembler_name): Declare
14991         default hook.
14992         * targhooks.c (default_mangle_decl_assembler_name): Define
14993         default hook.
14994         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
14995         default hook.
14996         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
14997         * langhooks.c (lhd_set_decl_assembler_name): Call
14998         targetm.mangle_decl_assembler_name for names with global scope.
14999
15000         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
15001         default.
15002         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
15003         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
15004         Declare.
15005         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
15006         New. Factored out of i386_pe_encode_section_info.
15007         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
15008         Move check for prior decoration of stdcall
15009         symbols to i386_pe_encode_section_info.
15010         (i386_pe_encode_section_info): Adjust call to
15011         gen_stdcall_or_fastcall_suffix.  Use
15012         i386_pe_maybe_mangle_decl_assembler_name, if needed.
15013         (i386_pe_mangle_decl_assembler_name): New. Wrap
15014         i386_pe_maybe_mangle_decl_assembler_name.
15015
15016 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
15017
15018         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
15019         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
15020         * langhooks.c (get_signed_or_unsigned_type): Don't check for
15021         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
15022         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
15023         TYPE_UNSIGNED.
15024
15025 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
15026             Nigel Stephens  <nigel@mips.com>
15027             Richard Sandiford  <richard@codesourcery.com>
15028
15029         Fix up MIPS16 hard float and add support for complex.
15030
15031         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
15032         (TARGET_SOFT_FLOAT_ABI): New.
15033         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
15034         __mips_soft_float to reflect the ABI in use, not whether the
15035         FPU is directly accessible (e.g., in MIPS16 mode).
15036         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
15037         (UNITS_PER_FPVALUE): Likewise.
15038
15039         * config/mips/mips.c (mips_expand_call): Remove redundant
15040         TARGET_MIPS16 check.
15041         (mips_arg_regno): New.
15042         (function_arg_advance): When setting bits in cum->fp_code for
15043         MIPS16, don't subtract 1 from cum->arg_number, since it is now
15044         zero-based.
15045         (function_arg): Use mips_arg_regno.
15046         (mips_return_mode_in_fpr_p): New.
15047         (mips16_call_stub_mode_suffix): New.
15048         (mips16_cfun_returns_in_fpr_p): New.
15049         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
15050         (mips_output_function_prologue): Test mips16_hard_float, not
15051         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
15052         (mips_expand_epilogue): Call MIPS16 helper routines to copy
15053         return value into a floating-point register.
15054         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
15055         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
15056         (mips16_fp_args): Handle MIPS32r2 ISA which supports
15057         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
15058         word of double arguments from or to the high bits of 64-bit
15059         floating point registers.
15060         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
15061         (mips16_fpret_double): New helper function.
15062         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
15063         support for complex modes.  Fill in DECL_RESULT for stubdecl.
15064         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
15065
15066         * config/mips/mips16.S
15067         (RET, ARG1, ARG2): New.
15068         (MERGE_GPRf, MERGE_GPRt): New.
15069         (DELAYt, DELAYf): New.
15070         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
15071         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
15072         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
15073         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
15074         (SFOP): Renamed to...
15075         (OPSF3): This, and macro-ified.  Updated all uses.
15076         (SFOP2): Renamed to...
15077         (OPSF2): This, and macro-ified.  Updated all uses.
15078         (SFCMP): Renamed to...
15079         (CMPSF): This, and macro-ified.  Updated all uses.
15080         (SFREVCMP): Renamed to...
15081         (REVCMPSF): This, and macro-ified.  Updated all uses.
15082         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
15083         (LDDBL1, LDDBL2, RETDBL): Deleted.
15084         (DFOP): Renamed to...
15085         (OPDF3): This, and macro-ified.  Updated all uses.
15086         (DFOP2): Renamed to...
15087         (OPDF2): This, and macro-ified.  Updated all uses.
15088         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
15089         (DFCMP): Renamed to...
15090         (CMPDF): This, and macro-ified.  Updated all uses.
15091         (DFREVCMP): Renamed to...
15092         (REVCMPDF): This, and macro-ified.  Updated all uses.
15093         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
15094         (RET_FUNCTION): New.
15095         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
15096         (__mips16_ret_sc, __mips16_ret_dc): New.
15097         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
15098         STUB_ARGS_6, STUB_ARGS_10): New.
15099         (CALL_STUB_NO_RET): New.
15100         (__mips16_call_stub_1): Macro-ified.
15101         (__mips16_call_stub_5): Macro-ified.
15102         (__mips16_call_stub_2): Macro-ified.
15103         (__mips16_call_stub_6): Macro-ified.
15104         (__mips16_call_stub_9): Macro-ified.
15105         (__mips16_call_stub_10): Macro-ified.
15106         (CALL_STUB_RET): New.
15107         (__mips16_call_stub_sf_0): Macro-ified.
15108         (__mips16_call_stub_sf_1): Macro-ified.
15109         (__mips16_call_stub_sf_5): Macro-ified.
15110         (__mips16_call_stub_sf_2): Macro-ified.
15111         (__mips16_call_stub_sf_6): Macro-ified.
15112         (__mips16_call_stub_sf_9): Macro-ified.
15113         (__mips16_call_stub_sf_10): Macro-ified.
15114         (__mips16_call_stub_df_0): Macro-ified.
15115         (__mips16_call_stub_df_1): Macro-ified.
15116         (__mips16_call_stub_df_5): Macro-ified.
15117         (__mips16_call_stub_df_2): Macro-ified.
15118         (__mips16_call_stub_df_6): Macro-ified.
15119         (__mips16_call_stub_df_9): Macro-ified.
15120         (__mips16_call_stub_df_10): Macro-ified.
15121         (__mips16_call_stub_sc_0): New.
15122         (__mips16_call_stub_sc_1): New.
15123         (__mips16_call_stub_sc_5): New.
15124         (__mips16_call_stub_sc_2): New.
15125         (__mips16_call_stub_sc_6): New.
15126         (__mips16_call_stub_sc_9): New.
15127         (__mips16_call_stub_sc_10): New.
15128         (__mips16_call_stub_dc_0): New.
15129         (__mips16_call_stub_dc_1): New.
15130         (__mips16_call_stub_dc_5): New.
15131         (__mips16_call_stub_dc_2): New.
15132         (__mips16_call_stub_dc_6): New.
15133         (__mips16_call_stub_dc_9): New.
15134         (__mips16_call_stub_dc_10): New.
15135
15136         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
15137         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
15138         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
15139
15140 2007-05-23  Ian Lance Taylor  <iant@google.com>
15141
15142         * doc/invoke.texi (Invoking GCC): Document that the order of the
15143         -l option matters.
15144
15145 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
15146
15147         PR target/30987
15148         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
15149         * config/score/predicate.md (const_pow2, const_npow2): Remove.
15150         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
15151         undef.
15152
15153         PR target/30474
15154         * config/score/score.c (score_print_operand): Make sure that only
15155         lower bits are used.
15156
15157 2007-05-22  Ian Lance Taylor  <iant@google.com>
15158
15159         * tree-vrp.c (avoid_overflow_infinity): New static function,
15160         broken out of set_value_range_to_value.
15161         (set_value_range_to_value): Call avoid_overflow_infinity.
15162         (extract_range_from_assert): Likewise.
15163
15164 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15165
15166         PR middle-end/31095
15167          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
15168         change the type before looking for a COMPOUND_EXPR.
15169
15170 2007-05-22  Ian Lance Taylor  <iant@google.com>
15171
15172         * lower-subreg.c (decompose_multiword_subregs): If we change an
15173         insn, call remove_retval_note on it.
15174
15175 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
15176
15177         * regs.h (end_hard_regno): New function.
15178         (END_HARD_REGNO, END_REGNO): New macros.
15179         (add_to_hard_reg_set): New function.
15180         (remove_from_hard_reg_set): Likewise.
15181         (in_hard_reg_set_p): Likewise.
15182         (overlaps_hard_reg_set_p): Likewise.
15183         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
15184         (note_btr_set): Use END_HARD_REGNO.
15185         * caller-save.c (setup_save_areas): Use end_hard_regno.
15186         (mark_set_regs): Use END_HARD_REGNO.
15187         (add_stored_regs): Use end_hard_regno.
15188         (mark_referenced_regs): Use add_to_hard_reg_set.
15189         * combine.c (update_table_tick): Use END_REGNO.
15190         (record_value_for_reg): Likewise.
15191         (record_dead_and_set_regs): Likewise.
15192         (get_last_value_validate): Likewise.
15193         (use_crosses_set_p): Likewise.
15194         (reg_dead_at_p_1): Likewise.
15195         (reg_dead_at_p): Likewise.
15196         (mark_used_regs_combine): Use add_to_hard_reg_set.
15197         (move_deaths): Use END_HARD_REGNO.
15198         (reg_bitfield_target_p): Use end_hard_regno.
15199         (distribute_notes): Use END_HARD_REGNO.
15200         * cse.c (mention_regs): Use END_REGNO.
15201         (insert): Use add_to_hard_reg_set.
15202         (invalidate): Use END_HARD_REGNO.
15203         (invalidate_for_call): Likewise.
15204         (exp_equiv_p): Use END_REGNO.
15205         (cse_insn): Likewise.
15206         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
15207         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
15208         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
15209         * function.c (keep_stack_depressed): Use end_hard_regno.
15210         * global.c (global_alloc): Use end_hard_regno.
15211         (global_conflicts): Use add_to_hard_reg_set instead of
15212         mark_reg_live_nc.
15213         (find_reg): Likewise.
15214         (mark_reg_store): Likewise.
15215         (mark_reg_conflicts): Likewise.
15216         (mark_reg_death): Use remove_from_hard_reg_set.
15217         (mark_reg_live_nc): Delete.
15218         (set_preference): Use end_hard_regno.
15219         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
15220         remove_from_hard_reg_set.
15221         (post_mark_life): Use add_to_hard_reg_set.
15222         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
15223         (reg_becomes_live): Use add_to_hard_reg_set.
15224         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
15225         (peep2_find_free_register): Use add_to_hard_reg_set.
15226         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
15227         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
15228         * regrename.c (note_sets): Use add_to_hard_reg_set.
15229         (clear_dead_regs): Use remove_from_hard_reg_set.
15230         (regrename_optimize): Use add_to_hard_reg_set.
15231         (find_oldest_value_reg): Use in_hard_reg_set_p.
15232         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
15233         (hard_reg_set_here_p): Use end_hard_regno.
15234         (decompose): Likewise.
15235         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
15236         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
15237         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
15238         (mark_home_live): Use end_hard_regno.
15239         (spill_hard_reg): Likewise.
15240         (clear_reload_reg_in_use): Likewise.
15241         * reorg.c (delete_prior_computation): Use END_REGNO.
15242         * resource.c (update_live_status): Use END_HARD_REGNO.
15243         (mark_referenced_resources): Use add_to_hard_reg_set.
15244         (mark_set_resources): Likewise.
15245         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
15246         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
15247         (reg_overlap_mentioned_p): Likewise.
15248         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
15249         (covers_regno_no_parallel_p): Use END_REGNO.
15250         (find_regno_note): Likewise.
15251         (find_reg_fusage): Use END_HARD_REGNO.
15252         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
15253         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
15254
15255 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
15256
15257         * mode-switching.c (reg_dies): Change type of second argument to
15258         "HARD_REG_SET *".
15259         (optimize_mode_switching): Update accordingly.
15260
15261 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
15262
15263         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
15264         in favor of...
15265         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
15266         (hard_reg_set_empty_p): ...these new functions.
15267         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
15268         GO_IF_HARD_REG_SUBSET.
15269         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
15270         instead of GO_IF_HARD_REG_EQUAL.
15271         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
15272         instead of GO_IF_HARD_REG_EQUAL.
15273         * global.c (find_reg): Use hard_reg_set_empty_p instead of
15274         GO_IF_HARD_REG_SUBSET.
15275         (modify_reg_pav): Use hard_reg_set_empty_p instead of
15276         GO_IF_HARD_REG_EQUAL.
15277         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
15278         of GO_IF_HARD_REG_SUBSET.
15279         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
15280         instead of GO_IF_HARD_REG_EQUAL.
15281         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
15282         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
15283         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
15284         of GO_IF_HARD_REG_SUBSET,
15285         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
15286         GO_IF_HARD_REG_SUBSET.
15287         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
15288         instead of GO_IF_HARD_REG_EQUAL.
15289         * config/sh/sh.c (push_regs, calc_live_regs): Use
15290         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
15291         (hard_regs_intersect_p): Delete.
15292
15293 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
15294
15295         * doc/sourcebuild.texi (Test Directives) Add dg-message.
15296
15297 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
15298             Richard Henderson  <rth@redhat.com>
15299
15300         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
15301         extra_headers.
15302         (x86_64-*-*): Likewise.
15303
15304         * i386/i386-modes.def (V2QI): New.
15305
15306         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
15307         SSE4A.
15308         (override_options): Support SSE4.1.
15309         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
15310         (IX86_BUILTIN_BLENDPS): Likewise.
15311         (IX86_BUILTIN_BLENDVPD): Likewise.
15312         (IX86_BUILTIN_BLENDVPS): Likewise.
15313         (IX86_BUILTIN_PBLENDVB128): Likewise.
15314         (IX86_BUILTIN_PBLENDW128): Likewise.
15315         (IX86_BUILTIN_DPPD): Likewise.
15316         (IX86_BUILTIN_DPPS): Likewise.
15317         (IX86_BUILTIN_INSERTPS128): Likewise.
15318         (IX86_BUILTIN_MOVNTDQA): Likewise.
15319         (IX86_BUILTIN_MPSADBW128): Likewise.
15320         (IX86_BUILTIN_PACKUSDW128): Likewise.
15321         (IX86_BUILTIN_PCMPEQQ): Likewise.
15322         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
15323         (IX86_BUILTIN_PMAXSB128): Likewise.
15324         (IX86_BUILTIN_PMAXSD128): Likewise.
15325         (IX86_BUILTIN_PMAXUD128): Likewise.
15326         (IX86_BUILTIN_PMAXUW128): Likewise.
15327         (IX86_BUILTIN_PMINSB128): Likewise.
15328         (IX86_BUILTIN_PMINSD128): Likewise.
15329         (IX86_BUILTIN_PMINUD128): Likewise.
15330         (IX86_BUILTIN_PMINUW128): Likewise.
15331         (IX86_BUILTIN_PMOVSXBW128): Likewise.
15332         (IX86_BUILTIN_PMOVSXBD128): Likewise.
15333         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
15334         (IX86_BUILTIN_PMOVSXWD128): Likewise.
15335         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
15336         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
15337         (IX86_BUILTIN_PMOVZXBW128): Likewise.
15338         (IX86_BUILTIN_PMOVZXBD128): Likewise.
15339         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
15340         (IX86_BUILTIN_PMOVZXWD128): Likewise.
15341         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
15342         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
15343         (IX86_BUILTIN_PMULDQ128): Likewise.
15344         (IX86_BUILTIN_PMULLD128): Likewise.
15345         (IX86_BUILTIN_ROUNDPD): Likewise.
15346         (IX86_BUILTIN_ROUNDPS): Likewise.
15347         (IX86_BUILTIN_ROUNDSD): Likewise.
15348         (IX86_BUILTIN_ROUNDSS): Likewise.
15349         (IX86_BUILTIN_PTESTZ): Likewise.
15350         (IX86_BUILTIN_PTESTC): Likewise.
15351         (IX86_BUILTIN_PTESTNZC): Likewise.
15352         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
15353         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
15354         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
15355         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
15356         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
15357         (bdesc_ptest): New.
15358         (bdesc_sse_3arg): Likewise.
15359         (bdesc_2arg): Likewise.
15360         (bdesc_1arg): Likewise.
15361         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
15362         with 3 args.
15363         (ix86_expand_sse_4_operands_builtin): New.
15364         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
15365         smaller than 8 bits as the 2nd arg.
15366         (ix86_expand_sse_ptest): New.
15367         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
15368         (ix86_expand_vector_set): Support SSE4.1.
15369         (ix86_expand_vector_extract): Likewise.
15370
15371         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
15372         __SSE4_1__ for -msse4.1.
15373
15374         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
15375         (UNSPEC_INSERTPS): Likewise.
15376         (UNSPEC_DP): Likewise.
15377         (UNSPEC_MOVNTDQA): Likewise.
15378         (UNSPEC_MPSADBW): Likewise.
15379         (UNSPEC_PHMINPOSUW): Likewise.
15380         (UNSPEC_PTEST): Likewise.
15381         (UNSPEC_ROUNDP): Likewise.
15382         (UNSPEC_ROUNDS): Likewise.
15383
15384         * config/i386/i386.opt (msse4.1): New for SSE4.1.
15385
15386         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
15387         (const_pow2_1_to_32768_operand): Likewise.
15388
15389         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
15390         file.
15391
15392         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
15393         SSE4.1.
15394         (sse4_1_insertps): Likewise.
15395         (*sse4_1_extractps): Likewise.
15396         (sse4_1_ptest): Likewise.
15397         (sse4_1_mulv2siv2di3): Likewise.
15398         (*sse4_1_mulv4si3): Likewise.
15399         (*sse4_1_smax<mode>3): Likewise.
15400         (*sse4_1_umax<mode>3): Likewise.
15401         (*sse4_1_smin<mode>3): Likewise.
15402         (*sse4_1_umin<mode>3): Likewise.
15403         (sse4_1_eqv2di3): Likewise.
15404         (*sse4_1_pinsrb): Likewise.
15405         (*sse4_1_pinsrd): Likewise.
15406         (*sse4_1_pinsrq): Likewise.
15407         (*sse4_1_pextrb): Likewise.
15408         (*sse4_1_pextrb_memory): Likewise.
15409         (*sse4_1_pextrw_memory): Likewise.
15410         (*sse4_1_pextrq): Likewise.
15411         (sse4_1_blendpd): Likewise.
15412         (sse4_1_blendps): Likewise.
15413         (sse4_1_blendvpd): Likewise.
15414         (sse4_1_blendvps): Likewise.
15415         (sse4_1_dppd): Likewise.
15416         (sse4_1_dpps): Likewise.
15417         (sse4_1_movntdqa): Likewise.
15418         (sse4_1_mpsadbw): Likewise.
15419         (sse4_1_packusdw): Likewise.
15420         (sse4_1_pblendvb): Likewise.
15421         (sse4_1_pblendw): Likewise.
15422         (sse4_1_phminposuw): Likewise.
15423         (sse4_1_extendv8qiv8hi2): Likewise.
15424         (*sse4_1_extendv8qiv8hi2): Likewise.
15425         (sse4_1_extendv4qiv4si2): Likewise.
15426         (*sse4_1_extendv4qiv4si2): Likewise.
15427         (sse4_1_extendv2qiv2di2): Likewise.
15428         (*sse4_1_extendv2qiv2di2): Likewise.
15429         (sse4_1_extendv4hiv4si2): Likewise.
15430         (*sse4_1_extendv4hiv4si2): Likewise.
15431         (sse4_1_extendv2hiv2di2): Likewise.
15432         (*sse4_1_extendv2hiv2di2): Likewise.
15433         (sse4_1_extendv2siv2di2): Likewise.
15434         (*sse4_1_extendv2siv2di2): Likewise.
15435         (sse4_1_zero_extendv8qiv8hi2): Likewise.
15436         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
15437         (sse4_1_zero_extendv4qiv4si2): Likewise.
15438         (*sse4_1_zero_extendv4qiv4si2): Likewise.
15439         (sse4_1_zero_extendv2qiv2di2): Likewise.
15440         (*sse4_1_zero_extendv2qiv2di2): Likewise.
15441         (sse4_1_zero_extendv4hiv4si2): Likewise.
15442         (*sse4_1_zero_extendv4hiv4si2): Likewise.
15443         (sse4_1_zero_extendv2hiv2di2): Likewise.
15444         (*sse4_1_zero_extendv2hiv2di2): Likewise.
15445         (sse4_1_zero_extendv2siv2di2): Likewise.
15446         (*sse4_1_zero_extendv2siv2di2): Likewise.
15447         (sse4_1_roundpd): Likewise.
15448         (sse4_1_roundps): Likewise.
15449         (sse4_1_roundsd): Likewise.
15450         (sse4_1_roundss): Likewise.
15451         (mulv4si3): Don't expand for SSE4.1.
15452         (smax<mode>3): Likewise.
15453         (umaxv4si3): Likewise.
15454         (uminv16qi3): Likewise.
15455         (umin<mode>3): Likewise.
15456         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
15457
15458         * doc/extend.texi: Document SSE4.1 built-in functions.
15459
15460         * doc/invoke.texi: Document -msse4.1.
15461
15462 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
15463
15464         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
15465         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
15466         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
15467         (ASM_SPEC): Add asm_pcrel_spec.
15468         (EXTRA_SPECS): Add asm_pcrel_spec.
15469
15470 2007-05-21  David Daney  <ddaney@avtrex.com>
15471
15472         * doc/install.texi (Building a cross compiler): Add requirements
15473         for Java cross compiler.
15474
15475 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15476
15477         PR middle-end/31995
15478         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
15479         Add loopno argument.  Use evolution_function_is_invariant_rec_p
15480         instead of evolution_function_is_constant_p.
15481         Update calls to evolution_function_is_affine_multivariate_p.
15482         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
15483         Add loopno argument.
15484         * tree-scalar-evolution.c (gather_chrec_stats): Call
15485         evolution_function_is_affine_multivariate_p with a loop
15486         number of 0.
15487         * tree-data-ref.c (analyze_miv_subscript): Likewise.
15488         (analyze_overlapping_iterations): Likewise.
15489         (access_functions_are_affine_or_constant_p): Likewise.
15490         (build_classic_dist_vector_1): If the access functions
15491         are equal, don't do anything.
15492
15493 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
15494             Paolo Carlini  <pcarlini@suse.de>
15495             Uros Bizjak  <ubizjak@gmail.com>
15496
15497         * c-cppbuiltin.c (c_cpp_builtins): Define
15498         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
15499         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
15500         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
15501         * doc/cpp.texi ([Standard Predefined Macros]): Document.
15502
15503 2007-05-21  Mike Stump  <mrs@apple.com>
15504
15505         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
15506         handling as well.
15507         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
15508
15509 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
15510
15511         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
15512         implementation if __OPTIMIZE__ is not defined.
15513         (_mm_alignr_pi8): Ditto.
15514         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
15515         (_mm_inserti_si64): Ditto.
15516         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
15517         (_mm_slli_epi16): Ditto.
15518         (_mm_slli_epi32): Ditto.
15519         (_mm_slli_epi64): Ditto.
15520         (_mm_srai_epi16): Ditto.
15521         (_mm_srai_epi32): Ditto.
15522         (_mm_srli_si128): Ditto.
15523         (_mm_slli_si128): Ditto.
15524         (_mm_srli_epi16): Ditto.
15525         (_mm_srli_epi32): Ditto.
15526         (_mm_srli_epi64): Ditto.
15527         (_mm_extract_epi16): Ditto.
15528         (_mm_insert_epi16): Ditto.
15529         (_mm_shufflehi_epi16): Ditto.
15530         (_mm_shufflelo_epi16): Ditto.
15531         (_mm_shuffle_epi32): Ditto.
15532         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
15533         (_m_pextrw): Ditto.
15534         (_mm_insert_pi16): Ditto.
15535         (_m_pinsrw): Ditto.
15536         (_mm_shuffle_pi16): Ditto.
15537         (_m_pshufw): Ditto.
15538         (_mm_shufle_ps): Ditto.
15539         (_mm_prefetch): Ditto.
15540
15541 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
15542
15543         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
15544         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
15545         * real.c (encode_i370_single, decode_i370_single,
15546         encode_i370_double, decode_i370_double): Functions removed.
15547         (i370_single_format, i370_double_format): Initializations removed.
15548         (real_maxval, round_for_format, exact_real_truncate, significand_size):
15549         Consider the log2_b field to always be one.
15550         (ieee_single_format, mips_single_format, coldfire_single_format,
15551         ieee_double_format, mips_double_format, coldfire_double_format,
15552         ieee_extended_motorola_format, ieee_extended_intel_96_format,
15553         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
15554         ibm_extended_format, mips_extended_format, ieee_quad_format,
15555         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
15556         decimal_single_format, decimal_double_format, decimal_quad_format,
15557         c4x_single_format, c4x_extended_format, real_internal_format): Remove
15558         initialization of log2_b.
15559         * real.h (i370_single_format, i370_double_format): Declarations
15560         removed.
15561         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
15562         field to always be one.
15563
15564 2007-05-21  Andreas Schwab  <schwab@suse.de>
15565
15566         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
15567         NOTE_INSN_BASIC_BLOCK_P.
15568         (process_for_unwind_directive): Likewise.
15569
15570 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
15571
15572         * builtins.c (expand_builtin_setjmp_setup): Update comment.
15573         * function.h (struct function): Move va_list_gpr_size,
15574         va_list_fpr_size, function_frequency to front of bitfields.  Add
15575         calls_unwind_init.
15576         (current_function_calls_unwind_init): New.
15577         * except.c (expand_builtin_unwind_init): Set
15578         current_function_calls_unwind_init not
15579         current_function_has_nonlocal_label.
15580         * reload1.c (has_nonexceptional_receiver): New.
15581         (reload): Use it and current_function_calls_unwind_init to
15582         determine whether call-saved regs must be saved.
15583
15584 2007-05-20  Jan Hubicka  <jh@suse.cz>
15585
15586         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
15587         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
15588         * ddg.c (create_ddg): LIkewise.
15589         * final.c (final): Remove hunk moving line number notes around since
15590         they are no longer present at this stage.
15591         (final_scan_insn): Use NOTE_KIND instead of
15592         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
15593         (output_asm_label): Likewise.
15594         * reorg.c (dbr_schedule): Likewise.
15595         * haifa-sched.c (unlink_other_notes): Likewise.
15596         * mode-switching.c (optimize_mode_switching): Likewise.
15597         * graph.c (start_bb): Likewise.
15598         * rtl.def (NOTE): Update description.
15599         * jump.c (squeeze_notes): Delete.
15600         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
15601         NOTE_INSN_BASIC_BLOCK_P when possible.
15602         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
15603         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
15604         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
15605         (dwarf2out_var_location): Likewise.
15606         * cfgbuild.c (make_edges): Likewise.
15607         (find_basic_blocks_1): Likewise.
15608         * function.c (reorder_blocks_1): Likewise.
15609         (epilogue_done): Likewise.
15610         (reposition_prologue_and_epilogue_notes): Likewise.
15611         * print-rtl.c (print_rtx): Likewise; drop code for printing
15612         line number notes.
15613         (print_rtl): Likewise.
15614         (print_rtl_single): Likewise.
15615         * gcse.c (insert_insn_start_bb): Likewise.
15616         * alias.c (init_alias_analysis): Likewise.
15617         * calls.c (fixup_tail_calls): Likewise.
15618         * except.c (sjlj_emit_function_enter): Likewise.
15619         * emit-rtl.c (add_insn_after): Likeiwse.
15620         (emit_label_before): Likewise.
15621         (emit_label_after): Likewise.
15622         (emit_note_before, emit_note_after, emit_note): Update
15623         parameter to be enum insn_note; do not deal with source
15624         files.
15625         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
15626         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
15627         when possible.
15628         (merge_blocks_move_successor_nojumps): Simplify now when
15629         we don't have BLOCK notes.
15630         (try_optimize_cfg): Likewise.
15631         * cfglayout.c (skip_insns_after_block): Likewise.
15632         (record_effective_endpoints): Likewise.
15633         (duplicate_insn_chain): Likewise.
15634         * varasm.c (output_constant_pool_1): Likewise.
15635         * sched-deps.c (sched_analyze): Likewise.
15636         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
15637         Exterminate.
15638         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
15639         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
15640         (SET_INSN_DELETED): Simplify.
15641         (NOTE_LINE_NUMBER): Exterminate.
15642         (NOTE_LINE_KIND): New.
15643         (NOTE_INSN_BASIC_BLOCK_P): Update.
15644         (enum insn_note): Simplify.
15645         (GET_NOTE_INSN_NAME) Simplify.
15646         (emit_note_before, emit_note_after, emit_note): Update prototype.
15647         (squeeze_notes): Remove.
15648         * sched-int.h (NOTE_NOT_BB_P): Update.
15649         * resource.c (mark_target_live_regs): Update.
15650         * sched-rgn.c (debug_dependencies): Update.
15651         * sched-vis.c (print_insn): Update.
15652         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
15653         * config/i386/i386.c (ix86_output_function_epilogue): Update.
15654         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
15655         (TARGET_ADJUST_UNROLL_MAX): Likewise.
15656         (split_branches): Update.
15657         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
15658         4.0.0.
15659         (sh_adjust_unroll_max): Exterminate.
15660         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
15661         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
15662         (m68hc11_reorg): Likewise.
15663         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
15664         (emit_predicate_relation_info): Update.
15665         (process_for_unwind_directive): Update.
15666         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
15667         (output_call): Update.
15668         * config/pa/pa.c (output_lbranch): Update.
15669         (output_millicode_call): Update.
15670         (output_call): Update.
15671         (pa_combine_instructions): Update.
15672         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
15673         * config/bfin/bfin.c (gen_one_bundle): Update.
15674         * cfgrtl.c (can_delete_note_p): Update.
15675         (delete_insn): Update.
15676         (rtl_merge_blocks): Update.
15677         (commit_one_edge_insertion): Update.
15678         (rtl_verify_flow_info): Update.
15679         * stmt.c (expand_case): Do not call squeeze_notes.
15680
15681 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15682
15683         PR middle-end/7651
15684         PR c++/11856
15685         PR c/12963
15686         PR c/23587
15687         PR other/29694
15688         * c.opt (Wtype-limits): New.
15689         * doc/invoke.texi (Wtype-limits): Document it.
15690         (Wextra): Enabled by -Wextra.
15691         * c-opts.c (c_common_post_options): Enabled by -Wextra.
15692         * c-common.c (shorten_compare): Warn with Wtype-limits.
15693
15694 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
15695
15696         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
15697         inlined function, not as a macro.
15698         (_mm_alignr_pi8): Ditto.
15699         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
15700         (_mm_inserti_si64): Ditto.
15701         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
15702         (_mm_extract_epi16): Ditto.
15703         (_mm_insert_epi16): Ditto.
15704         (_mm_shufflehi_epi16): Ditto.
15705         (_mm_shufflelo_epi16): Ditto.
15706         (_mm_shuffle_epi32): Ditto.
15707         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
15708         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
15709         all functions.
15710         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
15711         float constant.
15712         (_m_to_float): Use C89 compatible assignment.
15713
15714 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
15715
15716         PR target/32007
15717         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
15718
15719 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15720
15721         PR middle-end/7651
15722         * doc/invoke.texi (Wreturn-type): Complete description.
15723         (Wextra): Delete item about return-type warning.
15724         * c-decl.c: Delete redundant Wextra warning.
15725
15726 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
15727
15728         PR target/31585
15729         * config/i386/pmmintrin.h: Do not include xmmintrin.h
15730         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
15731         inlined function, not as a macro.
15732         (_mm_prefetch): Ditto.
15733         (_m_pextrw): Ditto.
15734         (_mm_insert_pi16): Ditto.
15735         (_m_pinsrw): Ditto.
15736         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
15737         (_m_pshufw): Ditto. Add const to __N argument.
15738         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
15739         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
15740         (_mm_slli_epi32): Ditto.
15741         (_mm_srli_si128): Implement as always inlined function, not as a
15742         macro.  Add __inline to function declaration.
15743         (_mm_slli_si128): Ditto.
15744
15745 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
15746
15747         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
15748         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
15749         New constants.
15750         (struct fenv): New structure.
15751         (FP_HANDLE_EXCEPTIONS): New define.
15752         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
15753         (_FP_DECL_EXP): New define.
15754         (FP_INIT_ROUNDMODE): New define.
15755         (FP_ROUNDMODE): New define.
15756
15757 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15758
15759         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
15760         (Wconversion): Update description.
15761         (Wconversion-sign): New.
15762         * c.opt (Wconversion-sign): New.
15763         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
15764         means disabled for C++. Otherwise, take the status of Wconversion.
15765         * c-common.c (conversion_warning): Warn with either Wconversion or
15766         Wconversion-sign.
15767         (warnings_for_convert_and_check): Conditions are already checked by
15768         conversion_warning.
15769         (convert_and_check): Don't check warnings if the conversion failed.
15770
15771 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
15772            Anatoly Sokolov <aesok@dol.ru>
15773
15774         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
15775         avr_epilogue_uses) : Add declaration.
15776         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
15777         * config/avr/constraints.md (R): New constraint.
15778         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
15779         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
15780         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
15781         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
15782         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
15783         call_prologue_saves, epilogue_restores, return_from_epilogue,
15784         return_from_main_epilogue, return_from_interrupt_epilogue,
15785         return_from_naked_epilogue, prologue, epilogue): New patterns.
15786         (jump): Handle symbol reference.
15787         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
15788         avr_output_function_prologue, avr_output_function_epilogue): Remove
15789         functions.
15790         (avr_init_machine_status, expand_prologue, expand_epilogue,
15791         avr_asm_function_end_prologue, avr_epilogue_uses,
15792         avr_asm_function_begin_epilogue): New functions.
15793         (prologue_size, epilogue_size, jump_tables_size): Remove global
15794         variables.
15795         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
15796         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
15797         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
15798         (avr_override_options): Initialise init_machine_status.
15799         (output_movhi): Handle all stack pointer loads.
15800         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
15801         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
15802         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
15803         (EPILOGUE_USES) Redefine.
15804         (machine_function) Declare.
15805
15806 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
15807
15808         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
15809         Use a single return statement.
15810
15811 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15812
15813         PR middle-end/30250
15814         * builtins.c (do_mpfr_lgamma_r): New.
15815         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
15816         * tree.h (CASE_FLT_FN_REENT): New.
15817
15818 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
15819
15820         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
15821         (output_die): Use 'unsigned long' with %x.
15822         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
15823         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
15824         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
15825
15826         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
15827
15828 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
15829
15830         PR target/31989
15831         PR target/31681
15832         PR target/31666
15833         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
15834         true if function has no argument.
15835
15836 2007-05-18  DJ Delorie  <dj@redhat.com>
15837
15838         * config/mips/mips.c (mips_offset_within_alignment_p): New.
15839         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
15840
15841 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
15842
15843         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
15844         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
15845         count_trailing_zeros.
15846         (__i386__): Implement count_leading_zeros using __builtin_clz().
15847         Implement count_trailing_zeros usign __builtin_ctz().
15848
15849 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
15850
15851         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
15852
15853 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
15854
15855         PR middle-end/31344
15856         * expr.c (emit_move_change_mode): Change mode of push operands here.
15857
15858 2007-05-17  Ian Lance Taylor  <iant@google.com>
15859
15860         PR tree-optimization/31953
15861         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
15862         Change all callers.
15863         (set_value_range_to_null): Call set_value_range_to_value.
15864         (extract_range_from_comparison): Likewise.
15865
15866 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15867
15868         * toplev.c (print_version): Output GMP/MPFR version info.
15869
15870         * builtins.c (CASE_MATHFN_REENT): New macro.
15871         (mathfn_built_in): Use it.
15872         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
15873         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
15874         BUILT_IN_LGAMMAL_R): New.
15875         * doc/extend.texi: Document new builtins.
15876
15877         PR middle-end/31796
15878         * builtins.c (do_mpfr_remquo): New.
15879         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
15880         (fold_builtin_3): Handle BUILT_IN_REMQUO.
15881
15882         PR middle-end/30251
15883         * builtins.c (fold_builtin_1): Handle y0, y1.
15884         (fold_builtin_2): Handle yn.
15885
15886         PR middle-end/30251
15887         * builtins.c (do_mpfr_bessel_n): New.
15888         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
15889         (fold_builtin_2): Handle BUILT_IN_JN.
15890
15891 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
15892
15893         PR target/31965
15894         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
15895         TYPE_PRECISION (intmax_type_node).
15896
15897 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
15898
15899         PR target/31850
15900         * reload.c (subst_reloads): Remove checking.
15901
15902 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
15903
15904         PR rtl-optimization/31691
15905         * combine.c (simplify_set): Build a new src pattern instead of
15906         substituting its operands in the COMPARE case.
15907
15908 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
15909
15910         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
15911         (execute_vrp): Preserve loops through jump threading.
15912         * tree-ssa-threadupdate.c (thread_single_edge,
15913         dbds_continue_enumeration_p, determine_bb_domination_status,
15914         thread_through_loop_header): New functions.
15915         (create_edge_and_update_destination_phis,
15916         create_edge_and_update_destination_phis): Set loops for the new blocks.
15917         (prune_undesirable_thread_requests): Removed.
15918         (redirect_edges): Do not pretend that redirect_edge_and_branch can
15919         create new blocks.
15920         (thread_block): Do not call prune_undesirable_thread_requests.
15921         Update loops.
15922         (mark_threaded_blocks): Select edges to thread here.
15923         (thread_through_all_blocks): Take may_peel_loop_headers argument.
15924         Thread edges through loop headers independently.
15925         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
15926         * tree-pass.h (TODO_mark_first_instance): New.
15927         (first_pass_instance): Declare.
15928         * cfghooks.c (duplicate_block): Put the block to the original loop
15929         if copy is not specified.
15930         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
15931         jump threading.  Pass may_peel_loop_headers to
15932         thread_through_all_blocks according to first_pass_instance.
15933         * cfgloop.h (create_preheader): Declare.
15934         * tree-flow.h (thread_through_all_blocks): Declaration changed.
15935         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
15936         * passes.c (first_pass_instance): New variable.
15937         (next_pass_1): Set TODO_mark_first_instance.
15938         (execute_todo): Set first_pass_instance.
15939
15940 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
15941
15942         PR tree-optimization/24659
15943         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
15944         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
15945         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
15946         OTI_vec_pack_ufix_trunc.
15947         (vec_unpacks_float_hi_optab): Define new macro.
15948         (vec_unpacks_float_lo_optab): Ditto.
15949         (vec_unpacku_float_hi_optab): Ditto.
15950         (vec_unpacku_float_lo_optab): Ditto.
15951         (vec_pack_sfix_trunc_optab): Ditto.
15952         (vec_pack_ufix_trunc_optab): Ditto.
15953         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
15954         and vec_pack_[s|u]fix_trunc_optab using
15955         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
15956         * tree-vectorizer.c (supportable_widening_operation): Handle
15957         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
15958         (supportable_narrowing_operation): New function.
15959         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
15960         * tree-vect-transform.c (vectorizable_conversion): Handle
15961         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
15962         (vect_gen_widened_results_half): Move before vectorizable_conversion.
15963         (vectorizable_type_demotion): Call supportable_narrowing_operation()
15964         to check for target support.
15965         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
15966         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
15967         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
15968         for VEC_PACK_FIX_TRUNC_EXPR.
15969         (expand_binop): Special case mode of the result for
15970         vec_pack_[u|s]fix_trunc_optab.
15971         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
15972         vec_pack_[u|s]fix_trunc_optab.
15973
15974         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
15975         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
15976         * tree-pretty-print.c (dump_generic_node): Handle
15977         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
15978         VEC_PACK_FIX_TRUNC_EXPR.
15979         (op_prio): Ditto.
15980         * expr.c (expand_expr_real_1): Ditto.
15981         * tree-inline.c (estimate_num_insns_1): Ditto.
15982         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
15983
15984         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
15985         (vec_unpacks_float_lo_v8hi): Ditto.
15986         (vec_unpacku_float_hi_v8hi): Ditto.
15987         (vec_unpacku_float_lo_v8hi): Ditto.
15988         (vec_unpacks_float_hi_v4si): Ditto.
15989         (vec_unpacks_float_lo_v4si): Ditto.
15990         (vec_pack_sfix_trunc_v2df): Ditto.
15991
15992         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
15993         Document.
15994         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
15995         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
15996         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
15997         [vec_pack_ufix_trunc]: Ditto.
15998         [vec_unpacks_float_hi]: Ditto.
15999         [vec_unpacks_float_lo]: Ditto.
16000         [vec_unpacku_float_hi]: Ditto.
16001         [vec_unpacku_float_lo]: Ditto.
16002
16003 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
16004
16005         * soft-fp/README: Update for new files.
16006         * soft-fp/floattisf.c: New file.
16007         * soft-fp/floattidf.c: New file.
16008         * soft-fp/floattitf.c: New file.
16009         * soft-fp/floatuntisf.c: New file.
16010         * soft-fp/floatuntidf.c: New file.
16011         * soft-fp/floatuntitf.c: New file.
16012         * soft-fp/fixsfti.c: New file.
16013         * soft-fp/fixdfti.c: New file.
16014         * soft-fp/fixtfti.c: New file.
16015         * soft-fp/fixunssfti.c: New file.
16016         * soft-fp/fixunsdfti.c: New file.
16017         * soft-fp/fixunstfti.c: New file.
16018         * soft-fp/extendxftf.c: New file.
16019         * soft-fp/trunctfxf.c: New file.
16020
16021         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
16022         (__trunctfxf2): Ditto.
16023
16024         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
16025         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
16026         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
16027         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
16028         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
16029         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
16030
16031         * config/i386/t-fprules-softfp64: New file.
16032         * config/i386/sfp-machine.h: New file.
16033         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
16034         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
16035         and soft-fp/t-softfp to tmake_file.
16036         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
16037         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
16038
16039         * config/i386/t-linux64 (softfp_wrap_start): New.
16040         (softfp_wrap_end): New.
16041         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
16042         supported for TARGET_64BIT.
16043
16044 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
16045
16046         * c-common.c (c_common_signed_or_unsigned_type): Emulate
16047         c_common_unsigned_type behavior.
16048
16049 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
16050
16051         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
16052         calls as pure.
16053
16054 2007-05-16  Eric Christopher  <echristo@apple.com>
16055
16056         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
16057         saving after stack push. Set sp_offset whenever we push.
16058         (rs6000_emit_epilogue): Move altivec register restore before
16059         stack push.
16060
16061 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
16062
16063         * configure.ac: Allow sysroots to be relocated under $prefix as
16064         well as $exec_prefix.
16065         * configure: Regenerate.
16066
16067 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
16068
16069         Revert:
16070
16071         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
16072
16073         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
16074         (gcc_tooldir): Likewise.
16075         * configure: Regenerate.
16076         * Makefile.in (libsubdir_to_prefix): New variable, based on the
16077         old configure.ac gcc_tooldir setting.
16078         (prefix_to_exec_prefix): New variable.
16079         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
16080         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
16081
16082 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
16083
16084         * c-typeck.c (build_binary_op): Return early for error.
16085
16086 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
16087
16088         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
16089         struct nb_iter_bound.
16090         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
16091         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
16092         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
16093         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
16094         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
16095         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
16096         (del_scev_info): Use ggc_free.
16097         (scev_initialize): Allocate scalar_evolution_info in gc memory.
16098         * loop-init.c: Include ggc.h.
16099         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
16100         (loop_optimizer_finalize): Use ggc_free.
16101         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
16102         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
16103         pass_iv_optimize): Add TODO_ggc_collect.
16104         * function.h (struct function): Remove skip marker from
16105         x_current_loops.
16106         * cfgloop.c: Include ggc.h.
16107         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
16108         memory.
16109         (establish_preds): Vector superloops is gc allocated.
16110         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
16111         loop->exits list.
16112         (flow_loops_find): Vector larray is gc allocated.
16113         (loop_exit_free): Use ggc_free.
16114         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
16115         that head of exits list is now not a part of struct loop.
16116         (record_loop_exits): Allocate exits table in gc memory.
16117         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
16118         that head of exits list is now not a part of struct loop.
16119         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
16120         struct loop_exit): Add GTY marker.
16121         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
16122         Add skip marker to aux field.  Make head of exits list a separate
16123         object.
16124         (struct loops): Add GTY marker.  Make larray vector gc allocated.
16125         Add param marker to exits table.
16126         (get_loops): Type changed.
16127         * Makefile.in (tree-scalar-evolution.o): Add
16128         gt-tree-scalar-evolution.h dependency.
16129         (cfgloop.o, loop-init.o): Add ggc.h dependency.
16130         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
16131         * basic-block.h (struct basic_block_def): Remove skip marker from
16132         loop_father field.
16133
16134 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
16135
16136         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
16137         of 0 in the call to expand_expr().
16138         (expand_builtin_mathfn_3): Ditto.
16139         (expand_builtin_interclass_mathfn): Ditto.
16140         (expand_builtin_cexpi): Ditto.
16141         (expand_builtin_int_roundingfn): Ditto.
16142         (expand_builtin_int_roundingfn_2): Ditto.
16143         (expand_builtin_pow): Ditto.
16144         (expand_builtin_powi): Ditto.
16145         (expand_builtin_bswap): Ditto.
16146         (expand_builtin_unop): Ditto.
16147         (expand_builtin_fabs): Ditto.
16148         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
16149         the call to expand_expr().
16150         (expand_builtin_sync_operation): Ditto.
16151         (expand_builtin_compare_and_swap): Ditto.
16152         (expand_builtin_lock_test_and_set): Ditto.
16153         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
16154         instead of 0 in the call to expand_expr().
16155         (expand_builtin_extract_return_addr): Ditto.
16156         (expand_builtin_eh_return): Ditto.
16157         (expand_eh_return): Ditto.
16158         * explow.c (expr_size): Ditto.
16159         * expr.c (optimize_bitfield_assignment_op): Ditto.
16160         (expand_assignement): Ditto.
16161         (store_expr): Ditto.
16162         (store_field): Ditto.
16163         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
16164         the call to expand_expr().
16165         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
16166         in the call to expand_expr().
16167         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
16168         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
16169         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
16170         of expand_expr().
16171         * optabs.c (expand_vec_shift_expr): Ditto.
16172         (expand_vec_cond_expr): Ditto.
16173         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
16174         call to expand_expr().
16175         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
16176         in the call to expand_expr().
16177
16178 2007-05-14  Dave Korn  <dave.korn@artimi.com>
16179
16180         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
16181
16182 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
16183
16184         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
16185         instead of c_common_unsigned_type.
16186         (c_common_unsigned_type): Remove.
16187         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
16188         c_common_unsigned_type.
16189         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
16190         c_common_unsigned_type.
16191         * c-common.h (c_common_unsigned_type): Remove.
16192         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
16193         c_common_unsigned_type.
16194         * c-format.c (check_format_types): Use unsigned_type_for instead of
16195         c_common_unsigned_type.
16196         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
16197         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
16198         of c_common_unsigned_type.
16199         * convert.c (convert_to_integer): Use unsigned_type_for instead of
16200         lang_hooks.types.unsigned_type.
16201         * expmed.c (make_tree): Use unsigned_type_for instead of
16202         lang_hooks.types.unsigned_type.
16203         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
16204         lang_hooks.types.unsigned_type.
16205         (build_range_check): Likewise.
16206         (fold_unary): Likewise.
16207         (fold_binary): Likewise.
16208         (fold_ternary): Likewise.
16209         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
16210         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
16211         * tree.c (get_unsigned_type): New.
16212         (unsigned_type_for): Use get_unsigned_type instead of
16213         lang_hooks.types.unsigned_type.
16214
16215 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
16216
16217         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
16218         to m68k_get_function_kind.  Update its prototype.
16219         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
16220         interrupt_thread.
16221         (m68k_interrupt_function_p): Return enum m68k_function_type
16222         instead of bool.  Rename to m68k_get_function_kind.
16223         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
16224         target is not fido.
16225         (m68k_compute_frame_layout): Don't mark any register for save
16226         if an interrupt_thread attribute is specified.
16227         (m68k_hard_regno_rename_ok): Update a use of
16228         m68k_interrupt_function_p.
16229         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
16230         m68k_interrupt_function_p.
16231         (m68k_function_type): New.
16232         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
16233         for a function with an interrupt_thread attribute.
16234         * doc/extend.texi: Document the interrupt_thread attribute.
16235
16236 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
16237
16238         Fix PR tree-optimization/31911
16239         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
16240         if they didn't change the expression.
16241
16242 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
16243
16244         * tree-scalar-evolution.c (resolve_mixers): Exported.
16245         * tree-scalar-evolution.h (resolve_mixers): Declare.
16246         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
16247         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
16248         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
16249         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
16250         init_array_ref, init_pointer_ref, analyze_indirect_ref,
16251         strip_conversion, analyze_offset_expr, address_analysis,
16252         object_analysis, analyze_offset): Removed.
16253         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
16254         split_constant_offset, canonicalize_base_object_address,
16255         object_address_invariant_in_loop_p, disjoint_objects_p,
16256         dr_may_alias_p, dr_address_invariant_p): New functions.
16257         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
16258         and dr_analyze_alias.
16259         (initialize_data_dependence_relation): Use dr_may_alias_p
16260         and object_address_invariant_in_loop_p.
16261         (compute_self_dependence): Handle the case when
16262         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
16263         (find_data_references_in_stmt): Restrict the analysis of data
16264         references to the given loop nest.
16265         (find_data_references_in_loop): Made static.  Pass loop nest to
16266         find_data_references_in_stmt.
16267         (compute_data_dependences_for_loop): Use DR_VOPS.
16268         (free_data_ref): Free DR_VOPS.
16269         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
16270         (struct innermost_loop_behavior): ... new.
16271         (struct base_object_info): Replaced by ...
16272         (struct indices): ... new.
16273         (struct dr_alias): New.
16274         (enum data_ref_type): Removed.
16275         (struct data_reference): Consist of struct innermost_loop_behavior,
16276         struct indices and struct dr_alias.
16277         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
16278         (DR_MEMTAG): Renamed to ...
16279         (DR_SYMBOL_TAG): ... this.
16280         (find_data_references_in_loop): Declaration removed.
16281         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
16282         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
16283         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
16284         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
16285
16286 2007-05-13  Revital Eres  <eres@il.ibm.com>
16287
16288         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
16289         which walks virtual def-use chains to find redundant stores.
16290         (dse_optimize_stmt): Call it.
16291
16292 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
16293
16294         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
16295         * passes.c (init_optimization_passes): Move pass_jump_bypass
16296         after loop2.
16297
16298         * basic-block.h (bb_has_eh_pred): Fix style issue.
16299
16300 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
16301
16302         PR rtl-optimization/31848
16303         * loop-invariant.c (move_invariant_reg): If we move an insn
16304         with a REG_EQUAL note, and that insn is not always executed,
16305         remove the REG_EQUAL note.
16306
16307 2007-05-12  Richard Guenther  <rguenther@suse.de>
16308
16309         PR tree-optimization/31797
16310         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
16311         propagate into a stmt that has volatile ops.
16312
16313 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
16314
16315         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
16316         (gcc_tooldir): Likewise.
16317         * configure: Regenerate.
16318         * Makefile.in (libsubdir_to_prefix): New variable, based on the
16319         old configure.ac gcc_tooldir setting.
16320         (prefix_to_exec_prefix): New variable.
16321         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
16322         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
16323
16324 2007-05-11  Silvius Rus  <rus@google.com>
16325
16326         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
16327         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
16328         * c-common.h (strict_aliasing_warning): Change return type.
16329         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
16330         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
16331         (build_c_cast): Condition call to strict_aliasing_warning.
16332         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
16333         * flags.h (set_Wstrict_aliasing): Declare.
16334         * opts.c (set_Wstrict_alising): Define, add call to.
16335         * tree-flow.h (strict_aliasing_warning_backend): Declare.
16336         * tree-ssa-alias-warnings.c: New file.
16337         * tree-ssa-alias.c (compute_may_aliases): Add call to
16338         strict_aliasing_warning_backend.
16339
16340 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
16341
16342         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16343         Use loop_depth and loop_outer accessor functions.
16344         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
16345         determine_invariantness_stmt, move_computations_stmt): Ditto.
16346         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
16347         add_loop, loopify, unloop, fix_loop_structure): Ditto.
16348         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
16349         * tree-scalar-evolution.c (interpret_loop_phi,
16350         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
16351         instantiate_parameters_1, scev_const_prop): Ditto.
16352         * cfghooks.c (make_forwarder_block): Ditto.
16353         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
16354         * modulo-sched.c (loop_canon_p): Ditto.
16355         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
16356         slpeel_can_duplicate_loop_p): Ditto.
16357         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
16358         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
16359         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
16360         cancel_loop, verify_loop_structure): Ditto.
16361         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
16362         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
16363         superloops vector instead of "pred" array.
16364         (establish_preds): Take father loop as an argument.  Initialize the
16365         superloops vector.
16366         (flow_loop_tree_node_add): Pass father loop to establish_preds.
16367         Do not initialize loop->outer.
16368         (flow_loop_tree_node_remove): Truncate the superloops vector.
16369         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
16370         "pred" merged to "superloops" vector.
16371         (loop_depth, loop_outer): New.
16372         (fel_init): Use loop_outer.
16373
16374 2007-05-11  Jan Hubicka  <jh@suse.cz>
16375
16376         * cgraphunit.c: Include gt-cgraphunit.h
16377         (static_ctors, static_dtors): New static vars.
16378         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
16379         based on implementation in c-common.c
16380         (cgraph_finalize_function): Call record_cdtor_fn.
16381         (cgraph_optimize): Call cgraph_build_cdtor_fns.
16382         * decl.c (finish_function): Do not call c_record_cdtor_fn.
16383         (c_write_global_declarations): Do not call c_build_cdtor_fns.
16384         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
16385         build_cdtor, c_build_cdtor_fns): Remove.
16386         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
16387         c_build_cdtor_fns): Remove prototype.
16388
16389 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
16390
16391         PR other/31852
16392         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
16393         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
16394         * builtins.c (fold_builtin_memchr): New.
16395         (expand_builtin_memchr): Call the latter.
16396         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
16397         * doc/extend.texi ([Other built-in functions provided by GCC]):
16398         Document memchr.
16399
16400 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
16401
16402         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
16403         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
16404         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
16405         PFPO_OP1_TYPE_SHIFT): Constants added.
16406         (DFP_ALL): Mode macro defined.
16407         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
16408         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
16409         Insn definitions added.
16410         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
16411         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
16412         Expanders added.
16413
16414 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
16415
16416         PR tree-optimization/31885
16417         * tree-chrec.c (chrec_contains_undetermined): Do not consider
16418         NULL_TREE to be undetermined.
16419         (automatically_generated_chrec_p): Return false for NULL.
16420
16421 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
16422
16423         * config/bfin/bfin.h (MOVE_RATIO): Define.
16424
16425 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
16426
16427         * config.gcc (sparc-wrs-vxworks): New target.
16428         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
16429         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
16430         * config/sparc/sparc.h: Include vxworks-dummy.h.
16431         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
16432         include LABEL_REFs too.
16433         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
16434         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
16435         VxWorks.
16436         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
16437         on VxWorks.
16438         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
16439         (sparc_emit_call_insn): New function.
16440         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
16441         functions when generating VxWorks PIC.
16442         * config/sparc/sparc.md (vxworks_load_got): New pattern.
16443         (call, call_value): Use sparc_emit_call_insn instead of
16444         emit_call_insn.
16445
16446 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
16447
16448         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
16449
16450 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
16451
16452         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
16453         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
16454         split_double instead of operand_subword.
16455
16456 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
16457
16458         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
16459         * config/bfin/bfin.c (bfin_local_alignment): New function.
16460         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
16461
16462 2007-05-08  Chao-ying Fu  <fu@mips.com>
16463
16464         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
16465         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
16466         (smsub_widen_optab, umsub_widen_optab): Define.
16467         * optabs.c (init_optabs): Initialize smsub_widen_optab and
16468         umsub_widen_optab.
16469         * genopinit.c (optabs): Fill in smsub_widen_optab and
16470         umsub_widen_optab.
16471         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
16472         and umsub_widen_optab to implement multiply-subtract sequences.
16473         * config/mips/mips.md (*msac<u>_di): Rename to...
16474         (<u>msubsidi4): ...this.  Extend condition to include
16475         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
16476         of operand 0 to "ka" and use the three-operand form of msub<u>
16477         for TARGET_DSPR2.
16478         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
16479         to define_expands.
16480
16481 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16482
16483         PR rtl-optimization/28011
16484         * reload.c (push_reload): Set dont_share if IN appears in OUT
16485         also when IN is a PLUS rtx.
16486         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
16487         are same PLUS rtx.
16488
16489 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
16490
16491         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
16492         call unshare_all_decls.
16493         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
16494         (unshare_all_decls): Remove.
16495
16496 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
16497
16498         PR 31847
16499         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
16500         dumps.
16501
16502 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
16503             Nigel Stephens  <nigel@mips.com>
16504
16505         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
16506         Update comments and all uses.
16507         (MIN_FPRS_PER_FMT): Define.
16508         * config/mips/mips.c (function_arg): Fix to correctly handle
16509         the -mips32r2 -mfp64 -mabi=32 case.
16510         (override_options): Enable use of odd-numbered registers for
16511         SFmode values on MIPS32.
16512         (mips_save_reg_p): Save whole floating-point register pair if
16513         either half is used.
16514         (compute_frame_size): Fix comment.
16515
16516 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
16517
16518         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
16519         argument of type bool.
16520         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
16521         argument. Safely select temporary P register according to it.
16522         (do_link): Change call site of add_to_reg accordingly.
16523         (do_unlink): Add epilogue_p as a fourth argument and pass it
16524         to add_to_reg.
16525         (expand_interrupt_handler_epilogue): Change call of do_unlink
16526         accordingly.
16527         (bfin_expand_prologue): Add a third argument sibcall_p.
16528         * config/bfin/bfin.md (epilogue): Change call of
16529         bfin_expand_epilogue accordingly.
16530         (sibcall_epilogue): Likewise.
16531         (eh_return_internal): Likewise.
16532
16533         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
16534         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
16535         * config/bfin/bfin.c (bfin_handle_option): Handle
16536         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
16537         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
16538         Support bf534, bf536 and bf561.
16539         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
16540
16541 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
16542
16543         PR target/31854
16544         * config/i386/i386.c (ix86_function_regparm): Process local
16545         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
16546
16547 2007-05-07  Mike Stump  <mrs@apple.com>
16548
16549         * doc/invoke.texi (Warning Options): Document that -Wempty-body
16550         also checks for and while statements in C++.
16551
16552 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
16553
16554         * gcc.c (at_file_supplied): New variable.
16555         (main): Set it if we expanded argv.
16556         (do_spec_1): Pass an @-file to the linker if we were called with
16557         an @-file argument and HAVE_GNU_LD.
16558         * collect2.c (at_file_supplied): New variable.
16559         (response_file): New variable.
16560         (collect_exit): Unlink response_file if necessary.
16561         (handler): Likewise.
16562         (do_wait): Likewise.
16563         (main): Set at_file_supplied if we expanded argv.
16564         (collect_execute): Pass an @-file to subprocesses if we were called
16565         with an @-file argument.
16566         * configure.ac: Add define for HAVE_GNU_LD.
16567         * configure: Regenerate.
16568         * config.in: Regenerate.
16569
16570 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
16571
16572         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
16573         operand to HI mode.
16574         (mulsi3): New.
16575         (divsi3): New.
16576         (udivsi3): New.
16577
16578 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
16579
16580         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
16581         (TARGET_ENCODE_SECTION_INFO): Re-define.
16582         (m32c_encode_section_info): New
16583         (function_vector_handler): New
16584         (current_function_special_page_vector): New
16585         (m32c_special_page_vector_p): New.
16586         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
16587         Prototype.
16588         * config/m32c/jump.md: Added instruction JSRS for functions
16589         with attribute "function_vector".
16590         * doc/extend.texi (function_vector): Added description
16591         for M16C, M32C targets.
16592
16593 2007-05-07  DJ Delorie  <dj@redhat.com>
16594
16595         PR 31794
16596         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
16597         ashrpsi3, lshrpsi3): Update shift count constraint.
16598
16599 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
16600             Nathan Froyd  <froydnj@codesourcery.com>
16601
16602         PR 22133
16603         * c-incpath.c (add_path): Strip trailing path separators.
16604
16605 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
16606
16607         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
16608         Free dominance info before purging EH edges.
16609         (eliminate_degenerate_phis): Likewise.
16610         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
16611
16612 2007-05-07  Jan Hubicka  <jh@suse.cz>
16613
16614         * gimplify.c (gimplify_expr): Do not crash when folding
16615         (void *)(int)&a + 4.
16616
16617 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
16618
16619         PR driver/31694
16620         * c-opts.c (lang_fortran): Make it non static.
16621         * c-common.h (lang_fortran): New prototype.
16622         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
16623         -lang-fortran option was passed by the driver.
16624
16625 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
16626
16627         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
16628         of ASSERT_CHECKING.  Tweak message.
16629
16630 2007-05-06  Revital Eres  <eres@il.ibm.com>
16631
16632         PR 30957
16633         * loop-unroll.c (insert_var_expansion_initialization):
16634         Initialize the expansions with -zero instead of +zero.
16635
16636 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
16637
16638         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
16639         into pic and non-pic versions. Mark r19 as used for
16640         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
16641         for tgd_load, tld_load and tie_load .
16642         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
16643         version of tgd_load, tld_load and tie_load depending on the
16644         value of flag_pic.
16645
16646 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
16647             Jakub Jelinek  <jakub@redhat.com>
16648
16649         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
16650         (__do_global_dtors_aux): Use more paranoid loop to run
16651         destructors if HIDDEN_DTOR_LIST_END.
16652         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
16653
16654 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
16655
16656         * varasm.c (align_variable): Don't increase alignment for
16657         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
16658         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
16659
16660 2007-05-04  Josh Conner  <jconner@apple.com>
16661
16662         * basic-block.h (cdi_direction): Assign values to all enumeration
16663         constants.
16664         (dom_computed): Remove.
16665         (dom_info_state): New.
16666         (set_dom_info_availability): New.
16667         * tree-ssa-loop-im.c (determine_invariantness): Initialize
16668         walk_data.dom_direction.
16669         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
16670         instead of dom_computed[].
16671         (split_edge): Likewise.
16672         (create_basic_block): Likewise.
16673         (merge_blocks): Likewise.
16674         * ifcvt.c (find_if_header): Likewise.
16675         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
16676         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
16677         * tree-ssa.c (verify_ssa): Likewise.
16678         * tree-cfg.c (tree_verify_flow_info): Likewise.
16679         (remove_edge_and_dominated_blocks): Likewise.
16680         * dominance.c (dom_computed): Make static.
16681         (calc_dfs_tree_nonrec): Change third param to a bool.
16682         (calc_dfs_tree): Change second param to a bool.
16683         (calc_idioms): Change second param to a bool.  Use
16684         dom_convert_dir_to_idx.
16685         (init_dom_info): Validate dir before using.
16686         (dom_convert_dir_to_idx): New.
16687         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
16688         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
16689         (free_dominance_info): Use dom_convert_dir_to_idx.
16690         (get_immediate_dominator): Likewise.
16691         (set_immediate_dominator): Likewise.
16692         (get_dominated_by): Likewise.
16693         (redirect_immediate_dominators): Likewise.
16694         (nearest_common_denominator): Likewise.
16695         (dominated_by_p): Likewise.
16696         (bb_dom_dfs_in): Likewise.
16697         (bb_dom_dfs_out): Likewise.
16698         (recount_dominator): Likewise.
16699         (iterate_fix_dominators): Likewise.
16700         (add_to_dominance_info): Likewise.
16701         (delete_from_dominance_info): Likewise.
16702         (first_dom_son): Likewise.
16703         (next_dom_son): Likewise.
16704         (dom_info_available_p): Likewise.
16705         (dom_info_state): New.
16706         (set_dom_info_availability): New.
16707
16708 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
16709
16710         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
16711         Expander removed.
16712         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
16713
16714 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
16715
16716         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
16717         (subdi3, subdi_carry): Delete.
16718
16719 2007-05-04  Jan Hubicka  <jh@suse.cz>
16720             Richard Guenther  <rguenther@suse.de>
16721
16722         * opts.c (decode_options): Do not fiddle with inlining
16723         parameters in case of optimizing for size.
16724         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
16725         for size do nothing.
16726         (cgraph_decide_inlining_of_small_function): When optimizing for
16727         size never inline functions increasing caller size.
16728         (cgraph_early_inlining): Inline for size when optimizing for size.
16729
16730 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
16731
16732         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
16733         logical operations piecewise.
16734         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
16735         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
16736         subdi_sesidi_di): Delete.
16737         (add_with_carry): Produce carry in CC instead of a DREG to shorten
16738         the generated sequence.  Allow three-reg add in constraints.  Rewrite
16739         the rtl expression for carry to avoid zero_extend of a constant.
16740         (sub_with_carry): New pattern.
16741         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
16742         different sequence not involving jumps.
16743         (notbi): Now a named pattern.
16744
16745 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
16746
16747         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
16748         Add the note about a significant loss of accuracy of some
16749         mathematical routines when these options are used.
16750
16751 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
16752
16753         * haifa-sched.c (rtx_vec_t): New typedef.
16754         (contributes_to_priority_p): Extract piece of priority () into new
16755         static function.
16756         (priority): Use the function.  Add assertion.
16757         (rank_for_schedule, set_priorities): Add assertion to check that
16758         insn's priority is initialized.
16759         (clear_priorities, calc_priorities): Change signature.  Make it update
16760         all relevant insns.  Update all callers ('add_to_speculative_block ()'
16761         and 'create_block_check_twin ()').
16762         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
16763         Add new field 'priority_status'.
16764         (INSN_PRIORITY_STATUS): New macro.
16765         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
16766
16767 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
16768
16769         * sched-ebb.c (debug_ebb_dependencies): New static function.
16770         (init_ready_list): Use it.
16771
16772         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
16773         with changed signature and 'debug_rgn_dependencies ()'.
16774         (debug_rgn_dependencies): New static function.
16775         (init_ready_list): Use it.
16776
16777         * sched-int.h (debug_dependencies): Declare.
16778
16779 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
16780
16781         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
16782
16783 2007-05-04  Dirk Mueller  <dmueller@suse.de>
16784
16785         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
16786
16787 2007-05-03  Jan Hubicka  <jh@suse.cz>
16788
16789         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
16790         ((T1)X op (T1)Y), for pointer type in more cases than before.
16791
16792         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
16793
16794         * tree-object-size.c (plus_expr_object_size): When operand size is
16795         unknown, return unknown.
16796
16797 2007-05-03  Dirk Mueller  <dmueller@suse.de>
16798
16799         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
16800
16801         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
16802         options.
16803
16804         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
16805
16806 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
16807
16808         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
16809
16810 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
16811
16812         * config/soft-fp/double.h, config/soft-fp/extended.h,
16813         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
16814         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
16815         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
16816         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
16817         glibc CVS.
16818
16819 2007-05-03  Ian Lance Taylor  <iant@google.com>
16820
16821         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
16822         MASK_PPC_GFXOPT for 8540 or 8548.
16823
16824 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
16825
16826         * tree-vect-transform.c (vect_update_inits_of_drs): Use
16827         vect_print_dump_info() to output debug information.
16828
16829 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
16830
16831         PR target/31768
16832         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
16833         operands of size 2 when operand is not MEM_P.
16834
16835 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
16836
16837         PR tree-optimization/30565
16838         * lambda-code.c (perfect_nestify): Fix updating of dominators.
16839
16840 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
16841
16842         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
16843         (umulsi3_highpart): Use them.
16844         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
16845         for final accumulator to D regisster tranfser.
16846
16847 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
16848
16849         PR tree-optimization/31699
16850         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
16851         wrong code.
16852         (vect_enhance_data_refs_alignment): Compute peel amount using
16853         TYPE_VECTOR_SUBPARTS instead of vf.
16854         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
16855
16856 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
16857
16858         PR bootstrap/31776
16859         * system.h: Remove inclusion of double-int.h
16860         * tree.h: Include double-int.h
16861         * gengtype.c: Likewise
16862         * cfgloop.h: Likewise
16863         * Makefile.in: Adjust dependencies on double-int.h
16864
16865 2007-05-02  Eric Christopher  <echristo@apple.com>
16866
16867         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
16868         -shared to -Zdynamiclib.
16869
16870 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
16871
16872         PR c++/31663
16873         * c-common.c (strip_pointer_or_array_types): New function.
16874         * c-common.h (strip_pointer_or_array_types): New function declaration.
16875
16876 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
16877
16878         PR tree-optimization/31771
16879         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
16880
16881 2007-05-02  Paul Brook  <paul@codesourcery.com>
16882
16883         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
16884
16885 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16886
16887         PR middle-end/29715
16888         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
16889         transformation.
16890
16891 2007-05-02  Nick Clifton  <nickc@redhat.com>
16892
16893         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
16894
16895 2007-05-02  Richard Guenther  <rguenther@suse.de>
16896
16897         PR tree-optimization/31146
16898         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
16899         argument, single_use_p.  If we have a single use that is
16900         a conversion to the definition rhs type, propagate that rhs.
16901         (forward_propagate_addr_expr): Pass single_use_p argument
16902         to forward_propagate_addr_expr_1.
16903
16904 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
16905
16906         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
16907         variable.
16908
16909 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
16910
16911         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
16912         'AMD Family 10 core'.
16913
16914 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
16915
16916         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
16917         and athlon64-sse3 as improved versions of k8, opteron and athlon64
16918         with SSE3 instruction set support.
16919         * doc/invoke.texi: Likewise.
16920
16921 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
16922
16923         * config/i386/i386.c (override_options): Tuning 32-byte loop
16924         alignment for amdfam10 architecture. Increasing the max loop
16925         alignment to 24 bytes.
16926
16927 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
16928
16929         * config/m68k/constraints.md: New.
16930         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
16931         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
16932         EXTRA_CONSTRAINT): Remove.
16933         * config/m68k/m68k.md: Include constraints.md.
16934         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
16935
16936 2007-05-01  Ian Lance Taylor  <iant@google.com>
16937
16938         PR tree-optimization/31739
16939         * tree-vrp.c (vrp_val_is_max): New static function.
16940         (vrp_val_is_min): New static function.
16941         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
16942         copying the node.
16943         (set_value_range): Use vrp_val_is_{max,min}.
16944         (extract_range_from_assert): Likewise.
16945         (extract_range_from_binary_expr): Likewise.
16946         (extract_range_from_unary_expr): Likewise.
16947         (dump_value_range, vrp_meet): Likewise.
16948         (vrp_visit_phi_node): Likewise.
16949         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
16950
16951 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
16952
16953         * config/i386/gmon-sol2.c (size_t): New type.
16954         (intptr_t): Likewise.
16955         (s_textsize): Declare as size_t.
16956         (sbrk): Declare.
16957         (monstartup): Use size_t for sizes.
16958         (_mcount): Save and restore registers.
16959         (internal_mcount): Pass 0 as the first argument to monstartup
16960         in 64-bit mode.
16961         (moncontrol): Convert pointer to appropriately sized integer
16962         before passing to profil.
16963
16964 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
16965
16966         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
16967         __NO_FPRS__, not just if _SOFT_DOUBLE.
16968         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
16969         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
16970         also for E500 double.
16971         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
16972         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
16973         && !TARGET_FPRS).
16974
16975 2007-05-01  Richard Guenther  <rguenther@suse.de>
16976
16977         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
16978         is NULL.
16979
16980 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
16981
16982         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
16983
16984 2007-05-01  Jan Hubicka  <jh@suse.cz>
16985
16986         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
16987         invariant.
16988
16989 2007-05-01  Jan Hubicka  <jh@suse.cz>
16990
16991         * tree.h (maybe_fold_offset_to_component_ref): Remove.
16992         (maybe_fold_offset_to_reference): Declare.
16993         * fold-const.c (fold_unary): Do not fold
16994         (type *)&A into &A->field_of_type_and_offset_0
16995         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
16996         size is unknown, give up.
16997         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
16998         offsets.
16999         (maybe_fold_offset_to_reference): New.
17000         (maybe_fold_stmt_indirect): Use it.
17001         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
17002         * gimplify.c (gimplify_conversion): Canonicalize conversions to
17003         field references.
17004         (gimplify_expr): Likewise for plus_expr.
17005
17006 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
17007
17008         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
17009         bsi_after_labels.  Always insert statements before bsi.
17010         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
17011         * predict.c (apply_return_prediction): Check for empty blocks.
17012         * cfgexpand.c (lab_rtx_for_bb): New variable.
17013         (label_rtx_for_bb): Do not create new tree labels.
17014         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
17015         (tree_expand_cfg): Initialize lab_rtx_for_bb.
17016         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
17017         creating edges.
17018         (label_for_bb): Add field used.
17019         (update_eh_label, main_block_label): Mark the label used.
17020         (cleanup_dead_labels): Remove unused labels.
17021
17022 2007-05-01  Richard Guenther  <rguenther@suse.de>
17023
17024         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
17025         if it is not about to be set.
17026         (get_value_range): Do not pre-allocate equiv bitmap.
17027         (update_value_range): No need to clear equiv field.
17028         (add_equivalence): Change prototype to get bitmap pointer.
17029         Allocate bitmap here if it is not already.
17030         (extract_range_from_assert): Do not allocate bitmap here.
17031         Update callers to add_equivalence.
17032         (extract_range_from_ssa_name): Likewise.
17033         (get_vr_for_comparison): New static helper.
17034         (compare_name_with_value): Handle NULL equiv bitmap by
17035         peeling the first iteration of the comparison loop.
17036         Use get_vr_for_comparison.
17037         (compare_names): Handle NULL equiv bitmaps by using fake
17038         ones.  Use get_vr_for_comparison.
17039
17040 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
17041
17042         * double-int.c (mpz_set_double_int): Moved from
17043         tree-ssa-loop-niter.c.
17044         (mpz_get_double_int): Likewise; also, add option to wrap
17045         out-of-range integers.
17046         * double-int.h: New prototypes for above.
17047         * tree.c (get_static_type_bounds): Moved from
17048         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
17049         TYPE_MAX_VALUE if they exist..
17050         * tree.h: New prototype for above.
17051         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
17052         get_type_bounds calls.
17053         (mpz_set_double_int): Move to double-int.c.
17054         (get_type_bounds): Move to tree.c, rename to
17055         get_static_type_bounds.
17056         (mpz_to_double_int): Move to double-int.c, rename to
17057         mpz_get_double_int.
17058
17059 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
17060
17061         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
17062         DIV0 exception can fall through to a normal return.
17063
17064 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
17065
17066         PR middle-end/22156
17067         Temporarily revert:
17068         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
17069         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
17070         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
17071         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
17072         initialize align to silence bogus warning.
17073         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
17074         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
17075         all_no_warning.
17076         (struct sra_walk_fns): Remove use_all parameter from use.
17077         (sra_hash_tree): Handle BIT_FIELD_REFs.
17078         (sra_elt_hash): Don't hash bitfld blocks.
17079         (sra_elt_eq): Skip them in parent compares as well.  Handle
17080         BIT_FIELD_REFs.
17081         (sra_walk_expr): Don't maintain or pass down use_all_p.
17082         (scan_use): Remove use_all parameter.
17083         (scalarize_use): Likewise.  Re-expand assignment to
17084         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
17085         output, and re-scalarize after output.  Don't mark anything
17086         for no warning.
17087         (scalarize_ldst): Adjust.
17088         (scalarize_walk_gimple_modify_statement): Likewise.
17089         (build_element_name_1): Handle BIT_FIELD_REFs.
17090         (instantiate_element): Don't warn for any element whose parent
17091         is used as a whole.
17092         (instantiate_missing_elements_1): Return the sra_elt.
17093         (canon_type_for_field): New.
17094         (try_instantiate_multiple_fields): New.
17095         (instantiate_missing_elemnts): Use them.
17096         (mark_no_warning): Removed.
17097         (generate_one_element_ref): Handle BIT_FIELD_REFs.
17098         (REPLDUP, sra_build_elt_assignment): New.
17099         (generate_copy_inout): Use them.
17100         (generate_element_copy): Likewise.  Handle bitfld differences.
17101         (generate_element_zero): Don't recurse for blocks.  Use
17102         sra_build_elt_assignment.
17103         (generate_one_element_int): Take elt instead of var.  Use
17104         sra_build_elt_assignment.
17105         (generate_element_init_1): Adjust.
17106         (scalarize_use, scalarize_copy): Use REPLDUP.
17107         (scalarize_ldst): Move assert before dereference.
17108         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
17109
17110 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17111
17112         PR C++/31721
17113         * tree.c (reconstruct_complex_type): Reconstruct a reference
17114         correctly.
17115         Also use the same mode for the pointer as the old pointer type.
17116
17117 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17118
17119         * doc/trouble.texi (Interoperation): Remove note about Ultrix
17120         Fortran compiler.
17121
17122 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
17123
17124         PR rtl-optimization/31676
17125         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
17126         (df_refs_record): Call it.
17127
17128 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17129
17130         * rtl.def (SS_ABS): New code.
17131         * config/bfin/bfin.c (print_operand): New modifier 'v'.
17132         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
17133         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
17134         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
17135         (bfin_init_builtins): Define them.
17136         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
17137         (bfin_expand_builtin): ... and handle the others here.
17138         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
17139         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
17140         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
17141         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
17142         operand is only HImode.
17143
17144 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
17145
17146         * regclass.c (scan_one_insn): Remove splitting of
17147         two address insns.
17148
17149 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
17150             Nigel Stephens  <nigel@mips.com>
17151
17152         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
17153
17154 2007-04-28  Jan Hubicka  <jh@suse.cz>
17155
17156         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
17157         insn_locators_alloc instead of insn_locators_initialize;
17158         call reset_block_changes.
17159         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
17160         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
17161         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
17162         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
17163         * config/score/score.c (th_output_mi_thunk): Likewise.
17164         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
17165         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
17166         tolerate uninitialized locator info.
17167
17168         Re-apply:
17169         * function.c (init_function_start): Don't init line number info.
17170         (expand_function_end): Update.
17171         (reset_block_changes, record_block_change, finalize_block_changes,
17172         check_block_change, free_block_changes): Kill.
17173         * function.h (reset_block_changes, record_block_change,
17174         finalize_block_changes, check_block_change, free_block_changes):
17175         Remove prototypes.
17176         (struct function): Remove ib_boundaries_block.
17177         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
17178         Use curr_insn_locator to initialize locator.
17179         (emit_line_note): Remove.
17180         * cfgexpand.c (expand_gimple_cond_expr): Update.
17181         (construct_exit_block): Likewise.
17182         (tree_expand_cfg): Initialize/finalize locators.
17183         * expr.c (expand_expr_real): Update.
17184         * cfglayout.c (line_locators_locs, line_locators_lines,
17185         file_locators_locs, file_locators_files): Remove.
17186         (set_block_levels): Move to cfgexpand.c.
17187         (insn_locators_initialize): Remove.
17188         (pass_insn_locators_initialize): Remove.
17189         (locations_locators_locs, locations_locators_vals): New static vars.
17190         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
17191         Likewise.
17192         (insn_locators_alloc, insn_locators_finalize,
17193         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17194         New functions.
17195         (locator_location): New.
17196         (locator_line, locator_file): Rewrite.
17197         * rtl.h (emit_line_note): Kill.
17198         (insn_locators_alloc, insn_locators_finalize,
17199         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17200         Declare.
17201         * tree-inline.c (initialize_cfun): Do not initialize
17202         ib_boundaries_block.
17203         * passes.c (pass_insn_locators_initialize): Remove.
17204
17205 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
17206
17207         * tree-cfg.c (move_block_to_fn): Release bb from dominance
17208         info.  Update last_basic_block correctly.
17209
17210 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
17211
17212         PR target/31701
17213         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
17214         register itself to hold the offset constant.  Tell flow the use
17215         of r4 and r5 when they are used.
17216
17217 2007-04-27  Richard Guenther  <rguenther@suse.de>
17218
17219         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
17220         if we simplified anything.
17221         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
17222         warnings until we did a simplification and the stmt was not
17223         marked as TREE_NO_WARNING.
17224
17225 2007-04-27  Mike Stump  <mrs@apple.com>
17226
17227         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
17228
17229 2007-04-27  Ian Lance Taylor  <iant@google.com>
17230
17231         PR middle-end/31710
17232         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
17233         TYPE_MAX_VALUE exist, convert them to the new type.
17234
17235 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
17236
17237         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
17238         if it claims to be available.
17239         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
17240         edge is redirected.
17241         (perform_tree_ssa_dce): Always free postdominators.
17242
17243 2007-04-27  Richard Henderson  <rth@redhat.com>
17244
17245         * config/alpha/predicates.md (aligned_memory_operand): Mark
17246         as define_special_predicate.
17247         (unaligned_memory_operand, normal_memory_operand): Likewise.
17248         (reg_or_unaligned_mem_operand): Remove.
17249         (any_memory_operand): Match the documentation and check for
17250         non-renumbered pseudos during reload.
17251         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
17252         alpha_secondary_reload_class, update to new interface, make static.
17253         Handle CQImode like HImode.  Remove FP subreg check.
17254         (alpha_expand_mov): Use replace_equiv_address.
17255         (alpha_expand_mov_nobwx): Use any_memory_operand.
17256         (TARGET_SECONDARY_RELOAD): New.
17257         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
17258         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
17259         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
17260         * config/alpha/alpha.md: ... here.
17261         (RELOAD12, reloadmode): New.
17262         (movcqi): New.
17263         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
17264         Don't handle the aligned case here.
17265         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
17266         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
17267         reload_inhi_help.  Don't expect a scratch register.
17268         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
17269         reload_outhi_help.
17270         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
17271
17272 2007-04-27  Richard Guenther  <rguenther@suse.de>
17273
17274         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
17275
17276 2007-04-27  Richard Guenther  <rguenther@suse.de>
17277
17278         PR tree-optimization/30965
17279         PR tree-optimization/30978
17280         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
17281         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
17282         (find_equivalent_equality_comparison): Likewise.
17283         (simplify_cond): Likewise.
17284         (get_prop_source_stmt): New helper.
17285         (get_prop_dest_stmt): Likewise.
17286         (can_propagate_from): Likewise.
17287         (remove_prop_source_from_use): Likewise.
17288         (combine_cond_expr_cond): Likewise.
17289         (forward_propagate_comparison): New function.
17290         (forward_propagate_into_cond): Rewrite to use fold for
17291         tree combining.
17292         (tree_ssa_forward_propagate_single_use_vars): Call
17293         forward_propagate_comparison to propagate comparisons.
17294
17295 2007-04-27  Richard Guenther  <rguenther@suse.de>
17296
17297         PR tree-optimization/31715
17298         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
17299         sure to do computation on the offset in an appropriate
17300         signed type.
17301
17302 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
17303
17304         * reload.h (elimination_target_reg_p): Declare.
17305         * reload.c (find_reloads): Don't apply the reg_rtx move
17306         optimization if the SET_DEST satisfies elimination_target_reg_p.
17307         * reload1.c (elimination_target_reg_p): New function.
17308         (gen_reload): In the move/add2 fallback, make sure that op0
17309         does not overlap the destination register.
17310
17311 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
17312
17313         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
17314         transform only GIMPLE_MODIFY_STMTs.
17315         * tree-complex.c (expand_complex_operations_1): Ditto.
17316         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
17317         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
17318         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
17319         branches.
17320         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
17321         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
17322         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
17323         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
17324         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
17325         slpeel_add_loop_guard): Ditto.
17326         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
17327         * lambda-code.c (perfect_nestify): Ditto.
17328         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
17329         before the first statement.
17330         * tree-optimize.c (execute_free_datastructures): Fix comments.
17331         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
17332         * tree-flow.h (disband_implicit_edges): Declaration removed.
17333         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
17334         branches.
17335         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
17336         COND_EXPRs without gotos.
17337         (disband_implicit_edges, has_label_p): Removed.
17338         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
17339         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
17340         branches.
17341         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
17342         side effects.
17343         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
17344         also for COND_EXPRs.
17345         * cfgexpand.c (label_rtx_for_bb): New function.
17346         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
17347         Use label_rtx_for_bb to find the labels.
17348         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
17349         last block.  Detect fallthru edges.
17350
17351 2007-04-26  Ian Lance Taylor  <iant@google.com>
17352
17353         PR target/28675
17354         * reload.c (find_reloads_subreg_address): If the address was valid
17355         in the original mode but not in the new mode, reload the whole
17356         address.
17357
17358 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
17359
17360         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
17361         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
17362         (cleanup_control_expr_graph): Do not invalidate dominance info.
17363         Record altered blocks.
17364         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
17365         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
17366         cleanup_tree_cfg_bb): New functions.
17367         (remove_forwarder_block): Do not maintain the worklist of blocks.
17368         Record altered blocks.
17369         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
17370         not over whole cfg.
17371         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
17372         delete_unreachable_blocks if dominators are not available.
17373         * tree-inline.c (optimize_inline_calls): Free dominance information
17374         earlier.
17375         * tree-flow.h (remove_edge_and_dominated_blocks,
17376         cfgcleanup_altered_bbs): Altered.
17377         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
17378         blocks.
17379         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
17380         functions.
17381         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
17382         do not invalidate dominators.
17383
17384 2007-04-26  Anatoly Sokolov <aesok@post.ru>
17385
17386         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
17387         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
17388         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17389         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
17390
17391 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
17392
17393         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
17394
17395 2007-04-26  Richard Guenther  <rguenther@suse.de>
17396
17397         PR tree-optimization/31703
17398         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
17399         the right type for the target of the bittest.
17400
17401 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
17402
17403         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
17404         ix86_sol10_return_in_memory.
17405
17406 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
17407
17408         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
17409         variables.
17410
17411 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
17412
17413         PR c++/31598
17414         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
17415
17416         PR tree-optimization/30558
17417         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
17418         clear this_state.prev_try.
17419
17420 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
17421             Mark Mitchell  <mark@codesourcery.com>
17422
17423         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
17424         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
17425         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
17426
17427 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
17428
17429         PR driver/31107
17430         * doc/invoke.texi (%:print-asm-header): Document.
17431         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
17432         and -ftarget-help.
17433         (static_spec_functions): Add print-asm-header.
17434         (main): Print a banner before the --target-help linker options.
17435         (print_asm_header_spec_function): New function.
17436
17437 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
17438
17439         PR target/31403
17440         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
17441         (movsf_ie): Likewise.
17442
17443 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
17444
17445         * doc/extend.texi ([Type Traits]): Adjust per N2255.
17446
17447 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
17448
17449         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
17450         exception for divide-by-zero.
17451         (__umodsi3, __modsi3): Likewise.
17452
17453 2007-04-25  Dirk Mueller  <dmueller@suse.de>
17454
17455         * c-typeck.c (build_compound_expr): Annotate warning()
17456         call with OPT_Wunused_value.
17457         * tree-ssa.c (warn_uninit): Annotate warning with
17458         OPT_Wunintialized.
17459         * c-common.c (handle_sentinel_attribute): Annotate warning
17460         call with OPT_Wattributes.
17461
17462 2007-04-25  Thiemo Seufer  <ths@mips.com>
17463
17464         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
17465         (mips16): Fix typo.
17466         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
17467         on to the assembler.  Improve handling of -mno-mips16.  Add handling
17468         of -mno-mips3d, -mno-dsp, -mno-dspr2.
17469         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
17470         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
17471         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
17472
17473 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
17474
17475         PR target/31680
17476         * config/i386/winnt.c (i386_pe_file_end): Strip only
17477         USER_LABEL_PREFIX when writing export name.
17478
17479 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
17480
17481         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
17482         sh/elf.h, vx-common.h and vxworks.h.
17483         * config/sh/sh.h: Include config/vxworks-dummy.h.
17484         (SUBTARGET_OVERRIDE_OPTIONS): Define.
17485         (OVERRIDE_OPTIONS): Use it.
17486         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
17487         (vxworks_picreg): New pattern.
17488         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
17489         VXWORKS_OS_CPP_BUILTINS.
17490         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
17491         to their VXWORKS_* equivalents.
17492         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
17493         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
17494         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
17495         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
17496         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
17497         -mrtp/-fPIC multilibs.
17498         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
17499         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
17500         (MULTILIB_OSDIRNAMES): Delete.
17501
17502 2007-04-25  Anatoly Sokolov <aesok@post.ru>
17503
17504         PR target/18989
17505         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
17506
17507 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
17508
17509         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
17510         rounding mode to be specified by the caller.
17511         (real_to_mpfr) Likewise.
17512         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
17513         include new arguments.
17514         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
17515
17516 2007-04-24  Ian Lance Taylor  <iant@google.com>
17517
17518         PR tree-optimization/31605
17519         * tree-vrp.c (set_value_range): Check that min and max are not
17520         both overflow infinities.
17521         (set_value_range_to_value): New static function.
17522         (extract_range_from_binary_expr): Call set_value_range_to_value.
17523         (extract_range_from_cond_expr): Likewise.
17524         (extract_range_from_expr): Likewise.
17525         (extract_range_from_unary_expr): Likewise.  Don't create a range
17526         which overflows on both sides.
17527         (vrp_meet): Check for a useless range.
17528         (vrp_visit_phi_node): If we see a constant which looks like an
17529         overflow infinity, turn off the TREE_OVERFLOW flag.
17530
17531 2007-04-24  Ian Lance Taylor  <iant@google.com>
17532
17533         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
17534
17535 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
17536
17537         PR diagnostic/25923
17538         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
17539         diagnostic message is being built.
17540         * tree-pretty-print.c (dump_generic_node): Only write the
17541         formatted text into BUFFER's stream if we are not building a
17542         diagnostic message.
17543         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
17544         dump_generic_node.
17545         * Makefile.in (toplev.o): Depend on tree-pass.h.
17546
17547 2007-04-24  Ian Lance Taylor  <iant@google.com>
17548
17549         PR tree-optimization/31602
17550         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
17551         conditionals in the copied loop header.
17552         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
17553         warnings if TREE_NO_WARNING is set.
17554         * doc/invoke.texi (Warning Options): Clarify that
17555         -Wstrict-overflow does not warn about loops.
17556
17557 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
17558
17559         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
17560         expand on the comment about _Decimal128 arguments and check the
17561         integer result of the modulus operation; for 64-bit ELF ABI, ensure
17562         that _Decimal128 argument uses even/odd register pair.
17563         (function_arg): Ditto.
17564
17565 2007-04-24  Hui-May Chang <hm.chang@apple.com>
17566
17567         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
17568         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
17569
17570 2007-04-24  Richard Guenther  <rguenther@suse.de>
17571             Olga Golovanevsky  <olga@il.ibm.com>
17572
17573         * fold-const.c (multiple_of_p): Check for bottom
17574         to be zero.
17575
17576 2007-04-24  Richard Henderson  <rth@redhat.com>
17577
17578         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
17579         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
17580         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
17581         looking for non-zero bits shifted out.  Avoid a recursive call
17582         when constructing the scalar.
17583         (__floatundisf): Likewise.
17584
17585 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
17586
17587         * dwarf2out.c (field_byte_offset): Move the existing logic
17588         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
17589         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
17590
17591 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17592
17593         PR target/31641
17594         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
17595         length argument of 0 for memset.
17596         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
17597         unsigned shift instead of the signed variant.
17598
17599 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17600
17601         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
17602         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
17603         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
17604         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
17605         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
17606         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
17607         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
17608         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
17609         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
17610         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
17611         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
17612         "mul<mode>3", "div<mode>3"): Insn definitions added.
17613         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
17614         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
17615         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
17616         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
17617         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
17618         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
17619         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
17620         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
17621         TARGET_FLOAT_FORMAT): Macro definitions removed.
17622         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
17623         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
17624         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
17625         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
17626         (s390_gen_rtx_const_DI): Function removed.
17627         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
17628
17629 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
17630
17631         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
17632         over an external ffs function.
17633
17634 2007-04-24  Chao-ying Fu  <fu@mips.com>
17635             Richard Sandiford  <richard@nildram.co.uk>
17636
17637         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
17638         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
17639         (smadd_widen_optab, umadd_widen_optab): Define.
17640         * optabs.c (init_optabs): Initialize smadd_widen_optab and
17641         umadd_widen_optab.
17642         * genopinit.c (optabs): Fill in smadd_widen_optab and
17643         umadd_widen_optab.
17644         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
17645         and umadd_widen_optab to implement multiply-add sequences.
17646         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
17647         (<u>maddsidi4): ...this.  Extend condition to include
17648         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
17649         of operand 0 to "ka" and use the three-operand form of madd<u>
17650         for TARGET_DSPR2.
17651         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
17652         to define_expands.
17653         * config/mips/constraints.md (ka): New register constraint.
17654
17655 2007-04-24  Jan Hubicka  <j@suse.cz>
17656
17657         Revert:
17658
17659         2007-04-23  Jan Hubicka  <jh@suse.cz>
17660         * function.c (init_function_start): Don't init line number info.
17661         (expand_function_end): Update.
17662         (reset_block_changes, record_block_change, finalize_block_changes,
17663         check_block_change, free_block_changes): Kill.
17664         * function.h (reset_block_changes, record_block_change,
17665         finalize_block_changes, check_block_change, free_block_changes):
17666         Remove prototypes.
17667         (struct function): Remove ib_boundaries_block.
17668         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
17669         Use curr_insn_locator to initialize locator.
17670         (emit_line_note): Remove.
17671         * cfgexpand.c (expand_gimple_cond_expr): Update.
17672         (construct_exit_block): Likewise.
17673         (tree_expand_cfg): Initialize/finalize locators.
17674         * expr.c (expand_expr_real): Update.
17675         * cfglayout.c (line_locators_locs, line_locators_lines,
17676         file_locators_locs, file_locators_files): Remove.
17677         (set_block_levels): Move to cfgexpand.c.
17678         (insn_locators_initialize): Remove.
17679         (pass_insn_locators_initialize): Remove.
17680         (locations_locators_locs, locations_locators_vals): New static vars.
17681         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
17682         Likewise.
17683         (insn_locators_alloc, insn_locators_finalize,
17684         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17685         New functions.
17686         (locator_location): New.
17687         (locator_line, locator_file): Rewrite.
17688         * rtl.h (emit_line_note): Kill.
17689         (insn_locators_alloc, insn_locators_finalize,
17690         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17691         Declare.
17692         * tree-inline.c (initialize_cfun): Do not initialize
17693         ib_boundaries_block.
17694         * passes.c (pass_insn_locators_initialize): Remove.
17695
17696 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
17697
17698         * doc/invoke.texi: Removed leading '-' from option index entries.
17699
17700 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
17701
17702         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
17703         Use phi_nodes_ptr.
17704         (create_phi_node): Use set_phi_nodes.
17705         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
17706         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
17707         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
17708         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
17709         (bsi_start, bsi_last): Use bb_stmt_list.
17710         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
17711         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
17712         Traverse the statements using tsi iterator.
17713         * basic-block.h (struct basic_block_def): Fields stmt_list
17714         and phi_nodes moved to ...
17715         (struct tree_bb_info): ... new structure.
17716         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
17717         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
17718         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
17719         (tree_verify_flow_info): Verify that il.tree is not set for
17720         entry and exit block.
17721         (tree_split_block): Use set_bb_stmt_list.
17722
17723 2007-04-23  Mike Stump  <mrs@apple.com>
17724
17725         * config/i386/i386.c (ix86_tune_features
17726         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
17727         nocona and core2.
17728
17729 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
17730
17731         * config/i386/i386.md (prefix_extra): New attribute.
17732         (length): Add prefix_extra.
17733
17734         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
17735         (sse2_movntv2di): Likewise.
17736         (sse2_cvtps2dq): Likewise.
17737         (sse2_cvtpd2pi): Likewise.
17738         (sse2_cvttpd2pi): Likewise.
17739         (*sse2_cvtpd2ps): Likewise.
17740         (*add<mode>3): Likewise.
17741         (sse2_ssadd<mode>3): Likewise.
17742         (sse2_usadd<mode>3): Likewise.
17743         (*sub<mode>3): Likewise.
17744         (sse2_sssub<mode>3): Likewise.
17745         (sse2_ussub<mode>3): Likewise.
17746         (*mulv8hi3): Likewise.
17747         (*smulv8hi3_highpart): Likewise.
17748         (*umulv8hi3_highpart): Likewise.
17749         (sse2_umulv2siv2di3): Likewise.
17750         (sse2_pmaddwd): Likewise.
17751         (ashr<mode>3): Likewise.
17752         (lshr<mode>3): Likewise.
17753         (ashl<mode>3): Likewise.
17754         (sse2_ashlti3): Likewise.
17755         (sse2_lshrti3): Likewise.
17756         (*umaxv16qi3): Likewise.
17757         (*smaxv8hi3): Likewise.
17758         (*uminv16qi3): Likewise.
17759         (*sminv8hi3): Likewise.
17760         (sse2_eq<mode>3): Likewise.
17761         (sse2_gt<mode>3): Likewise.
17762         (*and<mode>3): Likewise.
17763         (sse2_nand<mode>3): Likewise.
17764         (*ior<mode>3): Likewise.
17765         (*xor<mode>3): Likewise.
17766         (sse2_packsswb): Likewise.
17767         (sse2_packssdw): Likewise.
17768         (sse2_packuswb): Likewise.
17769         (sse2_punpckhbw): Likewise.
17770         (sse2_punpcklbw): Likewise.
17771         (sse2_punpckhwd): Likewise.
17772         (sse2_punpcklwd): Likewise.
17773         (sse2_punpckhdq): Likewise.
17774         (sse2_punpckldq): Likewise.
17775         (sse2_punpckhqdq): Likewise.
17776         (sse2_punpcklqdq): Likewise.
17777         (*sse2_pinsrw): Likewise.
17778         (*sse2_pextrw): Likewise.
17779         (sse2_pshufd_1): Likewise.
17780         (sse2_uavgv16qi3): Likewise.
17781         (sse2_uavgv8hi3): Likewise.
17782         (sse2_psadbw): Likewise.
17783         (sse2_pmovmskb): Likewise.
17784         (*sse2_maskmovdqu): Likewise.
17785         (*sse2_maskmovdqu_rex64): Likewise.
17786         (sse4a_extrqi): Likewise.
17787         (sse4a_extrq): Likewise.
17788         (sse3_lddqu): Set prefix_rep.
17789         (sse3_addsubv4sf3): Likewise.
17790         (sse3_haddv4sf3): Likewise.
17791         (sse3_hsubv4sf3): Likewise.
17792         (sse_cvtss2si): Likewise.
17793         (sse_cvtss2si_2): Likewise.
17794         (sse_cvtss2siq): Likewise.
17795         (sse_cvtss2siq_2): Likewise.
17796         (sse_cvttss2si): Likewise.
17797         (sse_cvttss2siq): Likewise.
17798         (sse2_cvttps2dq): Likewise.
17799         (sse3_movshdup): Likewise.
17800         (sse3_movsldup): Likewise.
17801         (sse2_cvtsd2si): Likewise.
17802         (sse2_cvtsd2si_2): Likewise.
17803         (sse2_cvtsd2siq): Likewise.
17804         (sse2_cvtsd2siq_2): Likewise.
17805         (sse2_cvttsd2si): Likewise.
17806         (sse2_cvttsd2siq): Likewise.
17807         (*sse2_cvtpd2dq): Likewise.
17808         (*sse2_cvttpd2dq): Likewise.
17809         (sse2_pshuflw_1): Likewise.
17810         (sse2_pshufhw_1): Likewise.
17811         (sse4a_insertqi): Likewise.
17812         (sse4a_insertq): Likewise.
17813         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
17814         (ssse3_phadddv4si3): Likewise.
17815         (ssse3_phaddswv8hi3): Likewise.
17816         (ssse3_phsubwv8hi3): Likewise.
17817         (ssse3_phsubdv4si3): Likewise.
17818         (ssse3_phsubswv8hi3): Likewise.
17819         (ssse3_pmaddubswv8hi3): Likewise.
17820         (ssse3_pmulhrswv8hi3): Likewise.
17821         (ssse3_pshufbv16qi3): Likewise.
17822         (ssse3_psign<mode>3): Likewise.
17823         (ssse3_palignrti): Likewise.
17824         (abs<mode>2): Likewise.
17825         (ssse3_phaddwv4hi3): Set prefix_extra.
17826         (ssse3_phadddv2si3): Likewise.
17827         (ssse3_phaddswv4hi3): Likewise.
17828         (ssse3_phsubwv4hi3): Likewise.
17829         (ssse3_phsubdv2si3): Likewise.
17830         (ssse3_phsubswv4hi3): Likewise.
17831         (ssse3_pmaddubswv4hi3): Likewise.
17832         (ssse3_pmulhrswv4hi3): Likewise.
17833         (ssse3_pshufbv8qi3): Likewise.
17834         (ssse3_psign<mode>3): Likewise.
17835         (ssse3_palignrdi): Likewise.
17836         (abs<mode>2): Likewise.
17837         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
17838         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
17839         (sse2_pmovmskb): Set mode to SI instead of V2DF.
17840
17841 2007-04-23  Nick Clifton  <nickc@redhat.com>
17842
17843         * params.def: Fix formatting of emacs local variables.
17844
17845 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
17846
17847         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
17848         move if inter-unit move isn't allowed.
17849         Don't split moving the first element of V2DI to DI to inter-unit
17850         move if inter-unit move isn't allowed.
17851
17852 2007-04-23  Richard Guenther  <rguenther@suse.de>
17853
17854         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
17855         and CDI_POST_DOMINATORS separately.
17856
17857 2007-04-23  Nick Clifton  <nickc@redhat.com>
17858
17859         * c.opt (Wformat-contains-nul): Add warning attribute.
17860
17861 2007-04-23  Jan Hubicka  <jh@suse.cz>
17862
17863         * function.c (init_function_start): Don't init line number info.
17864         (expand_function_end): Update.
17865         (reset_block_changes, record_block_change, finalize_block_changes,
17866         check_block_change, free_block_changes): Kill.
17867         * function.h (reset_block_changes, record_block_change,
17868         finalize_block_changes, check_block_change, free_block_changes):
17869         Remove prototypes.
17870         (struct function): Remove ib_boundaries_block.
17871         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
17872         Use curr_insn_locator to initialize locator.
17873         (emit_line_note): Remove.
17874         * cfgexpand.c (expand_gimple_cond_expr): Update.
17875         (construct_exit_block): Likewise.
17876         (tree_expand_cfg): Initialize/finalize locators.
17877         * expr.c (expand_expr_real): Update.
17878         * cfglayout.c (line_locators_locs, line_locators_lines,
17879         file_locators_locs, file_locators_files): Remove.
17880         (set_block_levels): Move to cfgexpand.c.
17881         (insn_locators_initialize): Remove.
17882         (pass_insn_locators_initialize): Remove.
17883         (locations_locators_locs, locations_locators_vals): New static vars.
17884         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
17885         Likewise.
17886         (insn_locators_alloc, insn_locators_finalize,
17887         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17888         New functions.
17889         (locator_location): New.
17890         (locator_line, locator_file): Rewrite.
17891         * rtl.h (emit_line_note): Kill.
17892         (insn_locators_alloc, insn_locators_finalize,
17893         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17894         Declare.
17895         * tree-inline.c (initialize_cfun): Do not initialize
17896         ib_boundaries_block.
17897         * passes.c (pass_insn_locators_initialize): Remove.
17898
17899 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17900
17901         PR middle-end/31448
17902         * expr.c (reduce_to_bit_field_precision): Handle
17903         CONST_INT rtx's.
17904
17905 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
17906
17907         PR tree-optimization/24659
17908         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
17909         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
17910         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
17911         * genopinit.c (optabs): Rename vec_pack_mod_optab
17912         to vec_pack_trunc_optab.
17913         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
17914         early for scalar floating point operands for NOP_EXPR.
17915         (vectorizable_type_promotion): Ditto.
17916         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
17917         vec_pack_trunc_optab.
17918         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
17919
17920         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
17921         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
17922         Rename from VEC_PACK_MOD_EXPR.
17923         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
17924         * expr.c (expand_expr_real_1): Ditto.
17925         * tree-inline.c (estimate_num_insns_1): Ditto.
17926         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
17927
17928         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
17929         (vec_unpacks_lo_v4sf): Ditto.
17930         (vec_pack_trunc_v2df): Ditto.
17931         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
17932         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
17933         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
17934
17935         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
17936         vec_pack_mod_v8hi.
17937         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
17938
17939         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
17940         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
17941         packing of floating point operands.
17942         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
17943         represent unpacking of floating point operands.
17944         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
17945         [vec_unpacks_hi]: Ditto.
17946         [vec_unpacks_lo]: Ditto.
17947
17948 2007-04-22  Jan Hubicka  <jh@suse.cz>
17949
17950         * final.c (rest_of_handle_final): Call
17951         targetm.asm_out.constructor/targetm.asm_out.destructor
17952         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
17953         proper priority via decl_*_priority_insert.
17954         * c-common.c (c_expand_body): Likewise.
17955
17956 2007-04-22  Richard Guenther  <rguenther@suse.de>
17957
17958         PR tree-optimization/29789
17959         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
17960         (rewrite_reciprocal): New helper split out from
17961         determine_invariantness_stmt.
17962         (rewrite_bittest): Likewise.
17963         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
17964         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
17965         is not.
17966
17967 2007-04-22  Revital Eres  <eres@il.ibm.com>
17968
17969         * loop-unroll.c (var_to_expand): New field to support also
17970         insns of the form x = something + x.
17971         (analyze_insn_to_expand_var): Use it.
17972         (expand_var_during_unrolling): Likewise.
17973
17974 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
17975
17976         * predict.c: Include pointer-set.h.
17977         (bb_predictions): New variable.
17978         (tree_predicted_by_p, tree_predict_edge,
17979         remove_predictions_associated_with_edge): Use bb_predictions map
17980         instead of bb->predictions.
17981         (clear_bb_predictions, assert_is_empty): New functions.
17982         (combine_predictions_for_bb): Use bb_predictions map.  Call
17983         clear_bb_predictions.
17984         (tree_estimate_probability): Create and free bb_predictions map.
17985         * Makefile.in (predict.o): Add pointer-set.h dependency.
17986         * basic-block.h (struct basic_block_def): Remove predictions
17987         field.
17988         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
17989
17990 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
17991
17992         PR target/31480
17993         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
17994         is null.
17995
17996 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17997
17998         * timevar.c (timevar_print): Change reference of --disable-checking to
17999         --enable-checking=release.  Also warn if assert checking is disabled.
18000
18001 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18002
18003         PR C/30265
18004         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
18005         decl as addressable if the compound literal was marked as
18006         addressable.
18007         Mark the decl as a gimple register if it is a complex or
18008         vector decl and does not live in memory.
18009
18010 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18011
18012         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
18013         (GENERIC_NEXT): New function macro.
18014         (PHI_CHAIN): Use phi_node's new chain variable.
18015         (tree_phi_node): Change tree_common to tree_base
18016         and add the chain field.
18017         * tree-phinodes.c (make_phi_node): Don't set
18018         TREE_TYPE on the new node.
18019         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
18020         instead of checking GIMPLE_TUPLE_P in chain_next.
18021         * tree-vect-transform.c
18022         (get_initial_def_for_induction): Look at
18023         PHI_RESULT_TREE for the type of the phi node.
18024         (update_vuses_to_preheader): Use PHI_CHAIN
18025         instead of TREE_CHAIN on the phi node.
18026         * tree-ssa-structalias.c (compute_points_to_sets):
18027         Likewise.
18028         (ipa_pta_execute): Likewise.
18029
18030 2007-04-21  Richard Guenther  <rguenther@suse.de>
18031
18032         PR middle-end/31136
18033         * fold-const.c (fold_unary): Call fold_convert_const on the
18034         original tree.
18035
18036 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
18037
18038         * gcse.c (store_killed_in_insn): Handle PARALLELs.
18039         (store_killed_in_pat): New.
18040
18041 2007-04-20  Richard Henderson  <rth@redhat.com>
18042
18043         PR target/31628
18044         * config/i386/i386.c (type_has_variadic_args_p): Look for any
18045         TREE_LIST with a void_type_node value, not void_list_node exactly.
18046
18047 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
18048
18049         * doc/standards.texi: Re-arrange into language-specific
18050         subsections. Add a C++ section, documenting which standards we
18051         support.
18052
18053 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
18054
18055         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
18056         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
18057
18058 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
18059
18060         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
18061         ecrti.o and crtbegin.o.
18062         (LIB_DEFAULT_SPEC): Include -lc.
18063         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
18064
18065 2007-04-20  Richard Henderson  <rth@redhat.com>
18066
18067         PR target/28623
18068         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
18069         argument; update all callers.
18070         (get_unaligned_offset): New.
18071         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
18072         get_unaligned_address, just pass on the address directly.
18073         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
18074         the subreg in the helper patterns.
18075         (unaligned_extendqidi_le): Use get_unaligned_offset.
18076         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
18077         (unaligned_extendhidi_be): Likewise.
18078         (unaligned_extendhidi): Tidy.
18079         * config/alpha/alpha-protos.h: Update.
18080
18081 2007-04-20  Richard Henderson  <rth@redhat.com>
18082
18083         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
18084         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
18085         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
18086         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18087         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18088         (CPP_SPEC): Don't include %(cpp_subtarget).
18089         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
18090         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18091         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
18092
18093 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
18094
18095         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
18096         for __builtin_ia32_cmpordss.
18097
18098         PR tree-optimization/31632
18099         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
18100         and arg1 for optimizations of comparison against min/max values.
18101         Fold arg0 to arg1's type for optimizations of comparison against
18102         min+1 and max-1 values.
18103
18104 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
18105
18106         * reload.c (combine_reloads): When trying to use a dying register,
18107         check whether it's uninitialized and don't use if so.
18108
18109 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
18110
18111         * fold-const.c: Remove prototypes for native_encode_expr and
18112         native_interpret_expr.
18113         (native_encode_expr): Make non-static.
18114         (native_interpret_expr): Likewise.
18115         * tree.h: Add prototypes for the above.
18116
18117 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
18118
18119         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
18120         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
18121         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
18122         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
18123         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
18124         Add length attributes.
18125
18126 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
18127
18128         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
18129         not that it is 1.
18130
18131         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
18132         __STDC_WANT_DEC_FP__.
18133
18134 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
18135
18136         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
18137         for long double compatibility.
18138         * configure: Regenerate.
18139
18140 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
18141
18142         PR rtl-optimization/29841
18143         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
18144         trap instructions.
18145         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
18146         that may cause control flow transfer from being moved.
18147
18148 2007-04-18  Jan Hubicka  <jh@suse.cz>
18149
18150         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
18151         types.
18152
18153 2007-04-18  Eric Christopher  <echristo@apple.com>
18154
18155         * config/rs6000/darwin.md (load_macho_picbase): Use link register
18156         only. Update operands.
18157         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
18158         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
18159         link register to pic register.
18160
18161 2007-04-18  Dirk Mueller  <dmueller@suse.de>
18162
18163         PR diagnostic/31227
18164         * tree-vrp.c (search_for_addr_array): New.
18165         (check_array_bounds): Suppress warning about
18166         address taken of array refs if its not de-referenced.
18167
18168 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18169
18170         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
18171         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
18172
18173         * tree-vectorizer.h (NITERS_KNOWN_P): New.
18174         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
18175         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
18176
18177         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
18178         dump print.
18179         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
18180         print message.
18181         (vect_analyze_scalar_cycles): Fix indentation.
18182         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
18183         (vect_mark_relevant): Include phis in relevance analysis.
18184
18185         * tree-vect-transform.c (vect_transform_loop): Add an assert.
18186
18187 2007-04-18  Anatoly Sokolov <aesok@post.ru>
18188
18189         * config/avr/avr.c (ptrreg_to_str): Replace error() with
18190         output_operand_lossage().
18191
18192 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18193
18194         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
18195         the unused code for reduction without adjust-in-epilog to simplify the
18196         function.
18197
18198 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
18199
18200         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
18201         (S390_TDC_NEGATIVE_ZERO): New constant.
18202         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
18203         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
18204         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
18205         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
18206         (S390_TDC_POSITIVE_INFINITY): New constant.
18207         (S390_TDC_NEGATIVE_INFINITY): New constant.
18208         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
18209         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
18210         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
18211         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
18212         (S390_TDC_INFINITY): New constant.
18213         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
18214         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
18215         optimization for UNSPEC_CCZ_TO_INT.
18216         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
18217         ("*ccz_to_int"): New insn.
18218         ("isinf<mode>2"): New insn.
18219         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
18220         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
18221         (UNSPEC_CCZ_TO_INT): New constant.
18222
18223 2007-04-18  Richard Guenther  <rguenther@suse.de>
18224
18225         PR tree-optimization/19431
18226         PR tree-optimization/21463
18227         * tree-pass.h (pass_phiprop): Declare.
18228         * passes.c (init_optimization_passes): New phiprop pass.
18229         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
18230         (phivn_valid_p): New helper function.
18231         (phiprop_insert_phi): Likewise.
18232         (propagate_with_phi): Likewise.
18233         (tree_ssa_phiprop): New propagator propagating loads
18234         through phi nodes if profitable.
18235
18236 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18237
18238         * tree-vect-analyze.c (process_use): New function.
18239         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
18240         Check phis in all bbs.
18241         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
18242         assert.
18243
18244 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
18245
18246         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
18247         we use REG_EQUAL.
18248
18249 2007-04-17  Anatoly Sokolov <aesok@post.ru>
18250
18251         PR target/30483
18252         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
18253         error().
18254
18255 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
18256
18257         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
18258         on "0".
18259         (sse_vmmulv4sf3): Likewise.
18260         (sse2_vmaddv2df3): Likewise.
18261         (sse2_vmmulv2df3): Likewise.
18262
18263 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
18264
18265         PR rtl-optimization/31360
18266         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
18267         (target_reg_cost): New.
18268         (init_set_costs): Initialize target_reg_cost.  Add comments
18269         regarding the rationale of the costs.
18270         (global_cost_for_size): Renamed to...
18271         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
18272         of register pressure.
18273         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
18274         estimate_reg_pressure_cost.  Add number of ivs.
18275         (determine_set_costs): Dump target_reg_cost.
18276         * loop-invariant.c (gain_for_invariant): Use
18277         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
18278         (best_gain_for_invariant, find_invariants_to_move): Remove
18279         n_inv_uses.
18280         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
18281         (target_reg_cost): Declare.
18282         (global_cost_for_size): Declaration removed.
18283         (estimate_reg_pressure_cost): Declare.
18284
18285 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
18286
18287         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
18288         regnos into even/odd register pairs.
18289         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
18290         TDmode similar to the other floating point modes.
18291         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
18292         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
18293         define_expand's.
18294         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
18295         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
18296         (movdd_hardfloat64): Use TARGET_MFPGPR.
18297
18298 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
18299
18300         * reload1.c (delete_output_reload): Don't count output in n_inherited.
18301
18302         Revert
18303         2005-01-05  Richard Henderson  <rth@redhat.com>
18304         PR rtl-opt/10692
18305         * reload1.c (do_input_reload): Restrict the optimization deleteing
18306         a previous output reload to RELOAD_FOR_INPUT.
18307
18308 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
18309
18310         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
18311         induc_vec_info_type.
18312         (vectorizable_induction): New function declaration.
18313         * tree-vect-transform.c (get_initial_def_for_induction): No need to
18314         check if already vectorized.  Find first place in BB where new stmts
18315         can be inserted.  Takes only one argument.
18316         (vectorizable_induction): New function.
18317         (vect_transform_stmt): Add case for induc_vec_info_type to call
18318         vectorizable_induction.
18319         (vect_transform_loop): Consider phis for vectorization.
18320         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
18321         condition.
18322         (analyze_operations): Call vectorizable_induction when analyzing phis.
18323         Fix comment.
18324         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
18325         (vect_mark_relevant): Include phis in relevance analysis.
18326         (vect_mark_stmts_to_be_vectorize): Likewise.
18327         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
18328
18329 2007-04-16  Lawrence Crowl  <crowl@google.com>
18330
18331         * doc/invoke.texi (Debugging Options): Add documentation for the
18332         -femit-struct-debug options -femit-struct-debug-baseonly,
18333         -femit-struct-debug-reduced, and
18334         -femit-struct-debug-detailed[=...].
18335
18336         * c-opts.c (c_common_handle_option): Add
18337         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
18338         and OPT_femit_struct_debug_detailed_.
18339         * c.opt: Add specifications for
18340         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
18341         and -femit-struct-debug-detailed[=...].
18342         * opts.c (set_struct_debug_option): Parse the
18343         -femit-struct-debug-... options.
18344         * opts.c (matches_main_base, main_input_basename,
18345         main_input_baselength, base_of_path, matches_main_base): Add
18346         variables and functions to compare header base name to compilation
18347         unit base name.
18348         * opts.c (should_emit_struct_debug): Add to determine to emit a
18349         structure based on the option.
18350         (dump_struct_debug) Also disabled function to debug this
18351         function.
18352         * opts.c (handle_options): Save the base name of the
18353         compilation unit.
18354
18355         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
18356         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
18357         This hook indicates if a type is generic.  Set it by default
18358         to "never generic".
18359         * langhooks.h (struct lang_hooks_for_types): Add a new hook
18360         to determine if a struct type is generic or not.
18361         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
18362         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
18363         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
18364         with live C++ hook.
18365
18366         * flags.h (enum debug_info_usage): Add an enumeration to describe
18367         a program's use of a structure type.
18368         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
18369         to indicate the program's usage of the type.  Filter structs based
18370         on the -femit-struct-debug-... specification.
18371         (gen_type_die): Split into two routines, gen_type_die and
18372         gen_type_die_with_usage.  gen_type_die is now a wrapper
18373         that assumes direct usage.
18374         (gen_type_die_with_usage): Replace calls to gen_type_die
18375         with gen_type_die_with_usage adding the program usage of
18376         the referenced type.
18377         (dwarf2out_imported_module_or_decl): Suppress struct debug
18378         information using should_emit_struct_debug when appropriate.
18379
18380 2007-04-16  Ian Lance Taylor  <iant@google.com>
18381
18382         PR tree-optimization/31522
18383         * tree-vrp.c (vr_phi_edge_counts): New static variable.
18384         (vrp_initialize): Allocate vr_phi_edge_counts.
18385         (vrp_visit_phi_node): Don't push to infinity if we saw a new
18386         executable edge.  Drop test for all constants.
18387         (vrp_finalize): Free vrp_phi_edge_counts.
18388
18389         * doc/cpp.texi (Common Predefined Macros): Clarify description of
18390         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
18391
18392         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
18393         predecessors at head rather than tail.
18394
18395 2007-04-16  Matthias Klose  <doko@debian.org>
18396
18397         * config/alpha/linux.h (CPP_SPEC): Define.
18398         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
18399
18400 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
18401
18402         * function.h: Remove sequence_stack extern declaration.
18403
18404 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
18405
18406         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
18407         TARGET_FIDOA.
18408         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
18409         defined.
18410
18411 2007-04-16  Anatoly Sokolov <aesok@post.ru>
18412
18413         * config/avr/avr.c (avr_arch_types): Rearranging  array.
18414         (enum avr_arch): Add.
18415         (avr_mcu_types): Use avr_arch enumeration constants instead of
18416         numbers.
18417         * config/avr/avr.h (LINK_SPEC): Simplify.
18418
18419 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
18420
18421         * config/m68k/m68k.c (m68k_libcall_value,
18422         m68k_function_value): Use macros for register names more.
18423
18424         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
18425         instead.
18426         (M68K_REGNAME): Use A6_REG.
18427         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
18428
18429 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
18430
18431         PR middle-end/28071
18432         * sched-int.h (struct deps): Split field 'pending_lists_length' into
18433         'pending_read_list_length' and 'pending_write_list_length'.  Update
18434         comment.
18435         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
18436         to handle two length counters instead of one.  Update all uses.
18437         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
18438         two length counters instead of one.
18439         * sched-rgn.c (propagate_deps): Update to handle two length counters
18440         instead of one.
18441
18442 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
18443
18444         PR target/31582
18445         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
18446         copy of source, pass it to ix86_expand_vector_set and return
18447         it as target.
18448
18449 2007-04-16  David Ung  <davidu@mips.com>
18450             Joseph Myers  <joseph@codesourcery.com>
18451
18452         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
18453         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
18454         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
18455         Add 74K processor information.
18456         * config/mips/mips.md: Include 74k.md.
18457         (cpu): Add 74kc,74kf,74kx.
18458         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
18459         * config/mips/74k.md: New.
18460         * doc/invoke.texi (MIPS Options): Document 74K support.
18461
18462 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
18463
18464         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
18465         vectorizable_* functions.
18466         * tree-vect-transform.c (vectorizable_call): Add check for
18467         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
18468         (vectorizable_store): likewise.
18469         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
18470         Add comments.
18471         (vectorizable_operation, vectorizable_type_demotion): Likewise.
18472         (vectorizable_type_promotion, vectorizable_load): Likewise.
18473         (vectorizable_live_operation, vectorizable_condition): Likewise.
18474         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
18475         STMT_VINFO_LIVE_P.
18476         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
18477
18478 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
18479
18480         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
18481         register numbers more.
18482         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
18483         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
18484         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
18485         FUNCTION_VALUE_REGNO_P): Likewise.
18486         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
18487         STATIC_CHAIN_REGNUM): Likewise.
18488         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
18489         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
18490         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
18491         * config/m68k/m68k.md (FP_REG): New.
18492
18493 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
18494
18495         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
18496         alignment on fido.
18497
18498 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
18499
18500         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
18501         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
18502         comment typos.
18503
18504 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
18505
18506         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
18507         cold loops.
18508
18509 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18510
18511         PR c/31520
18512         * c-decl.c (finish_decl): Grab the type of the decl after the call
18513         to store_init_value.
18514
18515 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
18516
18517         * common.opt (fforward-propagate): Fix "Optimization" annotation.
18518
18519 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
18520
18521         PR c++/25874
18522         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
18523         dominators, post dominators and cleanup cfg before returning.
18524
18525 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
18526
18527         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
18528         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
18529
18530 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
18531
18532         * config.gcc: Recognize fido.
18533         * config/m68k/m68k-devices.def (fidoa): New.
18534         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
18535         __mfido__.
18536         (FL_FIDOA, TARGET_FIDOA): New.
18537         * config/m68k/m68k.opt (mfidoa): New.
18538
18539 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18540
18541         PR middle-end/31322
18542         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
18543         when a personality function is used.
18544
18545 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
18546
18547         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
18548
18549 2007-04-13  Mike Stump  <mrs@apple.com>
18550
18551         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
18552         we can...
18553         * config/darwin.opt (fapple-kext): Make C++ only.
18554         * config/darwin.c (darwin_override_options): Remove code to ensure
18555         -fapple-kext is given for C++ only.
18556
18557 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
18558
18559         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
18560         * config/mips/mips.c (override_options): Call
18561         SUBTARGET_OVERRIDE_OPTIONS, if defined.
18562
18563 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
18564
18565         * config/i386/i386.opt (msvr3-shlib): Removed.
18566
18567         * doc/invoke.texi: Remove -msvr3-shlib.
18568
18569 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
18570
18571         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
18572         with "popcnt" instruction.
18573
18574 2007-04-13  Richard Guenther  <rguenther@suse.de>
18575
18576         PR tree-optimization/21258
18577         * tree-vrp.c (compare_case_labels): New helper.
18578         (find_switch_asserts): New function.
18579         (find_assert_locations): Call it for SWITCH_EXPRs.
18580
18581 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
18582
18583         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
18584         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
18585         check is now implied in X87_FLOAT_MODE_P.
18586         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
18587         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
18588         (fix_trunc<mode>_i386_fisttp): Ditto.
18589         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
18590         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
18591         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
18592         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
18593         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
18594         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
18595         (unnamed_splitters): Ditto.
18596         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
18597         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
18598         FIRST_SSE_REG for local functions when SSE math is enabled or
18599         for functions with sseregparm attribute.
18600         (standard_80387_constant_p): Return -1 if mode is not
18601         X87_FLOAT_MODE_P.
18602         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
18603         (ix86_expand_compare): Ditto.
18604         (ix86_expand_carry_flag_compare): Ditto.
18605         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
18606         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
18607         DECIMAL_FLOAT_MODE_P.
18608         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
18609         of SCALAR_FLOAT_MODE_P.
18610         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
18611         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
18612         checks before FLOAT_MODE_P.
18613         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
18614         before FLOAT_MODE_P.
18615         [DIV]: Ditto.
18616         [NEG]: Ditto.
18617         [ABS]: Ditto.
18618         [SQRT]: Ditto.
18619         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
18620
18621 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
18622             Charles Wilson  <libtool@cwilson.fastmail.fm>
18623
18624         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
18625         (libgcc.mvars): Don't depend on them.
18626         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
18627         * exec-tool.in: New.
18628
18629 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
18630
18631         * doc/invoke.text (--help): Document --help=common.
18632
18633 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
18634
18635         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
18636
18637 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18638
18639         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
18640         * genemit.c (main): Emit #include "integrate.h".
18641         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
18642         (LOADGP_RTP): New mips_loadgp_style.
18643         * config/mips/mips.h: Include config/vxworks-dummy.h.
18644         (TARGET_RTP_PIC): New macro.
18645         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
18646         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
18647         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
18648         for TARGET_RTP_PIC.
18649         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
18650         -mvxworks-pic when using -mrtp and a PIC option.
18651         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
18652         for RTP PIC.
18653         (mips_symbolic_constant_p, mips_symbolic_address_p)
18654         (mips_symbol_insns): Handle SYMBOL_HALF.
18655         (override_options): Warn about -G and -mrtp being used together.
18656         Initialize mips_lo_relocs[SYMBOL_HALF].
18657         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
18658         (mips_emit_loadgp): Handle LOADGP_RTP.
18659         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
18660         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
18661         (tablejump): Handle function-relative case table entries if
18662         TARGET_RTP_PIC.
18663         * config/mips/predicates.md (symbol_ref_operand): New predicate.
18664
18665 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18666
18667         * config/mips/mips.md (load_call<mode>): Allow any general register.
18668         destination.
18669         (sibcall_value_internal, sibcall_value_multiple_internal)
18670         (call_value_internal, call_value_split, call_value_multiple_internal)
18671         (call_value_multiple_split): Remove constraints from operand 0.
18672
18673 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18674
18675         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
18676         rather than loadgp_noshared.
18677         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
18678         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
18679         gen_loadgp.
18680         * config/mips/mips.md (loadgp): Rename to...
18681         (loadgp_newabi): ...this.
18682         (loadgp_noshared): Rename to...
18683         (loadgp_absolute): ...this.
18684
18685 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18686
18687         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
18688         false for locally-binding symbols.
18689         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
18690
18691 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18692
18693         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
18694         (SYMBOL_GOT_PAGE_OFST): ...this.
18695         (SYMBOL_GOT_GLOBAL): Rename to...
18696         (SYMBOL_GOT_DISP): ...this.
18697         (SYMBOL_GOTOFF_GLOBAL): Rename to...
18698         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
18699         * config/mips/mips.c (mips_global_symbol_p): New function.
18700         (mips_symbol_binds_local_p): Likewise.
18701         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
18702         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
18703         mips_global_symbol_p and mips_symbol_binds_local_p.
18704         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
18705         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
18706         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
18707         SYMBOL_GOTOFF_DISP.
18708         (mips_ok_for_lazy_binding_p): New function.
18709         (mips_load_call_address, mips_expand_call): Use it.
18710         (mips_dangerous_for_la25_p): Likewise.
18711         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
18712         (*got_disp<mode>): Use got_disp_operand instead of
18713         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
18714         SYMBOL_GOTOFF_GLOBAL.
18715         (*got_page<mode>): Use got_page_ofst_operand instead of
18716         local_got_operand.
18717         * config/mips/predicates.md (const_call_insn_operand): Use
18718         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
18719         (global_got_operand): Rename to...
18720         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
18721         SYMBOL_GOT_GLOBAL.
18722         (local_got_operand): Rename to...
18723         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
18724         of SYMBOL_GOT_LOCAL.
18725
18726 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18727
18728         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
18729         TARGET_CALL_CLOBBERED_GP.
18730         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
18731         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
18732         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
18733         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
18734         of TARGET_ABICALLS && !TARGET_NEWABI.
18735         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
18736         * config/mips/mips.c (mips_load_call_address): Check
18737         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
18738         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
18739         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
18740         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
18741         TARGET_ABICALLS && TARGET_NEWABI.
18742         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
18743         TARGET_ABICALLS.
18744         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
18745         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
18746         TARGET_ABICALLS && TARGET_NEWABI.
18747         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
18748         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
18749         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
18750         whether indirect calls must use $25.
18751         (mips_extra_live_on_entry): Check TARGET_GOT instead of
18752         TARGET_ABICALLS.
18753         * config/mips/mips.md (jal_macro): Check flag_pic and
18754         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
18755         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
18756         instead of TARGET_ABICALLS.
18757         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
18758         TARGET_ABICALLS && TARGET_OLDABI.
18759         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
18760         (sibcall): In the comment above the define_insn, mention
18761         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
18762         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
18763         instead of TARGET_ABICALLS.
18764
18765 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
18766
18767         * doc/md.texi (Blackfin family constraints): Document PA and PB.
18768         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
18769         (MACFLAGS_MATCH_P): New macro.
18770         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
18771         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
18772         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
18773         the other MACFLAG constants.
18774         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
18775         (flag_machi): Tighten constraints.  Renumber some of the operands.
18776         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
18777         output template.
18778         (flag_machi_parts_acconly): New pattern.
18779         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
18780         used.
18781         (flag_macinit1hi): Tighten constraints.
18782         (flag_mul_macv2hi_parts_acconly): New pattern.
18783
18784         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
18785         Use a more efficient implementation.
18786         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
18787         inline sequences when not optimizing for size.
18788
18789         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
18790         movhi_high2low): Delete, merge functionality into...
18791         (packv2hi): ... this pattern.
18792
18793         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
18794         * config/bfin/bfin.opt (msim): New option.
18795         (mcpu=): New option.
18796         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
18797         (bfin_cpu_t): Typedef of enum bfin_cpu.
18798         (bfin_cpu_type): New declaration.
18799         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
18800         -msim and -mcpu= options.
18801         (LIB_SPEC): Likewise.
18802         * config/bfin/bfin.c (bfin_cpu_type): Define.
18803         (bfin_handle_option): Handle -mcpu= option.
18804         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
18805         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
18806         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
18807
18808 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18809
18810         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
18811         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
18812         (powerpc-wrs-vxworksae): Use ${tm_file}.
18813         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
18814         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
18815         * config/i386/vx-common.h: New file.
18816
18817 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
18818
18819         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
18820         of crt0.o%s.
18821
18822 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
18823
18824         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
18825         ldxtr.
18826
18827 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
18828
18829         PR c++/31078
18830         PR c++/31103
18831         * c-common.c (c_build_qualified_type): Set canonical type
18832         appropriately.
18833
18834 2007-04-12  Richard Guenther  <rguenther@suse.de>
18835
18836         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
18837         lower bound and element size if lower bound is not zero
18838         or either of the ARRAY_REF operands is set.
18839
18840 2007-04-12  Richard Guenther  <rguenther@suse.de>
18841
18842         PR tree-optimization/24689
18843         PR tree-optimization/31307
18844         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
18845         indices by value.
18846         * gimplify.c (canonicalize_addr_expr): To be consistent with
18847         gimplify_compound_lval only set operands two and three of
18848         ARRAY_REFs if they are not gimple_min_invariant.  This makes
18849         it never at this place.
18850         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
18851
18852 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18853
18854         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
18855         null before emitting a .nsubspa directive.
18856
18857 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
18858
18859         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
18860         need_to_partition_p if there are no memory statements in the
18861         function.
18862
18863 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
18864
18865         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
18866         (gcd_of_steps_may_divide_p): New function.
18867         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
18868
18869 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
18870
18871         * reload.c (find_reloads_toplev, find_reloads_address,
18872         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
18873         not a pointer equality test, to decide if we need to call
18874         push_reg_equiv_alt_mem.
18875
18876 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
18877
18878         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
18879         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
18880         New.
18881         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
18882
18883 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
18884
18885         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
18886         vector to be positive.
18887
18888 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
18889
18890         PR 30735
18891         PR 31090
18892         * doc/invoke.texi: Document --params max-aliased-vops and
18893         avg-aliased-vops.
18894         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
18895         debug_memory_partitions): Move to tree-flow.h
18896         * params.h (AVG_ALIASED_VOPS): Define.
18897         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
18898         users.
18899         (mp_info_t): Likewise.
18900         (get_mem_sym_stats_for): New.
18901         (set_memory_partition): Move from tree-flow-inline.h.
18902         (mark_non_addressable): Only clear the set of symbols for the
18903         partition if it exists.
18904         (dump_memory_partitions): Move from tree-ssa-operands.c
18905         (debug_memory_partitions): Likewise.
18906         (need_to_partition_p): New.
18907         (dump_mem_ref_stats): New.
18908         (debug_mem_ref_stats): New.
18909         (dump_mem_sym_stats): New.
18910         (debug_mem_sym_stats): New.
18911         (update_mem_sym_stats_from_stmt): New.
18912         (compare_mp_info_entries): New.
18913         (mp_info_cmp): Call it.
18914         (sort_mp_info): Change argument to a list of mem_sym_stats_t
18915         objects.
18916         (get_mpt_for): Move from tree-ssa-operands.c.
18917         (find_partition_for): New.
18918         (create_partition_for): Remove.
18919         (estimate_vop_reduction): New.
18920         (update_reference_counts): New.
18921         (build_mp_info): New.
18922         (compute_memory_partitions): Refactor.
18923         Document new heuristic.
18924         Call build_mp_info, update_reference_counts,
18925         find_partition_for and estimate_vop_reduction.
18926         (compute_may_aliases): Populate virtual operands before
18927         calling debugging dumps.
18928         (delete_mem_sym_stats): New.
18929         (delete_mem_ref_stats): New.
18930         (init_mem_ref_stats): New.
18931         (init_alias_info): Call it.
18932         (maybe_create_global_var): Remove alias_info argument.
18933         Get number of call sites and number of pure/const call sites
18934         from gimple_mem_ref_stats().
18935         (dump_alias_info): Call dump_memory_partitions first.
18936         (dump_points_to_info_for): Show how many times a pointer has
18937         been dereferenced.
18938         * opts.c (decode_options): For -O2 set --param
18939         max-aliased-vops to 500.
18940         For -O3 set --param max-aliased-vops to 1000 and --param
18941         avg-aliased-vops to 3.
18942         * fortran/options.c (gfc_init_options): Remove assignment to
18943         MAX_ALIASED_VOPS.
18944         * tree-flow-inline.h (gimple_mem_ref_stats): New.
18945         * tree-dfa.c (dump_variable): Dump memory reference
18946         statistics.
18947         Dump NO_ALIAS* settings.
18948         (referenced_var_lookup): Tidy.
18949         (mem_sym_stats): New.
18950         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
18951         and ORIG are different SSA names for a memory partition.
18952         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
18953         * tree-flow.h (struct mem_sym_stats_d): Define.
18954         (mem_sym_stats_t): Define.
18955         (struct mem_ref_stats_d): Define.
18956         (struct gimple_df): Add field mem_ref_stats.
18957         (enum noalias_state): Define.
18958         (struct var_ann_d): Add bitfield noalias_state.
18959         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
18960         debug_mem_ref_stats, debug_memory_partitions,
18961         debug_mem_sym_stats): Declare.
18962         * tree-ssa-structalias.c (update_alias_info): Update call
18963         sites, pure/const call sites and asm sites in structure
18964         returned by gimple_mem_ref_stats.
18965         Remove local variable IS_POTENTIAL_DEREF.
18966         Increase NUM_DEREFS if the memory expression is a potential
18967         dereference.
18968         Call update_mem_sym_stats_from_stmt.
18969         If the memory references memory, call
18970         update_mem_sym_stats_from_stmt for all the direct memory
18971         symbol references found.
18972         (intra_create_variable_infos): Set noalias_state field for
18973         pointer arguments according to the value of
18974         flag_argument_noalias.
18975         * tree-ssa-structalias.h (struct alias_info): Remove fields
18976         num_calls_found and num_pure_const_calls_found.
18977         (update_mem_sym_stats_from_stmt): Declare.
18978         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
18979         Set default value to 100.
18980         (PARAM_AVG_ALIASED_VOPS): Define.
18981
18982 2007-04-11  Richard Guenther  <rguenther@suse.de>
18983
18984         PR middle-end/31530
18985         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
18986         a * -b + c as c - a * b if we honor sign dependent rounding.
18987
18988 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
18989
18990         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
18991         bfin_expand_strmov.
18992         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
18993         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
18994         variables.
18995         (initialize_trampoline): Don't use old-style function definition.
18996         (bfin_secondary_reload): Mark IN_P argument as unused.
18997
18998 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
18999
19000         PR tree-optimization/31343
19001         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
19002         (build_polynomial_chrec): Return a scalar when the evolution is zero.
19003         * testsuite/gcc.dg/vect/pr31343.c: New.
19004
19005 2007-04-10  Eric Christopher  <echristo@apple.com>
19006
19007         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
19008         * config/i386/i386.md (*cmpfp0): Use.
19009         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19010         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
19011         (fix_trunc<mode>_i386_fisttp): Ditto.
19012         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
19013         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
19014         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
19015         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
19016         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
19017         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
19018         (unnamed_splitters): Ditto.
19019         * config/i386/i386.c (output_fix_trunc): Assert that
19020         we're not being passed a TFmode operand.
19021
19022 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
19023
19024         PR tree-optimization/31526
19025         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
19026         n_basic_blocks to find newly added blocks.
19027
19028 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
19029
19030         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
19031         alternative.
19032         (fix_trunc<mode>si_sse): Ditto.
19033         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
19034         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
19035         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
19036         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
19037         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
19038         expander using SSEMODEF mode macro.
19039         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
19040         expander using SSEMODEF mode macro.
19041         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
19042         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
19043         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
19044         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
19045         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
19046         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
19047         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
19048         Macroize insn using X87MODEF mode macro.
19049
19050 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19051
19052         * config/i386/sse.md (sse2_pinsrw): Removed.
19053         (sse2_pextrw): Renamed to ...
19054         (*sse2_pextrw): This.
19055
19056 2007-04-09  Jan Hubicka  <jh@suse.cz>
19057
19058         PR target/27869
19059         * config/i386/sse.md
19060         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
19061         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
19062         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
19063         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
19064
19065 2007-04-09  Jan Hubicka  <jh@suse.cz>
19066
19067         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
19068         multiple fields of union.
19069
19070 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
19071
19072         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
19073         (create_preheaders): Check that loops are available.
19074         (fix_loop_structure): Clean up, improve comments.
19075         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
19076         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
19077         state flags.
19078         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
19079         * predict.c (tree_estimate_probability): Do not call
19080         calculate_dominance_info.  Call create_preheaders.
19081         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
19082         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
19083         flags.
19084         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
19085         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
19086         * tree-cfg.c (tree_split_edge): Make an assert more precise.
19087         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
19088         arguments.
19089
19090 2007-04-08  Jan Hubicka  <jh@suse.cz>
19091
19092         * tree.h (maybe_fold_offset_to_component_ref): Declare.
19093         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
19094         * fold-const.c (fold_unary): Use it.
19095
19096 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19097
19098         * varasm.c (assemble_variable): Remove call to
19099         lang_hooks.decls.prepare_assemble_variable.
19100         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
19101         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
19102         * langhooks.h (lang_hooks_for_decls): Remove
19103         prepare_assemble_variable.
19104
19105 2007-04-08  Mike Stump  <mrs@apple.com>
19106
19107         * config/i386/i386.c: Use inc/dec on Core2.
19108
19109 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
19110
19111         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
19112         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
19113         lhd_tree_inlining_end_inlining): Remove.
19114         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
19115         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
19116         end_inlining hooks.
19117         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
19118         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
19119         lhd_tree_inlining_end_inlining): Remove prototypes.
19120         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
19121         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
19122         LANG_HOOKS_TREE_INLINING_START_INLINING,
19123         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
19124
19125         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
19126         not set it.
19127
19128 2007-04-08  Anatoly Sokolov <aesok@post.ru>
19129
19130         PR target/29932
19131         * config/avr/predicates.md (io_address_operand): Delete predicate.
19132         (low_io_address_operand): Don't use 'mode' argument.
19133         (higth_io_address_operand): Rename ...
19134         (high_io_address_operand): ... to this. Don't use 'mode' argument.
19135         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
19136         for above change.
19137
19138 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
19139
19140         Revert change removing staticp.
19141
19142 2007-04-07  Anatoly Sokolov <aesok@post.ru>
19143
19144         PR target/30289
19145         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
19146         earlyclobber.
19147
19148 2007-04-07  Bruce Korb  <bkorb@gnu.org>
19149
19150         * c.opt: Add -Wformat-contains-nul.
19151         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
19152           -Wformat setting.
19153         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
19154         the NUL byte warning.
19155
19156 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
19157
19158         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
19159
19160 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
19161
19162         * tree.c (staticp): No longer use staticp langhook.
19163         * langhooks.c (lhd_staticp): Removed.
19164         * langhooks.h (struct lang_hooks): Remove staticp.
19165         * c-common.c (c_staticp): Remove.
19166         * c-common.h (c_staticp): Ditto.
19167         * langhooks-defs.h (lhd_staticp): Ditto.
19168         (LHD_HOOKS_STATICP): Ditto
19169         * tree.h (gcc_assert_lowered): New macro.
19170
19171 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
19172
19173         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
19174         argument "reliable".
19175         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
19176         Add argument "reliable".  Propagate it through calls.
19177         (infer_loop_bounds_from_undefined): Derive number of iterations
19178         estimates from references in blocks that do not dominate loop latch.
19179         (gcov_type_to_double_int): New function.
19180         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
19181         and expected_loop_iterations_unbounded.
19182         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
19183         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
19184         * tree-data-ref.c (estimated_loop_iterations): Export.
19185         (get_references_in_stmt): Fix -- do not return addresses of local
19186         objects.
19187         * cfgloop.h (expected_loop_iterations_unbounded,
19188         estimated_loop_iterations): Declare.
19189
19190 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
19191
19192         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
19193
19194 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
19195
19196         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
19197         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
19198         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
19199         Use output_387_reg_move().
19200         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
19201         expander using X87MODEF12 mode macro.
19202         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
19203         choosing register preferences.  Use output_387_reg_move().
19204         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
19205         instead of "x".  Use output_387_reg_move().
19206         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
19207         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
19208         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
19209         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
19210         Use output_387_reg_move().
19211         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
19212         mode macro.
19213         (*truncxf?f_i387 splitter): Ditto.
19214
19215 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
19216
19217         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
19218         LANG_HOOKS_SAFE_FROM_P.
19219         * expr.c (safe_from_p): Remove langhook call.
19220         * langhooks.h (lang_hooks): Remove safe_from_p.
19221         (lhd_safe_from_p): Remove prototype.
19222         * langhooks.c (lhd_safe_from_p): Remove.
19223
19224 2007-04-06  Jan Hubicka  <jh@suse.cz>
19225
19226         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
19227         functions.
19228
19229 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
19230
19231         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
19232         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
19233         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
19234         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
19235         alternative.
19236         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
19237         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
19238
19239 2007-04-05  Richard Henderson  <rth@redhat.com>
19240
19241         * config/alpha/alpha.c (print_operand) [+]: Remove.
19242         (alpha_end_function): Print nop if call at end of function.
19243         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
19244         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
19245         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
19246         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
19247         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
19248         the call pattern. Update peepholes to match.
19249
19250 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
19251
19252         * doc/extend.texi (Other Builtins): Add decimal float variants
19253         of signbit.
19254         * builtins.def: Ditto.
19255         * builtins.c (expand_builtin): Ditto.
19256
19257 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
19258             H.J. Lu  <hongjiu.lu@intel.com>
19259
19260         PR target/31478
19261         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
19262         of V8HImode when calling ix86_binary_operator_ok.
19263         (sse2_pmaddwd): Call ix86_binary_operator_ok.
19264         (sdot_prodv8hi): Operands 1 and 2 must be register.
19265
19266 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19267
19268         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
19269         initialize align to silence bogus warning.
19270
19271 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19272
19273         PR middle-end/22156
19274         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
19275         all_no_warning.
19276         (struct sra_walk_fns): Remove use_all parameter from use.
19277         (sra_hash_tree): Handle BIT_FIELD_REFs.
19278         (sra_elt_hash): Don't hash bitfld blocks.
19279         (sra_elt_eq): Skip them in parent compares as well.  Handle
19280         BIT_FIELD_REFs.
19281         (sra_walk_expr): Don't maintain or pass down use_all_p.
19282         (scan_use): Remove use_all parameter.
19283         (scalarize_use): Likewise.  Re-expand assignment to
19284         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
19285         output, and re-scalarize after output.  Don't mark anything
19286         for no warning.
19287         (scalarize_ldst): Adjust.
19288         (scalarize_walk_gimple_modify_statement): Likewise.
19289         (build_element_name_1): Handle BIT_FIELD_REFs.
19290         (instantiate_element): Don't warn for any element whose parent
19291         is used as a whole.
19292         (instantiate_missing_elements_1): Return the sra_elt.
19293         (canon_type_for_field): New.
19294         (try_instantiate_multiple_fields): New.
19295         (instantiate_missing_elemnts): Use them.
19296         (mark_no_warning): Removed.
19297         (generate_one_element_ref): Handle BIT_FIELD_REFs.
19298         (REPLDUP, sra_build_elt_assignment): New.
19299         (generate_copy_inout): Use them.
19300         (generate_element_copy): Likewise.  Handle bitfld differences.
19301         (generate_element_zero): Don't recurse for blocks.  Use
19302         sra_build_elt_assignment.
19303         (generate_one_element_int): Take elt instead of var.  Use
19304         sra_build_elt_assignment.
19305         (generate_element_init_1): Adjust.
19306         (scalarize_use, scalarize_copy): Use REPLDUP.
19307         (scalarize_ldst): Move assert before dereference.
19308         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
19309
19310 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
19311
19312         * regmove.c: Fix unused variable warnings due to previous commit.
19313
19314 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
19315
19316         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
19317         (regmove_bb_head): Remove.
19318         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
19319         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
19320         problems with fixup_match_1.
19321         Don't initialize/free regmove_bb_head.
19322
19323         (reg_is_remote_constant_p): If an insn is in the same basic block
19324         but not before INSN, consider it remote, too.
19325
19326 2007-04-05  Anatoly Sokolov <aesok@post.ru>
19327
19328         PR target/25448
19329         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
19330         DECL_ASSEMBLER_NAME, not the DECL_NAME.
19331
19332 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
19333
19334         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
19335         (CONDITIONAL_REGISTER_USAGE): Likewise.
19336
19337 2007-04-04  Richard Henderson  <rth@redhat.com>
19338
19339         * config/alpha/lib1funcs.asm: Remove unused file.
19340
19341 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
19342
19343         PR other/31356
19344         * opts.c (print_specific_help): Fix --help=<language>
19345         header line.
19346         (common_handle_option): Support --help=common.
19347
19348 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
19349
19350         PR other/31353
19351         * gcc.c (main): Do not run the linker if
19352         print_subprocess_help indicates that it shouldn't be
19353         run.
19354
19355 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
19356
19357         PR doc/31355
19358         * doc/invoke.texi (--help=): Document <languages> value, fix
19359         formatting in tables of values.
19360
19361 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
19362
19363         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
19364         dllimport attribute of virtual methods.
19365
19366 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
19367
19368         * config/score/crti.asm: Change _bss_start to __bss_start.
19369         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
19370         (OUTGOING_REG_PARM_STACK_SPACE) update.
19371         * config/score/score.opt: add options to make backend support
19372         score5, score5u, score7 and score7d.
19373         * config/score/score.md: Likewise.
19374         * config/score/misc.md: Likewise.
19375         * config/score/mac.md: Likewise.
19376         * doc/invoke.texi: Likewise.
19377         * doc/md.texi: update constraints define.
19378
19379 2007-04-03  Richard Henderson  <rth@redhat.com>
19380
19381         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
19382         an appropriate type, use the mode instead.
19383
19384 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
19385
19386         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
19387         Set the default --with-arch setting to mips2.
19388         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
19389         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
19390         (MULTILIB_OSDIRNAMES): Delete.
19391         (MULTILIB_DIRNAMES): Define.
19392         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
19393         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
19394         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
19395         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
19396         VXWORKS_OS_CPP_BUILTINS.
19397         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
19398         (MIPS_DEBUGGING_INFO): Undefine.
19399         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
19400
19401 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
19402
19403         PR middle-end/30704
19404         * fold-const.c (native_encode_real): Encode real.c provided longs
19405         as a series of 32-bit native integers.
19406         (native_interpret_real): Interpret buffer as a series of 32-bit
19407         native integers.
19408
19409 2007-04-03  Richard Guenther  <rguenther@suse.de>
19410
19411         * genpreds.c (write_insn_constraint_len): Write function
19412         optimized for CONSTRAINT_LEN implementation.
19413         (write_tm_preds_h): Output insn_constraint_len inline and
19414         use it for CONSTRAINT_LEN.
19415         (write_insn_preds_c): Don't output insn_constraint_len.
19416         * doc/md.texi (define_register_constraint): Document multi-letter
19417         constraints shall have the same length if they start with the same
19418         letter.
19419
19420 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
19421
19422         PR target/31175
19423         * config/i386/i386.md (isinf<mode>2): Expand only when
19424         TARGET_C99_FUNCTIONS is set.
19425
19426 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
19427
19428         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
19429         (x86_64-*-linux*): Ditto.
19430         * config/i386/i386.opt (mpc): New option.
19431         * config/i386/i386.c (overrride_options): Handle
19432         ix87_precision_string.
19433         * config/i386/crtprec.c: New file.
19434         * config/i386/t-crtpc: Ditto.
19435         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
19436         and -mpc80 options.
19437         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
19438         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
19439         crtprec32.o, crtprec64.o and crtprec80.o.
19440
19441         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
19442         and -mpc80 options.
19443         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
19444
19445 2007-04-02  Eric Christopher  <echristo@apple.com>
19446
19447         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
19448         limitations on darwin.
19449
19450 2007-04-02  Anatoly Sokolov <aesok@post.ru>
19451
19452         PR target/31137
19453         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
19454
19455 2007-04-02  Dave Korn  <dave.korn@artimi.com>
19456
19457         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
19458
19459 2007-04-02  Dave Korn  <dave.korn@artimi.com>
19460
19461         * libgcc2.h (exception_descriptor): Don't forward-declare.
19462         (__get_eh_table_language, __get_eh_table_version): Delete
19463         prototypes of long-dead functions.
19464
19465 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
19466
19467         * ebitmap.h: New file
19468         * ebitmap.c: New file
19469         * Makefile.in (ebitmap.o): New target.
19470
19471 2007-04-01  Jan Hubicka  <jh@suse.cz>
19472
19473         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
19474         before very first instruction.
19475
19476 2007-04-01  Jan Hubicka  <jh@suse.cz>
19477
19478         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
19479         waring on 64bit hosts.
19480         * bitmap.h: Fix typo in bitmap_head_def.
19481
19482 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
19483
19484         PR rtl-optimization/31391
19485         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
19486         into a DELETED_LABEL note, and the label is in an empty basic
19487         block, update BB_END as well as BB_HEAD.
19488
19489 2007-04-01  Richard Henderson  <rth@redhat.com>
19490
19491         PR tree-optimization/31169
19492         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
19493         to varying if the range is outside [0,  prec-1].
19494
19495 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
19496
19497         PR target/31388
19498         * config/mips/mips.md (load_const_gp): New insn.
19499         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
19500         the MIPS16 GP pseudo register if no_new_pseudos.
19501         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
19502
19503 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19504
19505         PR target/31364
19506         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
19507         secureplt.
19508         (call_value): Likewise.
19509
19510 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
19511             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19512
19513         PR 14737
19514         * doc/invoke.texi: (optimization options): Reword description
19515         of -ffast-math. Document its primary purpose.
19516
19517 2007-03-31  Richard Guenther  <rguenther@suse.de>
19518
19519         * omp-low.c (splay-tree.h): Include.
19520         (lookup_decl): Replace splay-tree usage by pointer-map.
19521         (maybe_lookup_decl): Likewise.
19522         (new_omp_context): Likewise.
19523         (delete_omp_context): Likewise.
19524         * gimplify.c (splay-tree.h): Include.
19525         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
19526         pointer-map.
19527         (remap_ssa_name): Likewise.
19528         (remap_decl): Likewise.
19529         (remap_type_1): Likewise.
19530         (remap_type): Likewise.
19531         (copy_body_r): Likewise.
19532         (expand_call_inline): Likewise.
19533         (clone_body): Likewise.
19534         (copy_tree_r): Likewise.
19535         (remap_save_expr): Likewise.
19536         (unsave_r): Likewise.
19537         (unsave_expr_now): Likewise.
19538         (tree_function_versioning): Likewise.
19539         (build_duplicate_type): Likewise.
19540         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
19541         (struct copy_body_data): Replace splay-tree by pointer-map.
19542         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
19543         not $(SPLAY_TREE_H).
19544         (gimplify.o): Depend on $(SPLAY_TREE_H).
19545         (omp-low.p): Likewise.
19546
19547 2007-03-31  Anatoly Sokolov <aesok@post.ru>
19548
19549         * config/avr/predicates.md (even_register_operand,
19550         odd_register_operand): New predicates.
19551         * config/avr/avr.md (movw peephole2): New.
19552         (movw_r peephole2): New.
19553
19554 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
19555
19556         * tree.h (get_signed_or_unsigned_type): New.
19557         * fold-const.c (operand_equal_for_comparison_p): Use
19558         get_signed_or_unsigned_type instead of
19559         lang_hooks.types.signed_or_unsigned_type.
19560         * expr.c (store_expr): Ditto.
19561         * langhooks.c (get_signed_or_unsigned_type): New.
19562         (lhd_signed_or_unsigned_type): New.
19563         * langhooks.h (lhd_signed_or_unsigned_type): New.
19564         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
19565
19566 2007-03-30  Richard Henderson  <rth@redhat.com>
19567
19568         * tree-ssa-loop-ivopts.c: Include target.h.
19569         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
19570         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
19571         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
19572         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
19573
19574 2007-03-30  Richard Henderson  <rth@redhat.com>
19575             Kai Tietz  <kai.tietz@onevision.com>
19576
19577         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
19578         default for 64-bit.
19579         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
19580         (TARGET_64BIT_MS_ABI): New.
19581         (DBX_REGISTER_NUMBER): Handle 64-bit.
19582         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
19583         (LONG_TYPE_SIZE): Force to 32.
19584         (REG_PARM_STACK_SPACE): New.
19585         (OUTGOING_REG_PARM_STACK_SPACE): New.
19586         (REGPARM_MAX, SSE_REGPARM_MAX): New.
19587         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
19588         (STACK_BOUNDARY): Use 128 for 64-bit.
19589         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
19590         Add 64-bit implementation.
19591         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
19592         argument unused.
19593         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
19594         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
19595         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
19596         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
19597         (ix86_handle_cconv_attribute): Don't warn when ignoring if
19598         TARGET_64BIT_MS_ABI.
19599         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
19600         (ix86_pass_by_reference): Likewise.
19601         (ix86_function_value_regno_p): Likewise.
19602         (ix86_build_builtin_va_list): Likewise.
19603         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
19604         (function_arg_advance_ms_64): New.
19605         (function_arg_advance): Call it.
19606         (function_arg_ms_64): New.
19607         (function_arg): Call it.
19608         (function_value_ms_64): New.
19609         (ix86_function_value_1): Call it.
19610         (return_in_memory_ms_64): New.
19611         (ix86_return_in_memory): Call it.
19612         (setup_incoming_varargs_ms_64): New.
19613         (ix86_setup_incoming_varargs): Call it.
19614         (ix86_expand_prologue): Handle 64-bit stack probing.
19615         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
19616         (output_pic_addr_const): Likewise.
19617         (x86_this_parameter): Likewise.
19618         (x86_output_mi_thunk): Likewise.
19619         (x86_function_profiler): Likewise.
19620         (TARGET_STRICT_ARGUMENT_NAMING): New.
19621         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
19622         (TARGET_64BIT_MS_ABI): New.
19623         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
19624         * config/i386/i386.md (allocate_stack_worker): Remove.
19625         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
19626         describe the clobber of eax without a match_scratch.
19627         (allocate_stack_worker_postreload): Remove.
19628         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
19629         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
19630         (allocate_stack_worker_rex64_postreload): Remove.
19631         (allocate_stack): Handle 64-bit.
19632         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
19633         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
19634         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
19635         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
19636         (STANDARD_STARTFILE_PREFIX_1): Likewise.
19637         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
19638         * config.build (x86_64-*-mingw*): New host.
19639         * config.host (x86_64-*-mingw*): New host.
19640         * config.gcc (x86_64-*-mingw*): New target.
19641         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
19642
19643 2007-03-30  Richard Henderson  <rth@redhat.com>
19644             Kai Tietz  <kai.tietz@onevision.com>
19645
19646         * c-pragma.c (struct def_pragma_macro_value): New.
19647         (struct def_pragma_macro): New.
19648         (pushed_macro_table): New.
19649         (dpm_hash, dpm_eq): New.
19650         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
19651         (init_pragma): Install them.
19652         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
19653
19654 2007-03-30  Anatoly Sokolov <aesok@post.ru>
19655
19656         * config/avr/avr.c (avr_override_options): Clear
19657         'flag_delete_null_pointer_checks'.
19658
19659 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
19660
19661         PR c++/26099
19662         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
19663         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
19664         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
19665         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
19666         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
19667         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
19668         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
19669         C++ extensions.
19670         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
19671
19672 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
19673
19674         * regmove.c: Move all of pass_stack_adjustments from here...
19675         * combine-stack-adj.c: ...to this new file.
19676         * Makefile.in: Add rules for combine-stack-adj.o.
19677
19678 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
19679
19680         PR tree-optimization/31383
19681         * tree-data-ref.c (affine_function_equal_p): Do not require the
19682         vectors to have the same length.
19683
19684 2007-03-30  Jan Hubicka  <jh@suse.cz>
19685
19686         PR middle-end/30700
19687         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
19688         availablility; add more sanity checking; ask varpool only about
19689         VAR_DECL.
19690
19691 2007-03-29  Richard Henderson  <rth@redhat.com>
19692
19693         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
19694         to decide, but __SIZEOF_LONG_LONG__.
19695
19696 2007-03-29  Richard Henderson  <rth@redhat.com>
19697
19698         * emutls.c (struct __emutls_array): New.
19699         (emutls_destroy): Use it instead of casting element 0 from void*.
19700         (__emutls_get_address): Likewise.
19701
19702 2007-03-29  Richard Henderson  <rth@redhat.com>
19703
19704         * varasm.c (initializer_constant_valid_p): Don't deny
19705         DECL_DLLIMPORT_P on functions.
19706
19707         * config/i386/cygming.h: Remove function declarations.
19708         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
19709         (ASM_OUTPUT_LABELREF): Remove.
19710         (COMMON_ASM_OP): Remove.
19711         (ASM_OUTPUT_COMMON): Remove.
19712         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
19713         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
19714         (ASM_DECLARE_FUNCTION_NAME): Likewise.
19715         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
19716         Rename from TARGET_ENCODE_SECTION_INFO.
19717         * config/i386/netware.h: Likewise.
19718         * config/i386/i386-protos.h: Update.
19719         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
19720         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
19721         (legitimate_constant_p): Reject dllimports.
19722         (dllimport_map, get_dllimport_decl): New.
19723         (legitimize_dllimport_symbol): New.
19724         (legitimize_address, ix86_expand_move): Use it.
19725         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
19726         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
19727         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
19728         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
19729         * config/i386/predicates.md (constant_call_address_operand): Only
19730         accept symbols; reject dllimport_p symbols.
19731         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
19732         i386_pe_maybe_record_exported_symbol.
19733         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
19734         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
19735         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
19736         trust the setting of DECL_DLLIMPORT_P.
19737         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
19738         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
19739         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
19740         tidy the argument scanning loop.
19741         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
19742         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
19743         (i386_pe_strip_name_encoding): Remove.
19744         (i386_pe_binds_local_p): New.
19745         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
19746         (i386_pe_output_labelref): Remove.
19747         (i386_pe_asm_output_aligned_decl_common): New.
19748         (i386_pe_maybe_record_exported_symbol): Rename from
19749         i386_pe_record_exported_symbol; check for dllexported symbols.
19750
19751 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
19752
19753         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
19754         add comment explaining why vsnprintf cannot be used.
19755
19756 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
19757
19758         PR tree-optimization/30666
19759         * tree.c (build_complex_type): When creating type names for DWARF2
19760         debug info, create TYPE_DECLs for TYPE_NAME instead of
19761         IDENTIFIER_NODEs.
19762         (build_common_tree_nodes_2): Use build_complex_type when building
19763         predefined complex types, to preserve canonical types.
19764
19765 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
19766
19767         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
19768         (noce_get_alt_condition): Look at it to determine whether to
19769         reverse the condition or not.
19770         (noce_get_condition): Substitute the truth for lies.
19771         (noce_find_if_block): Set the then_else_reversed field.
19772
19773 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
19774
19775         * config/fr30/fr30.md (movdi): Do not accept immediates as the
19776         destination of this insn.
19777         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
19778         than calling gen_rtx_SET directly.  Use r0 to hold the value of
19779         'address + 4' rather than a stack based temporary which can be
19780         mis-optimized away.
19781
19782 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
19783
19784         * config/s390/s390.c (s390_secondary_input_reload_class,
19785         s390_secondary_output_reload_class): Functions removed.
19786         (s390_secondary_reload): New function.
19787         (TARGET_SECONDARY_RELOAD): Target macro defined.
19788         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
19789         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
19790         * config/s390/s390.md ("reload_outti", "reload_outdi",
19791         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
19792         "reload_out<mode>"): Expanders removed.
19793         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
19794         "reload<mode>_nonoffmem_out"): Expanders added.
19795
19796 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
19797
19798         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
19799         action if SRC->DEST replacement failed anyway.
19800
19801 2007-03-28  Mike Stump  <mrs@apple.com>
19802
19803         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
19804         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
19805         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
19806
19807 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19808
19809         * config.gcc: Accept barcelona as a variant of amdfam10.
19810         * config/i386/i386.c (override_options): Likewise.
19811         * doc/invoke.texi: Likewise.
19812
19813 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
19814
19815         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
19816         offsets for BIT_FIELD_REF and COMPONENT_REF.
19817
19818 2007-03-28  Richard Guenther  <rguenther@suse.de>
19819
19820         * tree.c (is_global_var): Move ...
19821         * tree-flow-inline.h (is_global_var): ... here.
19822         * tree.h (is_global_var): Remove declaration.
19823
19824 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
19825
19826         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
19827         option.
19828         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
19829         * config/i386/i386.c (ix86_tune_features): Initialize new
19830         tuning option.
19831         * config/i386/predicates.md (promotable_binary_operator): Use
19832         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
19833
19834 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
19835
19836         PR target/31380
19837         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
19838
19839 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
19840
19841         * config/fr30/fr30.md (movsi_internal): Change destination
19842         constraint from m to V and add m to the end.
19843
19844 2007-03-28  Christian Bruel  <christian.bruel@st.com>
19845
19846         * config/sh/sh.md (movsi_i): Fix type attribute.
19847
19848 2007-03-28  Christian Bruel  <christian.bruel@st.com>
19849
19850         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
19851         (movsf_ie): Likewise.
19852
19853 2007-03-28  Christian Bruel  <christian.bruel@st.com>
19854
19855         * config.gcc: Add sh4-300 to multilib.
19856         * config/sh/t-mlib-sh4-300: New file.
19857
19858 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
19859
19860         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
19861         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
19862         fix_trunc<mode>di2.
19863         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
19864         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
19865         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
19866         "fixuns_trunctddi2"): Whitespace fix.
19867
19868 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
19869
19870         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
19871         the definition of struct sh_args.
19872         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
19873         CALL_COOKIE_INT_REG_GET): Likewise.
19874
19875 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
19876
19877         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
19878         transformations are applied successfully.
19879
19880 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
19881
19882         * tree.c (tree_contains_struct): Permit 512 tree codes.
19883         * tree.h (tree_contains_struct): Ditto.
19884         (MAX_TREE_CODES): Ditto.
19885         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
19886         SPARE member to store remaining padding bits.
19887
19888 2007-03-27  Anatoly Sokolov <aesok@post.ru>
19889
19890         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
19891         architecture.
19892
19893 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
19894
19895         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
19896         * configure: Regenerate.
19897
19898         * configure: Regenerate using the correct version of autoconf.
19899
19900 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
19901
19902         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
19903         pointer regs.
19904         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
19905         regs to "__SP_L__" and "__SP_H__".
19906
19907 2007-03-27  Richard Guenther  <rguenther@suse.de>
19908
19909         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
19910         computations with it with a HOST_WIDE_INT variable.
19911
19912 2007-03-26  Mike Stump  <mrs@apple.com>
19913
19914         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
19915         objective-c-header, objective-c++-header and objc++-cpp-output
19916         support.
19917         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
19918
19919 2007-03-26  Richard Henderson  <rth@redhat.com>
19920
19921         PR target/31361
19922         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
19923         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
19924         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
19925         IX86_BUILTIN_PSRLQ128): New.
19926         (ix86_init_mmx_sse_builtins): Add them.
19927         (ix86_expand_builtin): Expand them.
19928         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
19929         operand 2 be TImode.
19930         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
19931         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
19932         _mm_srli_epi64): Mark __B const.
19933         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
19934         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
19935         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
19936         new two-vector shift builtins.
19937
19938 2007-03-26  Ian Lance Taylor  <iant@google.com>
19939
19940         PR tree-optimization/31345
19941         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
19942         [+INF, +INF(OVF)] into VARYING.
19943
19944 2007-03-26  Zack Weinberg  <zackw@panix.com>
19945
19946         * gengtype-parse.c: New file.
19947         * gengtype-yacc.y: Delete.
19948         * gengtype-lex.l: Don't include gengtype-yacc.h.
19949         Define YY_DECL and yyterminate appropriately for recursive
19950         descent parser.  yylval is now a string out-parameter to yylex.
19951         (HWS, EOID): New shorthand.
19952         (IWORD): Add a couple more types.
19953         (yylex): Add a setup stanza.  Remove the complex rules for
19954         detecting GTY'ed types and typedefs; replace with simple
19955         keyword detectors.  Adjust everything for the changed
19956         definition of yylval.  Ignore all pp-directives, not just #define.
19957         (yyerror): Delete.
19958         (parse_file): Rename yybegin; do not call yyparse.
19959         (yyend): New.
19960         * gengtype.c (xasprintf): Export again.
19961         (this_file): New.  Use everywhere __FILE__ was being used.
19962         (get_lang_bitmap): Special case types defined in gengtype.c.
19963         (do_typedef, new_structure): Suppress definition of certain types.
19964         (new_structure): Improve diagnostics of duplicate definitions.
19965         Make sure location_s is associated with input.h.
19966         (nreverse_pairs, define_location_structures): New functions.
19967         (main): Improve tagging of kludge types.  Remove old kludges
19968         for input.h types; use define_location_structures.
19969         * gengtype.h: Update prototypes.  Define token codes here.
19970         * Makefile.in: Remove all references to gengtype-yacc.
19971         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
19972         and gengtype.
19973         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
19974         add GTY((skip)) to the field that's only conditionally there.
19975         * doc/install.texi: Document that Bison is no longer required
19976         unless building treelang.
19977
19978         * gengtype.c: Don't include gtyp-gen.h.
19979         (srcdir): Declare here.
19980         (base_files, lang_dir_names): Allocate dynamically.
19981         (gt_files, num_gt_files, num_lang_dirs): New globals.
19982         (measure_input_list, read_input_line, read_input_list)
19983         (set_lang_bitmap): New functions.
19984         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
19985         simplify, relying on read_input_list to set up the bitmaps.
19986         (main): Arguments are no longer unused.  Check for correct number
19987         of command line arguments, set srcdir and srcdir_len, then call
19988         read_input_list, before doing anything else.  No need to worry
19989         about duplicates in main loop.
19990         * configure.ac: Simplify the calculation of all_gtfiles.
19991         Put language tags in there.  Don't set or substitute
19992         all_gtfiles_files_langs or all_gtfiles_files_frags.
19993         * Makefile.in: Revamp the way gengtype is invoked, now that it
19994         takes a file on its command line with a much simpler format.
19995         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
19996         (GTFILES): Remove duplicates and C source files.
19997         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
19998         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
19999         * configure: Regenerate.
20000
20001         * gengtype.h: Remove all type definitions to gengtype.c; leave
20002         only definitions of options_p, type_p, and pair_p as opaque
20003         pointers.  Update prototypes.
20004         * gengtype.c: Many type definitions moved here from gengtype.h.
20005         Consolidate type definitions at the top of the file.
20006         (xvasprintf): Delete.
20007         (xasprintf): Make static.
20008         (create_nested_pointer_option): Add 'next' parameter.
20009         (create_field_all, create_field_at): New functions.
20010         (create_field): Now a thin wrapper around create_field_all.
20011         (create_optional_field): Rename create_optional_field_ and add
20012         line argument.  Original name is now a macro which supplies
20013         __LINE__.
20014         (oprintf): Use vsnprintf directly.
20015         (close_output_files): Use fatal rather than perror/exit.
20016         (note_def_vec, note_def_vec_alloc): Use create_field_at.
20017         (main): Set progname.  Don't use exit.
20018         * gengtype-yacc.y (struct_fields): Use create_field_at.
20019         (option, optionseqopt): Delete.
20020         (optionseq): Consolidate productions from option here so we
20021         can use the first argument to create_option.
20022
20023         * gengtype-lex.l: Distinguish unions from structures in the
20024         token type.  Don't call find_structure; return the tag as a string.
20025         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
20026         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
20027         string.  Reorganize typedef_struct production accordingly.
20028         Use create_nested_ptr_option.
20029         * gengtype.c (create_nested_ptr_option): New function.
20030         * gengtype.h: Declare it.
20031
20032         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
20033         (string_type): Don't declare.
20034         (do_scalar_typedef): Declare.
20035         (create_scalar_type): Update prototype.
20036         * gengtype.c (string_type): Make static.
20037         (scalar_nonchar, scalar_char): New.
20038         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
20039         (resolve_typedef): Use scalar_nonchar for error recovery.
20040         (create_scalar_type): Remove name_len field.  Return scalar_char
20041         or scalar_nonchar as appropriate.
20042         (adjust_field_type): Look at scalar_is_char boolean to decide whether
20043         to use string_type.
20044         (throughout): Use scalar_nonchar instead of calling
20045         create_scalar_type, whenever possible.
20046         (main): Initialize scalar_char and scalar_nonchar before calling
20047         gen_rtx_next.
20048         * gengtype-lex.l: Adjust for removal of second argument to
20049         create_scalar_type.  Use yylval.s instead of yylval.t when
20050         returning SCALAR.
20051         * gengtype-yacc.y: Type of SCALAR is string.  Call
20052         create_scalar_type from type:SCALAR rule.  Adjust for removal of
20053         second argument to create_scalar_type.
20054
20055         * vec.h: Remove all #if IN_GENGTYPE blocks.
20056         Add comment saying that changes may require adjustments to gengtype.
20057         * gengtype.c: Don't include coretypes.h or tm.h.
20058         Add comment to inclusion of errors.h.
20059         (note_def_vec, note_def_vec_alloc): New functions.
20060         * gengtype.h: Declare new functions.
20061         * gengtype-lex.l: Don't include coretypes.h.
20062         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
20063         Delete.
20064         (update_lineno): Remove unnecessary prototype.
20065         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
20066         (VEC rule): Just return VEC_TOKEN.
20067         * gengtype-yacc.y (VEC_TOKEN): New token type.
20068         (type): Add a production for VEC(a,b).
20069         * Makefile.in: Update dependencies.
20070
20071         * gengtype-lex.l: Remove rules for parsing pointer-to-function
20072         typedefs that use the old PARAMS macro.
20073
20074         * gengtype-lex.l: Remove all rules and states relating to yacc
20075         input files.
20076         * gengtype-yacc.y: Similarly.
20077         * gengtype.c (note_yacc_type): Delete function.
20078         * gengtype.h: Update prototypes.
20079
20080 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
20081
20082         * tree-pretty-print.c (dump_generic_node): Report precision of
20083         unnamed integer types.
20084
20085 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
20086
20087         * ifcvt.c (noce_try_store_flag_constants): Don't check
20088         no_new_pseudos here.
20089         (noce_try_store_flag_constants): Don't check no_new_pseudos.
20090         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
20091         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
20092         noce_try_sign_mask): Likewise.
20093         (if_convert): Check no_new_pseudos here.
20094
20095         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
20096         Remove prototypes.
20097         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
20098         (noce_get_condition): Handle new then_else_reversed argument.
20099         (noce_init_if_info): Remove, fold into noce_find_if_block.
20100         (noce_process_if_block): Take a struct noce_if_info as the
20101         argument.  Don't set up one based on ce_if_info.  Update pointer
20102         references accordingly.
20103         (cond_move_process_if_block): Likewise.
20104         (process_if_block): Removed.
20105         (find_if_block): Removed.  Move functionality two new functions,
20106         noce_find_if_block and cond_exec_find_if_block.
20107         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
20108         blocks and the symmetric IF-ELSE-JOIN case.
20109         (cond_exec_find_if_block): Also new function mostly based on old
20110         find_if_block and process_if_block.
20111         (find_if_header): Replace find_if_block call with separately
20112         guarded calls to noce_find_if_block and cond_exec_find_if_block.
20113         (find_cond_trap): Update noce_get_condition call.
20114         (dead_or_predicable): Likewise.
20115
20116 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
20117
20118         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
20119         Remove.
20120         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
20121         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
20122         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
20123         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
20124         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
20125         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
20126         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
20127         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
20128         __builtin_ia32_psrad128 builtins.
20129
20130 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
20131
20132         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
20133         * config/i386/constraints.md
20134         (define_constraint "I"): Use IN_RANGE macro.
20135         (define_constraint "J"): Ditto.
20136         (define_constraint "K"): Ditto.
20137         (define_constraint "M"): Ditto.
20138         (define_constraint "N"): Ditto.
20139         (define_constraint "O"): Ditto.
20140         * config/i386/predicates.md
20141         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
20142         (define_predicate "const_0_to_3_operand"): Ditto.
20143         (define_predicate "const_0_to_7_operand"): Ditto.
20144         (define_predicate "const_0_to_15_operand"): Ditto.
20145         (define_predicate "const_0_to_63_operand"): Ditto.
20146         (define_predicate "const_0_to_255_operand"): Ditto.
20147         (define_predicate "const_1_to_31_operand"): Ditto.
20148         (define_predicate "const_2_to_3_operand"): Ditto.
20149         (define_predicate "const_4_to_7_operand"): Ditto.
20150
20151 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
20152
20153         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
20154         in SImode for save_world.
20155         * config/rs6000/altivec.md (save_world, restore_world): Convert to
20156         LR hard reg.
20157
20158 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
20159
20160         PR tree-optimization/30784
20161         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
20162         BIT_FIELD_REF.
20163
20164 2007-03-25  Revital Eres  <eres@il.ibm.com>
20165
20166         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
20167           Fold movement_possibility function into it.
20168
20169 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
20170
20171         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
20172         (load_macho_picbase_{si,di}): Convert to LR hard reg.
20173         (call_indirect_nonlocal_darwin64): Same.
20174         (call_nonlocal_darwin64): Same.
20175         (call_value_indirect_nonlocal_darwin64): Same.
20176         (call_value_nonlocal_darwin64): Same.
20177         (sibcall_nonlocal_darwin64): Same.
20178         (sibcall_value_nonlocal_darwin64): Same.
20179         (sibcall_symbolic_64): Same.
20180         (sibcall_value_symbolic_64): Same.
20181         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
20182         LR pseudo.
20183         (rs6000_emit_load_toc_table): Same.
20184         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
20185         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
20186         (mull_call): Same.
20187         (divss_call): Same.
20188         (divus_call): Same.
20189         (quoss_call): Same.
20190         (quous_call): Same.
20191         (load_toc_v4_pic_si): Same
20192         (load_toc_v4_PIC_1): Same.
20193         (load_toc_v4_PIC_1b): Same.
20194         (call_indirect_aix{32,64}): Same.
20195         (call_value_indirect_aix{32,64}): Same.
20196         (call): Same.
20197         (call_value): Same.
20198         (call_local{32,64}): Same.
20199         (call_value_local{32,64}): Same.
20200         (call_indirect_nonlocal_aix{32,64}): Same.
20201         (call_nonlocal_aix{32,64}): Same.
20202         (call_value_indirect_nonlocal_aix{32,64}): Same.
20203         (call_value_nonlocal_aix{32,64}): Same.
20204         (call_indirect_nonlocal_sysv<mode>): Same.
20205         (call_nonlocal_sysv<mode>): Same.
20206         (call_value_indirect_nonlocal_sysv<mode>): Same.
20207         (call_value_nonlocal_sysv<mode>): Same.
20208         (sibcall): Same.
20209         (sibcall_local{32,64}): Same.
20210         (sibcall_value_local{32,64}): Same.
20211         (sibcall_nonlocal_aix{32,64}): Same.
20212         (sibcall_value_nonlocal_aix{32,64}): Same.
20213         (sibcall_nonlocal_sysv<mode>): Same.
20214         (sibcall_value): Same.
20215         (sibcall_value_nonlocal_sysv<mode>): Same.
20216
20217 2007-03-24  Paul Brook  <paul@codesourcery.com>
20218
20219         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
20220         * config/arm/linux-eabi.h: Remove legacy syscall hack.
20221
20222 2007-03-24  Richard Henderson  <rth@redhat.com>
20223
20224         * config/ia64/constraints.md: New file.
20225         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
20226         satisfies_constraint_?.
20227         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
20228         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
20229         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
20230         ia64_output_mi_thunk): Likewise.
20231         (ia64_const_ok_for_letter_p): Remove.
20232         (ia64_const_double_ok_for_letter_p): Remove.
20233         (ia64_extra_constraint): Remove.
20234         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
20235         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
20236         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
20237         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
20238         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
20239         EXTRA_MEMORY_CONSTRAINT): Remove.
20240         * config/ia64/ia64.md: Include constriants.md.  Replace
20241         CONST_OK_FOR_? with satisfies_constraint_?.
20242
20243 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
20244             H.J. Lu  <hongjiu.lu@intel.com>
20245
20246         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
20247         DPD or BID name.
20248         (name macros): Use DPD_BID_NAME to convert names properly.
20249
20250         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
20251         decimal floating point format.
20252         (init_floating_libfuncs): Change decimal functions so that they
20253         have a "bid_" prefix if the decimal system uses the BID format,
20254         and "dpd_" prefix if the decimal system uses the DPD format.
20255         (init_interclass_conv_libfuncs): Ditto.
20256         (init_intraclass_conv_libfuncs): Ditto.
20257
20258         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
20259         using the BID format.
20260
20261         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
20262         whether we are using the BID decimal format.
20263         * configure: Regenerate.
20264
20265         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
20266         the compiler has decimal floating point enabled.  Define
20267         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
20268         instead of DPD.
20269
20270         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
20271         using the BID format.
20272
20273         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
20274         whether we are using the BID decimal format.
20275         * configure: Regenerate.
20276
20277         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
20278         the compiler has decimal floating point enabled.  Define
20279         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
20280         instead of DPD.
20281
20282         * doc/install.texi (--enable-decimal-float): Document BID and DPD
20283         options, and that it is enabled for i386/x86_64 systems.
20284
20285         * Makefile.in (enable_decimal_float): New.
20286         (DECNUMFMT): New.
20287         (DECNUMINC): Add  -I$(DECNUMFMT).
20288         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
20289         to $(DECNUMFMT) from $(DECNUM).
20290
20291         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
20292         Substitute enable_decimal_float.
20293         * configure: Regenerated.
20294
20295         PR other/30529
20296         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
20297         unsigned long.
20298
20299         * configure.ac: Enable decimal float for x86_64-*-linux*.
20300         * configure: Regenerated.
20301
20302         PR other/30530
20303         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
20304         decimal128ClearSign to flip and clear the sign bit in decimal128.
20305         (decimal_real_maxval): Set decimal128SetSign to set the sign
20306         bit in decimal128.
20307
20308 2007-03-23  Ian Lance Taylor  <iant@google.com>
20309
20310         * fold-const.c (fold_binary): Correct warning for X - c >= X.
20311
20312 2007-03-23  Ian Lance Taylor  <iant@google.com>
20313
20314         * tree-dump.c (dump_files): Correct comment.
20315
20316 2007-03-23  Ian Lance Taylor  <iant@google.com>
20317
20318         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
20319
20320 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
20321
20322         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
20323         in cfglayout mode.  Don't go into and out of cfglayout mode.
20324         Link the blocks in the order of the constructed traces.
20325         (rest_of_handle_tracer): Adjust call to tracer.
20326         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
20327         Don't go into cfglayout mode.
20328         (rtl_loop_done): Don't go out of cfglayout mode.
20329         * cfglayout.c (relink_block_chain): New function, split out from...
20330         (fixup_reorder_chain): ...here.  Remove redundant checking.
20331         (cfg_layout_finalize): Don't clear the header, footer, and aux
20332         fields here, move the code to do so to relink_block_chain.  Likewise
20333         for free_original_copy_tables.
20334         * rtl.h (tracer): Update prototype.
20335         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
20336         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
20337         mode.  Use relink_block_chain to serialize the CFG according to the
20338         new basic block order.  Move targetm.cannot_modify_jumps_p check from
20339         here...
20340         (gate_handle_reorder_blocks): ...to here.
20341         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
20342         from here...
20343         (gate_duplicate_computed_gotos): ...to here.
20344         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
20345         something always changes when going into and out of cfglayout mode.
20346         Perform an expensive cfg cleanup while going into cfglayout mode.
20347         Always update liveness information on HAVE_conditional_execution
20348         targets.  Reserialize the basic blocks and go out of cfglayout mode.
20349         * reg-stack.c: Include cfglayout.h.
20350         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
20351         the call to reorder_basic_blocks.
20352         * basic-block.h (reorder_basic_blocks): Update prototype.
20353         (relink_block_chain): New prototype.
20354         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
20355
20356 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
20357
20358         * config/mips/mips.md (type, hazard, *movdi_32bit,
20359         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
20360         *movhi_internal, *movqi_internal, *movsf_hardfloat,
20361         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
20362         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
20363         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
20364         applicable.
20365         (movcc): Change first xfer to multi.
20366         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
20367         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
20368         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
20369         config/mips/generic.md: Change reservations using "xfer" to use
20370         "mfc,mtc".
20371         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
20372         using match_operand.
20373         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
20374         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
20375         examining mode.
20376         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
20377
20378 2007-03-22  Richard Henderson  <rth@redhat.com>
20379
20380         * config/i386/i386.c: Remove unnecessary function declarations.
20381         Move targetm definition, and all related macros, to the end of
20382         the file.  Resort some functions to put definitions before uses.
20383         (ix86_attribute_table): Make static.  Move to end of file.
20384         (ix86_gimplify_va_arg): Make static.
20385
20386 2007-03-22  Richard Henderson  <rth@redhat.com>
20387
20388         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
20389         don't increase local_regparm with force_align_arg_pointer check.
20390         (ix86_function_sseregparm): Assert 32-bit.
20391         (type_has_variadic_args_p): New.
20392         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
20393         type_has_variadic_args_p.
20394         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
20395         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
20396         use memset instead.  Do maybe_vaarg check first; skip attribute
20397         tests if true; skip attribute tests for 64-bit.
20398         (construct_container): Remove TARGET_DEBUG_ARG.
20399         (function_arg_advance_32, function_arg_advance_64): Split out ...
20400         (function_arg_advance): ... from here.
20401         (function_arg_32, function_arg_64): Split out ...
20402         (function_arg): ... from here.
20403         (ix86_pass_by_reference): Tidy.
20404         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
20405         (function_value_32): New, from parts of ix86_function_value
20406         and ix86_value_regno.
20407         (function_value_64): New, from parts of ix86_function_value
20408         and ix86_libcall_value.
20409         (ix86_function_value_1): New.
20410         (ix86_function_value, ix86_libcall_value): Use it.
20411         (return_in_memory_32, return_in_memory_64): Split out ...
20412         (ix86_return_in_memory): ... from here.
20413         (ix86_struct_value_rtx): Skip for 64-bit.
20414         (ix86_libcall_value, ix86_value_regno): Remove.
20415         (setup_incoming_varargs_64): Split out ...
20416         (ix86_setup_incoming_varargs): ... from here.
20417         (ix86_va_start): Remove TARGET_DEBUG_ARG.
20418         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
20419         * config/i386/i386-protos.h (ix86_function_value): Remove.
20420         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
20421
20422 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20423
20424         PR other/23572
20425         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
20426         infinities not supported, otherwise emit warning if -Woverflow. On
20427         underflow, emit warning if -Woverflow.
20428         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
20429         and 0 otherwise.
20430         * real.h (real_from_string): Update declaration
20431
20432 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
20433             Richard Henderson  <rth@redhat.com>
20434
20435         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
20436         * calls.c (compute_argument_block_size, expand_call,
20437         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
20438         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
20439         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
20440         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
20441         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
20442         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
20443         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
20444         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
20445         Set to 1.
20446
20447 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
20448
20449         * c-incpath.c (add_sysroot_to_chain): New.
20450         (merge_include_chains): Add sysroot argument.  Call
20451         add_sysroot_to_chain if sysrooted.
20452         (register_include_chains): Update call to merge_include_chains.
20453         * doc/cppopts.texi: Document use of '=' in include directory
20454         arguments.
20455
20456 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
20457
20458         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
20459         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
20460         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
20461         insn pattern using X87MODEF12 mode macro.
20462
20463 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
20464
20465         * regmove.c (regmove_optimize): Use reg_mentioned_p
20466         instead of reg_overlap_mentioned_p for DST.
20467
20468 2007-03-21  Mike Stump  <mrs@apple.com>
20469
20470         * c.opt: Fixup for Objective-C/C++.
20471
20472 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
20473
20474         * explow.c (convert_memory_address): Fold memory reference when
20475         POINTERS_EXTEND_UNSIGNED < 0
20476
20477 2007-03-21  Richard Henderson  <rth@redhat.com>
20478
20479         PR target/31245
20480         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
20481         * config/i386/mmintrin.h (__m64): Likewise.
20482         * config/i386/xmmintrin.h (__m128): Likewise.
20483
20484 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
20485
20486         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
20487         (VXWORKS_OS_CPP_BUILTINS): Define.
20488         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
20489         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
20490
20491 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
20492
20493         * rtl.h (constant_pool_reference_p): Delete.
20494         (find_constant_src): Declare.
20495         * rtlanal.c (find_constant_src): New function.
20496         * simplify-rtx.c (constant_pool_reference_p): Delete.
20497         * config/i386/i386.md: Use find_constant_src instead of
20498         constant_pool_reference_p/avoid_constant_pool_reference pairs.
20499
20500 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
20501
20502         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
20503         * c-cppbuiltin.c (c_cpp_builtins): Define them.
20504
20505 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
20506
20507         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
20508         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
20509         (arm_elf_asm_constructor): Use it.
20510         (arm_elf_asm_destructor): New function.
20511
20512 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
20513
20514         * jump.c (mark_jump_label): Treat SEQUENCE specially.
20515
20516 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
20517
20518         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
20519
20520 2007-03-19  Andrew Haley  <aph@redhat.com>
20521
20522         PR tree-optimization/31264
20523         * tree-vrp.c (register_edge_assert_for_1): Don't look though
20524         VIEW_CONVERT_EXPRs.
20525
20526 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
20527
20528         PR rtl-optimization/30907
20529         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
20530         (fwprop_init): Always call loop_optimizer_initialize.
20531         (fwprop_done): Always call loop_optimizer_finalize.
20532         (fwprop): We always have loop info now.
20533         (gate_fwprop_addr): Remove.
20534         (pass_fwprop_addr): Use gate_fwprop as gate.
20535
20536         PR rtl-optimization/30841
20537         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
20538         df_chain_alloc): Call df_reorganize_refs unconditionally.
20539         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
20540         refs_organized to refs_organized_size.
20541         (df_ref_create_structure): Use refs_organized_size instead of
20542         bitmap_size if refs had been organized, and keep refs_organized_size
20543         up-to-date.
20544         * df.h (struct df_ref_info): Change refs_organized to
20545         refs_organized_size.
20546         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
20547         bitmap_size.
20548
20549 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
20550
20551         * except.c (output_function_exception_table): Do not reference the
20552         EH personality routine for functions that do not require an
20553         exception table.
20554
20555 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
20556
20557         PR c/30762
20558         * c-typeck.c (convert_for_assignment): Call comptypes for
20559         RECORD_TYPE or UNION_TYPE.
20560
20561         PR inline-asm/30505
20562         * reload1.c (reload): Do invalid ASM checking after
20563         cleanup_subreg_operands.
20564
20565 2007-03-19  Jeff Law  <law@redhat.com>
20566
20567         * tree-cfg.c (find_taken_edge): Tighten conditions for
20568         optimizing computed gotos.
20569
20570 2007-03-19  Michael Matz  <matz@suse.de>
20571
20572         * builtins.c (expand_builtin_sync_operation,
20573         expand_builtin_compare_and_swap,
20574         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
20575         correctly.
20576
20577         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
20578         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
20579         for operand 3.
20580
20581 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
20582
20583         * doc/tm.texi: Add brackets around the return type of
20584         TARGET_SECONDARY_RELOAD.
20585
20586 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20587         Richard Guenther  <rguenther@suse.de>
20588
20589         PR tree-optimization/31254
20590         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
20591         Use handled_component_p () where appropriate.  Continue
20592         propagating into the rhs if we propagated into an INDIRECT_REF
20593         on the lhs.
20594
20595 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
20596
20597         * config/s390/s390.md (op_type attribute): RRR instruction type added.
20598         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
20599         (xde, xdee): Mode attributes adjusted to support DFP modes.
20600         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
20601         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
20602         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
20603         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
20604         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
20605         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
20606         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
20607         numbers.
20608         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
20609         "movsf"): Insn definitions removed.
20610         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
20611         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
20612         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
20613         definitions added.
20614         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
20615         "reload_in<mode>", "reload_out<mode>"): Expander added.
20616         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
20617         Expander removed.
20618
20619 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
20620
20621         * config/s390/s390.md: Only non-functional changes.  Renamed
20622         FPR mode macro to BFP all over the file.
20623
20624 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
20625
20626         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
20627         (op_type attribute): RRF instruction type added.
20628         (fT0): New mode attribute.
20629         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
20630         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
20631         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
20632         instruction no secondary memory is needed when moving DFmode values
20633         between GPRs and FPRs.
20634
20635 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
20636
20637         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
20638         inverted and documentation adjusted.
20639         ("mhard-dfp", "msoft-dfp"): New options.
20640         * config/s390/s390.c (s390_handle_arch_option): New architecture
20641         switch: z9-ec.
20642         (override_options): Sanity checks for the new options added.
20643         * config.gcc: New architecture switch: z9-ec.
20644         * config/s390/s390.h (processor_flags): PF_DFP added.
20645         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
20646         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
20647         when the bit is NOT set so remove it from the defaults.
20648
20649 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
20650
20651         * genemit.c (main): Print include statement for dfp.h.
20652         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
20653         is not available.
20654
20655 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
20656
20657         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
20658
20659 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
20660
20661         PR target/31022
20662         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
20663         instead of PATTERN.
20664
20665 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20666
20667         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
20668         attr_length_call, output_call, output_indirect_call): Cleanup
20669         formatting of targetm calls.
20670
20671 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
20672
20673         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
20674
20675 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20676
20677         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
20678         reservation, bypass and anti-bypass descriptions for these
20679         instructions.  Update move patterns.
20680         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
20681         TYPE_FPSTORE.
20682
20683 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
20684
20685         * tree-vect-transform.c (get_initial_def_for_induction): Replace
20686         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
20687         (get_initial_def_for_reduction): Likewise.
20688
20689 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
20690
20691         Fix PR tree-optimization/29922
20692         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
20693         (get_representative): Removed.
20694         (value_dies_in_block_x): Update for rvuse removal.
20695         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
20696         (compute_antic_aux): Handle when PHI nodes appear in
20697         non-single-successors.
20698         (dump_bitmap_of_names): Removed.
20699         (compute_antic_safe): Renamed and removed rvuse calculation.
20700         Calculate only antic safe.
20701         (insert_into_preds_of_block): Remove assert.
20702         (execute_pre): Update for renamed functions.
20703         (defer_or_phi_translate_block): New function.
20704
20705 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
20706
20707         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
20708         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
20709         typos.
20710         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
20711         Follow spelling conventions.
20712
20713         * tree-data-ref.h: Remove the prototype for analyze_array.
20714
20715 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
20716
20717         PR tree-optimization/31041
20718         * tree-vect-transform.c (get_initial_def_for_induction): Call
20719         force_gimple_operand.
20720
20721 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
20722
20723         * ipa-type-escape.c (look_for_casts) : Revert code to use
20724         handled_component_p due to ada test a-numaux.adb.
20725
20726 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
20727
20728         * final.c (final_scan_insn): Alter the condition of a
20729         conditional trap if we have nonstandard CC.
20730
20731 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
20732
20733         * configure.ac: Remove excess quoting from asm line 0 test.
20734         * configure: Rebuilt.
20735
20736 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20737
20738         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
20739         * c-common.c (convert_and_check): Move warning logic to...
20740         (warnings_for_convert_and_check): ...here. Define.
20741         * c-common.h (warnings_for_convert_and_check): Declare.
20742
20743 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20744
20745         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
20746         (output_call): Likewise.
20747
20748 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
20749
20750         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
20751
20752 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
20753
20754         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
20755
20756 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
20757
20758         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
20759         opteron, athlon-64 and athlon-fx processor_alias_table entries.
20760
20761 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
20762
20763         PR tree-optimization/31183
20764         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
20765         Use double_int instead of unsigned int for representing access_strides.
20766         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
20767
20768 2007-03-16  Richard Guenther  <rguenther@suse.de>
20769
20770         PR tree-optimization/31146
20771         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
20772         to allow recursion of forward_propagate_addr_expr.
20773         (forward_propagate_addr_into_variable_array_index): Likewise.
20774         (forward_propagate_addr_expr): Likewise.
20775         (tree_ssa_forward_propagate_single_use_vars): Likewise.
20776         (forward_propagate_addr_expr_1): Recurse on simple copies
20777         instead of propagating into them.  Do so for useless conversions
20778         as well.
20779         (forward_propagate_addr_expr): Clean up unused statements after
20780         recursion.
20781
20782 2007-03-16  Richard Guenther  <rguenther@suse.de>
20783
20784         * builtins.c (expand_builtin_cexpi): Use the right argument
20785         for the expansion via cexp.
20786
20787 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
20788
20789         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
20790         * configure: Rebuilt.
20791
20792 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
20793
20794         PR debug/29906
20795         * dwarf2out.c (force_type_die): Adjust comment.
20796         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
20797
20798 2007-03-15  DJ Delorie  <dj@redhat.com>
20799
20800         * config/frv/predicates.md (minmax_operator): Don't check operands
20801         here.
20802
20803 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
20804
20805         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
20806         Update constant estimates of number of iterations.
20807         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
20808         argument renamed to "realistic".
20809         (compute_estimated_nb_iterations): Removed.
20810         (record_niter_bound): New function.
20811         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
20812         call record_nonwrapping_iv with upper = false.
20813         (infer_loop_bounds_from_signedness): Pass upper argument to
20814         record_nonwrapping_iv.
20815         (estimate_numbers_of_iterations_loop): Do not call
20816         compute_estimated_nb_iterations.  Record estimate based on profile
20817         information.  Initialize the constant estimates of number of
20818         iterations.
20819         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
20820         estimates.
20821         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
20822         number of iterations is too small.
20823         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
20824         (EST_NOT_AVAILABLE): Removed.
20825         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
20826         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
20827         fields.
20828
20829 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
20830
20831         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
20832         Handle NE_EXPR guards.
20833
20834 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20835
20836         PR c++/24924
20837         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
20838         Set also -pedantic-errors by default for the  preprocessor unless
20839         -fpermissive is given.
20840
20841 2007-03-15  Richard Guenther  <rguenther@suse.de>
20842
20843         PR middle-end/29719
20844         PR middle-end/31161
20845         * builtins.c (expand_builtin_cexpi): As a fallback if we
20846         don't have builtins for sincos or cexp create a function
20847         declaration for cexp and expand to a call to that.
20848         (expand_builtin_int_roundingfn): Always fall
20849         back to floor/ceil and its variants even if they may be
20850         not available.
20851
20852 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
20853
20854         PR middle-end/31159
20855         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
20856         jump tables, move the call to delete_dead_jumptables from here...
20857         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
20858         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
20859         don't allow merging of blocks that try_redirect_by_replacing_jump
20860         also does not handle when not optimizing.
20861
20862 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
20863             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20864
20865         * config/i386/i386.md (x86_sahf_1): Correctly handle
20866         HAVE_AS_IX86_SAHF.
20867
20868 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
20869
20870         PR target/31167
20871         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
20872         x86_64_general_operand as operand[2] predicate.  Remove "iF"
20873         from operand constraints and use "e" constraint instead.
20874         (*subti3_1, *subti3_1 splitter): Ditto.
20875         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
20876         operand[1] predicate.
20877
20878 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
20879
20880         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
20881         arrays, multiply the access strides by the size of the sub-array.
20882         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
20883
20884 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
20885
20886         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
20887         the configured assembler supports the sahf mnemonic.
20888         * configure: Regenerate.
20889         * config.in: Regenerate.
20890
20891         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
20892         emit "sahf" or ".byte\t0x9e" as asm template.
20893
20894 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
20895
20896         PR 31018
20897         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
20898         option to replace hard coded TARGET_xxx in md file.
20899         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
20900         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
20901         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
20902         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
20903         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
20904         (X86_TUNE_NOT_VECTORMODE): Ditto.
20905         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
20906         (TUNE_AVOID_VECTOR_DECODE): Ditto.
20907         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
20908         (TUNE_SLOW_IMUL_IMM8): Ditto.
20909         (TUNE_MOVE_M1_VIA_OR): Ditto.
20910         (TUNE_NOT_UNPAIRABLE): Ditto.
20911         (TUNE_NOT_VECTORMODE): Ditto.
20912
20913         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
20914         options.
20915
20916         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
20917         tuning options instead of hard coded TARGET_xxx.
20918         (fix ssemode peephole2's): Ditto.
20919         (imul peephole2's): Ditto.
20920         (movsi_or): Ditto.
20921         (movdi_or_rex64): Ditto.
20922         (move peephole2): Ditto.
20923         (not peephole2's): Ditto.
20924
20925 2007-03-14  Dirk Mueller  <dmueller@suse.de>
20926
20927         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
20928         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
20929         * c-parser.c (c_parser_if_body): Always add an empty statement in case
20930         of empty body.
20931         * c-parser.c (c_parser_do_statement): Warn about empty body in
20932         do/while statement.
20933         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
20934         * doc/invoke.texi (-Wempty-body): Update documentation.
20935
20936 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20937
20938         PR c/21438
20939         * c-common.h (warn_for_div_by_zero): Declare.
20940         * c-common.c (warn_for_div_by_zero): Define.
20941         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
20942         warning.
20943
20944 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
20945
20946         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
20947         to PREFIX and STANDARD_PREFIX.
20948
20949 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
20950             Phil Edwards  <phil@codesourcery.com>
20951
20952         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
20953         (__gthread_once_t): Remove busy field for RTPs.
20954         (__GTHREAD_ONCE_INIT): Update accordingly.
20955
20956 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
20957
20958         * doc/invoke.texi: Document VxWorks options.
20959
20960 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
20961
20962         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
20963
20964 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
20965
20966         PR tree-optimization/30590
20967         * tree-nrv.c (tree_nrv): Check for the partial update of the
20968         return value.
20969
20970 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
20971
20972         * flags.h (flag_random_seed): Remove declaration, in favor of...
20973         * toplev.h (get_random_seed, set_random_seed): ... these.
20974         * tree.c (get_file_function_name): Use the former.
20975         * opts.c (common_handle_option): Use the latter.
20976         * toplev.c
20977
20978 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
20979
20980         PR middle-end/31127
20981         * cse.c (cse_find_path): Do not bail out if a basic block that
20982         we already visited now becomes part of a path that starts at a
20983         different basic block.  Just disallow this, to make sure we
20984         visit each basic block at most once.
20985
20986 2007-03-13  Jan Hubicka  <jh@suse.cz>
20987
20988         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
20989         attributes, when profile esitmate is present, calls with very low
20990         frequency are cold.
20991
20992 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
20993
20994         PR tree-optimization/30730
20995         PR tree-optimization/26900
20996         * tree-ssa-loop-niter.c: Include gmp.h.
20997         (bounds): New type.
20998         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
20999         split_to_var_and_offset, determine_value_range,
21000         bound_difference_of_offsetted_base, refine_bounds_using_guard,
21001         bound_difference, bounds_add, bounds_negate,
21002         number_of_iterations_ne_max, dump_affine_iv): New functions.
21003         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
21004         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
21005         difference of initial and final value of control iv to validate
21006         results.
21007         (number_of_iterations_cond): Add loop parameter.  Determine bounds
21008         on the difference of the extremes of the control iv.  Add dumps.
21009         (expand_simple_operations): Handle phi nodes.
21010         (simplify_using_initial_conditions): Do not record used conditions.
21011         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
21012         Do not set additional_info.
21013         (implies_nonnegative_p, implies_ge_p): Removed.
21014         (derive_constant_upper_bound): Do not use parameter `additional'.
21015         (record_estimate): Parameter `additional' removed.  Parameter
21016         `i_bound' added.  Do not call derive_constant_upper_bound.
21017         (record_nonwrapping_iv): Use derive_constant_upper_bound to
21018         bound the number of iterations estimate.
21019         (estimate_numbers_of_iterations_loop): Pass the estimate from
21020         the number of iterations analysis to record_estimate.
21021         * tree.h (multiple_of_p): Declare.
21022         * tree-scalar-evolution.c (expression_expensive_p): Removed.
21023         (scev_const_prop): Do not check expression_expensive_p.
21024         * fold-const.c (multiple_of_p): Exported.
21025         * double-int.c (double_int_mask): Exported.
21026         * double-int.h (double_int_mask): Declare.
21027         * tree-flow.h (struct tree_niter_desc): Removed additional_info
21028         field.  Added max field.
21029
21030 2007-03-13  David Taylor  <taylor@candd.org>
21031
21032         PR driver/12448:
21033         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
21034         default -MQ.
21035
21036 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21037
21038         PR target/31123
21039         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
21040         two unamed patterns.
21041
21042 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
21043
21044         * config/i386/i386.opt (mcx16, msahf): New options.
21045         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
21046         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
21047
21048         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
21049         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
21050         Output -mcx16 and -msahf options when corresponding bit is set.
21051
21052         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
21053         and -msahf options.
21054
21055 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
21056
21057         * configure.ac: Test for assembler tolerance to # 0 "".
21058         * configure, config.in: Rebuilt.
21059         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
21060
21061 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
21062
21063         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
21064
21065         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
21066         (handle_syscall): Handle direct system calls.
21067         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
21068
21069 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
21070
21071         * doc/invoke.texi: Fix cpp.info cross-reference.
21072         * doc/passes.texi: Fix gcc.info cross-reference.
21073
21074 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
21075
21076         PR tree-optimization/30835
21077         * lambda-code.c (can_convert_to_perfect_nest): Check whether
21078         bb_for_stmt is not NULL before accessing it.
21079
21080 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
21081
21082         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
21083         some multilibs.
21084
21085 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
21086
21087         PR 30635
21088         * doc/install.texi: Document --enable-stage1-languages
21089
21090 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
21091
21092         * tree-pass.h (pass_into_cfg_layout_mode,
21093         pass_outof_cfg_layout_mode): Declare.
21094         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
21095         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
21096         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
21097         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
21098
21099 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
21100
21101         * c-decl.c (warn_variable_length_array): New function.
21102         Refactored from grokdeclarator to handle warn_vla
21103         and handle unnamed array case.
21104         (grokdeclarator): Refactored VLA warning case.
21105         * c.opt (Wvla): New flag.
21106         * doc/invoke.texi (Wvla): New warning.
21107
21108 2007-03-12  Richard Henderson  <rth@redhat.com>
21109
21110         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
21111         (TARGET_SECTION_TYPE_FLAGS): New.
21112
21113 2007-03-12  Richard Henderson  <rth@redhat.com>
21114
21115         * config/darwin.c (machopic_reloc_rw_mask): New.
21116         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
21117         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
21118
21119 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
21120
21121         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
21122         * cppdefault.h (cpp_PREFIX): Document.
21123         (cpp_PREFIX_len): Likewise.
21124         (cpp_EXEC_PREFIX): New variable.
21125         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
21126         * c-incpath.c (add_standard_paths): Correct logic for relocating
21127         paths within prefix.
21128
21129 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
21130
21131         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
21132         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
21133         mode macro.
21134         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
21135         fix_truncdfdi_sse using SSEMODEF mode macro.
21136         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
21137         fix_truncdfsi_sse using SSEMODEF mode macro.
21138         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
21139         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
21140
21141 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
21142
21143         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
21144         elfos.h to tm_file.
21145
21146 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
21147
21148         * tree.h : Add multiple_of_p declaration.
21149         * fold-const.c (multiple_of_p): Make multiple_of_p public.
21150         * ipa-type-escape.c (results_of_malloc): Redundant.
21151         (visited_stmts): New. Visited stmt for walk_use_def_chains.
21152         (cast_type): Extended with new members.
21153         (check_cast): Returns cast_type.
21154         (cast): New structure for data of walk_use_def_chains.
21155         (is_malloc_result, is_cast_from_non_pointer_1,
21156         is_cast_from_non_pointer,
21157         is_array_access_through_pointer_and_index): New functions.
21158         (look_for_casts): Returns cast types.
21159         (check_call): Returns void.
21160         (okay_pointer_operation): Use support of pointer plus index,
21161         pointer plus constant and allow all multiplications.
21162
21163 2007-03-11  Richard Guenther  <rguenther@suse.de>
21164
21165         PR tree-optimization/31115
21166         * tree-vrp.c (extract_range_from_binary_expr): Make sure
21167         the shift count is positive and non-anti-range for RSHIFT_EXPR.
21168         A shift count of zero is not special as with *_DIV_EXPR.
21169         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
21170         direction.
21171
21172 2007-03-11  Ian Lance Taylor  <iant@google.com>
21173
21174         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
21175         the *_DIV_EXPR codes correctly with overflow infinities.
21176
21177 2007-03-11  Ira Rosen  <irar@il.ibm.com>
21178
21179         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
21180         indicate success/failure of the analysis. Add negation to subtrahend
21181         in case of subtraction. Fail if both operands contain constants.
21182         (create_data_ref): Fail if analyze_offset fails.
21183
21184 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
21185
21186         * config/i386/i386.md (frndintxf2): Rename to ...
21187         (rintxf2): ... this. Remove expander having same name.
21188         (rintsf2, rintdf2): Implement using SSEMODEF macro.
21189         (roundsf2, rounddf2): Ditto.
21190         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
21191         (lround<mode>di2, lround<mode>si2): Ditto.
21192
21193 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
21194
21195         * lower-subreg.c: Include except.h.
21196         (decompose_multiword_subregs): Verify that the only control flow
21197         insns we can split are loads to multi-words pseudos.
21198         Handle breaking such blocks after splitting, instead of calling
21199         find_many_sub_basic_blocks.
21200
21201         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
21202         on the new basic block.  Add a lengthy comment explaining why we
21203         thought this was necessary.
21204         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
21205
21206 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
21207
21208         PR c++/30924
21209         * tree.c (walk_type_fields): Recurse into the element type of
21210         ARRAY_TYPEs if there is a pointer set.
21211
21212 2007-03-10  Dirk Mueller  <dmueller@suse.de>
21213
21214         * c-common.c (warn_logical_operator): Fix condition.
21215
21216 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
21217
21218         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
21219         quotation mark.
21220         * config/darwin.c (machopic_select_section): Remove superfluous
21221         argument in call to categorize_decl_for_section.  Remove unused
21222         variable shlib.
21223
21224 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
21225
21226         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
21227         defined.
21228         * configure: Regenerate.
21229
21230 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
21231
21232         PR target/31101
21233         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
21234         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
21235         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
21236         Add LABEL_NUSES to emitted label.
21237         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
21238         branch probability value to emitted jump insn.
21239         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
21240         Do not check life information and do not re-arrange input operands
21241         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
21242
21243 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
21244
21245         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
21246         the change of decode_asm_operands.
21247
21248 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
21249
21250         * mode-switching.c (create_pre_exit): Skip blockage insn.
21251
21252 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
21253
21254         * tree-pass.h (TODO_update_smt_usage): Remove.
21255         Update all users.
21256         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
21257         argument SOME.
21258         Update all users.
21259
21260 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21261
21262         * pa.c (attr_length_call): Revise condition for long
21263         pc-relative branch.
21264         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
21265         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
21266         sequence on SOM target.
21267
21268 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
21269
21270         * gcc.c: Document %{, in big comment at top.
21271         (input_suffix_matches): Remove special handling for .s and
21272         .S.
21273         (input_spec_matches): New.
21274         (handle_braces): Handle %{,.
21275         (validate_switches): ',' indicates a value which is not a switch.
21276         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
21277         to detect assembler input.
21278         * config/i386/sol2.h (CPP_SPEC): Likewise.
21279         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
21280         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
21281         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
21282         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
21283         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
21284         -m64 causes deployment target to default to 10.5.
21285         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
21286
21287 2007-03-09  Richard Henderson  <rth@redhat.com>
21288
21289         PR target/26090
21290         * target.h (targetm.asm.out.reloc_rw_mask): New.
21291         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
21292         (TARGET_ASM_OUT): Use it.
21293         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
21294         * varasm.c (categorize_decl_for_section): Remove shlib argument;
21295         use the new reloc_rw_mask target hook instead.
21296         (default_section_type_flags_1): Merge into...
21297         (default_section_type_flags): ... here.
21298         (decl_readonly_section_1): Merge into...
21299         (decl_readonly_section): ... here.
21300         (default_elf_select_section_1): Merge into...
21301         (default_elf_select_section): ... here.
21302         (default_unique_section_1): Merge into...
21303         (default_unique_section): ... here.
21304         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
21305         (default_select_rtx_section): Use it.
21306         (default_elf_select_rtx_section): Likewise.
21307         * output.h: Update to match.
21308         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
21309         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
21310         (TARGET_ASM_RELOC_RW_MASK): New.
21311         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
21312         to categorize_decl_for_section.
21313         (x86_64_elf_unique_section): Likewise.
21314         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
21315         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
21316         (TARGET_ASM_RELOC_RW_MASK): New.
21317         * config/ia64/ia64.c (ia64_rwreloc_select_section,
21318         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
21319         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
21320         (TARGET_RWRELOC): Remove.
21321         (ia64_section_type_flags): Adjust call to default_section_type_flags.
21322         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
21323         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
21324         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
21325         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
21326         (rs6000_xcoff_select_section): Use decl_readonly_section.
21327         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
21328         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
21329         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
21330         (TARGET_SECTION_TYPE_FLAGS): Remove.
21331         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
21332
21333 2007-03-09  Roger Sayle  <roger@eyesopen.com>
21334
21335         * fold-const.c (fold_comparison): Remove compile-time evaluation of
21336         complex constant equality/inequality comparisons for here.
21337         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
21338         known at compile-time or can be simplified to a scalar comparison.
21339         (fold_relational_const): Move compile-time evaluation of complex
21340         constant equality/inequality comparisons to here.
21341
21342 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
21343
21344         PR rtl-optimization/30643
21345         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
21346         dest_addr_elt.
21347         (fold_rtx): Recurse, like before 2006-11-03.
21348
21349 2007-03-09  DJ Delorie  <dj@redhat.com>
21350
21351         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
21352         m32c-pragma.o.
21353
21354 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
21355
21356         PR tree-optimization/30375
21357         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
21358         LHS of statements is not the same.
21359         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
21360
21361 2007-03-09  Chao-ying Fu  <fu@mips.com>
21362
21363         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
21364         REV 2.
21365         * doc/invoke.texi (-mdspr2): Document new option.
21366         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
21367         New unspec for DSP REV 2.
21368         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
21369         these instructions are extended in DSP REV 2.
21370         (mips-dspr2.md): Include.
21371         * config/mips/mips.opt (mdspr2): New option.
21372         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
21373         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
21374         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
21375         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
21376         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
21377         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
21378         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
21379         and 2 builtins.
21380         (bdesc_map): Add one field of unsupported_target_flags.
21381         (bdesc_arrays): Update entries to have extra fields.  Add
21382         dsp_32only_bdesc.
21383         (mips_init_builtins): Initialize new function types.
21384         Check unsupported_target_fileds to filter out builtins.
21385         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
21386         TARGET_DSPR2.
21387         (ASM_SPEC): Pass mdspr2 to the assembler.
21388         * config/mips/mips-dspr2.md: New file.
21389
21390 2007-03-09  Sa Liu  <saliu@de.ibm.com>
21391
21392         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
21393
21394 2007-03-09  Ian Lance Taylor  <iant@google.com>
21395
21396         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
21397         argument) like -Wstrict-overflow=2.
21398         * doc/invoke.texi (Warning Options): Update documentation.
21399
21400 2007-03-09  Dirk Mueller  <dmueller@suse.de>
21401
21402         PR c++/17946
21403         * doc/invoke.texi (-Wlogical-op): Document.
21404         * common.opt (-Wlogical-op): New.
21405         * c-common.h (warn_logical_operator): Declare.
21406         * c-common.c (warn_logical_operator): Define.
21407         * c-typeck.c (parser_build_binary_op): Call
21408         warn_logical_operator.
21409
21410 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
21411
21412         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
21413         * final.c (final_scan_insn): Test for non-"" file name.
21414
21415 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
21416
21417         * doc/loop.texi: Document the Omega linear constraints solver.
21418         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
21419         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
21420         omega-hash-table-size, omega-max-keys, and
21421         omega-eliminate-redundant-constraints.
21422         * tree-pass.h (pass_check_data_deps): Declared.
21423         * omega.c: New.
21424         * omega.h: New.
21425         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
21426         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
21427         pass_check_data_deps): New.
21428         * tree-data-ref.c (init_data_ref): Remove declaration.
21429         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
21430         (analyze_array): Renamed init_array_ref, move up initializations.
21431         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
21432         Removed arguments that are set to NULL.
21433         (analyze_indirect_ref): Correct indentation, correct call to
21434         init_pointer_ref.
21435         (object_analysis): Call init_array_ref instead of analyze_array.
21436         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
21437         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
21438         of DR_ACCESS_FNS_ADDR.
21439         (init_omega_eq_with_af, omega_extract_distance_vectors,
21440         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
21441         ddr_consistent_p): New.
21442         (compute_affine_dependence): Check consistency of ddrs when
21443         flag_check_data_deps is passed.
21444         (analyze_all_data_dependences): Uncomment.
21445         (tree_check_data_deps): New.
21446         * tree-data-ref.h: Include omega.h.
21447         (DR_ACCESS_FNS_ADDR): Removed.
21448         (data_dependence_relation): Add inner_loop.
21449         (DDR_INNER_LOOP): New.
21450         * common.opt (fcheck-data-deps): New.
21451         * tree-flow.h (tree_check_data_deps): Declare.
21452         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
21453         (OBJS-common): Depend on omega.o.
21454         (omega.o): Define.
21455         * passes.c (pass_check_data_deps): Scheduled.
21456         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
21457         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
21458         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
21459         PARAM_VECT_MAX_VERSION_CHECKS,
21460         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
21461
21462 2007-03-09  Richard Guenther  <rguenther@suse.de>
21463
21464         PR tree-optimization/30904
21465         PR middle-end/31058
21466         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
21467         the same way as *_DIV_EXPR.
21468
21469 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
21470
21471         * recog.c (decode_asm_operands): No mixed declarations and code.
21472
21473 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
21474
21475         * rtl.def (ASM_INPUT): Add location.
21476         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
21477         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
21478         (decode_asm_operands): Add loc operand.
21479         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
21480         * stmt.c (expand_asm): Rename to...
21481         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
21482         gen_rtx_ASM_INPUT_loc.
21483         (expand_asm_expr): Adjust.
21484         * recog.c (decode_asm_operands): Add loc operand.
21485         (check_asm_operands, extract_insn): Adjust.
21486         * reload1.c (maybe_fix_stack_asms): Likewise.
21487         * final.c (asm_insn_count): Likewise.
21488         (final_scan_insn): Output # line before and after asm.
21489
21490 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
21491
21492         * tree-ssa-structalias.c (variable_info): Remove
21493         finished_solution.
21494         (new_var_info): Ditto.
21495         (shared_bitmap_info_t): New structure.
21496         (shared_bitmap_table): New variable.
21497         (shared_bitmap_hash): New function.
21498         (shared_bitmap_eq): Ditto
21499         (shared_bitmap_lookup): Ditto.
21500         (shared_bitmap_add): Ditto.
21501         (merge_smts_into): Change to take bitmap directly.
21502         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
21503         (init_alias_vars): Init shared bitmap hashtable.
21504         (delete_points_to_sets): Delete shared bitmap hashtable.
21505         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
21506         is_aliased removal as a change that was still necessary was
21507         deleted.
21508
21509 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
21510
21511         * config/i386/i386.h (override_options): Conditionally disable
21512         x86_sahf for 64bit targets only.
21513
21514 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21515
21516         PR C/31072
21517         * c-decl.c (merge_decls): Don't call make_var_volatile.
21518         * varasm.c (make_var_volatile): Remove.
21519         * output.h (make_var_volatile): Remove.
21520
21521 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
21522
21523         PR tree-optimization/31085
21524         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
21525
21526 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21527
21528         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
21529         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
21530         ATTR_CONST_NOTHROW_LIST.
21531
21532         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
21533         FIX_TRUNC_EXPR.
21534
21535 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
21536
21537         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
21538
21539 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
21540
21541         PR 31013
21542         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
21543         is declared.
21544         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
21545         passed, use shared libgcc.
21546
21547 2007-03-08  Roger Sayle  <roger@eyesopen.com>
21548
21549         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
21550         instead of calling build2 with a GIMPLE_MODIFY_STMT.
21551         (honor_protect_cleanup_actions, lower_try_finally_switch):
21552         Likewise.
21553         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
21554         ifc_temp_var): Likewise.
21555         * tree-inline.c (setup_one_parameter): Likewise.
21556         * tree-mudflap.c (mf_decl_cache_locals,
21557         mf_build_check_statement_for): Likewise.
21558         * tree-nested.c (init_tmp_var, save_tmp_var,
21559         finalize_nesting_tree_1): Likewise.
21560         * tree-outof-ssa.c (insert_copy_on_edge,
21561         insert_backedge_copies): Likewise.
21562         * tree-profile.c (tree_gen_edge_profiler,
21563         tree_gen_ic_profiler): Likewise.
21564         * tree-scalar-evolution.c (scev_const_prop): Likewise.
21565         * tree-sra.c (sra_build_assignment): Likewise.
21566         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
21567         * tree-ssa-math-opts.c (insert_reciprocals,
21568         execute_cse_sincos_1): Likewise.
21569         * tree-tailcall.c (adjust_accumulator_values,
21570         adjust_return_value): Likewise.
21571         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
21572         * tree-vect-transform.c (vect_create_data_ref_ptr,
21573         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
21574         vect_create_epilog_for_reduction, vectorizable_reduction,
21575         vectorizable_call, vectorizable_conversion,
21576         vectorizable_assignment, vectorizable_operation,
21577         vectorizable_type_demotion, vect_gen_widened_results_half,
21578         vect_permute_store_chain, vectorizable_store,
21579         vect_setup_realignment, vect_permute_load_chain,
21580         vectorizable_load, vectorizable_condition,
21581         vect_create_cond_for_align_checks): Likewise.
21582         * tree-vrp.c (build_assert_expr_for): Likewise.
21583
21584 2007-03-08  Ian Lance Taylor  <iant@google.com>
21585
21586         * tree-vrp.c: Include "intl.h".
21587         (usable_range_p): New static function.
21588         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
21589         overflowed values, juts set *strict_overflow_p.
21590         (compare_values): Only return -2 if one of the operands is not a
21591         constant.
21592         (compare_ranges): Call usable_range_p.
21593         (compare_range_with_value): Likewise.
21594         (vrp_evaluate_conditional_warnv): Rename from
21595         vrp_evaluate_conditional.  Make static.  Change all callers.
21596         (vrp_evaluate_conditional): New function.
21597         (simplify_div_or_mod_using_ranges): Issue warning about reliance
21598         on signed overflow.
21599         (simplify_abs_using_ranges): Likewise.
21600         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
21601         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
21602         within_stmt parameter.
21603         * tree-ssa-propagate.c (fold_predicate_in): Update call to
21604         vrp_evaluate_conditional.
21605         * tree-ssa-threadedge.c
21606         (record_temporary_equivalences_from_stmts_at_dest): Change
21607         simplify parameter to take a second tree parameter.
21608         (simplify_control_stmt_condition): Likewise.
21609         (thread_across_edge): Likewise.
21610         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
21611         (thread_across_edge): Likewise.
21612         * Makefile.in (tree-vrp.o): Depend upon intl.h.
21613
21614 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
21615
21616         * config/i386/i386.h (TARGET_SAHF): New define.
21617         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
21618         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
21619         (x86_sahf): New global variable.
21620         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
21621         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
21622         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
21623         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
21624         for 64-bit.
21625         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
21626         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
21627         when expanding fcomi/sahf based tests.
21628         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
21629         expanding sahf based alternative. Emit sahf based sequence when
21630         optimizing for code size.
21631         * config/i386/i386.md (x86_sahf_1): Do not disable for
21632         TARGET_64BIT, enable for TARGET_SAHF.
21633
21634 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
21635
21636         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
21637         spurious whitespace from error message.
21638
21639 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
21640
21641         PR c++/30852
21642         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
21643
21644 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
21645
21646         * c-decl.c (grokdeclarator): Disable warnings for anonymous
21647         bitfields.
21648         * tree-sra.c (instantiate_element): Propagate disabled warnings
21649         from the element itself to the created variable.
21650
21651 2007-03-07  Richard Henderson  <rth@redhat.com>
21652
21653         PR target/30848
21654         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
21655         silently fix up the stack in the case of a missing register.
21656
21657 2007-03-07  Paul Brook  <paul@codesourcery.com>
21658
21659         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
21660
21661 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
21662
21663         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
21664         New.
21665         (phase1_vrs): Use them.
21666         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
21667         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
21668         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
21669         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
21670         __gnu_Unwind_Restore_WMMXC if required.
21671         (_Unwind_VRS_Pop): Implement iWMMXt support.
21672         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
21673         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
21674         gnu_Unwind_Save_WMMXC): Define.
21675
21676 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
21677
21678         * config/vxworks.h (vxworks_override_options): Declare.
21679         (VXWORKS_OVERRIDE_OPTIONS): Use it.
21680         * config/vxworks.c: Include target.h and toplev.h.
21681         (vxworks_override_options): New function.
21682         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
21683
21684 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
21685
21686         * config/s390/s390.c (override_options): Don't emit an error when
21687         -mstack-size is used without providing -mstack-guard.
21688         (s390_emit_prologue): Choose stack_guard value automatically if not
21689         provided via command line.
21690         * doc/invoke.texi: Adjust description of -mstack-guard and
21691         -mstack-size.
21692
21693 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
21694
21695         * config/i386/i386.c (output_set_got): Add a GOT initialization
21696         sequence for VxWorks PIC.
21697         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
21698         around labels as well as symbols.  Use gotoff_operand instead
21699         of local_symbolic_operand.
21700         (legitimize_pic_address): Use gotoff_operand instead of
21701         local_symbolic_operand.  Use @GOT accesses for labels as
21702         well as symbols.
21703         (ix86_output_addr_diff_elt): Use PC-relative rather than
21704         GP-relative offsets for VxWorks PIC.
21705         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
21706         no_new_pseudos.  Check whether the returned register is op0.
21707         * config/i386/i386.md (tablejump): Use PC-relative rather than
21708         GP-relative offsets for VxWorks PIC.
21709         * config/i386/predicates.md (gotoff_operand): New predicate.
21710
21711 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21712
21713         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
21714         before defining.
21715         * config/vxworks-dummy.h: New file.
21716         * config/i386/i386.h: Include it.
21717
21718 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
21719
21720         * dwarf2out.c (is_inlined_entry_point): New
21721         (add_high_low_attributes): Emit DW_AT_entry_pc along with
21722         DW_AT_ranges if the first subblock is the entry point.
21723
21724 2007-03-06  David Daney  <ddaney@avtrex.com>
21725
21726         * doc/install.texi (mips-*-*): Change recommended binutils
21727         version.
21728
21729 2007-03-06  Anatoly Sokolov <aesok@post.ru>
21730
21731         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
21732         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
21733         devices.
21734         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
21735         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
21736
21737 2007-03-06  Jan Hubicka  <jh@suse.cz>
21738
21739         * errors.h (warning, error, fatal, internal_error): Mark as cold.
21740         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
21741         functions are hot.
21742         (probably_cold_bb_p): Cold functions are cold.
21743         (probably_never_executed_bb_p): Cold functions are cold.
21744         (tree_bb_level_predictions): Predict calls to cold functions as not
21745         taken.
21746         (compute_function_frequency): Check hot/cold attributes.
21747         * function.h (function_frequency): Update comments.
21748         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
21749         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
21750         (c_common_att): Add cold and hot.
21751
21752         * doc/extend.texi (hot,cold attributes): Document.
21753
21754 2007-03-06  Andrew Haley  <aph@redhat.com>
21755
21756         * function.c (expand_function_end): Move blockage to just after we
21757         emit the label for the naked return from the function.
21758
21759 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21760
21761         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
21762         before redefining.
21763
21764 2007-03-06  Jan Hubicka  <jh@suse.cz>
21765
21766         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
21767         loaded for constant large models.  Non-large 64bit PIC can do.
21768         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
21769         * cmodel.h: Add LARGE PIC.
21770         * i386.md (UNSPEC_PLTOFF): New.
21771         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
21772         unspecs as needed.
21773         (*call_1_rex64): Disable for large models.
21774         (*call_1_rex64_large): New.
21775         (*call_value_1_rex64): Disable for large models.
21776         (*call_value_1_rex64_large): New.
21777         (set_rip_rex4): New.
21778         (set_got_offset_rex64): New.
21779         * predicates.md (constant_call_address_operand): For large model
21780         constant calls are not possible.
21781         * i386-protos.h (construct_plt_address): Declare.
21782         * i386.c (override_options): Accept large models.
21783         (ix86_expand_prologue): Expand large PIC GOT pointer load.
21784         (legitimate_constant_p): Add new UNSPECs.
21785         (legitimate_pic_operand_p): Likewise.
21786         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
21787         (legitimize_pic_address): Do easy RIP relative way for TLS only for
21788         non-large model.
21789         (output_pic_addr_const): Add PLTOFF.
21790         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
21791         (ix86_expand_move): Legitimize pic address when in PIC mode.
21792         (construct_plt_address): New function.
21793         (ix86_expand_call): Offload the address to register and use GOT
21794         pointer for large model.
21795         * invoke.texi (mcmodel=large): Update documentation.
21796
21797 2007-03-06  Richard Henderson  <rth@redhat.com>
21798
21799         * config/i386/i386.c (x86_use_leave, x86_push_memory,
21800         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
21801         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
21802         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
21803         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
21804         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
21805         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
21806         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
21807         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
21808         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
21809         x86_partial_reg_dependency, x86_memory_mismatch_stall,
21810         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
21811         x86_sse_partial_reg_dependency, x86_sse_split_regs,
21812         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
21813         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
21814         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
21815         x86_schedule, x86_use_bt, x86_pad_returns,
21816         x86_use_xchgb): Merge into ...
21817         (ix86_tune_features): ... here.  New array.
21818         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
21819         x86_bswap): Merge into ...
21820         (ix86_arch_features): ... here.  New array.
21821         (x86_3dnow_a): Remove.
21822         (x86_accumulate_outgoing_args): Make static.
21823         (x86_arch_always_fancy_math_387): Make static.
21824         (ix86_tune_mask, ix86_arch_mask): Move ...
21825         (override_options): ... to local variables here.  Apply the
21826         appropriate mask to each element of ix86_arch_features and
21827         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
21828         as were done in the old macros.
21829         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
21830         * config/i386/i386.h (x86_use_leave, x86_push_memory,
21831         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
21832         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
21833         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
21834         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
21835         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
21836         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
21837         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
21838         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
21839         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
21840         x86_partial_reg_dependency, x86_memory_mismatch_stall,
21841         x86_accumulate_outgoing_args, x86_prologue_using_move,
21842         x86_epilogue_using_move, x86_decompose_lea,
21843         x86_arch_always_fancy_math_387, x86_shift1,
21844         x86_sse_partial_reg_dependency, x86_sse_split_regs,
21845         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
21846         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
21847         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
21848         x86_use_incdec, x86_pad_returns, x86_bswap,
21849         x86_partial_flag_reg_stall): Remove.
21850         (enum ix86_tune_indices): New.
21851         (ix86_tune_features): New.
21852         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
21853         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
21854         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
21855         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
21856         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
21857         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
21858         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
21859         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
21860         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
21861         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
21862         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
21863         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
21864         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
21865         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
21866         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
21867         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
21868         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
21869         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
21870         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
21871         TARGET_EXT_80387_CONSTANTS): Use it.
21872         (enum ix86_arch_indices): New.
21873         (ix86_arch_features): New.
21874         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
21875         TARGET_BSWAP): Use it.
21876         (ix86_tune_mask, ix86_arch_mask): Remove.
21877
21878 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
21879
21880         PR bootstrap/31020
21881         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
21882         Define using $${sysroot_headers_suffix}.
21883         * configure: Regenerate.
21884         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
21885         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
21886         defined.
21887         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
21888         * gcc.c (print_sysroot_headers_suffix): New.
21889         (option_map): Include --print-sysroot-headers-suffix.
21890         (display_help): Mention -print-sysroot-headers-suffix.
21891         (process_command): Handle -print-sysroot-headers-suffix.
21892         (do_spec_1): Append multilib directory to include-fixed path if
21893         sysroot suffixes in use.
21894         (main): Handle -print-sysroot-headers-suffix.
21895         * Makefile.in (start.encap): Don't depend on xlimits.h
21896         (xlimits.h): Remove.
21897         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
21898         limits.h for each multilib in fixinc_list.
21899         (fixinc_list, s-fixinc_list): New.
21900         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
21901         generate them for each multilib in fixinc_list.
21902         (stmp-fixproto): Use include-fixed.  Run fixproto for each
21903         multilib in fixinc_list.
21904         (mostlyclean): Don't remove xlimits.h.
21905         (clean): Remove include-fixed.
21906         (real-install-headers-tar, real-install-headers-cpio,
21907         real-install-headers-cp): Don't copy include, only include-fixed.
21908         (install-mkheaders): Depend on fixinc_list.  Don't depend on
21909         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
21910         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
21911         SYSTEM_HEADER_DIR setting in mkheaders.conf.
21912
21913 2007-03-06  Jan Hubicka  <jh@suse.cz>
21914
21915         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
21916         NANs easilly.
21917
21918 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21919
21920         * configure.ac: Allow tm_file to contain build-directory files.
21921         * configure: Regenerate.
21922         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
21923         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
21924         * config/m68k/print-sysroot-suffix.sh: New file.
21925
21926 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21927
21928         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
21929         of pic_offset_table_rtx if reload_completed.
21930         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
21931         PIC_OFFSET_TABLE_REGNUM.
21932         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
21933         return true.
21934         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
21935         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
21936
21937 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21938
21939         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
21940         functions that call eh_return.
21941
21942 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21943
21944         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
21945         functions that need a constant pool.
21946
21947 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21948
21949         PR target/28181
21950         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
21951         (m68k_preferred_reload_class): Likewise.
21952         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
21953         (SECONDARY_RELOAD_CLASS): Define.
21954         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
21955         (LIMIT_RELOAD_CLASS): Delete.
21956         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
21957         registers from storing bytes.
21958         (m68k_secondary_reload_class): New function.
21959         (m68k_preferred_reload_class): Likewise.
21960
21961 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21962
21963         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
21964         leaf functions.
21965         (m68k_expand_prologue): Likewise.
21966
21967 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21968
21969         * config/m68k/m68k-protos.h (output_sibcall): Declare.
21970         (mips_expand_epilogue): Add a bool parameter.
21971         (m68k_legitimize_sibcall_address): Declare.
21972         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
21973         (m68k_expand_epilogue): Add a parameter to select between sibling
21974         and normal epilogues.  Only generate a return for the latter.
21975         (m68k_ok_for_sibcall_p): New function.
21976         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
21977         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
21978         (sibcall_value, *sibcall_value): Likewise.
21979         (*call, *call_value): Require !SIBLING_CALL_P.
21980         (epilogue): Update call to m68k_expand_epilogue.
21981         (sibcall_epilogue): New pattern.
21982         * config/m68k/predicates.md (const_call_operand): Say that this
21983         predicate applies to sibling calls too.
21984         (sibcall_operand): New predicate.
21985
21986 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
21987
21988         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
21989         alternatives as movsi_cf.
21990         (movsf_cf_hard): Add commentary.
21991
21992 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
21993             Richard Sandiford  <richard@codesourcery.com>
21994
21995         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
21996         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
21997         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
21998         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
21999         as being live on exit from an interrupt function.
22000         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
22001         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
22002         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
22003         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
22004         (m68k_interrupt_function_p): Globalize.
22005         (m68k_compute_frame_layout): Remove reverse mask code.
22006         (m68k_emit_movem, m68k_set_frame_related): New functions.
22007         (m68k_output_function_prologue): Delete in favor of...
22008         (m68k_expand_prologue): ...this new function.
22009         (m68k_output_function_epilogue): Delete in favor of...
22010         (m68k_expand_epilogue): ...this new function.
22011         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
22012         functions.
22013         (print_operand): Handle %?.
22014         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
22015         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
22016         (prologue, epilogue): New patterns.
22017         (return): Turn into a define_expand.
22018         (*return): New pattern, derived from old "return" pattern.  Use rte
22019         rather than rts for interrupt functions.  Only use rtd if the pop
22020         count is nonzero.
22021         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
22022         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
22023         (link, *link, unlink, *unlink, load_got): Likewise.
22024
22025 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22026
22027         PR target/23482
22028         PR target/17114
22029         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
22030         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
22031         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
22032         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
22033         and m68k_matches_u_p.
22034         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
22035         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
22036         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
22037         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
22038         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
22039         (REG_STRICT_P): New macro.
22040         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
22041         PCREL_GENERAL_OPERAND_OK.
22042         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
22043         m68k_legitimate_base_reg_p.
22044         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
22045         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
22046         (PIC_CASE_VECTOR_ADDRESS): Update comment.
22047         * config/m68k/m68k.c (m68k_address): New structure.
22048         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
22049         (m68k_decompose_index, m68k_legitimate_constant_address_p)
22050         (m68k_jump_table_ref_p, m68k_decompose_address)
22051         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
22052         (m68k_matches_u_p): New functions.
22053         (print_operand_address): Rewrite to use m68k_decompose_index.
22054
22055 2007-03-05  David Taylor  <dtaylor@emc.com>
22056
22057         * gcc.c: Correct copyright date in --version output.
22058
22059 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22060
22061         * pa.md: In unamed move patterns, disparge copies between general
22062         and floating point registers using '?' modifier.  Don't include 'f'
22063         constraint for register preferences in DImode, SImode, HImode and
22064         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
22065         Remove constraints for copies between general and floating registers
22066         in soft-float DFmode pattern.
22067         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
22068         floating register.
22069         (movsf): Likewise.
22070
22071 2007-03-05  Mike Stump  <mrs@apple.com>
22072
22073         * c-common.c (targetcm): Add.
22074         * c-opts.c (c_common_handle_option): Handle language specific
22075         target options.
22076         * opts.c (handle_option): Verify language for target options, if
22077         any are given.
22078         * opth-gen.awk: Add CL_LANG_ALL.
22079         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
22080         (TARGETCM_INITIALIZER): Add.
22081         * target.h (struct gcc_targetcm): Add.
22082         (targetcm): Add.
22083         * targhooks.c (default_handle_c_option): Add.
22084         * targhooks.h (default_handle_c_option): Add.
22085         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
22086
22087         * config/darwin.opt (iframework): Add.
22088         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
22089         * config/darwin-c.c (handle_c_option): Add.
22090         (TARGET_HANDLE_C_OPTION): Add.
22091         (targetcm): Add.
22092         * doc/invoke.texi (Darwin Options): Add -iframework.
22093
22094 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22095
22096         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
22097         conversion.
22098
22099 2007-03-05  Ian Lance Taylor  <iant@google.com>
22100
22101         * c.opt (fgnu89-inline): New option.
22102         * c-opts.c (c_common_post_options): Set default value for
22103         flag_gnu89_inline.
22104         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
22105         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
22106         inline functions.
22107         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
22108         (grokdeclarator, start_function): Likewise.
22109         * c-cppbuiltin.c (c_cpp_builtins): Define either
22110         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
22111         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
22112         (C Dialect Options): Document -fgnu89-inline.
22113         * doc/extend.texi (Function Attributes): Explain what the
22114         gnu_inline attribute does.
22115         * doc/cpp.texi (Common Predefined Macros): Document
22116         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
22117
22118 2007-03-05  Ian Lance Taylor  <iant@google.com>
22119
22120         PR tree-optimization/31034
22121         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
22122         half-range if the other side is an overflow infinity.
22123
22124 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
22125
22126         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
22127         (bfin*-linux-uclibc*): New configuration.
22128         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
22129         defining.
22130         * config/bfin/linux.h: New file.
22131         * config/bfin/libgcc-bfin.ver: New file.
22132         * config/bfin/t-bfin-uclinux: New file.
22133         * config/bfin/t-bfin-linux: New file.
22134         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
22135         (TARGET_OS_CPP_BUILTINS): New macro.
22136
22137 2007-03-05  Richard Guenther  <rguenther@suse.de>
22138
22139         * fold-const.c (fold_binary): Remove duplicate folding
22140         of comparison of non-null ADDR_EXPR against null.
22141
22142 2007-03-05  Richard Guenther  <rguenther@suse.de>
22143             Dorit Nuzman  <dorit@il.ibm.com>
22144
22145         PR tree-optimization/26420
22146         * tree-vectorizer.c (vectorize_loops): Bail out early if there
22147         are no loops in the function.  Only print the number of
22148         vectorized loops if it is greater than zero or we are supposed
22149         to print information about unvectorized loops.
22150
22151 2007-03-05  Revital Eres  <eres@il.ibm.com>
22152
22153         * gcc.dg/var-expand1.c: New test.
22154         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
22155         when an accumulator is expanded.
22156
22157 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22158
22159         PR other/30465
22160         * c-common.c (convert_and_check): Don't give warnings for
22161         conversion if 'expr' already overflowed.
22162
22163 2007-03-04  Roger Sayle  <roger@eyesopen.com>
22164
22165         PR middle-end/30744
22166         * fold-const.c (fold_comparison): Enforce type consistency when
22167         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
22168
22169 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
22170
22171         * tree-ssa-address.c (create_mem_ref): Do not put an expression
22172         containing a cast to the base of TARGET_MEM_REF.
22173
22174 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
22175
22176         * tree.c (tree_contains_struct_check_failed): Remove spurious
22177         whitespace from error message.
22178
22179 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
22180
22181         PR target/30406
22182         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
22183         instead of precision.
22184
22185 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
22186             Nathan Sidwell  <nathan@codesourcery.com>
22187
22188         * emit-rtl.c (find_auto_inc): New.
22189         (try_split): recreate REG_INC notes,
22190         Use regular for loops rather than whiles.
22191
22192 2007-03-03  Andreas Schwab  <schwab@suse.de>
22193
22194         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
22195         * configure: Regenerate.
22196
22197 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22198
22199         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
22200         flag_rounding_math, not flag_unsafe_math_optimizations.
22201
22202         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
22203         fold_build2.
22204         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
22205         alpha_fold_vector_minmax): Likewise.
22206         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
22207         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
22208
22209 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
22210
22211         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
22212         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
22213         if the lhs has side-effects.
22214         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
22215
22216 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
22217
22218         * config/i386/i386.h (TUNEMASK): Remove define.
22219         (ARCHMASK): Remove define.
22220         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
22221          Use ix86_arch_mask variable instead of ARCHMASK.
22222         * config/i386/i386.c (override_options): Ditto.
22223         (standard_80387_constant_p): Ditto.
22224
22225 2007-03-02  Ian Lance Taylor  <iant@google.com>
22226
22227         Used signed infinities in VRP.
22228         * tree-vrp.c (uses_overflow_infinity): New static function.
22229         (supports_overflow_infinity): New static function.
22230         (make_overflow_infinity): New static function.
22231         (negative_overflow_infinity): New static function.
22232         (positive_overflow_infinity): New static function.
22233         (is_negative_overflow_infinity): New static function.
22234         (is_positive_overflow_infinity): New static function.
22235         (is_overflow_infinity): New static function.
22236         (overflow_infinity_range_p): New static function.
22237         (compare_values_warnv): New function split out of compare_values.
22238         (compare_value): Call it.
22239         (set_value_range_to_nonnegative): Add overflow_infinity
22240         parameter.  Change caller.
22241         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
22242         Change callers.
22243         (vrp_expr_computes_nonzero): Likewise.
22244         (compare_ranges, compare_range_with_value): Likewise.
22245         (compare_name_with_value, compare_names): Likewise.
22246         (vrp_evaluate_conditional): Likewise.
22247         (set_value_range): Handle infinity
22248         (vrp_operand_equal_p, operand_less_p): Likewise.
22249         (extract_range_from_assert): Likewise.
22250         (vrp_int_const_binop): Likewise.
22251         (extract_range_from_binary_expr): Likewise.
22252         (extract_range_from_unary_expr): Likewise.
22253         (extract_range_from_comparison): Likewise.
22254         (extract_range_from_expr): Likewise.
22255         (dump_value_range): Likewise.
22256         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
22257         (test_for_singularity): Likewise.
22258         (vrp_int_const_binop): Remove inline qualifier.
22259         (adjust_range_with_scev): Add comment.
22260         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
22261
22262 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
22263
22264         * tree-ssa-structalias.c (could_have_pointers): Tidy.
22265         (get_constraint_for): Likewise.
22266         (do_structure_copy): Likewise.
22267         (find_func_aliases): Fix references to MODIFY_EXPR.
22268         (intra_create_variable_infos): Tidy.
22269         * tree-ssa-operands.c (add_virtual_operand): Add argument
22270         IS_CALL_SITE.
22271         When adding members of alias sets, if IS_CALL_SITE is true and
22272         the symbol is not call-clobbered, skip it.
22273         Adjust all callers.
22274
22275 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
22276
22277         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
22278         entry by means of emit_insn_at_entry.
22279
22280 2007-03-02  Richard Henderson  <rth@redhat.com>
22281
22282         * expr.h (promoted_input_arg): Remove decl.
22283         * function.c (promoted_input_arg): Merge into ...
22284         * combine.c (setup_incoming_promotions): ... only caller.
22285         Rearrange to avoid double loop.
22286
22287 2007-03-02  Ben Elliston  <bje@au.ibm.com>
22288             Peter Bergner  <bergner@vnet.ibm.com>
22289             Janis Johnson  <janis187@us.ibm.com>
22290
22291         * config/rs6000/dfp.md: New file.
22292         * config/rs6000/rs6000.md: Include dfp.md.
22293         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
22294         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
22295         and TDmode decimal float modes in FP registers.
22296         (num_insns_constant): Likewise.
22297         (rs6000_legitimate_offset_address_p): Likewise.
22298         (rs6000_legitimize_address): Likewise.
22299         (rs6000_legitimize_reload_address): Likewise.
22300         (rs6000_legitimate_address): Likewise.
22301         (rs6000_emit_move): Likewise.
22302         (function_arg_boundary): Likewise.
22303         (function_arg_advance): Likewise.
22304         (rs6000_darwin64_record_arg_recurse): Likewise.
22305         (function_arg): Likewise.
22306         (rs6000_gimplify_va_arg): Likewise.
22307         (rs6000_split_multireg_move): Likewise.
22308         (rs6000_output_function_epilogue): Likewise.
22309         (rs6000_output_function_epilogue): Likewise.
22310         (rs6000_register_move_cost): Likewise.
22311         (rs6000_function_value): Likewise.
22312         (rs6000_libcall_value): Likewise.
22313
22314 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
22315
22316         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
22317
22318 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
22319
22320         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
22321         Use $MULTIDIR to choose between the kernel and RTP headers,
22322         and use $WIND_BASE and $WIND_USR to locate them.
22323
22324 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
22325
22326         * config/i386/i386.c (override_options): Put initialization of
22327         ix86_tune_mask and ix86_arch_mask to the correct place.
22328
22329 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
22330             Michael Meissner  <michael.meissner@amd.com>
22331
22332         PR target/31019
22333         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
22334         (ARCHMASK): Define.
22335         (TARGET_CMOVE): Use ARCHMASK.
22336         (TARGET_CMPXCHG): Ditto.
22337         (TARGET_CMPXCHG8B): Ditto.
22338         (TARGET_XADD): Ditto.
22339         (TARGET_BSWAP): Ditto.
22340         * config/i386/i386.c (ix86_tune_mask): New global variable.
22341         (ix86_arch_mask): Ditto.
22342         (override_options): Initialize ix86_tune_mask and
22343         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
22344         target_flags.
22345
22346 2007-03-02  Ben Elliston  <bje@au.ibm.com>
22347
22348         PR 30992
22349         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
22350
22351 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
22352
22353         * target.h (init_dwarf_reg_sizes_extra): New target hook.
22354         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
22355         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
22356         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
22357         hook.
22358         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
22359         rs6000_init_dwarf_reg_sizes_extra): New.
22360         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
22361         SPE register high parts.
22362
22363 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
22364
22365         * Makefile.in: Add install-pdf target as
22366         copied from automake v1.10 rules.
22367         * configure.ac: Add install-pdf to target list.
22368         * configure: Regenerate.
22369
22370 2007-03-01  Paul Brook  <paul@codesourcery.com>
22371
22372         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
22373         modes to LDRD for DImode.
22374         (output_move_double): Fixup out of range ldrd/strd.
22375         (vfp_secondary_reload_class): Rename...
22376         (coproc_secondary_reload_class): ... to this.  Add wb argument.
22377         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
22378         coproc_secondary_reload_class for CLASS_IWMMXT.
22379         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
22380         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
22381
22382 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
22383
22384         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
22385         unroll factor by the estimated number of iterations.
22386         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
22387         than prefetch latency.
22388
22389         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
22390         decode_caches_intel, detect_caches_intel): New functions.
22391         (host_detect_local_cpu): Use detect_caches_amd and
22392         detect_caches_intel.
22393
22394 2007-03-01  Richard Henderson  <rth@redhat.com>
22395
22396         * expr.c (emit_move_complex_push): Export.
22397         (emit_move_complex_parts): Split out from ...
22398         (emit_move_complex): ... here.
22399         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
22400         * config/i386/i386.md (movcdi): New.
22401
22402 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
22403
22404         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
22405         size of mode1 to check for tieable modes in MMX case.
22406
22407 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
22408
22409         * Makefile.in (rtlanal.o): Depend on tree.h.
22410         * rtl.h (offset_within_section_p, split_const): Declare.
22411         * rtlanal.c: Include tree.h.
22412         (offset_within_block_p): New function, taken from
22413         mips_offset_within_object_p.
22414         (split_const): New function, taken from mips_split_const.
22415         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
22416         Declare.
22417         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
22418         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
22419         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
22420         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
22421         (m68k_illegitimate_symbolic_constant_p): New function.
22422         * config/m68k/m68k.md (movsi): Remove misleading predicates.
22423         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
22424         symbolic constant that might be outside the symbol's section,
22425         move the symbol first and then add the offset.
22426         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
22427         Override.
22428         * config/mips/mips.c (mips_split_const): Delete.
22429         (mips_offset_within_object_p): Delete.
22430         (mips_symbolic_constant_p): Use offset_within_section_p and
22431         split_const instead of mips_offset_within_object_p and
22432         mips_split_const.
22433         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
22434         (mips_legitimize_const_move, print_operand_reloc)
22435         (mips_dangerous_for_la25_p): Use split_const instead of
22436         mips_split_const.
22437
22438 2007-02-28  Eric Christopher  <echristo@apple.com>
22439
22440         * Makefile.in (install-include-dir): Don't rm -rf include.
22441
22442 2007-02-28  Richard Guenther  <rguenther@suse.de>
22443
22444         PR middle-end/30364
22445         * fold-const.c (fold_binary): Do not associate expressions
22446         with more than one variable for integer types that do not wrap.
22447
22448 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
22449
22450         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
22451         Delete, and replace with...
22452         (fold_builtin_call_array): This.  Update callers to use it.
22453         * fold-const.c (fold_build_call_list): Delete, and replace with...
22454         (fold_build_call_array): This.
22455         (fold_build_call_list_initializer): Delete, and replace with...
22456         (fold_build_call_array_initializer): This.
22457         * tree.h: Update declarations to reflect above changes.
22458
22459         * c-typeck.c (build_function_call): Store converted arguments
22460         in a stack-allocated array instead of building a list.
22461         (convert_arguments): Store arguments in the array passed in as an
22462         argument, and return the actual number of arguments.
22463         * c-format.c: (check_function_format): Pass arguments in an
22464         array instead of a list.
22465         * c-common.c (check_function_nonnull): Likewise.
22466         (check_function_sentinel): Likewise.
22467         (check_function_arguments): Likewise.
22468         * c-common.h: Update declarations to reflect above changes.
22469
22470 2007-02-28  Jan Hubicka  <jh@suse.cz>
22471
22472         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
22473         PRED_NEGATIVE_RETURN): Update outcomes.
22474
22475 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
22476
22477         * calls.c (emit_library_call_value_1): Handle partial registers
22478         correctly when building up CALL_INSN_FUNCTION_USAGE.
22479
22480 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22481
22482         * pa/predicates.md (move_src_operand): Allow zero for mode.
22483         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
22484         move pattern.
22485
22486 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
22487
22488         PR target/30970
22489         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
22490         *movv2df_internal): Enable pattern only for valid operand
22491         combinations.
22492         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
22493         tie only 128bit modes. For MMX registers, tie only 64bit modes.
22494
22495 2007-02-27  Mike Stump  <mrs@apple.com>
22496
22497         * config/darwin-crt3.c: Avoid compilation when compiling for a
22498         kext multilib.
22499
22500 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
22501
22502         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
22503         FIXED_INCLUDE_DIR.
22504         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
22505         for fixed headers and limits.h.
22506         (install-include-dir, install-headers-tar, install-headers-cpio,
22507         install-headers-cp, real-install-headers-tar,
22508         real-install-headers-cpio, real-install-headers-cp): Handle
22509         include-fixed as well as include.
22510         (install-mkheaders): Don't install files that go only in include
22511         not include-fixed.
22512         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
22513         from GCC_INCLUDE_DIR.
22514         * gcc.c (process_command): Remove special -BstageN/ handling.
22515         (do_spec_1): Add include-fixed directories.
22516
22517 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
22518
22519         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
22520         _smulsi3_highpart.
22521         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
22522         New functions.
22523         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
22524         patterns.
22525
22526 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
22527
22528         * c-common.c (get_priority): Add check for
22529         SUPPORTS_INIT_PRIORITY.
22530
22531 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
22532
22533         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
22534
22535         * config/bfin/bfin.c: Include "cfglayout.h".
22536         (MAX_LSETUP_DISTANCE): New macro.
22537         (struct loop_info): New members incoming, incoming_src and
22538         incoming_dest.  Delete member predecessor.
22539         (length_for_loop): New function.
22540         (bfin_optimize_loop): Handle more different loop structures.
22541         (bfin_discover_loop): Rework detection of predecessor blocks by
22542         examining incoming edges.
22543         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
22544         bfin_reorg_loops.
22545         (bfin_reorder_loops): New function.
22546         (bfin_reorg_loops): Use these three new functions.
22547
22548         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
22549         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
22550         (CONSTRAINT_LEN): Add entry for 'q'.
22551         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
22552         Add 'q' constraints.
22553         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
22554         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
22555
22556         * config/bfin/bfin.md (add_with_carry): New pattern.
22557         (s_or_u, su_optab, su_modifier): New code macros/attrs.
22558         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
22559         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
22560         support unsigned multiplies too.  Removed incorrect commutativity from
22561         operand 1 constraint where appropriate.
22562         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
22563         patterns.
22564         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
22565         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
22566         New patterns.
22567         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
22568         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
22569         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
22570         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
22571         usmulhisi_hh_huh): New patterns.
22572
22573         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
22574         lshifthi3): Fix output template to use half reg for operand 2.
22575
22576         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
22577         instead of R2.
22578
22579         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
22580
22581 2007-02-27  Andreas Schwab  <schwab@suse.de>
22582
22583         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
22584
22585 2007-02-27  Jan Hubicka  <jh@suse.cz>
22586
22587         * predict.c (last_basic_block_p): Remove.
22588         (tree_estimate_probability): Update return heuristic for commonized
22589         return blocks.
22590
22591 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
22592
22593         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
22594
22595 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
22596
22597         * doc/include/gcc-common.texi (versionsubtitle): New macro.
22598         * doc/cpp.texi: Standardize title page.
22599         * doc/cppinternals.texi: Likewise.
22600         * doc/gcc.texi: Standardize title page, remove version number
22601         from copyright page.
22602         * doc/gccint.texi: Likewise.
22603         * doc/install.texi: Standardize title page, add table of
22604         contents.
22605
22606 2007-02-26  Jan Hubicka  <jh@suse.cz>
22607
22608         * predict.def: Set outcomes according to more recent results.
22609         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
22610         Remove dead predictors.
22611         * predict.c (return_prediction): Fix pasto.
22612
22613 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
22614
22615         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
22616         change; avoid a memory leak when returning early.
22617
22618 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
22619
22620         * c-decl.c (static_ctors): Move to c-common.c.
22621         (static_dtors): Likewise.
22622         (finish_function): Use c_record_cdtor_fn.
22623         (build_cdtor): Move to c-common.c.
22624         (c_write_global_declarations): Use c_build_cdtor_fns.
22625         * c-common.h (static_ctors): Declare.
22626         (static_dtors): Likewise.
22627         (c_record_cdtor_fn): Likewise.
22628         (c_build_cdtor_fns): Likewise.
22629         * c-common.c (static_ctors): New variable.
22630         (static_dtors): Likewise.
22631         (c_record_cdtor_fn): New function.
22632         (build_cdtor): Move from c-decl.c
22633         (c_build_cdtor_fns): New function.
22634
22635         * output.h (assemble_addr_to_section): Declare.
22636         (get_cdtor_priority_section): Likewise.
22637         * varasm.c (assemble_addr_to_section): New function.
22638         (get_cdtor_priority_section): Likewise.
22639         (default_named_section_asm_out_destructor): Use them.
22640         (destor_dtor_section_asm_out_destructor): Likewise.
22641         (default_named_section_asm_out_constructor): Likewise.
22642         (default_ctor_section_asm_out_constructor): Likewise.
22643         * config.gcc (*-*-vxworks*): Include vxworks.o.
22644         * config/t-vxworks (vxworks.o): New target.
22645         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
22646         (TARGET_ASM_CONSTRUCTOR): Define.
22647         (TARGET_ASM_DESTRUCTOR): Likewise.
22648         (vxworks_asm_out_constructor): Declare.
22649         (vxworks_asm_out_destructor): Likewise.
22650
22651         * c-common.c (get_priority): Check that we have not just an
22652         INTEGER_CST, but an integer constant with integeral type.
22653
22654 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
22655
22656         PR tree-optimization/30938
22657         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
22658         use &dt[nargs-1] instead of &dt[nargs] in the call to
22659         vect_is_simple_use().
22660
22661 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
22662
22663         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
22664         from register elimination as PRE_MODIFY / POST_MODIFY increments.
22665         Do not attempt to handle MEM inside auto-inc expressions.
22666         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
22667         of a register modified by an auto-inc expression.  However, do handle
22668         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
22669         (elimination_effects): Prohibit elimination of a register modified
22670         by an auto-inc expression.  Disable register elimination rules whose
22671         target register is modified by an auto-inc expression with variable
22672         increment.
22673
22674 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
22675
22676         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
22677         off-by-one error.
22678         (array_at_struct_end_p): New function.
22679         (idx_infer_loop_bounds): Use it.
22680         (estimate_numbers_of_iterations_loop): Export.
22681         * predict.c (predict_loops): Use estimated_loop_iterations_int.
22682         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
22683         (tree_estimate_probability): Call record_loop_exits.
22684         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
22685         (estimated_loop_iterations, estimated_loop_iterations_int,
22686         estimated_loop_iterations_tree): New functions.
22687         (analyze_siv_subscript_cst_affine,
22688         compute_overlap_steps_for_affine_1_2,
22689         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
22690         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
22691         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
22692         (PRED_LOOP_ITERATIONS_GUESSED): New.
22693         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
22694         * cfgloop.h (estimate_numbers_of_iterations_loop,
22695         estimated_loop_iterations_int): Declare.
22696
22697 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
22698
22699         * doc/extend.texi: Document optional priority argument to
22700         constructors and destructors.
22701         * tree.c (init_priority_for_decl): Adjust GTY markers.
22702         (init_ttree): Use priority-info hash functions for
22703         init_priority_for_decl.
22704         (tree_map_eq): Rename to ...
22705         (tree_map_base_eq): ... this.
22706         (tree_map_marked_p): Rename to ...
22707         (tree_map_base_marked_p): ... this.
22708         (tree_map_base_hash): New function.
22709         (decl_init_priority_lookup): Rework.
22710         (decl_fini_priority_lookup): New function.
22711         (decl_priority_info): New function.
22712         (decl_init_priority_insert): Use it.
22713         (decl_fini_priority_insert): Likewise.
22714         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
22715         hierarchy.
22716         (decl_restrict_base_insert): Likewise.
22717         (decl_debug_expr_insert): Likewise.
22718         (decl_value_expr_lookup): Likewise.
22719         (decl_value_expr_insert): Likewise.
22720         * tree.h (priority_type): New type.
22721         (decl_init_priority_lookup): Use priority_type.
22722         (decl_fini_priority_lookup): New function.
22723         (decl_init_priority_insert): Use priority_type.
22724         (decl_fini_priority_insert): New function.
22725         (DECL_HAS_INIT_PRIORITY): Tweak comments.
22726         (DECL_INIT_PRIORITY): Likewise.
22727         (SET_DECL_INIT_PRIORITY): Add comment.
22728         (DECL_FINI_PRIORITY): New macro.
22729         (SET_DECL_FINI_PRIORITY): Likewise.
22730         (DEFAULT_INIT_PRIORITY): Document.
22731         (MAX_INIT_PRIORITY): Likewise.
22732         (MAX_RESERVED_INIT_PRIORITY): Likewise.
22733         (tree_map_base): New type.
22734         (tree_map_base_eq): New function.
22735         (tree_map_base_hash): Likewise.
22736         (tree_map_base_marked_p): Likewise.
22737         (tree_map): Inherit from tree_map_base.
22738         (tree_map_eq): Make it a macro.
22739         (tree_map_marked_p): Likewise.
22740         (tree_int_map): Inherit from tree_map_base.
22741         (tree_int_map_eq): Make it a macro.
22742         (tree_int_map_hash): Likewise.
22743         (tree_int_map_marked_p): Likewise.
22744         (tree_priority_map): New type.
22745         (tree_priority_map_eq): New macro.
22746         (tree_priority_map_hash): Likewise.
22747         (tree_priority_map_marked_p): Likewise.
22748         * varasm.c (emults_decl): Adjust for refactoring of tree_map
22749         hierarchy.
22750         (emutls_common_1): Likewise.
22751         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
22752         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
22753         of tree_map hierarchy.
22754         * tree-cfg.c (move_stmt_r): Likewise.
22755         (new_label_mapper): Likewise.
22756         * c-tree.h (c_expand_body): Move to ...
22757         * c-common.h (c_expand_body): ... here.
22758         * c-decl.c (c_expand_body): Move to ...
22759         * c-common.c (c_expand_body): ... here.
22760         (c_common_attribute_table): Allow 1 argument for the constructor
22761         and destructor attributes.
22762         (get_priority): New function.
22763         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
22764         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
22765
22766 2007-02-24  Jan Hubicka  <jh@suse.cz>
22767
22768         PR middle-end/30509
22769         * tree-inline.c (copy_bb): Produce exact copy of EH info when
22770         copying for inlining.
22771
22772 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
22773             Jan Hubicka  <jh@suse.cz>
22774
22775         PR target/30778
22776         * i386.c (counter_mode): New function.
22777         (expand_set_or_movmem_via_loop): Use it.
22778         (expand_movmem_epilogue): Likewise; fix pasto.
22779         (ix86_expand_movmem): Do emit guard even for constant counts.
22780         (ix86_expand_setmem): Likewise.
22781
22782 2007-02-25  Nick Clifton  <nickc@redhat.com>
22783
22784         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
22785         (JUMP_TABLES_IN_TEXT_SECTION): Define.
22786
22787 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
22788
22789         PR target/30770
22790         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
22791         count argument with 0x10, not with 0x16.
22792         (expand_setmem_epilogue): Ditto.
22793
22794 2007-02-24  Mike Stump  <mrs@apple.com>
22795
22796         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
22797         symbols.
22798
22799 2007-02-24  Richard Guenther  <rguenther@suse.de>
22800
22801         PR middle-end/30951
22802         * fold-const.c (fold_binary): Fold x +- CST op x for
22803         EQ_EXPR and NE_EXPR.
22804
22805 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22806
22807         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
22808
22809 2007-02-24  Jan Hubicka  <jh@suse.cz>
22810
22811         * cgraphunit.c (decide_is_function_needed): Honor
22812         -fkeep-inline-functions.
22813
22814 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22815
22816         * builtins.c (fold_builtin_modf): New.
22817         (fold_builtin_2): Use it.
22818
22819 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
22820
22821         * loop-iv.c (implies_p): Detect additional cases where A implies B.
22822         (determine_max_iter): Take additional LOOP arg; all callers changed.
22823         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
22824         one using simplifications.
22825         (simplify_using_initial_values): Return if the expression becomes
22826         invalid due to altered regs.
22827
22828 2007-02-23  DJ Delorie  <dj@redhat.com>
22829
22830         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
22831
22832 2007-02-23  Mike Stump  <mrs@apple.com>
22833
22834         * tlink.c (scan_linker_output): Parse linker messages from
22835         darwin9's linker better.
22836
22837 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
22838
22839         PR debug/29614
22840         * varpool.c (varpool_assemble_pending_decls): Set
22841         varpool_last_needed_node to null.
22842
22843 2007-02-23  DJ Delorie  <dj@redhat.com>
22844
22845         * config/i386/i386.c (ix86_data_alignment): Don't specify an
22846         alignment bigger than the object file can handle.
22847
22848 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
22849
22850         PR target/30825
22851         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
22852         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
22853         (*movsf_1): Penalize MMX moves.
22854
22855 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
22856
22857         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
22858         2^32-1 or more times unless flag_unsafe_loop_optimizations.
22859
22860         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
22861
22862 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22863
22864         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
22865         (fold_builtin_1): Use them.
22866         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
22867         BUILT_IN_SIGNIFICAND.
22868
22869 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
22870
22871         * config/i386/i386.c (bdesc_1arg): Initialize
22872         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
22873         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
22874         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
22875         and IX86_BUILTIN_MOVSLDUP.
22876
22877 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
22878
22879         PR rtl-optimization/30841
22880         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
22881
22882 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22883
22884         * builtins.c (fold_builtin_frexp): New.
22885         (fold_builtin_2): Use it.
22886
22887 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
22888
22889         * doc/invoke.texi (Spec Files): Document getenv spec function.
22890
22891         * gcc.c (getenv_spec_function): New function.
22892         (static_spec_functions): Add it.
22893         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
22894         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
22895         header files.
22896
22897 2007-02-22  Michael Matz  <matz@suse.de
22898
22899         PR c++/29433
22900         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
22901         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
22902
22903 2007-02-22  Ian Lance Taylor  <iant@google.com>
22904
22905         PR debug/30898
22906         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
22907         (mem_loc_descriptor): Call it.
22908
22909 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
22910             Ira Rosen  <irar@il.ibm.com>
22911
22912         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
22913
22914 2007-02-22  Ira Rosen  <irar@il.ibm.com>
22915
22916         PR tree-optimization/30843
22917         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
22918         stores only after all the group is vectorized.
22919
22920 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
22921
22922         PR tree-optimization/30858
22923         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
22924         in the reduction cycle have a single use in the loop.
22925         * tree-vectorizer.h (relevant): Add documentation.
22926
22927 2007-02-20  Mike Stump  <mrs@apple.com>
22928
22929         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
22930         * configure: Regenerate.
22931
22932 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22933
22934         Change the defaults of some parameters and options.
22935         * config/spu/spu-protos.h (spu_optimization_options): Declare.
22936         * config/spu/spu.c (spu_optimization_options): Add.
22937         (spu_override_options): Change params in spu_optimization_options.
22938         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
22939
22940         Register 127 is only 16 byte aligned when used as a frame pointer.
22941         * config/spu/spu-protos.h (spu_init_expanders): Declare.
22942         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
22943         HARD_FRAME_POINTER_REGNUM.
22944         (spu_legitimate_address): Use regno_aligned_for_reload.
22945         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
22946         aligned when frame_pointer_needed is true.
22947         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
22948         to 8 bits.
22949         * config/spu/spu.h (INIT_EXPANDERS): Define.
22950
22951         Make sure shift and rotate instructions have valid immediate operands.
22952         * config/spu/predicates.md (spu_shift_operand): Remove.
22953         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
22954         * config/spu/constraints.md (W, O): Extend range.
22955         * config/spu/spu.md (umask, nmask): Define.
22956         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
22957         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
22958         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
22959         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
22960         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
22961         (lshr<mode>3_reg): Fix rtl description.
22962
22963         Make sure mulhisi immediate operands are valid.
22964         * config/spu/predicates.md (imm_K_operand): Add.
22965         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
22966
22967         Generate constants using fsmbi and andi.
22968         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
22969         (print_operand, spu_split_immediate, classify_immediate,
22970         fsmbi_const_p): Handle IC_FSMBI2.
22971
22972         Correctly handle a CONST_VECTOR containing symbols.
22973         * config/spu/spu.c (print_operand): Handle HIGH correctly.
22974         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
22975         (immediate_load_p): Allow symbols that use 2 instructions to create.
22976         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
22977         with symbols when flag_pic is set.
22978         (const_vector_immediate_p): New.
22979         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
22980         accept a CONST_VECTOR with symbols.
22981         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
22982         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
22983         correctly.
22984         * config/spu/spu.md (high, low): Delete.
22985         (low_<mode>): Define.
22986
22987         Remove INTRmode and INTR_REGNUM, which didn't work.
22988         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
22989         of INTR_REGNUM.
22990         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
22991         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
22992         peephole2 pattern): Don't use INTR or 131.
22993         (movintrcc): Delete.
22994         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
22995         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
22996         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
22997         (UNSPEC_SET_INTR): Add.
22998         * config/spu/spu-modes.def (INTR): Remove.
22999
23000         More accurate warnings about run-time relocations.
23001         * config/spu/spu.c (reloc_diagnostic): Test in_section.
23002
23003         Correctly warn about immediate arguments to specific intrinsics.
23004         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
23005         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
23006         the instruction predicate.
23007
23008         Fix tree check errors with latest update.
23009         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
23010         CALL_EXPR_ARG.
23011         (spu_expand_builtin): Use CALL_EXPR_FN.
23012
23013         Add missing specific intrinsics.
23014         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
23015         si_bislede.
23016         * config/spu/spu_internals.h: Ditto.
23017
23018         Fix incorrect operand modifiers.
23019         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
23020         * config/spu/spu.md (xor<mode>3): Change %S to %J.
23021
23022         Optimize one case of zero_extend of a vec_select.
23023         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
23024
23025         Accept any immediate for hbr.
23026         * config/spu/spu.md (hbr): Change s constraints to i.
23027
23028 2007-02-21  Paul Brook  <paul@codesourcery.com>
23029
23030         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
23031         condexec_count when skipping USE and CLOBBER.
23032
23033 2007-02-21  Nick Clifton  <nickc@redhat.com>
23034
23035         * common.opt (Warray-bounds): Add Warning attribute.
23036         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
23037         Likewise.
23038         (fsized-zeroes): Add Optimization attribute.
23039         (fsplit-wide-types, ftree-scev-cprop): Likewise.
23040         * c.opt (Wc++0x-compat): Add Warning attribute.
23041
23042 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
23043
23044         PR middle-end/30761
23045         * reload1.c (eliminate_regs_in_insn): In the single_set special
23046         case, attempt to re-recognize the insn before falling back to
23047         having reload fix it up.
23048
23049 2007-02-20  Eric Christopher  <echristo@gmail.com>
23050
23051         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
23052         Rewrite accordingly.
23053         (frv_read_iacc_argument): Ditto.
23054         (frv_expand_set_builtin): Take a call instead of arglist, update for
23055         above changes.
23056         (frv_expand_unop_builtin): Ditto.
23057         (frv_expand_binop_builtin): Ditto.
23058         (frv_expand_cut_builtin): Ditto.
23059         (frv_expand_binopimm_builtin): Ditto.
23060         (frv_expand_voidbinop_builtin): Ditto.
23061         (frv_expand_int_void2arg): Ditto.
23062         (frv_expand_prefetches): Ditto.
23063         (frv_expand_voidtriop_builtin): Ditto.
23064         (frv_expand_voidaccop_builtin): Ditto.
23065         (frv_expand_load_builtin): Ditto.
23066         (frv_expand_store_builtin): Ditto.
23067         (frv_expand_mdpackh_builtin): Ditto.
23068         (frv_expand_mclracc_builtin): Ditto.
23069         (frv_expand_mrdacc_builtin): Ditto.
23070         (frv_expand_mwtacc_builtin): Ditto.
23071         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
23072         calls for above.
23073
23074 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
23075
23076         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
23077         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
23078         cmpb instruction.
23079         (HAVE_GAS_DFP): Check for assembler support of decimal floating
23080         point instructions.
23081         * configure: Regenerate.
23082         * config.in: Regenerate.
23083         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
23084         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
23085         masks to power6 and power6x and to POWERPC_MASKS.
23086         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
23087         _ARCH_PWR6.
23088         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
23089         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
23090         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
23091         Access PROTOTYPE as variable, not mask.
23092
23093 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
23094
23095         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
23096         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
23097         * combine.c (adjust_for_new_dest): Use it.
23098         * postreload.c (reload_combine): Likewise.
23099
23100 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
23101
23102         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
23103         notes on an insn with multiple sets, even if single_set returns
23104         non-NULL for that insn.
23105
23106 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23107
23108         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
23109         scalbn and scalbln.
23110
23111 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
23112
23113         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
23114         if user didn't pass it.
23115         * config/i386/darwin.h (CC1_SPEC): Likewise.
23116         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
23117         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
23118         -mmacosx-version-min.
23119
23120 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23121             Uros Bizjak  <ubizjak@gmail.com>
23122
23123         * optabs.h (enum optab_index): Add new OTI_scalb.
23124         (scalb_optab): Define corresponding macro.
23125         * optabs.c (init_optabs): Initialize scalb_optab.
23126         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
23127         patterns.
23128         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
23129         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
23130         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
23131         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
23132         flag_unsafe_math_optimizations is set.
23133
23134         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
23135         to implement scalbf, scalb and scalbl built-ins as inline x87
23136         intrinsics.
23137
23138 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23139             DJ Delorie <dj@redhat.com>
23140
23141         PR other/30824
23142         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
23143         (diagnostic_report_diagnostic): ... here, and turn them into real
23144         errors. If warnings are inhibited, no need to do anything.
23145
23146 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
23147
23148         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
23149         better code generation.
23150
23151 2007-02-20  Ben Elliston  <bje@au.ibm.com>
23152
23153         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
23154
23155 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
23156
23157         * config/alpha/alpha.c, config/alpha/alpha.md,
23158         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
23159         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
23160         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
23161         config/arm/lib1funcs.asm: Follow spelling conventions.
23162
23163         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
23164         config/fr30/fr30.md, config/i386/i386.h,
23165         config/iq2000/iq2000.h, config/iq2000/predicates.md,
23166         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
23167         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
23168         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
23169         config/rs6000/altivec.md, config/rs6000/rs6000.c,
23170         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
23171         config/sparc/sparc.c, config/sparc/sparc.h,
23172         config/sparc/sparc.md, config/spu/constraints.md,
23173         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
23174         conventions.
23175
23176 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
23177
23178         PR target/29943
23179         * varasm.c (use_blocks_for_decl_p): Return false for decls with
23180         alias attribute.
23181
23182 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
23183
23184         * doc/invoke.texi (-ftree-lrs): Remove.
23185
23186 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
23187
23188         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
23189         NULL.
23190
23191 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
23192
23193         * config/ia64/ia64.c (ia64_expand_builtin): Use the
23194         new CALL_EXPR_FN macro for retrieving the function
23195         declaration of the input expression.
23196
23197 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23198
23199         * c.opt (Waddress): New.
23200         * common.opt (Walways-true): Delete.
23201         (Wstring-literal-comparison): Delete.
23202         * doc/invoke.texi (Warning Options): Delete -Walways-true and
23203         -Wstring-literal-comparison. Add -Waddress.
23204         (Waddress): New.
23205         (Walways-true): Delete.
23206         (Wstring-literal-comparison): Delete.
23207         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
23208         consistently instead of -Walways-true in example.
23209         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
23210         * c-typeck.c (parser_build_binary_op): Replace
23211         -Wstring-literal-comparison and -Walways-true with -Waddress.
23212         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
23213         with -Waddress.
23214
23215 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
23216
23217         * tree-cfg.c (dump_function_to_file): Be prepared for functions
23218         without DECL_STRUCT_FUNCTION initialized.
23219
23220 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
23221
23222         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
23223         due to calls to functions taking pointers as parameters.
23224
23225 2007-02-19  Richard Henderson  <rth@redhat.com>
23226
23227         PR debug/29558
23228         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
23229         in memory.
23230
23231 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23232
23233         * config/s390/s390.c (s390_call_saved_register_used,
23234         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
23235         accessed to the new scheme.
23236
23237 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23238
23239         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
23240         (cris_print_index, cris_print_operand, cris_print_operand_address)
23241         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
23242         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
23243         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
23244         GET_CODE () == xxx.
23245         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
23246         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
23247         GO_IF_LEGITIMATE_ADDRESS): Ditto.
23248         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
23249         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
23250         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
23251         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
23252         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
23253         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
23254         (uminsi3, call, call_value): Ditto.
23255         (define_split: indir_to_reg_split, unnamed): Ditto.
23256
23257 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
23258
23259         PR tree-optimization/30975
23260         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
23261         wrong assert.
23262
23263 2007-02-18  Eric Christopher  <echristo@gmail.com>
23264
23265         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
23266         Remove use of arglist.
23267         (mips_expand_builtin): Remove use of arglist, pass in expr.
23268         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
23269         (mips_expand_builtin_movtf): Ditto.
23270         (mips_expand_builtin_compare): Ditto.
23271
23272 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
23273
23274         * tree-sra.c (sra_build_assignment): Replace assertion
23275         checking with a comment explaining why it can't be done.
23276
23277 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
23278
23279         PR middle-end/30833
23280         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
23281         during CALL_EXPR representation conversion.
23282         * tree-ssa-propagate.c (set_rhs): Likewise.
23283
23284 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
23285
23286         * tree-sra.c (sra_build_assignment): Disable assertion checking
23287         for now.
23288
23289 2007-02-18  Roger Sayle  <roger@eyesopen.com>
23290
23291         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
23292         instead of calling build2 with a GIMPLE_MODIFY_STMT.
23293         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
23294         Likewise.
23295         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
23296         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
23297         gimplify_init_ctor_eval_range, gimple_push_cleanup,
23298         gimplify_omp_for, gimplify_omp_atomic_pipeline,
23299         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
23300         force_gimple_operand): Likewise.
23301         * ipa-cp.c (constant_val_insert): Likewise.
23302         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
23303         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
23304         perfect_nestify): Likewise.
23305         * langhooks.c (lhd_omp_assignment): Likewise.
23306         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
23307         lower_copyprivate_clauses, lower_send_clauses,
23308         lower_send_shared_vars, expand_parallel_call,
23309         expand_omp_for_generic, expand_omp_for_static_nochunk,
23310         expand_omp_for_static_chunk, expand_omp_sections,
23311         lower_omp_single_copy, lower_omp_for_lastprivate,
23312         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
23313         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
23314         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
23315         Likewise.
23316
23317 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
23318
23319         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
23320         config/sh/sh.md: Follow spelling conventions.
23321
23322         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
23323         config/frv/predicates.md: Follow spelling conventions.
23324
23325         * config/m68k/linux-unwind.h: Fix a comment typo.
23326         * target.h: Follow spelling conventions.
23327
23328 2007-02-18  Roger Sayle  <roger@eyesopen.com>
23329
23330         PR rtl-optimization/28173
23331         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
23332         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
23333         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
23334         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
23335         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
23336
23337 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23338
23339         * builtins.c (fold_builtin_load_exponent): New.
23340         (fold_builtin_2): Use it.
23341
23342 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
23343
23344         PR rtl-optimization/30773
23345         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
23346         if we fail to attach a REG_EQUIV note.
23347
23348 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
23349             Roger Sayle  <roger@eyesopen.com>
23350
23351         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
23352
23353 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
23354
23355         * calls.c (initialize_argument_information): Pass original EXP
23356         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
23357         code to split complex arguments here, as part of initializing the
23358         ARGS array.
23359         (expand_call): Remove code that builds a list of arguments and
23360         inserts implicit arguments into it.  Instead, just count how many
23361         implicit arguments there will be so we can determine the size of
23362         the ARGS array, and let initialize_argument_information do the work.
23363         (split_complex_values): Delete unused function.
23364
23365 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
23366
23367         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
23368
23369 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
23370
23371         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
23372         for arg pointer based indexed addressing.
23373
23374 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
23375
23376         * config/ia64/ia64.h, config/ia64/ia64.md,
23377         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
23378         spelling conventions.
23379
23380 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
23381
23382         * config/m68k/m68k.c (split_di): New.
23383         * config/m68k/m68k-protos.h: Declare split_di.
23384         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
23385           Improve predicate handling and split constant shifts.
23386
23387 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
23388
23389         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
23390         parameter for register bitfield operations, general predicates
23391         cleanup
23392
23393 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
23394
23395         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
23396         * config/m68k/linux-unwind.h: New file.
23397
23398 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
23399
23400         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
23401         config/i386/athlon.md, config/ia64/ia64.md,
23402         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
23403         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
23404         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
23405         tree-ssa-loop-niter.c, tree-vect-analyze.c,
23406         tree-vect-transform.c: Fix comment typos.
23407
23408 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
23409
23410         * sched-deps.c (find_insn_list): Remove.
23411         * sched-int.h: Remove the prototype for find_insn_list.
23412
23413 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
23414
23415         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
23416         to linker.
23417         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
23418         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
23419         darwin_rs6000_override_options.
23420         (C_COMMON_OVERRIDE_OPTIONS): Expect
23421         darwin_macosx_version_min to be non-NULL always.
23422         (TARGET_C99_FUNCTIONS): Likewise.
23423         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
23424         (DARWIN_MINVERSION_SPEC): New.
23425         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
23426         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
23427         to cc1*.
23428         (DARWIN_MINVERSION_SPEC): New.
23429         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
23430         value.
23431         * config/darwin-c.c (darwin_cpp_builtins): Expect
23432         darwin_macosx_version_min to be non-NULL always.
23433
23434         * config/rs6000/rs6000.c: Clean up trailing whitespace.
23435
23436 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
23437
23438         * config/i386/i386.h (x86_use_xchgb): New.
23439         (TARGET_USE_XCHGB): New macro.
23440         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
23441         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
23442         Split after reload into bswaphi for shifts of 8.
23443         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
23444         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
23445         or when optimizing for size.
23446
23447 2007-02-16  Richard Guenther  <rguenther@suse.de>
23448             Christian Bruel  <christian.bruel@st.com>
23449
23450         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
23451         DECLs but prefer SSA_NAMEs over DECLs.
23452
23453 2007-02-16  Richard Guenther  <rguenther@suse.de>
23454
23455         * tree-flow-inline.h (single_imm_use_p): Remove.
23456         (zero_imm_uses_p): Likewise.
23457         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
23458         instead of single_imm_use_p.
23459         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
23460         zero_imm_uses_p.
23461
23462 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23463
23464         PR other/27843
23465         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
23466         nested double- and backquotes.
23467
23468 2007-02-15  Roger Sayle  <roger@eyesopen.com>
23469
23470         PR middle-end/30391
23471         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
23472         should be unreachable.
23473         (build2_stat): Allow construction of MODIFY_EXPR at any time.
23474         For the time being redirect GIMPLE_MODIFY_STMT to the new
23475         (renamed) build_gimple_modify_stmt_stat.
23476         (build2_gimple_stat): Rename to...
23477         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
23478         Always build a GIMPLE_MODIFY_STMT node.
23479         * tree.h (build2_gimple, build2_gimple_stat): Delete.
23480         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
23481         declarations.
23482
23483         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
23484         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
23485         * tree-complex.c (set_component_ssa_name, expand_complex_move,
23486         expand_complex_div_wide): Likewise.
23487         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
23488         * tree-ssa-loop-im.c (schedule_sm): Likewise.
23489         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
23490         * tree-ssa-loop-manip.c (create_iv): Likewise.
23491         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
23492         abs_replacement): Likewise.
23493         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
23494         realify_fake_stores): Likewise.
23495
23496         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
23497         node rather than a GIMPLE_MODIFY_STMT node.
23498         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
23499         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
23500         Likewise.
23501         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
23502         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
23503         GIMPLE_MODIFY_STMT.
23504
23505 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23506
23507         PR middle-end/30433
23508         * fold-const.c (fold_comparison): Add back the
23509         folding of constant complex comparisions.
23510
23511 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23512
23513         PR middle-end/30729
23514         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
23515         effects unknown to this function, return early.
23516
23517 2007-02-15  Ian Lance Taylor  <iant@google.com>
23518
23519         * lower-subreg.c (move_eh_region_note): New static function.
23520         (resolve_simple_move): Call it.
23521         (decompose_multiword_subregs): Track blocks for which we resolve a
23522         simple move which is also a control flow insn.  Pass them to
23523         find_many_sub_basic_blocks.
23524         (pass_lower_subreg): Add TODO_verify_flow.
23525         (pass_lower_subreg2): Likewise.
23526
23527 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
23528             Brooks Moses  <brooks.moses@codesourcery.com>
23529             Lee Millward  <lee.millward@codesourcery.com>
23530
23531         * tree.h (enum tree_code_class): Add tcc_vl_exp.
23532         (VL_EXP_CLASS_P): New.
23533         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
23534         TREE_CODE_LENGTH.
23535         (TREE_OPERAND_CHECK_CODE): Likewise.
23536         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
23537         (TREE_RTL_OPERAND_CHECK): Likewise.
23538         (tree_operand_check_failed): Make second parameter the whole tree
23539         instead of its code.  Fixed callers.
23540         (VL_EXP_CHECK): New.
23541         (TREE_OPERAND_LENGTH): New.
23542         (VL_EXP_OPERAND_LENGTH): New.
23543         (CALL_EXPR_FN): New.
23544         (CALL_EXPR_STATIC_CHAIN): New.
23545         (CALL_EXPR_ARGS): New.
23546         (CALL_EXPR_ARG): New.
23547         (call_expr_nargs): New.
23548         (CALL_EXPR_ARGP): New.
23549         (build_nt_call_list): Declare.
23550         (build_vl_exp_stat): Declare.
23551         (build_vl_exp): New.
23552         (build_call_list): Declare.
23553         (build_call_nary): Declare.
23554         (build_call_valist): Declare.
23555         (build_call_array): Declare.
23556         (call_expr_arg): Declare.
23557         (call_expr_argp): Declare.
23558         (call_expr_arglist): Declare.
23559         (fold_build_call_list): Declare.
23560         (fold_build_call_list_initializer): Declare.
23561         (fold_call_expr): Declare to replace fold_builtin.
23562         (fold_builtin_fputs): Update to agree with modified definition.
23563         (fold_builtin_strcpy): Likewise.
23564         (fold_builtin_strncpy): Likewise.
23565         (fold_builtin_memory_chk): Likewise.
23566         (fold_builtin_stxcpy_chk): Likewise.
23567         (fold_builtin_strncpy_chk): Likewise.
23568         (fold_builtin_next_arg): Likewise.
23569         (fold_build_call_expr): Declare.
23570         (fold_builtin_call_list): Declare.
23571         (fold_builtin_call_valist): Declare.
23572         (build_call_expr): Declare.
23573         (validate_arglist): Update to agree with modified definition.
23574         (tree_operand_length): New.
23575         (call_expr_arg_iterator): New.
23576         (init_call_expr_arg_iterator): New.
23577         (next_call_expr_arg): New.
23578         (first_call_expr_arg): New.
23579         (more_call_expr_args_p): New.
23580         (FOR_EACH_CALL_EXPR_ARG): New.
23581
23582         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
23583         and tcc_gimple_stmt.
23584         (tree_code_size): Update documentation.  Use sizeof (tree) rather
23585         than sizeof (char *).
23586         (tree_size): Likewise.  Add case for tcc_vl_exp.
23587         (tree_node_structure): Add case for tcc_vl_exp.
23588         (contains_placeholder_p): Likewise.
23589         (substitute_in_expr): Likewise.
23590         (substitute_placeholder_in_expr): Likewise.
23591         (stabilize_reference_1): Likewise.
23592         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
23593         to diagnose breakage of this interface for constructing CALL_EXPRs.
23594         (build_nt): Add similar assertion here.
23595         (build_nt_call_list): New.
23596         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
23597         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
23598         TREE_CODE_LENGTH.
23599         (get_callee_fndecl): Use new CALL_EXPR accessors.
23600         (tree_operand_check_failed): Change parameters to pass entire node
23601         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
23602         (process_call_operands): New.
23603         (build_vl_exp_stat): New.
23604         (build_call_list): New.
23605         (build_call_nary): New.
23606         (build_call_valist): New.
23607         (build_call_array): New.
23608         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23609         (call_expr_arglist): New.
23610
23611         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
23612         tcc_vl_exp instead of a fixed-size tcc_expression.
23613
23614         * doc/c-tree.texi (CALL_EXPR): Document new representation and
23615         accessors for CALL_EXPRs.
23616         (AGGR_INIT_EXPR): Likewise.
23617
23618 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
23619             Brooks Moses  <brooks.moses@codesourcery.com>
23620             Lee Millward  <lee.millward@codesourcery.com>
23621
23622         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
23623         (expand_builtin_nonlocal_goto): Change parameter to be entire
23624         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
23625         (expand_builtin_prefetch): Likewise.
23626         (expand_builtin_classify_type): Likewise.
23627         (mathfn_built_in): Return NULL_TREE instead of 0.
23628         (expand_errno_check): Use new CALL_EXPR accessors.
23629         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
23630         Return NULL_RTX instead of 0.
23631         (expand_builtin_mathfn_2): Likewise.
23632         (expand_builtin_mathfn_3): Likewise.
23633         (expand_builtin_interclass_mathfn): Likewise.
23634         (expand_builtin_sincos): Likewise.
23635         (expand_builtin_cexpi): Likewise.
23636         (expand_builtin_int_roundingfn): Likewise.
23637         (expand_builtin_int_roundingfn_2): Likewise.
23638         (expand_builtin_pow): Likewise.
23639         (expand_builtin_powi): Likewise.
23640         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
23641         of arglist, fixing callers appropriately.  Use new CALL_EXPR
23642         accessors and constructors.  Return NULL_RTX instead of 0.
23643         (expand_builtin_strstr): Likewise.
23644         (expand_builtin_strchr): Likewise.
23645         (expand_builtin_strrchr): Likewise.
23646         (expand_builtin_strpbrk): Likewise.
23647         (expand_builtin_memcpy): Likewise.
23648         (expand_builtin_mempcpy): Likewise.
23649         (expand_builtin_mempcpy_args): New.
23650         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
23651         (expand_builtin_memmove_args): New.
23652         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
23653         (expand_movstr): Likewise.
23654         (expand_builtin_strcpy): Likewise.
23655         (expand_builtin_strcpy_args): New.
23656         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
23657         (expand_builtin_strncpy): Likewise.
23658         (expand_builtin_memset): Likewise.
23659         (expand_builtin_memset_args): New.
23660         (expand_builtin_bzero): Similarly to expand_builtin_memset.
23661         (expand_builtin_memcmp): Likewise.
23662         (expand_builtin_strcmp): Likewise.
23663         (expand_builtin_strncmp): Likewise.
23664         (expand_builtin_strcat): Likewise.
23665         (expand_builtin_strncat): Likewise.
23666         (expand_builtin_strspn): Likewise.
23667         (expand_builtin_strcspn): Likewise.
23668         (expand_builtin_args_info): Likewise.
23669         (expand_builtin_va_start): Likewise.
23670         (gimplify_va_arg_expr): Likewise.
23671         (expand_builtin_va_end): Likewise.
23672         (expand_builtin_va_copy): Likewise.
23673         (expand_builtin_frame_address): Likewise.
23674         (expand_builtin_alloca): Likewise.
23675         (expand_builtin_bswap): Likewise.
23676         (expand_builtin_unop): Likewise.
23677         (expand_builtin_fputs): Likewise.
23678         (expand_builtin_expect): Likewise.
23679         (expand_builtin_fabs): Likewise.
23680         (expand_builtin_copysign): Likewise.
23681         (expand_builtin_printf): Likewise.
23682         (expand_builtin_fprintf): Likewise.
23683         (expand_builtin_sprintf): Likewise.
23684         (expand_builtin_init_trampoline): Likewise.
23685         (expand_builtin_signbit): Likewise.
23686         (expand_builtin_fork_or_exec): Likewise.
23687         (expand_builtin_sync_operation): Likewise.
23688         (expand_builtin_compare_and_swap): Likewise.
23689         (expand_builtin_lock_test_and_set): Likewise.
23690         (expand_builtin_lock_release): Likewise.
23691         (expand_builtin): Likewise.
23692         (builtin_mathfn_code): Likewise.
23693
23694         (fold_builtin_constant_p): Pass call arguments individually instead
23695         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
23696         accessors and constructors.  Return NULL_TREE instead of 0.
23697         (fold_builtin_expect): Likewise.
23698         (fold_builtin_classify_type): Likewise.
23699         (fold_builtin_strlen): Likewise.
23700         (fold_builtin_nan): Likewise.
23701         (integer_valued_real_p): Likewise.
23702         (fold_trunc_transparent_mathfn): Likewise.
23703         (fold_fixed_mathfn): Likewise.
23704         (fold_builtin_cabs): Likewise.
23705         (fold_builtin_sqrt): Likewise.
23706         (fold_builtin_cbrt): Likewise.
23707         (fold_builtin_cos): Likewise.
23708         (fold_builtin_cosh): Likewise.
23709         (fold_builtin_tan): Likewise.
23710         (fold_builtin_sincos): Likewise.
23711         (fold_builtin_cexp): Likewise.
23712         (fold_builtin_trunc): Likewise.
23713         (fold_builtin_floor): Likewise.
23714         (fold_builtin_ceil): Likewise.
23715         (fold_builtin_round): Likewise.
23716         (fold_builtin_int_roundingfn): Likewise.
23717         (fold_builtin_bitop): Likewise.
23718         (fold_builtin_bswap): Likewise.
23719         (fold_builtin_logarithm): Likewise.
23720         (fold_builtin_hypot): Likewise.
23721         (fold_builtin_pow): Likewise.
23722         (fold_builtin_powi): Likewise.
23723         (fold_builtin_exponent): Likewise.
23724         (fold_builtin_memset): Likewise.
23725         (fold_builtin_bzero): Likewise.
23726         (fold_builtin_memory_op): Likewise.
23727         (fold_builtin_bcopy): Deleted; call site changed to invoke
23728         fold_builtin_memory_op directly.
23729         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
23730         (fold_builtin_strncpy): Likewise.
23731         (fold_builtin_memcmp): Likewise.
23732         (fold_builtin_strcmp): Likewise.
23733         (fold_builtin_strncmp): Likewise.
23734         (fold_builtin_signbit): Likewise.
23735         (fold_builtin_copysign): Likewise.
23736         (fold_builtin_isascii): Likewise.
23737         (fold_builtin_toascii): Likewise.
23738         (fold_builtin_isdigit): Likewise.
23739         (fold_builtin_fabs): Likewise.
23740         (fold_builtin_abs): Likewise.
23741         (fold_builtin_fmin_fmax): Likewise.
23742         (fold_builtin_carg): Likewise.
23743         (fold_builtin_classify): Likewise.
23744         (fold_builtin_unordered_cmp): Likewise.
23745
23746         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
23747         New functions split out from fold_builtin_1.
23748         (fold_builtin_n): New.
23749         (fold_builtin_varargs): New.
23750         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
23751         instead.
23752         (fold_call_expr): New.
23753         (build_function_call_expr): Rewrite to use new helper function.
23754         (fold_builtin_call_list): New.
23755         (build_call_expr): New.
23756         (fold_builtin_call_valist): New.
23757         (rewrite_call_expr): New.
23758         (validate_arg): New.
23759         (validate_arglist): Change parameter to be entire CALL_EXPR instead
23760         of an arglist.  Change return type to bool.  Use new CALL_EXPR
23761         accessors.
23762
23763         (fold_builtin_strstr): Pass call arguments individually instead
23764         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
23765         accessors and constructors.  Return NULL_TREE instead of 0.
23766         (fold_builtin_strchr): Likewise.
23767         (fold_builtin_strrchr): Likewise.
23768         (fold_builtin_strpbrk): Likewise.
23769         (fold_builtin_strcat): Likewise.
23770         (fold_builtin_strncat): Likewise.
23771         (fold_builtin_strspn): Likewise.
23772         (fold_builtin_strcspn): Likewise.
23773         (fold_builtin_fputs): Likewise.
23774         (fold_builtin_next_arg): Likewise.
23775         (fold_builtin_sprintf): Likewise.
23776
23777         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
23778         NULL_RTX instead of 0.
23779         (expand_builtin_memory_chk): Likewise.
23780         (maybe_emit_chk_warning): Likewise.
23781         (maybe_emit_sprintf_chk_warning): Likewise.
23782
23783         (fold_builtin_object_size): Pass call arguments individually instead
23784         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
23785         accessors and constructors.  Return NULL_TREE instead of 0.
23786         (fold_builtin_memory_chk): Likewise.
23787         (fold_builtin_stxcpy_chk): Likewise.
23788         (fold_builtin_strncpy_chk): Likewise.
23789         (fold_builtin_strcat_chk): Likewise.
23790         (fold_builtin_strcat_chk): Likewise.
23791         (fold_builtin_strncat_chk): Likewise.
23792         (fold_builtin_sprintf_chk): Likewise.
23793         (fold_builtin_snprintf_chk): Likewise.
23794         (fold_builtin_printf): Likewise.
23795         (fold_builtin_vprintf): Likewise.
23796
23797         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
23798         constructors.
23799         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
23800         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23801         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
23802         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
23803         (fold_unary): Likewise.
23804         (fold_binary): Likewise.
23805         (fold_ternary): Remove CALL_EXPR case, since they are no longer
23806         ternary expressions.
23807         (fold): Add logic for tcc_vl_exp.
23808         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
23809         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23810         (fold_build3_stat): Add assertion to flag broken interface for
23811         constructing CALL_EXPRs.
23812         (fold_build_call_list): New.
23813         (fold_build_call_list_initializer): New.
23814         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
23815         constructors.
23816         (fold_strip_sign_ops): Likewise.
23817
23818 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
23819             Brooks Moses  <brooks.moses@codesourcery.com>
23820             Lee Millward  <lee.millward@codesourcery.com>
23821
23822         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
23823         accessors and dump arguments explicitly.
23824
23825         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
23826         TREE_CODE_LENGTH.
23827         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
23828         explicitly.
23829         (print_call_name): Use new CALL_EXPR accessors.
23830
23831         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
23832         CALL_EXPR arguments explicitly instead of as a list.  Use
23833         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23834
23835         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
23836         (vrp_visit_stmt): Likewise.
23837
23838         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
23839         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
23840         TREE_CODE_LENGTH.
23841         (force_move_till_expr): Likewise.
23842
23843         * targhooks.c (default_external_stack_protect_fail): Use
23844         build_call_expr instead of build_function_call_expr.
23845         (default_hidden_stack_protect_fail): Likewise.
23846
23847         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
23848         build the call.
23849
23850         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
23851         and walk arguments explicitly.
23852
23853         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
23854         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23855         (expand_simple_operations): Likewise.
23856         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
23857
23858         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
23859         of TREE_CODE_LENGTH.
23860         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
23861
23862         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
23863         instead of TREE_CODE_LENGTH.
23864
23865         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
23866         (tree_ic_transform): Likewise.
23867         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
23868         parameter instead of arglist.  Fix callers.
23869         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
23870         (tree_stringops_transform): Likewise.
23871         (tree_indirect_call_to_profile): Likewise.
23872         (tree_stringops_values_to_profile): Likewise.
23873
23874         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
23875         (eliminate_tail_call): Likewise.
23876
23877         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
23878
23879         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
23880         Use TREE_OPERAND_LENGTH and generalize to handle any number of
23881         operands.
23882         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
23883
23884         * omp-low.c (build_omp_barrier): Use build_call_expr.
23885         (lower_rec_input_clauses): Likewise.
23886         (lower_reduction_clauses): Likewise.
23887         (expand_parallel_call): Likewise.
23888         (maybe_catch_exception): Likewise.
23889         (expand_omp_for_generic): Likewise.
23890         (expand_omp_for_static_nochunk): Likewise.
23891         (expand_omp_sections): Likewise.
23892         (lower_omp_single_simple): Likewise.
23893         (lower_omp_single_copy): Likewise.
23894         (lower_omp_master): Likewise.
23895         (lower_omp_ordered): Likewise.
23896         (lower_omp_critical): Likewise.
23897
23898         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
23899         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
23900
23901         * tree-gimple.c (is_gimple_call_addr): Fix doc.
23902         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
23903         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
23904
23905         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
23906         and generalize to handle any number of operands.
23907         (chrec_contains_undetermined): Likewise.
23908         (tree_contains_chrecs): Likewise.
23909         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
23910
23911         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
23912
23913         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
23914         fold_call_expr instead of fold_builtin.
23915         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
23916         match declarations there.
23917         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
23918         updates.
23919
23920         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
23921         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23922
23923         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
23924         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
23925
23926         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
23927         accessors.
23928
23929         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
23930         (execute_cse_sincos): Use new CALL_EXPR accessors.
23931
23932         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
23933
23934         * gimple-low.c (lower_function_body): Use build_call_expr.
23935         (lower_builtin_setjmp): Likewise.
23936
23937         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
23938         (set_storage_via_libcall): Likewise.
23939         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
23940         instead of TREE_CODE_LENGTH.
23941         (expand_expr_real_1): Use new CALL_EXPR accessors.
23942
23943         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
23944         generalize to handle any number of operands.
23945         (TB_parent_eq): Likewise.
23946
23947         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
23948         (strip_builtin_expect): Likewise.
23949
23950         * function.c (gimplify_parameters): Use build_call_expr.
23951
23952         * tree-vectorizer.c (vect_is_simple_reduction): Use
23953         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
23954
23955         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
23956         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
23957
23958         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
23959         iterators.
23960
23961         * gimplify.c (build_stack_save_restore): Use build_call_expr.
23962         (gimplify_decl_expr): Likewise.
23963         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
23964         Use new CALL_EXPR iterators.
23965         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
23966         (gimplify_modify_expr_to_memset): Likewise.
23967         (gimplify_variable_sized_compare): Likewise.
23968         (gimplify_omp_atomic_fetch_op): Likewise.
23969         (gimplify_omp_atomic_pipeline): Likewise.
23970         (gimplify_omp_atomic_mutex): Likewise.
23971         (gimplify_function_tree): Likewise.
23972
23973         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
23974         (call_expr_flags): Likewise.
23975         (expand_call): Likewise.
23976
23977         * except.c (expand_builtin_eh_return_data_regno): Pass entire
23978         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
23979         accessors.
23980
23981         * coverage.c (create_coverage): Use build_call_expr.
23982
23983         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
23984         (temp_call_expr_obstack): New.
23985         (pool_copy_list): Delete.
23986         (temp_copy_call_expr): New.
23987         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
23988         CALL_EXPR accessors.  Get rid of special goo for copying argument
23989         lists and use temp_copy_call_expr instead.
23990         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
23991         CALL_EXPR accessors.
23992         (create_expression_by_pieces): Likewise.  Use build_call_array
23993         to construct the result instead of fold_build3.
23994         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
23995         dealing with argument lists.
23996         (init_pre): Remove references to expression_node_pool and
23997         list_node_pool.  Init temp_call_expr_obstack instead.
23998         (fini_pre): Remove references to expression_node_pool and
23999         list_node_pool.
24000
24001         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
24002         and walk arguments explicitly instead of as a list.
24003
24004         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
24005         (mx_register_decls): Likewise.
24006         (mudflap_register_call): Likewise.
24007         (mudflap_finish_file): Likewise.
24008
24009         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
24010         (ipa_callsite_compute_param): Likewise.
24011
24012         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
24013         accessors and constructor.
24014
24015         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
24016         accessors and constructor.
24017         (convert_tramp_reference): Likewise.
24018         (convert_call_expr): Likewise.
24019         (finalize_nesting_tree_1): Likewise.
24020
24021         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
24022         accessors.
24023
24024         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
24025
24026         * tree-inline.c (initialize_inlined_parameters): Pass entire
24027         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
24028         accessors.
24029         (estimate_num_insns_1): Use new CALL_EXPR accessors.
24030         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
24031
24032         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
24033         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24034         (vectorizable_reduction): Likewise.
24035         (vectorizable_call): Use new CALL_EXPR iterators.
24036         (vectorizable_conversion): Use build_call_expr.
24037         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
24038         (vect_gen_widened_results_half): Use build_call_expr.
24039         (vect_setup_realignment): Likewise.
24040         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
24041
24042         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
24043         (pass_through_call): Likewise.
24044         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
24045         fold_builtin.
24046
24047         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
24048         (tree_gen_pow2_profiler): Likewise.
24049         (tree_gen_one_value_profiler): Likewise.
24050         (tree_gen_ic_func_profiler): Likewise.
24051         (tree_gen_average_profiler): Likewise.
24052         (tree_gen_ior_profiler): Likewise.
24053
24054         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
24055         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
24056         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24057
24058         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
24059         of TREE_CODE_LENGTH.
24060
24061         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
24062         of TREE_CODE_LENGTH.
24063
24064         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
24065         constructor.
24066         (convert_to_integer): Likewise.
24067
24068         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
24069         accessors.
24070
24071 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24072             Brooks Moses  <brooks.moses@codesourcery.com>
24073             Lee Millward  <lee.millward@codesourcery.com>
24074
24075         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
24076         accessors.
24077         * config/frv/frv.c (frv_expand_builtin): Likewise.
24078         * config/s390/s390.c (s390_expand_builtin): Likewise.
24079
24080         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
24081         (sparc_expand_builtin): Use new CALL_EXPR accessors.
24082
24083         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
24084         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
24085         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
24086         (ix86_expand_store_builtin): Likewise.
24087         (ix86_expand_unop_builtin): Likewise.
24088         (ix86_expand_unop1_builtin): Likewise.
24089         (ix86_expand_sse_compare): Likewise.
24090         (ix86_expand_sse_comi): Likewise.
24091         (ix86_expand_vec_init_builtin): Likewise.
24092         (ix86_expand_vec_ext_builtin): Likewise.
24093         (ix86_expand_vec_set_builtin): Likewise.
24094         (ix86_expand_builtin): Use new CALL_EXPR accessors.
24095
24096         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
24097         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
24098
24099         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
24100         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
24101         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
24102
24103         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
24104         build_call_expr.
24105         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
24106         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
24107         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24108         (altivec_expand_abs_builtin): Likewise.
24109         (rs6000_expand_binop_builtin): Likewise.
24110         (altivec_expand_predicate_builtin): Likewise.
24111         (altivec_expand_lv_builtin): Likewise.
24112         (spe_expand_stv_builtin): Likewise.
24113         (altivec_expand_stv_builtin): Likewise.
24114         (rs6000_expand_ternop_builtin): Likewise.
24115         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
24116         (altivec_expand_st_builtin): Likewise.
24117         (altivec_expand_dst_builtin): Likewise.
24118         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
24119         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24120         (altivec_expand_vec_set_builtin): Likewise.
24121         (altivec_expand_vec_ext_builtin): Likewise.
24122         (altivec_expand_builtin): Use new CALL_EXPR accessors.
24123         (spe_expand_builtin): Likewise.
24124         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
24125         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24126         (spe_expand_evsel_builtin): Likewise.
24127         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
24128         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
24129
24130         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
24131         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
24132         (arm_expand_unop_builtin): Likewise.
24133         (arm_expand_builtin): Use new CALL_EXPR accessors.
24134
24135         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
24136         accessors.
24137
24138         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
24139         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
24140         Fix callers.
24141         (bfin_expand_unop_builtin): Likewise.
24142         (bfin_expand_builtin): Use new CALL_EXPR accessors.
24143
24144 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24145             Brooks Moses  <brooks.moses@codesourcery.com>
24146             Lee Millward  <lee.millward@codesourcery.com>
24147
24148         * c-semantics.c (build_stmt): Add internal diagnostic check.
24149
24150         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
24151         accessors.  Print arguments explicitly instead of as a list.
24152
24153         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
24154
24155         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
24156         (c_finish_omp_flish): Likewise.
24157
24158         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
24159         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
24160         instead of TREE_CODE_LENGTH.
24161         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
24162         (c_warn_unused_result): Likewise.
24163
24164 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24165
24166         PR c/26494
24167         * doc/invoke.texi (Warning Options): Remove
24168         -Werror-implicit-function-declaration.
24169         (Wimplicit-function-declaration): Update description.
24170         * opts.c (common_handle_option): Move handling of -Werror=* to...
24171         (enable_warning_as_error): ...here.
24172         * opts.h (enable_warning_as_error): Declare.
24173         * c-decl.c (implicit_decl_warning): Unless
24174         -Wno-implicit-function-declaration is given, emit a pedwarn if
24175         -std=c99 or emit a warning if -Wimplicit-function-declaration.
24176         * c.opt (Wimplicit-function-declaration): Replace
24177         mesg_implicit_function_declaration with
24178         warn_implicit_function_declaration.
24179         * c-opts.c (c_common_handle_option):
24180         -Werror-implicit-function-declaration is exactly equal as
24181         -Werror=implicit-function-declaration.
24182         (set_Wimplicit): Replace mesg_implicit_function_declaration with
24183         warn_implicit_function_declaration.
24184         (c_common_post_options): -Wimplict-function-declaration is enabled
24185         by default by -std=c99, otherwise is disabled by default.
24186         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
24187
24188 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24189
24190         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
24191         DECL on the rhs to a DECL on the lhs for debug info purposes if the
24192         former is ignored but not the latter.
24193
24194 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24195
24196         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
24197         is made and the reference doesn't use the alias set of its type,
24198         do not create the temporary using that type.
24199
24200 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
24201
24202         * jump.c: Remove prototypes for delete_computation and
24203         delete_prior_computation.
24204
24205 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
24206
24207         * jump.c (get_label_after): Delete.
24208         (get_label_before, delete_computation, delete_jump,
24209         delete_prior_computation, follow_jumps): Move...
24210         * reorg.c (delete_computation, delete_prior_computation): ... here...
24211         (get_label_before, delete_jump): ... making these static ...
24212         (follow_jumps): ... and simplifying this since it only runs after
24213         reload.
24214         * rtl.h (get_label_after, get_label_before, delete_jump,
24215         follow_jumps): Delete prototypes.
24216
24217 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
24218
24219         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
24220
24221 2007-02-15  Nick Clifton  <nickc@redhat.com>
24222
24223         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
24224         order to prevent it from being munged by the target.
24225
24226 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
24227
24228         * config/i386/i386.md: Remove misleading comment.
24229
24230 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24231
24232         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
24233         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
24234         invalid patterns.
24235
24236 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24237
24238         * tree-sra.c (instantiate_missing_elements): Canonicalize
24239         bit-field types.
24240         (sra_build_assignment): New.
24241         (generate_copy_inout, generate_element_copy,
24242         generate_element_zero, generate_one_element_init): Use it.
24243
24244 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24245
24246         * tree-sra.c (instantiate_missing_elements): Canonicalize
24247         bit-field types.
24248         (sra_build_assignment): New.
24249         (generate_copy_inout, generate_element_copy,
24250         generate_element_zero, generate_one_element_init): Use it.
24251
24252 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24253
24254         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
24255         limbo die nodes.
24256
24257 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
24258
24259         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
24260         types as aggregates not scalars.
24261         * function.c (assign_stack_temp_for_type): Likewise.
24262
24263 2007-02-14  Roger Sayle  <roger@eyesopen.com>
24264             Zdenek Dvorak  <dvorakz@suse.cz>
24265
24266         * tree-dump.c (dump_switch_p_1): Require exact match of the option
24267         name.
24268
24269 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
24270
24271         * passes.c (next_pass_1): Clear the next field of the copied
24272         pass structure.
24273
24274 2007-02-14  Richard Henderson  <rth@redhat.com>
24275
24276         * tree-sra.c (early_sra): New.
24277         (decl_can_be_decomposed_p): Deny va_list if early_sra.
24278         (tree_sra_early, pass_sra_early): New.
24279         * tree-pass.h (pass_sra_early): Declare.
24280         * passes.c (init_optimization_passes): Use it.
24281
24282 2007-02-14  Richard Guenther  <rguenther@suse.de>
24283
24284         * flags.h (issue_strict_overflow_warning): Convert to a macro.
24285
24286 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
24287
24288          PR tree-optimization/30771
24289         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
24290         also phi nodes.
24291         (vect_analyze_operations): Induction phis can now be marked as
24292         used_in_loop.
24293         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
24294         Update documentation accordingly.
24295
24296 2007-02-14  Nick Clifton  <nickc@redhat.com>
24297
24298         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
24299         most 3 arguments are supported.
24300         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
24301
24302 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
24303
24304         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
24305         Ensure dst->current is valid.
24306
24307 2007-02-13  Paul Brook  <paul@codesourcery.com>
24308
24309         * config.gcc: Add arm*-*-uclinux-*eabi.
24310         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
24311         (SUBTARGET_EXTRA_LINK_SPEC): Define.
24312         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
24313         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
24314         (LINK_SPEC): Define.
24315         (LIB_SPEC): Define.
24316         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
24317         register.
24318         * config/arm/uclinux-eabi.h: New file.
24319         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
24320         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
24321         based targets.
24322
24323 2007-02-13  Ian Lance Taylor  <iant@google.com>
24324
24325         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
24326         * flags.h (warn_strict_overflow): Declare.
24327         (enum warn_strict_overflow_code): Define.
24328         (issue_strict_overflow_warning): New static inline function.
24329         * opts.c (warn_strict_overflow): New variable.
24330         (common_handle_option): Handle OPT_Wstrict_overflow and
24331         OPT_Wstrict_overflow_.
24332         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
24333         OPT_Wall.
24334         * fold-const.c: Include intl.h.
24335         (fold_deferring_overflow_warnings): New static variable.
24336         (fold_deferred_overflow_warning): New static variable.
24337         (fold_deferred_overflow_code): New static variable.
24338         (fold_defer_overflow_warnings): New function.
24339         (fold_undefer_overflow_warnings): New function.
24340         (fold_undefer_and_ignore_overflow_warnings): New function.
24341         (fold_deferring_overflow_warnings_p): New function.
24342         (fold_overflow_warning): New static function.
24343         (make_range): Add strict_overflow_p parameter.  Change all
24344         callers.
24345         (extract_muldiv, extract_muldiv_1): Likewise.
24346         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
24347         tree_expr_nonnegative_p.
24348         (fold_negate_expr): Call fold_overflow_warning.
24349         (fold_range_test): Likewise.
24350         (fold_comparison): Likewise.
24351         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
24352         instead of tree_expr_nonnegative_p.
24353         (tree_expr_nonnegative_warnv_p): Rename from
24354         tree_expr_nonnegative_p, add strict_overflow_p parameter.
24355         (tree_expr_nonnegative_p): New function.
24356         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
24357         strict_overflow_p parameter.
24358         (tree_expr_nonzero_p): New function.
24359         * passes.c (verify_interpass_invariants): New static function.
24360         (execute_one_pass): Call it.
24361         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
24362         warnings.
24363         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
24364         (estimate_numbers_of_iterations): Likewise.
24365         (scev_probably_wraps_p): Likewise.
24366         * tree-ssa-ccp.c: Include "toplev.h".
24367         (evaluate_stmt): Defer fold overflow warnings until we know we are
24368         going to optimize.
24369         (struct fold_stmt_r_data): Add stmt field.
24370         (fold_stmt_r): Defer fold overflow warnings until we know we
24371         optimized.
24372         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
24373         (fold_stmt_inplace): Likewise.
24374         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
24375         (cleanup_control_expr_graph): Defer fold overflow warnings until
24376         we know we are going to optimize.
24377         * tree-cfg.c (fold_cond_expr_cond): Likewise.
24378         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
24379         Likewise.
24380         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
24381         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
24382         * tree-ssa-loop-manip.c (create_iv): Likewise.
24383         * c-typeck.c (build_conditional_expr): Likewise.
24384         (build_binary_op): Likewise.
24385         * tree-vrp.c (vrp_expr_computes_nonzero): Call
24386         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
24387         (extract_range_from_unary_expr): Likewise.
24388         * simplify-rtx.c (simplify_const_relational_operation): Warn when
24389         assuming that signed overflow does not occur.
24390         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
24391         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
24392         (fold_defer_overflow_warnings): Declare.
24393         (fold_undefer_overflow_warnings): Declare.
24394         (fold_undefer_and_ignore_overflow_warnings): Declare.
24395         (fold_deferring_overflow_warnings_p): Declare.
24396         (tree_expr_nonzero_warnv_p): Declare.
24397         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
24398         of warning options.
24399         (Warning Options): Document -Wstrict-overflow.
24400         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
24401         (tree-ssa-ccp.o): Likewise.
24402         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
24403         (fold-const.o): Depend on intl.h.
24404
24405 2007-02-13  Ian Lance Taylor  <iant@google.com>
24406
24407         PR middle-end/30751
24408         * lower-subreg.c (resolve_simple_move): Decompose subregs in
24409         addresses.
24410
24411 2007-02-13  Stuart Hastings  <stuart@apple.com>
24412
24413         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
24414
24415 2007-02-13  Richard Henderson  <rth@redhat.com>
24416
24417         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
24418         handled_component_p before looking for the indirect_ref.
24419
24420 2007-02-13  Richard Henderson  <rth@redhat.com>
24421
24422         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
24423         remove flags clobber.
24424         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
24425         (bswaphi_lowpart): New.
24426         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
24427         remove TARGET_BSWAP test.  Delete expander of the same name.
24428
24429         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
24430         (expand_unop): Use them.
24431
24432 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
24433
24434         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
24435         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
24436         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
24437         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
24438         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
24439         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
24440         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
24441         assembler dialect choice from asm templates.
24442
24443 2007-02-12  Richard Henderson  <rth@redhat.com>
24444
24445         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
24446         (fixuns_trunc<SSEMODEF>si2): Use it.
24447         * config/i386/sse.md (vec_setv4sf_0): Export.
24448         * config/i386/i386.c (ix86_build_const_vector): Export.
24449         (ix86_split_convert_uns_si_sse): Rename from
24450         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
24451         * config/i386/i386-protos.h: Update.
24452
24453 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24454
24455         PR c/29521
24456         * c-typeck.c (c_finish_return): Improve warning message.
24457
24458 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24459
24460         * alias.c (find_symbolic_term): Delete unused function.
24461
24462 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
24463
24464         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
24465         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
24466         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
24467
24468 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
24469
24470         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
24471         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
24472         the function, temporarily point the debug interface to the null one.
24473
24474 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
24475
24476         * dwarf2out.c (round_up_to_align): New static function.
24477         (field_byte_offset): Use it to round the offset.
24478
24479 2007-02-12  Richard Henderson  <rth@redhat.com>
24480
24481         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
24482         (inswl_const): Export.
24483
24484 2007-02-12  Richard Henderson  <rth@redhat.com>
24485
24486         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
24487         result mode of the libcall, convert back to outmode.
24488
24489 2007-02-12  Roger Sayle  <roger@eyesopen.com>
24490
24491         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
24492         (bswapdi2): New define_expand to implement 32-bit implementation.
24493
24494 2007-02-12  Nick Clifton  <nickc@redhat.com>
24495
24496         * doc/invoke.texi (Overall Options): Document --help=.
24497         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
24498         (cc1_options): Pass --help= on to cc1.
24499         (display_help): Add description of --help=.
24500         (process_command): Add code to handle --help=.  Allow translated
24501         --help and --target-help switches to be passed on to compiler
24502         sub-process.
24503         (main): Remove unused if statement.
24504         * opts.c (columns): Remove.
24505         (LEFT_COLUMN): Define.
24506         (wrap_help): Add columns argument.
24507         (print_filtered_help): Change parameters to be an include bitmask,
24508         an exclude bitmask, an any bitmask and the column width.  Move the
24509         code to display the params list here.  Add code to display the
24510         status of options rather than their descriptions if the quiet flag
24511         is not active.
24512         (print_specific_help): Change parameters to be an include bitmask,
24513         an exclude bitmask and an any bitmask.  Move code to look up the
24514         column width here.  Decide upon the title for an options listing.
24515         (common_handle_options): Add code to handle --help=.  Adapt code
24516         for --help and --target-help to use the revised form of the
24517         print_specific_help function.
24518         (print_help): Delete.
24519         (print_param_help): Delete.
24520         (print_switch): Delete.
24521         * opts.h (cl_lang_count): Add prototype.
24522         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
24523         CL_MAX_OPTION_CLASS): New defines.
24524         * optc-gen.awk: Add construction of cl_lang_count.
24525         * c.opt: Add Warning attribute to warning options and Optimization
24526         attribute to optimization options.
24527         * common.opt: Likewise.
24528         Add --help=.
24529         Add -fhelp and -ftarget-help as aliases for the transformed --help
24530         and --target-help options.
24531         * opt-functions.awk: Add code to handle Warning and Optimization
24532         attributes.
24533
24534 2007-02-12  Richard Henderson  <rth@redhat.com>
24535
24536         * config/alpha/constraints.md: New file.
24537         * config/alpha/alpha.c: Include tm-constrs.h.
24538         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
24539         alpha_extra_constraint): Remove.
24540         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
24541         * config/alpha/alpha-protos.h: Update.
24542         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
24543         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
24544         (EXTRA_CONSTRAINT): Remove.
24545         * config/alpha/alpha.md: Include constraints.md.
24546         (adddi splitter): Use satisfies_constraint_*.
24547         * config/alpha/predicates.md (add_operand): Likewise.
24548         (sext_add_operand, addition_operation): Likewise.
24549
24550 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
24551
24552         PR tree-optimization/29145
24553         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
24554         in our handling of restrict qualified pointers.
24555
24556 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24557
24558         PR middle-end/7651
24559         * doc/invoke.texi (Wunused-value): Update description.
24560         (Wextra): Delete item.
24561         * opts.c (set_Wextra): Don't use the value of Wextra to set the
24562         value of Wunused-value.
24563         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
24564         (c_finish_stmt_expr): Don't check extra_warnings.
24565         (emit_side_effect_warnings): The caller is responsible to check
24566         warn_unused_value.
24567
24568 2007-02-11  Roger Sayle  <roger@eyesopen.com>
24569             Matt Thomas  <matt@3am-software.com>
24570
24571         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
24572
24573 2007-02-11  Roger Sayle  <roger@eyesopen.com>
24574
24575         * simplify-rtx.c (simplify_relational_operation_1): Optimize
24576         comparisons of POPCOUNT against zero.
24577         (simplify_const_relational_operation): Likewise.
24578
24579 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24580
24581         * doc/invoke.texi (Wextra): Delete outdated paragraph.
24582
24583 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24584
24585         * dwarf2out.c (root_type): Delete unused function.
24586
24587 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24588
24589         * genattrtab.c (contained_in_p): Delete unused function.
24590         (write_expr_attr_cache): Likewise.
24591
24592 2007-02-11  Jan Hubicka  <jh@suse.cz>
24593
24594         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
24595         previous patch.
24596
24597 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
24598
24599         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
24600         to add the REG_EQ* note.
24601         * see.c (see_merge_one_use_extension): Likewise.
24602         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
24603         turn REG_EQUAL notes into REG_EQUIV notes if the target
24604         register may have more than one set.
24605         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
24606         * gcse.c (try_replace_reg): Likewise.
24607         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
24608         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
24609         more than one REG_EQUIV note.
24610         * reload1.c (gen_reload): Use set_unique_reg_note.
24611
24612 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
24613
24614         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
24615         (ix86_builtin_conversion): New function.
24616
24617 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
24618
24619         PR target/29487
24620         * tree.h (DECL_REPLACEABLE_P): New macro.
24621         * except.c (set_nothrow_function_flags): Likewise.
24622
24623 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
24624             Ira Rosen  <irar@il.ibm.com>
24625             Dorit Nuzman  <dorit@il.ibm.com>
24626
24627         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
24628         * targhooks.c (default_builtin_vectorized_conversion): New.
24629         * targhooks.h (default_builtin_vectorized_function): New declaration.
24630         * target.h (struct vectorize): Add builtin_conversion field.
24631         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
24632         stmt_vec_info_type value.
24633         (vectorizable_conversion): New declaration.
24634         * tree-vect-analyze.c (vect_analyze_operations): Add
24635         vectorizable_conversion call.
24636         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
24637         * tree-vect-transform.c (vectorizable_conversion): New function.
24638         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
24639         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
24640         mode.
24641         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
24642         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
24643         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
24644         or ALTIVEC_BUILTIN_VCFSX.
24645
24646 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24647
24648         PR target/30634
24649         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
24650         CONST_DOUBLE and operand 0 is a hard register.
24651         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
24652         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
24653         is a hard floating-point register.
24654
24655 2007-02-10  Richard Henderson  <rth@redhat.com>
24656             Jakub Jelinek  <jakub@redhat.com>
24657             Alexandre Oliva  <aoliva@redhat.com>
24658
24659         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
24660         * builtin-types.def (BT_WORD): Make unsigned.
24661         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
24662         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
24663         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
24664         * c-decl.c (grokdeclarator): Don't error if !have_tls.
24665         * c-parser.c (c_parser_omp_threadprivate): Likewise.
24666         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
24667         emulated tls.
24668         * expr.c (emutls_var_address): New.
24669         (expand_expr_real_1): Expand emulated tls.
24670         (expand_expr_addr_expr_1): Likewise.
24671         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
24672         * output.h (emutls_finish): Declare.
24673         * toplev.c (compile_file): Call it.
24674         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
24675         address before wrapping in CONST.
24676         * varasm.c (emutls_htab, emutls_object_type): New.
24677         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
24678         (get_emutls_object_name, get_emutls_object_type): New.
24679         (get_emutls_init_templ_addr, emutls_decl): New.
24680         (emutls_common_1, emutls_finish): New.
24681         (assemble_variable): When emulating tls, swap decls; generate
24682         constructor for the emutls objects.
24683         (do_assemble_alias): When emulating tls, swap decl and target name.
24684         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
24685         for emulated tls.
24686         * varpool.c (decide_is_variable_needed): Look at force_output.
24687         Recurse for emulated tls.
24688         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
24689         with decide_is_variable_needed.
24690         * emutls.c: New file.
24691         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
24692         tls_object for real tls.
24693
24694 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24695
24696         PR rtl-optimization/29599
24697         * reload1.c (eliminate_regs_in_insn): Take the destination
24698         mode into account when computing the offset.
24699
24700 2007-02-09  Stuart Hastings  <stuart@apple.com>
24701             Richard Henderson  <rth@redhat.com>
24702
24703         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
24704         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
24705         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
24706         fixuns_truncdfhi2): New.
24707         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
24708         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
24709         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
24710         (floatunssidf2): Allow nonimmediate source.
24711         * config/i386/sse.md (movdi_to_sse): New.
24712         (vec_concatv2di): Drop '*'.
24713         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
24714         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
24715         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
24716         New.
24717         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
24718         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
24719         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
24720         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
24721         (ix86_build_signbit_mask): Fix decl of v, refactor to call
24722         ix86_build_const_vector.
24723         (x86_emit_floatuns): Rewrite.
24724
24725 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24726
24727         * genautomata.c (longest_path_length): Delete unused function.
24728         (struct state): Delete unused longest_path_length.
24729         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
24730         (get_free_state): Delete unused.
24731
24732 2007-02-09  Jan Hubicka  <jh@suse.cz>
24733
24734         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
24735         * doc/invoke.texi (inline-unit-growth): Update default value.
24736
24737         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
24738         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
24739         (rebuild_cgraph_edges): Likewise.
24740         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
24741         (dump_cgraph_node): Dump frequencies.
24742         (cgraph_clone_edge): Add frequency scales.
24743         (cgraph_clone_node): Add freuqnecy.
24744         * cgraph.h (cgraph_edge): Add freuqnecy argument.
24745         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
24746         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
24747         * tree-pass.h (TODO_rebuild_frequencies): New constant.
24748         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
24749         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
24750         (save_inline_function_body): Likewise.
24751         * ipa-inline.c: inluce rtl.h
24752         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
24753         (cgraph_edge_badness): Use frequencies.
24754         (cgraph_decide_recursive_inlining): Update clonning.
24755         (cgraph_decide_inlining_of_small_function): Dump frequency.
24756         * predict.c (estimate_bb_frequencies): Export.
24757         * predict.h (estimate_bb_frequencies): Declare.
24758         * tree-inline.c (copy_bb): Watch overflows.
24759         (expand_call_inline): Update call of cgraph_create_edge.
24760         (optimize_inline_calls): Use TODO flags to update frequnecies.
24761         * passes.h: Include predict.h
24762         (init_optimization_passes): Move profile ahead.
24763         (execute_function_todo): Handle TODO_rebuild_frequencies.
24764
24765 2007-02-09  Roger Sayle  <roger@eyesopen.com>
24766
24767         * config/alpha/alpha.c (emit_insxl): Force the first operand of
24768         the insbl or inswl pattern into a register.
24769
24770 2007-02-09  Roger Sayle  <roger@eyesopen.com>
24771
24772         * config/ia64/ia64.md (bswapdi2): New define_insn.
24773
24774 2007-02-09  Richard Henderson  <rth@redhat.com>
24775
24776         * config/i386/constraints.md (Ym): New constraint.
24777         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
24778         (movdi_1_rex64): Split sse and xmm general register moves from
24779         memory move alternatives.  Use conditional register constraints.
24780         (movsf_1, movdf_integer): Likewise.
24781         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
24782         (movdf_integer_rex64): New.
24783         (pushsf_rex64): Fix output constraints.
24784         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
24785         (sse2_stored): Likewise.
24786         (sse2_storeq_rex64): New.
24787         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
24788         amd and not generic.
24789         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
24790         for optimize_size.  Remove SF/DFmode hack.
24791
24792 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
24793
24794         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
24795         (bit_SSE4a): New.
24796
24797 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
24798             Richard Sandiford  <richard@codesourcery.com>
24799
24800         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
24801         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
24802         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
24803         m68k/t-mlib to tmake_file.
24804         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
24805         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
24806         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
24807         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
24808         variable is not empty, add t-$m68k_arch_family to tmake_file.
24809         Add t-mlibs to tmake_file.
24810         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
24811         * config/m68k/t-cf: New file.
24812         * config/m68k/t-m68k: Likewise.
24813         * config/m68k/t-mlibs: Likewise.
24814         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
24815         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
24816         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
24817         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
24818         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
24819         Delete.
24820         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
24821         (INSTALL_LIBGCC): Delete.
24822         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
24823         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
24824         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
24825         (M68K_MLIB_CPU): Define.
24826         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
24827         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
24828         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
24829
24830 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
24831             Richard Guenther  <rguenther@suse.de>
24832
24833         PR middle-end/23361
24834         * fold-const.c (fold_comparison): Handle obfuscated comparisons
24835         against INT_MIN/INT_MAX.
24836         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
24837         file if a loop is removed.
24838
24839 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
24840
24841         * calls.c (store_one_arg): Pass correct alignment to
24842         emit_push_insn for non-BLKmode values.
24843         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
24844         unaligned stack slot via a suitably aligned slot.
24845
24846 2007-02-08  DJ Delorie  <dj@redhat.com>
24847
24848         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
24849         warnings.
24850         (legal_subregs): Use unsigned char, make const.
24851         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
24852
24853 2007-02-08  Paul Brook  <paul@codesourcery.com>
24854
24855         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
24856         special interworking needed.
24857
24858 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
24859
24860         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
24861         conditional to __SSE2__.
24862         (Entries below should have been added to first ChangeLog
24863         entry for amdfam10 dated 2007-02-05)
24864         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
24865         defined.
24866         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
24867         defined.
24868         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
24869         defined.
24870
24871 2007-02-08  DJ Delorie  <dj@redhat.com>
24872
24873         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
24874         * config/m32c/m32c.c (legal_subregs): New.
24875         (m32c_illegal_subreg_p): New.
24876         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
24877         unsupported subregs of hard regs.
24878
24879 2007-02-08  Jan Hubicka  <jh@suse.cz>
24880
24881         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
24882         the same one; always update histograms.
24883
24884 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
24885
24886         * passes.c (init_optimization_passes): Tidy comment.
24887
24888 2007-02-08  Roger Sayle  <roger@eyesopen.com>
24889
24890         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
24891         strip zero_extend, bswap and rotates from POCOUNT's argument.
24892         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
24893         zero_extend and rotates from PARITY's argument.
24894         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
24895         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
24896         of an integer constant at compile-time.
24897
24898 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
24899
24900         PR 30562
24901         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
24902         Update all users.
24903         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
24904         users.
24905         (init_alias_info):
24906         * tree-ssa-live.c (remove_unused_locals): Do not remove
24907         TREE_ADDRESSABLE variables.
24908         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
24909         * tree-ssa-operands.c (add_virtual_operand): Remove argument
24910         FOR_CLOBBER.  Update all users.
24911         If VAR has an associated alias set, add a virtual operand for
24912         it if no alias is found to conflict with the memory reference.
24913
24914 2007-02-07  Jan Hubicka  <jh@suse.cz>
24915             Robert Kidd <rkidd@crhc.uiuc.edu>
24916
24917         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
24918
24919 2007-02-07  Ian Lance Taylor  <iant@google.com>
24920
24921         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
24922
24923 2007-02-07  Roger Sayle  <roger@eyesopen.com>
24924
24925         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
24926         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
24927         tablejumpdi, movsi_to_cr_one): Remove constraints from
24928         define_expand's match_operands.
24929
24930 2007-02-07  Roger Sayle  <roger@eyesopen.com>
24931
24932         * global.c (compute_regsets): Move declatation of "i" inside of
24933         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
24934
24935 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
24936
24937         PR c++/30703
24938         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
24939         of INDIRECT_REF <RESULT_DECL>.
24940
24941         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
24942
24943 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
24944             Kaz Kojima  <kkojima@gcc.gnu.org>
24945
24946         PR target/29746
24947         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
24948         properly.
24949         (sh_initialize_trampoline): Add parentheses to avoid a warning.
24950
24951 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
24952
24953         * doc/loop.texi: Document possibility not to perform disambiguation
24954         of loops with multiple latches.
24955         * cfgloopmanip.c (alp_enum_p): Removed.
24956         (add_loop): Handle subloops.  Use get_loop_body_with_size.
24957         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
24958         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
24959         the new forwarder block.
24960         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
24961         Handle the case latch is NULL.
24962         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
24963         modifications when marking loop exits.
24964         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
24965         be modified.
24966         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
24967         disambiguate_loops_with_multiple_latches.
24968         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
24969         before fix_loop_structure.
24970         * cfgloop.c: Include pointer-set.h and output.h.
24971         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
24972         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
24973         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
24974         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
24975         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
24976         disambiguate_multiple_latches, get_loop_body_with_size,
24977         disambiguate_loops_with_multiple_latches): New functions.
24978         (flow_loop_dump): Dump multiple latch edges.
24979         (flow_loop_nodes_find): Handle loops with multiple latches.
24980         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
24981         (glb_enum_p): Modified.
24982         (get_loop_body): Use get_loop_body_with_size.
24983         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
24984         (AVOID_CFG_MODIFICATIONS): New constant.
24985         (disambiguate_loops_with_multiple_latches, add_loop,
24986         get_loop_body_with_size): Declare.
24987         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
24988
24989 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
24990
24991         PR inline-asm/28686
24992         * global.c (compute_regsets): New function.
24993         (global_alloc): Refactored ELIMINABLE_REGSET
24994         and NO_GLOBAL_ALLOC_REGS computation out.
24995         (rest_of_handle_global_alloc): Call compute_regsets()
24996         for non-optimizing case.
24997
24998 2007-02-06  Richard Henderson  <rth@redhat.com>
24999
25000         * config/i386/constraints.md (Y2): Rename from Y.
25001         (Yi): New constraint.
25002         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
25003         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
25004         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
25005         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
25006         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
25007         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
25008         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
25009         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
25010         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
25011         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
25012         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
25013         vec_extractv2si_1): Change Y constraints to Y2.
25014         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
25015         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
25016         Change Y constraints to Y2.
25017         (sse2_loadld): Change Y constraints to x.
25018
25019 2007-02-06  Roger Sayle  <roger@eyesopen.com>
25020
25021         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
25022         (parity<mode>2): New define_expand using rs6000_emit_parity.
25023         * config/rs6000/rs6000.c (rs6000_emit_popcount,
25024         rs6000_emit_parity): New functions.
25025         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
25026         rs6000_emit_parity): Prototype here.
25027
25028 2007-02-06  Ian Lance Taylor  <iant@google.com>
25029
25030         * lower-subreg.c (simple_move_operand): Reject CONST.
25031         (resolve_clobber): Call validate_change rather than directly
25032         assigning to XEXP (pat, 0).
25033
25034 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
25035
25036         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
25037         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
25038         (tree-cfg.o): Remove hashtab.h dependency.
25039
25040         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
25041         (struct ivopts_data): Change niters to pointer_map_t.
25042         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
25043         (niter_for_exit): Create pointer_map on demand.  Change for
25044         pointer_map API.
25045         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
25046         (free_loop_data): Destroy data->niters if created and reset field.
25047         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
25048         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
25049
25050         * tree-ssa-reassoc.c: Include pointer-set.h.
25051         (bb_rank): Change to long *.
25052         (operand_rank): Change to pointer_map_t.
25053         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
25054         (insert_operand_rank): Accept long.
25055         (operand_entry_hash, operand_entry_eq): Remove.
25056         (get_rank): Return long.  Adjust for changes above.
25057         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
25058         and operand_rank.
25059         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
25060
25061         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
25062         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
25063         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
25064         is not NULL.
25065         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
25066         directly since it cannot be NULL.
25067         (get_vi_for_tree): Rewrite for pointer_map API.
25068         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
25069         (init_alias_vars): Create vi_for_tree as pointer_map.
25070         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
25071
25072         * tree-cfg.c: Don't include hashtab.h.
25073         (edge_to_cases): Declare as pointer_map.
25074         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
25075         Delete.
25076         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
25077         (start_recording_case_labels): Create edge_to_cases as pointer_map.
25078         (end_recoding_case_labels): Cleanup edge_to_cases manually before
25079         destroying it.
25080         (record_switch_edge): Delete.
25081         (get_cases_for_edge): Adjust for pointer_map API, inline
25082         record_switch_edge (rewritten for new API), remove goto.
25083
25084 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
25085
25086         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
25087         * tree-nested.c: Include pointer-set.h.
25088         (var_map_elt, var_map_eq, var_map_hash): Delete.
25089         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
25090         to pointer_map_t's.
25091         (nesting_info_bitmap_obstack): New.
25092         (lookup_field_for_decl): Adjust for pointer_map API.
25093         (lookup_tramp_for_decl): Adjust for pointer_map API.
25094         (get_nonlocal_debug_decl): Adjust for pointer_map API.
25095         (get_local_debug_decl): Adjust for pointer_map API.
25096         (convert_nl_goto_reference): Adjust for pointer_map API.
25097         (convert_nl_goto_receiver): Adjust for pointer_map API.
25098         (create_nesting_tree): Create outside GGC space.  Create bitmap on
25099         the new obstack.  Create field_map and var_map as pointer_maps.
25100         (free_nesting_tree): Adjust for changes to create_nesting_tree.
25101         (root): Delete.
25102         (lower_nested_functions): Move root here, no need to NULL it.
25103         Initialize and release the obstack.
25104
25105 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
25106
25107         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
25108         Remove prototypes and make them non-static.
25109         (struct tree_int_map): Remove.
25110         * tree.h (struct tree_int_map): Move here, turning TO into an
25111         unsigned int.
25112         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
25113
25114         * tree.h (TREE_COMPLEXITY): Remove.
25115         (struct tree_exp): Remove complexity field.
25116         * tree.c (build1_stat): Don't set it.
25117
25118 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
25119             Victor Kaplansky  <victork@il.ibm.com>
25120
25121         * tree-vectorizer.c (vect_is_simple_use): Support induction.
25122         (vect_is_simple_reduction): Support reduction with induction as
25123         one of the operands.
25124         (vect_is_simple_iv_evolution): Fix formatting.
25125         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
25126         formatting.  Don't mark induction phis for vectorization.
25127         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
25128         * tree-vect-transform.c (get_initial_def_for_induction): New function.
25129         (vect_get_vec_def_for_operand): Support induction.
25130         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
25131         induction case.
25132         (vectorizable_reduction): Support reduction with induction as one of
25133         the operands.
25134         (vectorizable_type_demotion): Use def-type of stmt argument rather
25135         than dummy def-type.
25136
25137         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
25138         flag_tree_scev_cprop.
25139         * common.opt (tree-scev-cprop): New flag.
25140
25141         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
25142         call to vect_get_new_vect_var.
25143
25144 2007-02-06  Ira Rosen  <irar@il.ibm.com>
25145
25146         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
25147         vectype is not NULL.
25148         (vect_pattern_recog_1): Likewise.
25149
25150 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25151
25152         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
25153         (fold_negate_expr): Likewise.
25154
25155 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
25156
25157         PR debug/30189
25158         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
25159         even if cv-qualification is the same.
25160
25161 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
25162
25163         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
25164         __enable_execute_stack on completion.
25165
25166 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25167
25168         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
25169         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
25170         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
25171         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
25172         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
25173         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
25174         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
25175         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
25176
25177 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25178
25179         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
25180         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
25181         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
25182         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
25183         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
25184         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
25185         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
25186         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
25187         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
25188         umuldi3_highpart_rex64, umulsi3_highpart_insn,
25189         umulsi3_highpart_zext, smuldi3_highpart_rex64,
25190         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
25191         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
25192         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
25193         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
25194         sqrtextenddfxf2_i387): Added amdfam10_decode.
25195
25196         * config/i386/athlon.md (athlon_idirect_amdfam10,
25197         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
25198         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
25199         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
25200         athlon_ivector_store_amdfam10): New define_insn_reservation.
25201         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
25202         amdfam10.
25203
25204 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25205
25206         * config/i386/athlon.md (athlon_call_amdfam10,
25207         athlon_pop_amdfam10, athlon_lea_amdfam10): New
25208         define_insn_reservation.
25209         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
25210         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
25211         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
25212
25213 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25214
25215         * config/i386/athlon.md (athlon_sseld_amdfam10,
25216         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
25217         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
25218
25219 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25220
25221         * config/i386/athlon.md (athlon_sseins_amdfam10): New
25222         define_insn_reservation.
25223         * config/i386/i386.md (sseins): Added sseins to define_attr type
25224         and define_attr unit.
25225         * config/i386/sse.md: Set type attribute to sseins for insertq
25226         and insertqi.
25227
25228 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25229
25230         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
25231         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
25232         ssecomi_load_amdfam10, ssecomi_amdfam10,
25233         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
25234         define_insn_reservation.
25235         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
25236
25237 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25238
25239         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
25240         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
25241         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
25242         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
25243         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
25244         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
25245         define_insn_reservation.
25246
25247         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
25248         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
25249         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
25250         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
25251         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
25252
25253 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25254
25255         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
25256         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
25257         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
25258         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
25259         athlon_ssemul_load_k8): Added amdfam10.
25260
25261 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25262
25263         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
25264         (x86_sse_unaligned_move_optimal): New variable.
25265
25266         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
25267         m_AMDFAM10.
25268         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
25269         for unaligned vector SSE double/single precision loads for AMDFAM10.
25270
25271 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25272
25273         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
25274         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
25275         Define TARGET_CPU_DEFAULT_amdfam10.
25276         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
25277         (processor_type): Add PROCESSOR_AMDFAM10.
25278
25279         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
25280         processor_type in config/i386/i386.h.
25281         Enable imul peepholes for TARGET_AMDFAM10.
25282
25283         * config.gcc: Add support for --with-cpu option for amdfam10.
25284
25285         * config/i386/i386.c (amdfam10_cost): New variable.
25286         (m_AMDFAM10): New macro.
25287         (m_ATHLON_K8_AMDFAM10): New macro.
25288         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
25289         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
25290         x86_promote_QImode, x86_integer_DFmode_moves,
25291         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25292         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
25293         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
25294         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
25295         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
25296         Enable/disable for amdfam10.
25297         (override_options): Add amdfam10_cost to processor_target_table.
25298         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
25299         processor_alias_table.
25300         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
25301         (ix86_adjust_cost): Add code for amdfam10.
25302
25303 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25304
25305         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
25306         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
25307         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
25308         * config/i386/i386.h: Add builtin definition for SSE4A.
25309         * config/i386/i386.md: Add support for ABM instructions
25310         (popcnt and lzcnt).
25311         * config/i386/sse.md: Add support for SSE4A instructions
25312         (movntss, movntsd, extrq, insertq).
25313         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
25314         Add -march=amdfam10 flag.
25315         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
25316         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
25317         and amdfam10.
25318         * doc/extend.texi: Add documentation for SSE4A builtins.
25319
25320 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
25321
25322         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
25323
25324 2007-02-05  Richard Guenther  <rguenther@suse.de>
25325
25326         * tree-vectorizer.h (vectorizable_function): Add argument type
25327         argument, change return type.
25328         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
25329         * tree-vect-transform.c (vectorizable_function): Handle extra
25330         argument, return vectorized function decl.
25331         (build_vectorized_function_call): Remove.
25332         (vectorizable_call): Handle calls with result and argument types
25333         differing.  Handle loop vectorization factor correctly.
25334         * targhooks.c (default_builtin_vectorized_function): Adjust for
25335         extra argument.
25336         * targhooks.h (default_builtin_vectorized_function): Likewise.
25337         * target.h (builtin_vectorized_function): Add argument type
25338         argument.
25339         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
25340         extra argument, allow vectorizing of lrintf.
25341         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
25342         documentation of target hook.
25343
25344 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
25345
25346         PR target/30665
25347         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
25348         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
25349         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
25350
25351 2007-02-05  Roger Sayle  <roger@eyesopen.com>
25352
25353         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
25354         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
25355         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
25356         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
25357         before canonicalizing sincos to cexpi.
25358         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
25359
25360 2007-02-05  Roger Sayle  <roger@eyesopen.com>
25361
25362         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
25363         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
25364         (alpha_init_builtins): Use alpha_add_builtins to process tables.
25365
25366 2007-02-05  Roger Sayle  <roger@eyesopen.com>
25367
25368         * mips-tfile.c (initialize_init_file): Correct endianness test.
25369
25370 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
25371
25372         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
25373         the 'y' constraint.
25374
25375 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
25376
25377         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
25378         saves in a PARALLEL before the register assignments.
25379
25380 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
25381
25382         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
25383         DWARF_FRAME_RETURN_COLUMN to be a general register.
25384         * dwarf2out.c (init_return_column_size): New function, split from...
25385         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
25386         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
25387         to be nongeneral registers.
25388         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
25389         integer registers.
25390         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
25391         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
25392
25393 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
25394
25395         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
25396
25397 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
25398
25399         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
25400         (remove_path): Use can_remove_branch_p and remove_branch instead
25401         of loop_delete_branch_edge.
25402         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
25403         (tree_transform_and_unroll_loop): Remove dead branches immediately.
25404         Update profile using scale_dominated_blocks_in_loop.
25405         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
25406         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
25407         (can_remove_branch_p, remove_branch): Declare.
25408         * tree-cfg.c (tree_can_remove_branch_p): New function.
25409         (tree_cfg_hooks): Add tree_can_remove_branch_p.
25410         * cfgrtl.c (rtl_can_remove_branch_p): New function.
25411         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
25412
25413 2007-02-05  Jan Hubicka  <jh@suse.cz>
25414
25415         PR middle-end/30696
25416         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
25417         nodes in cgraph, don't remove offline copy of the function.
25418
25419 2007-02-04  Jan Hubicka  <jh@suse.cz>
25420
25421         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
25422         vectors might cause maybe_lookup_element_for_expr to be called
25423         on non-sra-candidate.
25424
25425 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
25426
25427         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
25428         config/bfin/bfin.md, config/bfin/predicates.md: Follow
25429         spelling conventions.
25430
25431 2007-02-04  Richard Guenther  <rguenther@suse.de>
25432
25433         PR middle-end/30636
25434         * fold-const.c (try_move_mult_to_index): Make sure to not
25435         overflow one dimension of a multi-dimensional array access.
25436
25437 2007-02-04  Jan Hubicka  <jh@suse.cz>
25438
25439         * passes.c (init_optimization_passes): Reindent.
25440
25441 2007-02-04  Jan Hubicka  <jh@suse.cz>
25442             Eric Botcazou  <ebotcazou@adacore.com>
25443
25444         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
25445         (execute_fixup_cfg): Break out the abnormal goto code.
25446         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
25447         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
25448         (optimize_inline_calls): Call make_nonlocal_label_edges.
25449
25450 2007-02-04  Jan Hubicka  <jh@suse.cz>
25451
25452         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
25453         true when something was changed.
25454         (rename_ssa_copies): When something was changed, do
25455         TODO_remove_unused_locals.
25456         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
25457         add TODO_remove_unused_locals when instruction was removed.
25458
25459 2007-02-04  Jan Hubicka  <jh@suse.cz>
25460
25461         * ipa-inline.c (try_inline): Improve debug output; work on already
25462         inline edges too.
25463         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
25464         call try_inline for already inlined edges too when flattening;
25465         inline also functions that make callee growth but overall unit size
25466         reduce.
25467
25468 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
25469
25470         * config/m32c/bitops.md, config/m32c/jump.md,
25471         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
25472         config/m32r/m32r.h, config/m32r/m32r.md,
25473         config/m32r/predicates.md, config/m68hc11/larith.asm,
25474         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
25475         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
25476         config/mips/mips-protos.h, config/mips/mips.c,
25477         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
25478         config/mn10300/mn10300.h, config/mn10300/predicates.md,
25479         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
25480         spelling conventions.
25481
25482         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
25483         Follow spelling conventions.
25484
25485 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
25486
25487         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
25488         warn about C++0x compatibility.
25489
25490 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
25491
25492         * config/h8300/h8300.c, config/h8300/h8300.h,
25493         config/h8300/h8300.md: Follow spelling conventions.
25494
25495 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
25496
25497         PR middle-end/30667
25498         * combine.c (try_combine): Do not substitute source operand
25499         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
25500
25501 2007-02-03  Jan Hubicka  <jh@suse.cz>
25502
25503         PR gcov-profile/30650
25504         * value-prof.c (stringop_block_profile): Fix handling of size counter;
25505         do not divide by zero for never executed counters.
25506         (tree_find_values_to_profile): Fix counters.
25507         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
25508
25509 2007-02-03  Ian Lance Taylor  <iant@google.com>
25510
25511         * lower-subreg.c (simple_move_operand): New static function,
25512         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
25513         operands.
25514         (simple_move): Call simple_move_operand.
25515         (find_decomposable_subregs): Add special handling of MEMs.
25516         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
25517         meaning of return value.  If we see a hard register, test whether
25518         it can store a word_mode value.  Change all callers.
25519
25520 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25521
25522         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
25523         ftrapv insns and expanders.
25524         (subdi3): Change define_expand operand 1 to arith11_operand, and
25525         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
25526         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
25527         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
25528         respectively.
25529
25530         PR middle-end/30174
25531         * varasm.c (notice_global_symbol): Treat global objects as weak when
25532         flag_shlib is true.
25533
25534 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25535
25536         * emit-rtl.c (dconstpi): Delete.
25537         (dconstsqrt2): New.
25538         (init_emit_once): Delete dconstpi and init dconstsqrt2.
25539         * real.h (dconstpi): Delete.
25540         (dconstsqrt2): New.
25541         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
25542         (fold_builtin_hypot): Likewise.
25543
25544 2007-02-03  Tom Tromey  <tromey@redhat.com>
25545
25546         PR driver/30246
25547         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
25548         -gcoff3, -gxcoff3, -gvms3 implies -dD.
25549
25550 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
25551
25552         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
25553         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
25554         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
25555         config/rs6000/cell.md, config/rs6000/darwin.h,
25556         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
25557         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
25558         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
25559         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
25560         typos.  Follow spelling conventions.
25561         * doc/invoke.texi: Follow spelling conventions.
25562
25563 2007-02-03  Roger Sayle  <roger@eyesopen.com>
25564
25565         * simplify-rtx.c (simplify_relational_operation_1): Implement some
25566         canonicalization transformations that attempt to simplify integer
25567         constant comparisons to become comparisons against zero.
25568
25569 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25570
25571         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
25572         fabs(x)*sqrt(2).
25573         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
25574         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
25575
25576 2007-02-02  Mike Stump  <mrs@apple.com>
25577
25578         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
25579         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
25580         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
25581         generate a branch island.
25582
25583 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
25584
25585         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
25586         (xtensa_legitimate_address_p): New.
25587         (xtensa_legitimize_address): New.
25588         (xtensa_output_addr_const_extra): New.
25589         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
25590         (BASE_REG_P): New.
25591         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
25592         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
25593         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
25594         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
25595         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
25596         (xtensa_legitimize_address): New.
25597         (xtensa_output_addr_const_extra): New.
25598
25599 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
25600
25601         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
25602
25603 2007-02-02  Ian Lance Taylor  <iant@google.com>
25604
25605         * expmed.c (expand_divmod): Add comment.
25606
25607 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
25608
25609         * emit-rtl.c (renumber_insns): Remove.
25610         * flags.h: Remove the extern for flag_renumber_insns.
25611         * rtl.h: Remove the prototype for renumber_insns.
25612         * toplev.c (flag_renumber_insns): Remove.
25613
25614 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
25615
25616         Revert for x86 darwin:
25617         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
25618
25619         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
25620         code before the following patch under TARGET_MACHO.
25621         (ix86_function_value_regno_p): Likewise.
25622
25623 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25624
25625         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
25626         COMPLEX_EXPR.
25627
25628 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
25629
25630         PR target/29682
25631         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
25632         loads to general or fp registers.  Add comments.
25633         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
25634
25635 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
25636
25637         * pointer-set.c (insert_aux): Only return insertion slot.
25638         (pointer_set_insert): Adjust.
25639         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
25640         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
25641         pointer_map_traverse): New.
25642         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
25643         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
25644         pointer_map_contains, pointer_map_traverse): Declare.
25645
25646 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
25647
25648         PR middle-end/30473
25649         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
25650         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
25651
25652 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
25653
25654         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
25655
25656         (struct _dep): New type.
25657         (dep_t): New typedef.
25658         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
25659         (DEP_STATUS): New access macro.  The macro with the same name was
25660         renamed to DEP_LINK_STATUS.
25661         (dep_init): Declare function
25662
25663         (struct _dep_link): New type.
25664         (dep_link_t): New typedef.
25665         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
25666         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
25667         (DEP_LINK_STATUS): New macro.
25668         (debug_dep_links): New debug function.
25669
25670         (struct _deps_list): New type.
25671         (deps_list_t): New typedef.
25672         (DEPS_LIST_FIRST): New access macro.
25673         (FOR_EACH_DEP_LINK): New cycle macro.
25674         (create_deps_list, free_deps_list, delete_deps_list): Declare
25675         functions.
25676         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
25677         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
25678         (copy_deps_list_change_con): Ditto.
25679
25680         (move_dep_link): Declare function.
25681
25682         (struct _dep_node): New type.
25683         (dep_node_t): New typedef.
25684         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
25685
25686         (struct haifa_insn_data.back_deps): New field to hold backward
25687         dependencies of the insn.
25688         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
25689         to deps_list_t.
25690         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
25691         Change its type to deps_list_t.
25692         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
25693         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
25694         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
25695
25696         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
25697
25698         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
25699
25700         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
25701         and all callers.
25702         (dep_cost): Declare.
25703
25704         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
25705         (ds_to_dk, dk_to_ds): New functions.
25706
25707         (init_dep_1): New static function.
25708         (init_dep): New function.
25709         (copy_dep): New static function.
25710
25711         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
25712         functions.
25713         (detach_dep_link): New static function.
25714         (move_dep_link): New function.
25715
25716         (dep_links_consistent_p, dump_dep_links): New static functions.
25717         (debug_dep_links): New debugging function.
25718
25719         (deps_obstack, dl_obstack, dn_obstack): New static variables.
25720
25721         (alloc_deps_list, init_deps_list): New static functions.
25722         (create_deps_list): New function.
25723         (clear_deps_list): New static function.
25724         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
25725         (deps_list_consistent_p, dump_deps_list): New static functions.
25726         (debug_deps_list): New function.
25727         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
25728         functions.
25729         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
25730
25731         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
25732         use new scheduler dependencies lists.
25733         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
25734         (sched_analyze): Ditto.  Initialize dependencies lists.
25735         (add_forw_dep, compute_forward_dependences): Update to use new
25736         scheduler dependencies lists.
25737
25738         (init_dependency_caches): Init deps_obstack.
25739         (free_dependency_caches): Free deps_obstack.
25740
25741         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
25742         new scheduler dependencies lists.
25743         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
25744         (add_back_forw_dep, delete_back_forw_dep): Ditto.
25745
25746         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
25747         Update to use new scheduler dependencies lists.
25748         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
25749         (debug_dependencies): Ditto.
25750         (schedule_region): Update comments.
25751
25752         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
25753         scheduler dependencies lists.
25754         (schedule_ebb): Update comments.
25755
25756         * rtl.def (DEPS_LIST): Remove.
25757
25758         * lists.c (unused_deps_list): Remove.
25759         (free_list): Update assertions.
25760
25761         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
25762         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
25763
25764         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
25765         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
25766
25767         * haifa-sched.c (comments): Update.
25768         (insn_cost1): Remove.  Inline the code into insn_cost ().
25769         (insn_cost): Update to use new scheduler dependencies lists.  Move
25770         processing of the dependency cost to dep_cost ().
25771         (dep_cost): New function.  Use it instead of insn_cost () when
25772         evaluating cost of the dependency.  Use compatible interface to
25773         interact with the target.
25774         (priority): Update to use new scheduler dependencies lists.
25775         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
25776         with greater number of insns that depend on the insn.
25777         (schedule_insn): Update to use new scheduler dependencies lists.  Add
25778         code to free backward dependencies lists.  Inline and optimize code
25779         from resolve_dep () - see PR28071.
25780         (ok_for_early_queue_removal): Update to use new scheduler dependencies
25781         lists.  Update call to targetm.sched.is_costly_dependence hook.
25782
25783         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
25784         scheduler dependencies lists.
25785
25786         (resolve_dep): Remove.  Move the logic to schedule_insn ().
25787         (init_h_i_d): Initialize dependencies lists.
25788
25789         (process_insn_depend_be_in_spec): Rename to
25790         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
25791         dependencies lists.
25792         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
25793         Update to use new scheduler dependencies lists.
25794         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
25795
25796         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
25797         new scheduler dependencies lists.
25798         (build_intra_loop_deps): Ditto.
25799
25800         * target.h (struct _dep): Declare to use in
25801         gcc_target.sched.is_costly_dependence.
25802         (struct gcc_target.sched.adjust_cost): Fix typo.
25803         (struct gcc_target.sched.is_costly_dependence): Change signature to
25804         use single dep_t parameter instead of an equivalent triad.
25805         (struct gcc_target.sched.adjust_cost_2): Remove.
25806
25807         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
25808
25809         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
25810
25811         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
25812         documentation.
25813         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
25814
25815         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
25816         (REG_DEP_TRUE): Document.
25817
25818         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
25819         Change signature to correspond to the targetm.sched.adjust_cost hook.
25820         Update use in TARGET_SCHED_ADJUST_COST_2.
25821         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
25822         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
25823         new scheduler dependencies lists.
25824         (ia64_gen_check): Ditto.
25825
25826         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
25827         scheduler dependencies lists.
25828
25829         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
25830         signature to correspond to the targetm.sched.is_costly_dependence hook.
25831         (is_costly_group): Update to use new scheduler dependencies lists.
25832
25833         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
25834         instead of INSN_COST () macro.
25835
25836 2007-02-01  Ian Lance Taylor  <iant@google.com>
25837
25838         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
25839
25840 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
25841
25842         * pa.md (tp_load): Correct mfctl instruction syntax.
25843
25844 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
25845
25846         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
25847         altivec_padding_size calculation on AIX.  Improve comment, add
25848         assert to verify that it's right.
25849
25850         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
25851         64-bit.
25852
25853 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
25854
25855         PR inline-asm/28686
25856         * global.c (global_alloc): Add mising initialization of
25857         ELIMINABLE_REGSET.
25858
25859 2007-02-01  Roger Sayle  <roger@eyesopen.com>
25860
25861         * alias.c (init_alias_analysis): Correct whitespace.
25862         * bb-reorder.c (fix_edges_for_rarely_executed_code,
25863         partition_hot_cold_basic_blocks): Likewise.
25864         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
25865         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
25866         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
25867         fold_builtin_snprintf_chk, fold_builtin_printf,
25868         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
25869         do_mpfr_arg3, do_mpfr_sincos): Likewise.
25870         * cfgcleanup.c (cleanup_cfg): Likewise.
25871         * cfgexpand.c (tree_expand_cfg): Likewise.
25872         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
25873         * function.c (get_next_funcdef_no): Likewise.
25874         * gengtype.c (main): Likewise.
25875         * genmodes.c (main): Likewise.
25876         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
25877         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
25878         * ifcvt.c (noce_emit_move_insn): Likewise.
25879         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
25880         Likewise.
25881         * stor-layout.c (get_best_mode): Likewise.
25882         * tree-ssa-loop-niter.c (get_val_for): Likewise.
25883         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
25884         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
25885         perform_var_substitution, solve_graph): Likewise.
25886         * tree-vrp.c (vrp_finalize): Likewise.
25887
25888 2007-02-01  Ian Lance Taylor  <iant@google.com>
25889
25890         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
25891         high part of a paradoxical subreg, return a constant zero.
25892
25893 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
25894
25895         * toplev.c (lang_dependent_init): Call init_set_costs.
25896         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
25897
25898 2007-02-01  Richard Guenther  <rguenther@suse.de>
25899
25900         PR middle-end/30656
25901         * fold-const.c (fold_negate_expr): Allow negating a
25902         constant if overflow does not change.
25903
25904 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25905
25906         * doc/c-tree.texi (Expression trees): Improve markup.
25907         * doc/tm.texi (Register Classes, Addressing Modes)
25908         (Floating Point): Fix spacing after abbreviations.  Fix some
25909         typos.
25910
25911 2007-02-01  Ben Elliston  <bje@au.ibm.com>
25912
25913         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
25914         * doc/contrib.texi: Likewise.
25915         * doc/install.texi: Likewise.
25916
25917 2007-01-31  Richard Henderson  <rth@redhat.com>
25918             Ian Lance Taylor  <iant@google.com>
25919
25920         * lower-subreg.c: New file.
25921         * rtl.def (CONCATN): Define.
25922         * passes.c (init_optimization_passes): Add pass_lower_subreg and
25923         pass_lower_subreg2.
25924         * emit-rtl.c (update_reg_offset): New static function, broken out
25925         of gen_rtx_REG_offset.
25926         (gen_rtx_REG_offset): Call update_reg_offset.
25927         (gen_reg_rtx_offset): New function.
25928         * regclass.c: Revert patch of 2006-03-05, restoring
25929         reg_scan_update.
25930         (clear_reg_info_regno): New function.
25931         * dwarf2out.c (concatn_loc_descriptor): New static function.
25932         (loc_descriptor): Handle CONCATN.
25933         * common.opt (fsplit_wide_types): New option.
25934         * opts.c (decode_options): Set flag_split_wide_types when
25935         optimizing.
25936         * timevar.def (TV_LOWER_SUBREG): Define.
25937         * rtl.h (gen_reg_rtx_offset): Declare.
25938         (reg_scan_update): Declare.
25939         * regs.h (clear_reg_info_regno): Declare.
25940         * tree-pass.h (pass_lower_subreg): Declare.
25941         (pass_lower_subreg2): Declare.
25942         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
25943         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
25944         -fsplit-wide-types.
25945         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
25946         * Makefile.in (OBJS-common): Add lower-subreg.o.
25947         (lower-subreg.o): New target.
25948
25949 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
25950
25951         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
25952
25953 2007-01-31  Anatoly Sokolov <aesok@post.ru>
25954
25955         PR target/19087
25956         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
25957
25958 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25959
25960         PR middle-end/29335
25961         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
25962
25963 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
25964
25965         * cfgloop.h: Include vec-prim.h.
25966         (enum li_flags): Remove LI_ONLY_OLD.
25967         (loop_iterator): Changed.
25968         (fel_next, fel_init): Iterate over loop tree.
25969         (FOR_EACH_LOOP_BREAK): New macro.
25970         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
25971         FOR_EACH_LOOP.
25972         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
25973         * modulo-sched.c (sms_schedule): Ditto.
25974         * tree-vectorizer.c (vectorize_loops): Ditto.
25975         * doc/loop.texi: Update information on loop numbering and behavior of
25976         FOR_EACH_LOOP wrto new loops.
25977         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
25978         add_to_evolution_1): Test nestedness of loops instead of comparing
25979         their numbers.
25980         * tree-chrec.c (chrec_fold_plus_poly_poly,
25981         chrec_fold_multiply_poly_poly, chrec_evaluate,
25982         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
25983         reset_evolution_in_loop): Ditto.
25984         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
25985
25986 2007-01-31  Dirk Mueller  <dmueller@suse.de>
25987
25988         * c-common.c (warn_about_parentheses): Separate warning about
25989         un-parenthized sequence of comparison operators from the one
25990         which is supposed to warn about x <= y <= z.
25991
25992 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
25993
25994         * optabs.h (enum optab_index): Add new OTI_isinf.
25995         (isinf_optab): Define corresponding macro.
25996         * optabs.c (init_optabs): Initialize isinf_optab.
25997         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
25998         patterns.
25999         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
26000         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
26001         using isinf_optab.
26002         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
26003         expand_builtin_interclass_mathfn.
26004         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
26005         * config/i386/i386.md (UNSPEC_FXAM): New constant.
26006         (fxam<mode>2_i387): New insn pattern.
26007         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
26008         built-in functions as x87 inline asm.
26009
26010 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26011
26012         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
26013
26014 2007-01-30  Eric Christopher  <echristo@apple.com>
26015
26016         * config.gcc: Add geode.
26017
26018 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26019
26020         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
26021         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
26022         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
26023         value-prof.c: Fix comment typos.
26024
26025 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26026
26027         PR c++/24745
26028         * doc/invoke.texi (Wpointer-arith): Document warning.
26029
26030 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
26031
26032         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
26033         the list of discrepancies from the draft TR.
26034
26035 2007-01-30  Dirk Mueller  <dmueller@suse.de>
26036
26037         PR c++/30601
26038         * doc/invoke.texi (-Wreturn-type): Update description to
26039         match new behavior.
26040
26041 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
26042
26043         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
26044
26045 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
26046
26047         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
26048         to handle optabs that operate on floating point input argument and
26049         output to integer output.
26050         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
26051         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
26052         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
26053         expand_builtin_interclass_mathfn ().
26054         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
26055         (ilogbsi2): Remove.
26056         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
26057         ilogbl built-in functions as x87 intrinsics.
26058
26059 2007-01-30  Richard Guenther  <rguenther@suse.de>
26060
26061         PR middle-end/27657
26062         * dwarf2out.c (reference_to_unused): Query varpool if the
26063         variable was output.
26064
26065 2007-01-30  Richard Guenther  <rguenther@suse.de>
26066
26067         PR middle-end/30313
26068         * passes.c (execute_one_pass): Reset in_gimple_form to not
26069         confuse non-unit-at-a-time mode.
26070
26071 2007-01-29  Roger Sayle  <roger@eyesopen.com>
26072             Richard Guenther  <rguenther@suse.de>
26073
26074         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
26075         avoid undefined behaviour on overflow.  Use force_fit_type_double
26076         to construct the constant with the specified TREE_OVERFLOW.
26077
26078 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
26079
26080         * config/dfp-bit.c: Add parameterized support for fp exceptions.
26081         * config/dfp-bit.h: Ditto.
26082
26083 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26084
26085         * c-decl.c (pop_scope): Replace warnings with call to
26086         warn_for_unused_label.
26087         * c-common.h (warn_for_unused_label): Declare.
26088         * c-common.c (warn_for_unused_label): Define.
26089
26090 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26091
26092         * tree-optimize.c (update_inlined_to_pointers): Delete unused
26093         function.
26094
26095 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
26096
26097         * Makefile.in (USER_H): Remove decfloat.h.
26098         * ginclude/decfloat.h: Delete, moving contents to ...
26099         * ginclude/float.h: Add support for decimal floating point,
26100         guarded by __STDC_WANT_DEC_FP__.
26101
26102 2007-01-29  Mike Stump  <mrs@apple.com>
26103
26104         * doc/gccint.texi (Top): Rename Loop Representation to Loop
26105         Analysis and Representation to resolve case insensitive conflict.
26106         * doc/loop.texi (Loop Analysis and Representation): Likewise.
26107
26108 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
26109
26110         * tree.h (struct tree_memory_tag): Add aliases member.
26111         (MTAG_ALIASES): New macro.
26112         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
26113         (add_may_alias): Remove pointer-set. Update for may_aliases being
26114         a bitmap.
26115         (mark_aliases_call_clobbered): Update for may_aliases being a
26116         bitmap.
26117         (compute_tag_properties): Ditto.
26118         (create_partition_for): Ditto.
26119         (compute_memory_partitions): Ditto.
26120         (dump_may_aliases_for): Ditto.
26121         (is_aliased_with): Ditto.
26122         (add_may_alias_for_new_tag): Ditto.
26123         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
26124         (compute_is_aliased): New function.
26125         (compute_may_aliases): Call compute_is_aliased).
26126         (init_alias_info): Initialize alias_bitmap_obstack.
26127         (union_alias_set_into): New function.
26128         (compute_flow_sensitive_aliasing): Use union_aliases_into.
26129         (have_common_aliases_p): Rewrite to take two bitmaps and use
26130         intersection.
26131         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
26132         Update for bitmaps.
26133         (finalize_ref_all_pointers): Update for add_may_alias changes.
26134         (new_type_alias): Ditto.
26135         * tree-flow-inline.h (may_aliases): Return a bitmap.
26136         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
26137         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
26138         may_aliases being a bitmap.
26139         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
26140         may_aliases now returns a bitmap.
26141         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
26142         being a bitmap.
26143         * tree-ssa-operands.c (add_virtual_operand): Update for
26144         may_aliases being a bitmap.
26145
26146 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
26147
26148         PR tree-optimization/30630
26149         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
26150         variable as changed.
26151
26152 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
26153
26154         PR c++/28266
26155         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
26156         expanded only once even if an error occurs.
26157
26158 2007-01-29  Ben Elliston  <bje@au.ibm.com>
26159
26160         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
26161         (__gcov_average_profiler): Likewise.
26162         (__gcov_ior_profiler): Likewise.
26163         (__gcov_merge_ior): Likewise.
26164
26165 2007-01-28  Jan Hubicka  <jh@suse.cz>
26166
26167         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
26168         * value-prof.c (stringop_block_profile): Likewise.
26169
26170 2007-01-28  Jan Hubicka  <jh@suse.cz>
26171
26172         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
26173         Add variant handling histograms; add wrapper.
26174         (clear_storage_via_libcall): Export.
26175         (emit_block_move_hints): Break out from ...; add histograms.
26176         (emit_block_move): ... this one.
26177         (clear_storage_hints): Break out from ...; add histograms.
26178         (clear_storage): ... this one.
26179         (set_storage_via_memset): Handle histogram.
26180         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
26181         (clear_storage_hints, clear_storage_via_libcall): Declare.
26182         (set_storage_via_setmem): Update prototype.
26183         * doc/md.texi (movmem, setmem): Document new arguments.
26184
26185         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
26186         Add new histograms.
26187         (stringop_block_profile): New global function.
26188         (tree_stringops_values_to_profile): Profile block size and alignment.
26189         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
26190         HIST_TYPE_IOR.
26191         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
26192         (stringop_block_profile): Declare.
26193         * builtins.c: Include value-prof.h.
26194         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
26195         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
26196         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
26197         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
26198         * profile.c (instrument_values): Add new counters.
26199         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
26200         calls.
26201         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
26202         (tree_init_edge_profiler): Build new profilers.
26203         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
26204         (pass_tree_profile): Add dump.
26205         (tree_profile_hooks): Update.
26206         * Makefile.in (LIBGCOV): Add new constants.
26207         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
26208         __gcov_ior_profiler): New.
26209         * i386.md (movmem/setmem expanders): Add new optional arguments.
26210
26211 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
26212
26213         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
26214
26215 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
26216
26217         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
26218         (tree_unswitch_single_loop): Pass eni_size_weights to
26219         tree_num_loop_insns.
26220         * tree-ssa-loop-manip.c: Include tree-inline.h.
26221         (can_unroll_loop_p): Pass eni_size_weights to
26222         tree_num_loop_insns.
26223         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
26224         Pass eni_size_weights to estimate_num_insns.
26225         * tree.h (init_inline_once): Export.
26226         * toplev.c (backend_init): Call init_inline_once.
26227         * cgraphunit.c (cgraph_process_new_functions,
26228         cgraph_analyze_function): Pass eni_inlining_weights to
26229         estimate_num_insns.
26230         * ipa-inline.c (compute_inline_parameters): Ditto.
26231         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
26232         to estimate_num_insns.
26233         (try_unroll_loop_completely): Pass eni_size_weights to
26234         tree_num_loop_insns.
26235         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
26236         ot estimate_num_insns.
26237         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
26238         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
26239         * tree-inline.c (eni_inlining_weights, eni_size_weights,
26240         eni_time_weights): New variables.
26241         (init_inline_once): Initialize them.
26242         (struct eni_data): Mew.
26243         (estimate_num_insns_1, estimate_num_insns): Use weights.
26244         * tree-inline.h (struct eni_weights_d): New.
26245         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
26246         (estimate_num_insns): Declaration changed.
26247         * cfgloop.h (tree_num_loop_insns): Declaration changed.
26248         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
26249         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
26250
26251 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
26252
26253         * tree-data-ref.c (conflict_fn): Assert that the number of affine
26254         relations in the conflict function is valid.
26255
26256 2007-01-27  Ian Lance Taylor  <iant@google.com>
26257
26258         * common.opt: Add fstrict-overflow.
26259         * opts.c (decode_options): Set flag_strict_overflow if -O2.
26260         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
26261         (TYPE_OVERFLOW_UNDEFINED): Define.
26262         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
26263         Replace all uses.
26264         * tree.h (TYPE_TRAP_SIGNED): Don't define.
26265         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
26266         (fold_negate_expr): Likewise.
26267         (make_range): Likewise.
26268         (extract_muldiv_1): Likewise.
26269         (maybe_canonicalize_comparison): Likewise.
26270         (fold_comparison): Likewise.
26271         (fold_binary): Likewise.
26272         (tree_expr_nonnegative_p): Likewise.
26273         (tree_expr_nonzero_p): Likewise.
26274         * tree-vrp.c (compare_values): Likewise.
26275         (extract_range_from_binary_expr): Likewise.
26276         (extract_range_from_unary_expr): Likewise.
26277         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
26278         Likewise.
26279         (nowrap_type_p): Likewise.
26280         * tree-scalar-evolution.c (simple_iv): Likewise.
26281         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
26282         (build_range_check): Likewise.
26283         (extract_muldiv_1): Likewise.
26284         (fold_comparison): Likewise.
26285         * tree-vrp.c (vrp_int_const_binop): Likewise.
26286         (extract_range_from_unary_expr): Likewise.
26287         * convert.c (convert_to_integer): Likewise.
26288         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
26289         (fold_comparison): Likewise.
26290         (fold_binary): Likewise.
26291         * optabs.c (optab_for_tree_code): Likewise.
26292         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
26293         * simplify-rtx.c (simplify_const_relational_operation): Check
26294         flag_strict_overflow and flag_trapv.
26295         (simplify_const_relational_operation): Likewise.
26296         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
26297         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
26298         -fstrict-overflow.
26299
26300 2007-01-27  Roger Sayle  <roger@eyesopen.com>
26301
26302         * tree.c (tree_fold_gcd): Delete.
26303         * tree.h (tree_fold_gcd): Remove prototype.
26304         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
26305         test whether one constant integer is a multiple of another.  Instead
26306         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
26307         * fold-const.c (multiple_of_p): We've determined both TOP and
26308         BOTTOM are integer constants so we can call int_const_binop directly
26309         instead of the more generic const_binop.
26310
26311 2007-01-27  Roger Sayle  <roger@eyesopen.com>
26312
26313         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
26314         1*X check that the constant hasn't overflowed, to preserve the
26315         TREE_OVERFLOW bit.
26316         (round_up): Provide an efficient implementation when rouding-up an
26317         INTEGER_CST to a power-of-two.
26318
26319 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26320
26321         * doc/sourcebuild.texi: Add comma for clarity.
26322         * doc/extend.texi: Fix some typos.
26323         * doc/passes.texi: Likewise.
26324         * doc/cppinternals.texi: Likewise.
26325         * doc/c-tree.texi: Likewise.
26326         * doc/tree-ssa.texi: Likewise.
26327         * doc/install.texi: Likewise.
26328
26329 2007-01-27  Jan Hubicka  <jh@suse.cz>
26330
26331         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
26332         (pass_sra): Do not require alias information.
26333         * passes.c (init_optimization_passes): Add SRA
26334
26335 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
26336
26337         * tracer.c (rest_of_handle_tracer): We already cleaned
26338         up the CFG in tracer() so don't do it here again.
26339         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
26340         cleanup_cfg here, either.  And don't call renumber_insns.
26341
26342         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
26343         and BB_HEAD are in the insn stream here.  Instead make sure
26344         that BB_INSN is valid on all insns.  Also, do check here that
26345         there are no pending branch predictions...
26346         (rtl_verify_flow_info): ...instead of doing it here.  Checks
26347         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
26348         here.
26349
26350 2007-01-26  Roger Sayle  <roger@eyesopen.com>
26351
26352         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
26353         function to simplify/factorize operand order canonicalization.
26354         (ix86_fixup_binary_operands): Reorganize using the above function.
26355         (ix86_binary_operator_ok): Likewise.
26356
26357 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
26358
26359         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
26360         file scope from optimize_attrs.
26361         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
26362         up search.
26363         (optimize_attrs): Clear insn_code_values after freeing it.
26364
26365 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
26366
26367         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
26368         a parts.base assignment.
26369
26370 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
26371
26372         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
26373         (compute_subscript_distance, initialize_data_dependence_relation,
26374         finalize_ddr_dependent, analyze_ziv_subscript,
26375         analyze_siv_subscript_cst_affine,
26376         compute_overlap_steps_for_affine_univar,
26377         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
26378         analyze_siv_subscript, analyze_miv_subscript,
26379         analyze_overlapping_iterations, subscript_dependence_tester_1,
26380         compute_self_dependence, free_dependence_relation): Work
26381         with affine_fn instead of chrecs.
26382         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
26383         common_affine_function, affine_function_base,
26384         affine_function_constant_p, affine_fn_op, affine_fn_plus,
26385         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
26386         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
26387         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
26388         (all_chrecs_equal_p): Removed.
26389         * tree-data-ref.h (affine_fn, conflict_function): New types.
26390         (struct subscript): Change type of conflicting_iterations_in_a
26391         and conflicting_iterations_in_b.
26392
26393 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
26394
26395         PR other/30182
26396         * config/pa/pa.h (TARGET_HPUX_11): New.
26397         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
26398         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
26399
26400 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
26401         Richard Guenther  <rguenther@suse.de>
26402
26403         * tree-ssa-structalias.c (solve_graph): Handle case
26404         we merged the variable to another.
26405
26406 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26407
26408         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
26409         functions.
26410
26411         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
26412         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
26413
26414 2007-01-25  DJ Delorie  <dj@redhat.com>
26415
26416         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
26417         allow changes to modes which don't fit in those registers.
26418
26419         * reload1.c (choose_reload_regs): Check for invalid subregs before
26420         computing their locations, not after.
26421
26422 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
26423
26424         PR 25127
26425         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
26426         save Altivec registers in an eh_return function.
26427         (compute_vrsave_mask): Likewise.
26428         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
26429         for saving Altivec registers.
26430         (rs6000_emit_prologue): Don't allocate stack twice in
26431         eh_return function.  Correct expected value of altivec_save_offset
26432         when using save_world.  Describe save of R0 to stack when using
26433         save_world.  Describe stack pointer adjustment when using
26434         save_world.  Remove duplicated eh_return parameter register saving.
26435         Update sp_offset variable after save_world.
26436         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
26437         darwin-world.asm.
26438         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
26439         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
26440         implies Altivec.
26441
26442 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
26443
26444         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
26445
26446 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
26447
26448         PR other/30182
26449         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
26450         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
26451
26452 2007-01-25  Richard Guenther  <rguenther@suse.de>
26453
26454         * doc/invoke.texi (-Wcoverage-mismatch): Document.
26455         * common.opt (-Wcoverage-mismatch): New warning option.
26456         * coverage.c (get_coverage_counts): Ignore coverage mismatch
26457         if -Wcoverage-mismatch is given.
26458
26459 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
26460
26461         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
26462         (ipcp_driver): Change to static definition.
26463         Add dumping of the ifunctions.
26464         (constant_val_insert): Remove unused parameter. Support for SSA.
26465         (ipcp_propagate_const): Support for SSA.
26466         (ipcp_profile_bb_print): Print only analyzed nodes.
26467         (ipcp_replace_map_create): Remove support for Fortran constant
26468         for now.
26469         * ipa-prop.c (ipa_method_modify_stmt,
26470         ipa_callsite_compute_param): Support for SSA.
26471         * ipa-prop.h (ipcp_driver): Remove declaration.
26472         (IS_VALID_TREE_MAP_INDEX): Add define.
26473
26474 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
26475
26476         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
26477
26478 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26479
26480         PR middle-end/30447
26481         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
26482         constant argument to cabs and do it without checking for
26483         -funsafe-math-optimizations.
26484
26485 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
26486
26487         * c-common.h (RID_FIRST_CXX0X): New.
26488         (RID_LAST_CXX0X): New.
26489         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
26490         by -Wall.
26491         * c.opt (Wc++0x-compat): New.
26492         * doc/invoke.texi (-Wc++0x-compat): Document.
26493
26494 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26495
26496         * builtins.c (fold_builtin_carg): New.
26497         (fold_builtin_1): Use it.
26498
26499 2007-01-24  Jan Hubicka  <jh@suse.cz>
26500
26501         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
26502
26503         * ipa-inline.c (initial_insns, max_insns): Delete.
26504         (compute_max_insns): New function.
26505         (cgraph_decide_inlining_of_small_function): Use it; take minimal
26506         amount of insns as base for code growth.
26507         (cgraph_decide_inlining): Make initial_insns local; do not compute
26508         max_insns.
26509         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
26510         * doc/invoke.texi (inline-unit-growth): Update docs.
26511
26512 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
26513
26514         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
26515         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
26516         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
26517         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
26518         for CPUs that have PTA_CX16 set.
26519
26520         PR middle-end/27416
26521         * gimplify.c (omp_check_private): New function.
26522         (gimplify_scan_omp_clauses): Use it for
26523         firstprivate/lastprivate/reduction.
26524
26525         PR middle-end/30494
26526         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
26527         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
26528
26529         PR middle-end/30421
26530         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
26531         If lower_lastprivate_clauses emits some statements, append them
26532         to dlist rather than body_p and to body_p append an initializer.
26533         (lower_omp_for): Adjust caller.
26534
26535 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
26536
26537         * target.h (globalize_decl_name): New.
26538         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
26539         * output.h (default_globalize_decl_name): New.
26540         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
26541         globalize_label.
26542         (globalize_decl): Ditto.
26543         (default_globalize_decl_name): New.
26544         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
26545         (ia64_handle_version_id_attribute): New.
26546         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
26547         (ia64_asm_output_external): Use globalize_decl_name instead
26548         of globalize_label.
26549         * doc/extend.texi (version_id): New pragma.
26550         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
26551
26552 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26553
26554         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
26555         _uleb128_t and _Unwind_SWord with _sleb128_t.
26556         * unwind-dw2.c (extract_cie_info, execute_stack_op,
26557         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
26558         Likewise.
26559         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
26560         * unwind-pe.h (read_uleb128, read_sleb128,
26561         read_encoded_value_with_base): Likewise.
26562         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
26563
26564 2007-01-24  Richard Guenther  <rguenther@suse.de>
26565
26566         * builtins.c (expand_builtin_cexpi): Get the fndecl
26567         for cexp in the correct way.
26568
26569 2007-01-24  Jan Hubicka  <jh@suse.cz>
26570
26571         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
26572         of calls.
26573
26574 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26575
26576         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
26577         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
26578         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
26579         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
26580         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
26581         __SIZEOF_PTRDIFF_T__.
26582         * doc/cpp.texi: Documentation for the new builtin macros added.
26583
26584 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
26585
26586         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
26587         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
26588         instead of operands[2] to avoid access past the end of array.
26589
26590 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
26591
26592         * reload1.c (emit_reload_insns): Pass the reload register
26593         for a non-spill output reload through forget_old_reloads_1.
26594
26595 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
26596
26597         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26598         _SOFT_DOUBLE if doubles use software floating-point.
26599         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
26600         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
26601         * config/rs6000/darwin-ldouble.c: Also compile functions for
26602         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
26603         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
26604         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
26605         commented-out long double override.
26606         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
26607         * config/rs6000/eabispe.h: Likewise.
26608         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
26609         long double for non-SPE.
26610         (rs6000_handle_option): Likewise.
26611         (invalid_e500_subreg): Disallow more subregs involding DImode,
26612         DFmode, TImode or TFmode.
26613         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
26614         E500 double.
26615         (legitimate_lo_sum_address_p): Also check for TFmode for E500
26616         double.
26617         (rs6000_legitimize_address): Also handle TFmode for E500 double.
26618         (rs6000_legitimize_reload_address): Also handle TFmode for E500
26619         double.
26620         (rs6000_legitimate_address): Also check for TFmode for E500
26621         double.
26622         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
26623         (spe_build_register_parallel): Handle TFmode and TCmode.
26624         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
26625         double.
26626         (function_arg): Handle TFmode and TCmode for E500 double.
26627         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
26628         in general.
26629         (print_operand): Handle TFmode and TImode for %y.
26630         (rs6000_generate_compare): Handle TFmode comparisons for E500
26631         double.
26632         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
26633         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
26634         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
26635         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
26636         TFmode for E500 double.
26637         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
26638         (floatsidf2): Enable for E500 double.
26639         (movtf_softfloat): Use rs6000_nonimmediate_operand.
26640         (extenddftf2): Change to extenddftf2_fprs.
26641         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
26642         depending on TARGET_E500_DOUBLE.
26643         (extendsftf2): Enable for E500 double.
26644         (trunctfdf2): Enable for E500 double.
26645         (trunctfsf2): Change to trunctfsf2_fprs.
26646         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
26647         depending on TARGET_E500_DOUBLE.
26648         (floatsitf2): Enable for E500 double.
26649         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
26650         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
26651         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
26652         (negtf2): Change to negtf2_internal.
26653         (negtf2): New expander.
26654         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
26655         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
26656         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
26657         (movdi_internal32): Use rs6000_nonimmediate_operand.
26658         (unnamed splitter): Likewise.
26659         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
26660         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
26661         (SPE64TF, DITI): New mode macros.
26662         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
26663         modes.
26664         (frob_tf_ti): New.
26665         (frob_<mode>_di_2): New.
26666         (frob_tf_di_8_2): New.
26667         (frob_di_df): Change to frob_di_<mode>; allow more modes.
26668         (frob_ti_tf): New.
26669         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
26670         more modes.
26671         (frob_ti_<mode>_8_2): New.
26672         (frob_ti_tf_2): New.
26673         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
26674         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
26675         TFmode.
26676         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
26677         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
26678         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
26679         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
26680         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
26681         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
26682         tsttflt_gp): New.
26683
26684 2007-01-23  Ian Lance Taylor  <iant@google.com>
26685
26686         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
26687         insn-*.o first.
26688         (OBJS-archive): Reformat, alphabetize.
26689         (OBJS): Change out_object_file to OBJS-md.
26690
26691 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
26692
26693         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
26694         JUMP_P and CALL_P predicates where applicable.
26695         * config/i386/i386.c: Ditto.
26696         * config/i386/i386.md: Ditto.
26697         * config/i386/mmx.md: Ditto.
26698         * config/i386/predicates.md: Ditto.
26699
26700 2007-01-22  Andreas Schwab  <schwab@suse.de>
26701
26702         * config/m68k/m68k.h: Fix comment.
26703
26704 2007-01-22  Jan Hubicka  <jh@suse.cz>
26705
26706         * passes.c (init_optimization_passes): Do not rerun
26707         pass_early_warn_uninitialized.
26708
26709 2007-01-22  Richard Guenther  <rguenther@suse.de>
26710
26711         PR tree-optimization/30038
26712         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
26713         function.
26714         (execute_cse_sincos_1): Likewise.
26715         (execute_cse_sincos): Likewise.
26716         (gate_cse_sincos): Likewise.
26717         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
26718         the cexpi() canonicalization of sincos().
26719         * tree-pass.h (pass_cse_sincos): Declare.
26720         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
26721
26722 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
26723
26724         PR rtl-optimization/29329
26725         * combine.c (replaced_rhs_insn): Rename to i2mod.
26726         (replaced_rhs_value): Rename to i2mod_new_rhs.
26727         (i2mod_old_rhs): New global variable.
26728         (combine_instructions): Adjust for above change.  Save a copy of
26729         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
26730         note are substituted in the second instruction.
26731         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
26732         ditch the note if it pertains to the second eliminated register
26733         and this register is mentioned in i2mod_old_rhs.
26734
26735         Revert:
26736         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
26737
26738         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
26739         the insn to which the note was originally attached.
26740
26741 2007-01-21  Jan Hubicka  <jh@suse.cz>
26742
26743         * ipa-inline.c (inlining_mode): Comment, move up.
26744         (cgraph_decide_inlining_incrementally): Do not perform inlining
26745         itself; fix handling of flattening of self recursive functions.
26746         (cgraph_find_cycles): Remove.
26747         (cgraph_flatten_node): Remove.
26748         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
26749         (try_inline): New function.
26750         (cgraph_early_inlining): Update call of
26751         cgraph_decide_inlining_incrementally.  Apply inlining here.
26752         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
26753
26754 2007-01-21  Dirk Mueller  <dmueller@suse.de>
26755
26756         PR bootstrap/30511
26757         * tree-vrp.c (check_array_bounds): do not warn
26758         about ADDR_EXPR's of ARRAY_REF's which are immediately
26759         used in binary expressions.
26760
26761 2007-01-21  Ira Rosen  <irar@il.ibm.com>
26762
26763         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
26764         read_write_dep and macros for its access.
26765         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
26766         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
26767         argument, call vect_check_interleaving for every independent pair of
26768         data-refs. Mark loads that access the same memory location as a store
26769         in the loop.
26770         (vect_check_dependences): Remove.
26771         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
26772         call, fix the call to vect_analyze_data_ref_dependence.
26773         (vect_analyze_data_ref_access): For statements that access the same
26774         data-ref, check that they are not stores; for loads, check that there
26775         is no store that access the same location.
26776
26777 2007-01-20  Roger Sayle  <roger@eyesopen.com>
26778             Joseph Myers  <joseph@codesourcery.com>
26779
26780         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
26781         (-fdump-rtl-stack): Likewise.
26782         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
26783         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
26784         (-mpt-fixed): Use @minus{} for minus sign.
26785         (Using Precompiled Headers): Fix under/overfull hbox.
26786
26787 2007-01-20  Jan Hubicka  <jh@suse.cz>
26788
26789         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
26790         place within annotation.
26791
26792 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26793
26794         * pa.c (output_move_double): Change array size of xoperands to 4.
26795
26796 2007-01-20  Jan Hubicka  <jh@suse.cz>
26797
26798         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
26799         as temporary.
26800
26801 2007-01-19  Ian Lance Taylor  <iant@google.com>
26802
26803         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
26804         constant to unsigned HOST_WIDE_INT before negating.
26805
26806 2007-01-19  Ian Lance Taylor  <iant@google.com>
26807
26808         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
26809         to unsigned.
26810         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
26811         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
26812         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
26813         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
26814         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
26815         (realloc_vdef, realloc_vuse): Change second parameter to
26816         unsigned.
26817         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
26818         fields to unsigned.
26819         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
26820         unsigned. Change x and lim locals to unsigned.
26821         (realloc_vdef, realloc_vuse): Change num_elem parameter to
26822         unsigned.
26823         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
26824         (copy_virtual_operands): Change i and n locals to unsigned.
26825
26826 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26827
26828         PR middle-end/29335
26829         * builtins.c (fold_builtin_1): Handle builtin fdim.
26830
26831 2007-01-20  Jan Hubicka  <jh@suse.cz>
26832
26833         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
26834         * tree-ssa-structalias.c (compute_points_to_sets): Do call
26835         init_alias_heapvars.
26836         (init_alias_heapvars): Initialize only when not already initialized.
26837         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
26838
26839 2007-01-19  Roger Sayle  <roger@eyesopen.com>
26840
26841         * common.opt (fsigned-zeros): New command line option.
26842         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
26843         of flag_unsafe_math_optimizations.
26844         * opts.c (set_fast_math_flags): The -ffast-math command line option
26845         implies -fno-signed-zeros.
26846         (fast_math_flags_set_p): Likewise.
26847
26848         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
26849         the documentation of -ffast-math appropriately.  Wrap long lines.
26850
26851 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
26852
26853         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
26854         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
26855
26856 2007-01-19  Tomas Bily  <tbily@suse.cz>
26857
26858         * cgraphunit.c (cgraph_finalize_function): Updating of pid
26859         * tree-profile.c:
26860         (tree_init_ic_make_global_vars): New function
26861         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
26862         (tree_gen_ic_profiler): New function
26863         (tree_gen_ic_func_profiler): New function
26864         (tree_profiling): Added calling of tree_gen_ic_func_profiler
26865         (tree_profile_hooks): Added hook for indirec/virtual calls
26866         * value-prof.c (tree_find_values_to_profile): New case for
26867         indirect calls
26868         (tree_values_to_profile): Call for determining indirect/virtual
26869         counters
26870         (tree_indirect_call_to_profile): New function
26871         (tree_ic_transform): New function
26872         (tree_ic): New function
26873         (find_func_by_pid): New function
26874         (init_pid_map): New function
26875         (tree_value_profile_transformations): Added check for
26876         indirect/virtual call transformation
26877         * value-prof.h (enum hist_type): New counter type for
26878         indirect/virtual calls
26879         (profile_hooks): Added new hook for profiling indirect/virtual
26880         calls
26881         * profile.c (instrument_values): New case for indirect/virtual
26882         call added
26883         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
26884         (GCOV_COUNTER_V_INDIR): New counter type
26885         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
26886         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
26887         call added
26888         * cgraph.c: Definition of cgraph_max_pid
26889         (cgraph_create_node): Default init of pid attribute
26890         * cgraph.h: Declaration of cgraph_max_pid
26891         (struct cgraph_node): Added pid attribute
26892         * libgcov.c (__gcov_indirect_call_profiler): New function
26893         (__gcov_one_value_profiler_body): New function
26894         (__gcov_one_value_profiler): Body was moved to
26895         __gcov_one_value_profiler_body and calls it
26896
26897 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
26898
26899         * doc/gty.texi (Options): Document the mark_hook option to GTY.
26900         * gengtype.c (write_types_data, write_func_for_structure,
26901         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
26902         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
26903         (walk_type, write_func_for_structure): Generate the mark_hook if
26904         needed.
26905
26906 2007-01-19  Jan Hubicka  <jh@suse.cz>
26907
26908         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
26909         'early' argument take inlining mode argument specifying whether to
26910         inline for size/speeed or all functions; add support for flattening;
26911         improve dumpting.
26912         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
26913
26914 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26915
26916         PR c++/17947
26917         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
26918         the name of the declared identifier.
26919
26920 2007-01-19  Dirk Mueller  <dmueller@suse.de>
26921
26922         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
26923         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
26924         duplicate evaluation.
26925
26926 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
26927
26928         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
26929         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
26930         to XFMode, use acosxf2 and truncate result to requested mode.
26931         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
26932         (asin<mode>2): Similarly, with asin expanders.
26933         (*fscalexf4_i387): Rename from *fscalexf4.
26934         (expNcorexf3): New expander.
26935         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
26936         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
26937         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
26938         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
26939         patterns for SSE math.
26940         (exp10<mode>2): Similarly, with exp10 expanders.
26941         (exp2<mode>2): Similarly, with exp2 expanders.
26942         (expm1<mode>2): Similarly, with expm1 expanders.
26943         (ldexp<mode>3): Similarly, with ldexp expanders.
26944         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
26945         Use gen_truncxf<mode>2_i387_noop to truncate result.
26946
26947 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
26948
26949         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
26950         for ColdFire targets.
26951
26952 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
26953             Richard Sandiford  <richard@codesourcery.com>
26954
26955         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
26956         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
26957         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
26958         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
26959         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
26960         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
26961
26962 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
26963
26964         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
26965         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
26966         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
26967         (*adddi_dilshr32_cf): New pattern.
26968         (adddi3, subdi3): Remove first alternatives.
26969
26970 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
26971
26972         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
26973         implemented using move.l, do not use its cc result for floating-point
26974         comparisons.
26975
26976 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
26977
26978         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
26979         from accepting 's' constraints if flag_pic.
26980
26981 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
26982
26983         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
26984         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
26985         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
26986         condition from TARGET_68881 to TARGET_HARD_FLOAT.
26987
26988 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
26989
26990         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
26991         ColdFire alternatives.
26992         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
26993         * config/m68k/m68k.md (clzsi2): Define for ColdFire
26994         architectures that support ff1 instruction.
26995
26996 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
26997             Julian Brown  <julian@codesourcery.com>
26998
26999         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
27000         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
27001         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
27002         Add commentary.
27003
27004 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27005
27006         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
27007         and return a bool.
27008         (output_move_const_into_data_reg, output_move_simode_const): Delete.
27009         * config/m68k/m68k.c (const_method, const_int_cost): Take a
27010         HOST_WIDE_INT instead of an rtx.
27011         (m68k_rtx_costs): Update call accordingly.
27012         (output_move_const_into_data_reg): Likewise.  Fix formatting.
27013         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
27014         Return a bool.
27015         (output_move_simode_const): Update calls after above changes.
27016         Rework to use automatic variables and predicates like MEM_P.
27017         * config/m68k/m68k.md (pushexthisi_const): Update call to
27018         valid_mov3q_const.
27019
27020 2007-01-19  Dirk Mueller  <dmueller@suse.de>
27021
27022         * tree-ssa-alias.c (perform_var_substitution): Fix typo
27023         in dump_flags test.
27024
27025 2007-01-19  Richard Guenther  <rguenther@suse.de>
27026
27027         * builtins.c (expand_builtin_cexpi): Fall back to expanding
27028         via cexp in case sincos is not available.
27029
27030 2007-01-19  Richard Guenther  <rguenther@suse.de>
27031
27032         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
27033         * defaults.h (TARGET_HAS_SINCOS): Default to off.
27034         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
27035         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
27036         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
27037         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
27038         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
27039         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
27040
27041 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
27042
27043         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
27044         New insn patterns.
27045         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
27046         (atan2xf3): Directly generate RTL pattern.
27047         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
27048         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
27049         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27050         disable patterns for SSE math.
27051         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
27052         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
27053         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27054         disable patterns for SSE math.
27055
27056 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
27057
27058         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
27059
27060 2007-01-18  Roger Sayle  <roger@eyesopen.com>
27061
27062         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
27063         VIEW_CONVERT_EXPR to the same type as it's operand.
27064
27065 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
27066
27067         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
27068         configured for long double 128.
27069
27070 2007-01-18  Mike Stump  <mrs@apple.com>
27071
27072         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
27073         error.
27074
27075 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
27076
27077         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
27078         type correct.
27079
27080 2007-01-18  Jan Hubicka  <jh@suse.cz>
27081
27082         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
27083         greater than NUM_VOP_FREE_BUCKETS.
27084
27085 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
27086
27087         * tree-ssa-structalias.c: Update comments.
27088         (ptabitmap_obstack): Removed.
27089         (pta_obstack): New.
27090         (oldpta_obstack): Ditto.
27091         (stats): Add a few members.
27092         (struct variable_info): Remove node, complex, address_taken, and
27093         indirect_target members. Add oldsolution member.
27094         (new_var_info): Do not initialize removed members.
27095         (constraint_expr_type): Remove INCLUDES.
27096         (constraint_graph): Add size, implicit_preds, rep,
27097         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
27098         (FIRST_REF_NODE): New macro.
27099         (LAST_REF_NODE): Ditto.
27100         (FIRST_ADDR_NODE): Ditto.
27101         (find): New function.
27102         (unite): Ditto.
27103         (dump_constraint): Do not handle INCLUDES.
27104         (insert_into_complex): Do not insert duplicate constraints.
27105         (condense_varmap_nodes): Renamed and rewritten into ...
27106         (merge_node_constraints): This. Also fix bug in handling of
27107         offseted copy constraints.
27108         (clear_edges_for_node): No longer need to deal with preds at all,
27109         or removing associated preds/succs.
27110         (merge_graph_nodes): Deal with indirect_cycles.
27111         Don't deal with predecessors.
27112         (add_implicit_graph_edge): New function.
27113         (add_pred_graph_edge): Ditto.
27114         (add_graph_edge): Don't deal with predecessors.
27115         (build_constraint_graph): Removed.
27116         (build_pred_graph): New function.
27117         (build_succ_graph): Ditto.
27118         (struct scc_info): Removed in_component. Added roots, dfs, and
27119         node_mapping. Remove visited_index, unification_queue.
27120         (scc_visit): Deal with union-find we do now.
27121         Deal with cycles with REF nodes.
27122         (collapse_nodes): Renamed and rewritten to ...
27123         (unify_nodes): This.
27124         (process_unification_queue): Removed.
27125         (topo_visit): Cleanup
27126         (do_da_constraint): Use find.
27127         (do_sd_constraint): Ditto.
27128         (do_ds_constraint): Ditto.
27129         (do_complex_constraint): Ditto.
27130         (init_scc_info): Update for removed and added members.
27131         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
27132         (find_indirect_cycles): This.
27133         (equivalence_class): New variable.
27134         (label_visit): New function.
27135         (perform_variable_substitution): Rewritten.
27136         (free_var_substitution_info): New function.
27137         (find_equivalent_node): Ditto.
27138         (move_complex_constraints): Ditto.
27139         (eliminate_indirect_cycles): Ditto.
27140         (solve_graph): Only propagate changed bits.
27141         Use indirect cycle elimination.
27142         Use find.
27143         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
27144         (tree_id_eq): Renamed to ...
27145         (tree_vi_eq): This. Update for member change
27146         (insert_id_for_tree): Renamed and rewritten to ...
27147         (insert_vi_for_tree): This.
27148         (lookup_id_for_tree): Renamed and rewritten to ...
27149         (lookup_vi_for_tree): This.
27150         (get_id_for_tree): Renamed and rewritten to ...
27151         (get_vi_for_tree): Ditto.
27152         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
27153         (process_constraint): Don't handle INCLUDES.
27154         Remove special ADDRESSOF case.
27155         (find_func_aliases): Rewrite to use vi functions instead of id
27156         ones.
27157         (create_function_info_for): Ditto.
27158         (create_variable_info_for): Ditto.
27159         (intra_create_variable_infos): Ditto.
27160         (merge_smts_into): Ditto.
27161         (find_what_p_points_to): Ditto.
27162         (init_base_vars): Ditto.
27163         (init_alias_vars): Ditto.
27164         (remove_preds_and_fake_succs): New function.
27165         (dump_sa_points_to_info): Dump new stats.
27166         (dump_solution_for_var): Use find.
27167         (set_used_smts): Fix formatting.
27168         (compute_points_to_sets): Updated for new functions.
27169         (ipa_pta_execute): Ditto.
27170
27171 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27172             Richard Sandiford  <richard@codesourcery.com>
27173
27174         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
27175         parallels.
27176         * calls.c (expand_call): If the return value is a PARALLEL,
27177         extract its first member.
27178         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
27179         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
27180         use FUNCTION_EXTRA_EPILOGUE.
27181         (m68k_function_value): Return a PARALLEL if the return value
27182         is of a pointer type.
27183         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
27184         (FUNCTION_EXTRA_EPILOGUE): Remove.
27185         * config/m68k/m68k.md (D0_REG): New constant.
27186
27187 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27188
27189         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
27190         output a NOP for empty epilogues.
27191
27192 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27193
27194         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
27195         before function.  Extend register save check to include all
27196         registers, not just integer ones.
27197
27198 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27199
27200         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
27201         (m68k_use_return_insn): ...this.
27202         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
27203         * config/m68k/m68k.c (use_return_insn): Rename to...
27204         (m68k_use_return_insn): ...this.
27205         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
27206         of USE_RETURN_INSN.
27207
27208 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27209
27210         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
27211         nearest even, fix denormal rounding overflow.
27212
27213 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27214
27215         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
27216         f%$smove and f%$move.
27217         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
27218         (extendsfdf2_cf): Use fdmove instead of f%&move.
27219         (truncdfsf2_cf): Use fsmove instead of f%$smove.
27220         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
27221
27222 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27223
27224         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
27225         GPR<-GPR moves.
27226
27227 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27228
27229         * real.h (real_format): Add a canonical_nan_lsbs_set field.
27230         (coldfire_single_format): Declare.
27231         (coldfire_double_format): Likewise.
27232         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
27233         of qnan_msb_set to determine the lower bits of a canonical
27234         NaN significand.
27235         (encode_ieee_double): Likewise.
27236         (encode_ieee_quad): Likewise.
27237         (ieee_single_format): Initialize canonical_nan_lsbs_set.
27238         (mips_single_format): Likewise.
27239         (ieee_double_format): Likewise.
27240         (mips_double_format): Likewise.
27241         (ieee_extended_motorola_format): Likewise.
27242         (ieee_extended_intel_96_format): Likewise.
27243         (ieee_extended_intel_128_format): Likewise.
27244         (ieee_extended_intel_96_round_53_format): Likewise.
27245         (ibm_extended_format): Likewise.
27246         (mips_extended_format): Likewise.
27247         (ieee_quad_format): Likewise.
27248         (mips_quad_format): Likewise.
27249         (vax_f_format): Likewise.
27250         (vax_d_format): Likewise.
27251         (vax_g_format): Likewise.
27252         (i370_single_format): Likewise.
27253         (i370_double_format): Likewise.
27254         (decimal_single_format): Likewise.
27255         (decimal_double_format): Likewise.
27256         (decimal_quad_format): Likewise.
27257         (c4x_single_format): Likewise.
27258         (c4x_extended_format): Likewise.
27259         (real_internal_format): Likewise.
27260         (coldfire_single_format): New real_format.
27261         (coldfire_double_format): Likewise.
27262         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
27263         canonical_nan_lsbs_set.
27264         (pdp11_d_format): Likewise.
27265         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
27266         if TARGET_COLDFIRE_CPU.
27267
27268 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27269
27270         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
27271         (output_call, m68k_legitimize_call_address): Declare.
27272         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
27273         parenthesees.  Add support for a 'W' constraint.
27274         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
27275         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
27276         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
27277         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
27278         variables.
27279         (override_options): Initialize them.  Do not set flag_no_function_cse
27280         for TARGET_ID_SHARED_LIBRARY.
27281         (m68k_output_pic_call): Delete.
27282         (m68k_legitimize_call_address): New function.
27283         (print_operand): Remove the %o prefix.  Handle the %p prefix.
27284         (output_call): New function.
27285         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
27286         target address from the GOT if symbolic jumps are not allowed.
27287         * config/m68k/m68k.md (call, general_operand): Do not set
27288         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
27289         Merge separate flag_pic and !flag_pic define_insns into...
27290         (*call, *call_value): ...these new patterns.  Match the address
27291         rather than the containing MEM and require it to be a call_operand.
27292         Use output_call to generate the asm template.
27293         * config/m68k/predicates.md (const_call_operand): New predicate.
27294         (call_operand): Likewise.
27295
27296 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27297
27298         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
27299         (STACK_GROWS_DOWNWARD): Define to 1.
27300         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
27301         comments, emphasizing that these values are only defaults.
27302         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
27303         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
27304
27305 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27306
27307         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
27308
27309 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27310             Richard Sandiford  <richard@codesourcery.com>
27311
27312         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
27313         (FP_REGNO_P): New macros.
27314         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
27315         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
27316         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
27317         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
27318
27319 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27320
27321         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
27322         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
27323         to $tmake_file.
27324         * config/m68k/t-floatlib: New file, extracting common code from...
27325         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
27326         * config/m68k/t-uclinux: Here.
27327         * config/m68k/fpgnulib.c: Do not compile extendeed precision
27328         routines on ColdFire targets.
27329
27330 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27331
27332         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
27333         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
27334         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
27335         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
27336         explicitly set MOTOROLA to 1.
27337         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
27338
27339 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27340             Nathan Sidwell  <nathan@codesourcery.com>
27341
27342         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
27343         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
27344         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
27345         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
27346         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
27347         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
27348         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
27349         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
27350         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
27351         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
27352         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
27353         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
27354         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
27355         (DBX_REGISTER_NUMBER): Delete.
27356         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
27357         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
27358         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
27359
27360 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27361
27362         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
27363         * config/flat.h: New file.
27364         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
27365         OBJECT_FORMAT_FLAT.
27366         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
27367         indirect references for -msep-data or -mid-shared-library.
27368         Do not use PC-relative code addresses either.
27369         * config/m68k/m68k.c (override_options): Restrict -fPIC error
27370         to -mpcrel.
27371         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
27372         for shared libraries and crt1.o for executables.  Use crti.o and
27373         crtbegin.o.
27374         (ENDFILE_SPEC): Use crtend.o and crtn.o.
27375         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
27376         Do not add -elf2flt or -shared-lib-id options here.
27377         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
27378         Pass -shared-lib-id if -mid-shared-library, taking the library
27379         identifier from -mshared-library-id if given, otherwise
27380         defaulting to 0.
27381         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
27382         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
27383         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
27384         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
27385         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
27386         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
27387         and crtend.o.
27388         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
27389         jump sequence for ISA A and ISA A+.
27390         (PICJUMP): Likewise.
27391
27392 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27393
27394         * config.gcc (m68k-*-uclinux*): Base the port on the common
27395         and m68k GNU/Linux files rather than on the generic ELF ones.
27396         * config/m68k/uclinux.h (TARGET_VERSION): Override.
27397         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
27398
27399 2007-01-18  Julian Brown  <julian@codesourcery.com>
27400             Richard Sandiford  <richard@codesourcery.com>
27401
27402         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
27403         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
27404         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
27405         before redefining.
27406         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
27407         80 unconditionally.
27408         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
27409
27410 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27411
27412         * doc/install.texi: Document m68k-uclinuxoldabi.
27413         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
27414         * config/m68k/uclinux-oldabi.h: New file, copied from
27415         config/m68k/uclinux.h.
27416
27417 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
27418
27419         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
27420         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
27421         (m32r_compute_frame_size): Use unsigned for regno.
27422         (m32r_reload_lr): Use gen_frame_mem.
27423         (pop): New.
27424         (m32r_output_function_epilogue): Don't output the function epilogue
27425         textually here.
27426         (m32r_expand_epilogue): New.
27427         (direct_return): Return false if the function has the interrupt
27428         attribute.
27429         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
27430         * config/m32r/m32r.md (epilogue): New expander.
27431         (return_lr, return_rte): New insns.
27432         (return): Make it expander.
27433         (return_normal): New expander.
27434
27435 2007-01-18  Josh Conner  <jconner@apple.com>
27436
27437         PR target/30485
27438         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
27439         support for UNLE, UNLT, UNGE, and UNGT.
27440
27441 2007-01-18  Jan Hubicka  <jh@suse.cz>
27442
27443         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
27444         * tree-tailcall (add_virtual_phis): Likewise.
27445         (optimize_tail_call): Return TODOs.
27446         (execute_tail_calls): Return TODOs.
27447         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
27448         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
27449         changed.
27450         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
27451         Cleanup cfg using TODO.
27452         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
27453         * passes.c (execute_function_todo): When cleanup did something, remove
27454         unused locals.
27455         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
27456         (make_edges): Don't cleanup_cfg.
27457
27458 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
27459
27460         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
27461         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
27462         operate on the top of stack.
27463         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
27464         register handling of instructions that output to the second
27465         stack slot.
27466         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
27467         (move_for_stack_reg): Special-case check for dead destination
27468         stack slot for constant load of 1.0 inside UNSPEC_TAN.
27469
27470         * config/i386/i386.md (UNSPEC_TAN): New constant.
27471         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
27472         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
27473         to correctly model move of constant 1.0 to top stack slot.
27474         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
27475         (unnamed peephole2 pattern): Remove corresponding peephole2
27476         pattern that optimizes tan insn and loading of constant 1.0.
27477         (tanxf2): Use fptanxf4_i387.
27478         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
27479         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
27480         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27481         disable patterns for SSE math.
27482         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
27483         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
27484
27485 2007-01-18  Dirk Mueller  <dmueller@suse.de>
27486             Richard Guenther <rguenther@suse.de>
27487
27488         PR diagnostic/8268
27489         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
27490         * common.opt (Warray-bounds): Add new warning option.
27491         * c-opts.c (c_common_handle_option): Define -Warray-bounds
27492         if -Wall is given.
27493         * Makefile.in: make tree-vrp.o depend on toplev.h
27494         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
27495         is enabled.
27496         (check_array_refs, check_array_bounds, check_array_ref): New.
27497
27498 2007-01-18  Jan Hubicka  <jh@suse.cz>
27499
27500         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
27501         (execute_ssa_ccp): Return flags conditionally.
27502         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
27503         changed.
27504         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
27505
27506 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
27507
27508         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
27509         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
27510
27511         * Makefile.c (GTFILES): Add cfglayout.h.
27512         * gengtype.c (open_base_files): Likewise.
27513         * cfglayout.c (cfg_layout_function_footer,
27514         cfg_layout_function_header) Reindent to make gengtype happy.
27515         * cfglayout.h (cfg_layout_function_footer,
27516         cfg_layout_function_header): Add GTY(()) marker.
27517
27518         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
27519
27520 2007-01-18  Ben Elliston  <bje@au.ibm.com>
27521
27522         * genautomata.c (write_automata): Include xstrerror output in the
27523         error message if writing the DFA description file fails.
27524
27525 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
27526
27527         * config/mips/mips-protos.h (mips_output_external): Make it
27528         return void.
27529         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
27530         * config/mips/mips.c (irix_output_external_libcall): Likewise.
27531         (extern_list): Likewise.
27532         (extern_head): Likewise.
27533         (TARGET_ASM_FILE_END): Likewise.
27534         (mips_file_end): Likewise.
27535         (mips_output_external): Rewritten.
27536
27537 2007-01-18  Ben Elliston  <bje@au.ibm.com>
27538
27539         * genpreds.c (write_insn_preds_c): Only write out the function
27540         body for regclass_for_constraint if we have register constraints.
27541
27542 2007-01-17  Tom Tromey  <tromey@redhat.com>
27543
27544         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
27545         * doc/install.texi (Testing): Use sourceware.org.
27546         (Binaries): Likewise.
27547         (Specific): Likewise.
27548         * doc/contrib.texi (Contributors): Use sourceware.org.
27549
27550 2007-01-17  Anatoly Sokolov <aesok@post.ru>
27551
27552         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
27553         (AVR_ENHANCED): Rename to ...
27554         (AVR_HAVE_MUL): ... new.
27555         (avr_enhanced_p): Rename to ...
27556         (avr_have_mul_p): ... new.
27557         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
27558         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
27559         * config/avr/avr.c (avr_enhanced_p): Rename to ...
27560         (avr_have_mul_p): ... new.
27561         (base_arch_s): Rename 'enhanced' to 'have_mul'.
27562         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
27563         'avr_enhanced_p' and 'enhanced'.
27564         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
27565         AVR_HAVE_MUL instead of AVR_ENHANCED.
27566         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
27567         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
27568         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
27569         instead of AVR_ENHANCED.
27570         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
27571         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
27572         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
27573
27574 2007-01-17  Ian Lance Taylor  <iant@google.com>
27575
27576         * vec.h (VEC_reserve_exact): Define.
27577         (vec_gc_p_reserve_exact): Declare.
27578         (vec_gc_o_reserve_exact): Declare.
27579         (vec_heap_p_reserve_exact): Declare.
27580         (vec_heap_o_reserve_exact): Declare.
27581         (VEC_OP (T,A,reserve_exact)): New static inline function, three
27582         versions.
27583         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
27584         negative parameter.
27585         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
27586         (VEC_OP (T,A,copy)) [all versions]: Likewise.
27587         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
27588         * vec.c (calculate_allocation): Add exact parameter.  Change all
27589         callers.
27590         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
27591         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
27592         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
27593         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
27594         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
27595         (vec_heap_p_reserve_exact): New function.
27596         (vec_heap_o_reserve_exact): New function.
27597
27598 2007-01-17  Jan Hubicka  <jh@suse.cz>
27599
27600         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
27601
27602 2007-01-17  Eric Christopher  <echristo@apple.com>
27603
27604         * config.gcc: Support core2 processor.
27605
27606 2007-01-16  Jan Hubicka  <jh@suse.cz>
27607
27608         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
27609         the names, just unlink the chain so we don't crash on dangling
27610         pointers
27611         to dead SSA names.
27612
27613 2007-01-16  Jan Hubicka  <jh@suse.cz>
27614
27615         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
27616         * tree-pass.h: Reorder to make IPA passes appear toegher.
27617         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
27618         Declare.
27619         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
27620         parameters, do not call early inliner.
27621         * ipa-inline.c: Update comments.  Include tree-flow.h
27622         (cgraph_decide_inlining): Do not compute inlining parameters.
27623         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
27624         be called with function context set up.
27625         (pass_ipa_inline): Remove unreachable functions before pass.
27626         (cgraph_early_inlining): Simplify assuming to be called from the
27627         PM as local pass.
27628         (pass_early_inline): New pass.
27629         (cgraph_gate_ipa_early_inlining): New gate.
27630         (pass_ipa_early_inline): Turn into simple wrapper.
27631         (compute_inline_parameters): New function.
27632         (gate_inline_passes): New gate.
27633         (pass_inline_parameters): New pass.
27634         (apply_inline): Move here from tree-optimize.c
27635         (pass_apply_inline): New pass.
27636         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
27637         transforming.
27638         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
27639         doing them by hand.
27640         (tree_function_versioning): Do not allocate dummy struct function.
27641         * tree-inline.h (optimize_inline_calls): Update prototype.
27642         * tree-optimize.c (execute_fixup_cfg): Export.
27643         (pass_fixup_cfg): Remove
27644         (tree_rest_of_compilation): Do not apply inlines.
27645         * tree-flow.h (execute_fixup_cfg): Declare.
27646         * Makefile.in (gt-passes.c): New.
27647         * passes.c: Include gt-passes.h
27648         (init_optimization_passes): New passes.
27649         (nnodes, order): New static vars.
27650         (do_per_function_toporder): New function.
27651         (execute_one_pass): Dump current pass here.
27652         (execute_ipa_pass_list): Don't dump current pass here.
27653
27654 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
27655
27656         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
27657         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
27658
27659 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
27660
27661         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
27662         (strong_alias): Define.
27663         (__gcc_qmul): Provide non-FMA for soft-float.
27664         (__gcc_qdiv): Same.
27665         (__gcc_qneg): New.
27666         (__gcc_qeq): New.
27667         (__gcc_qle): New.
27668         (__gcc_qge): New.
27669         (__gcc_qunord): New.
27670         (__gcc_stoq): New.
27671         (__gcc_dtoq): New.
27672         (__gcc_qtos): New.
27673         (__gcc_qtod): New.
27674         (__gcc_qtoi): New.
27675         (__gcc_qtou): New.
27676         (__gcc_itoq): New.
27677         (__gcc_utoq): New.
27678         (fmsub): New.
27679         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
27680         soft-float functions.
27681         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
27682         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
27683         about long double soft float.
27684
27685 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
27686             Tehila Meyzels  <tehila@il.ibm.com>
27687
27688         * tree-vectorizer.h (is_pattern_stmt_p): New.
27689         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
27690         formatting (tabs instead of spaces). Cleanup and clarify setting
27691         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
27692         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
27693         (vectorizable_type_demotion): Check that types are integral.
27694         (vectorizable_type_promotion): Likewise.
27695         (vectorizable_store): Fix typo.  Eliminate new-line at end of
27696         comments.
27697
27698 2007-01-16  Jan Hubicka  <jh@suse.cz>
27699
27700         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
27701         cgraph edges too.
27702
27703 2007-01-15  Eric Christopher  <echristo@apple.com>
27704
27705         * ifcvt.c: Include vec.h, vecprim.h.
27706         (check_cond_move_block): New argument regs.
27707         Reorganize. Add registers used to regs.
27708         (cond_move_process_if_block): Use regs set above as
27709         loop bounds.
27710
27711 2007-01-15  Eric Christopher  <echristo@apple.com>
27712
27713         * config/darwin.h: Update copyright.
27714         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
27715         (LINK_COMMAND_SPEC): Add -u.
27716         (LINK_SPEC): Fix umbrella for above.
27717
27718 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
27719
27720         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
27721         glibc CVS.
27722
27723 2007-01-15  Tom Tromey  <tromey@redhat.com>
27724
27725         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
27726         * doc/install.texi (Testing): Don't mention jacks.
27727         (Configuration): Document --enable-java-maintainer-mode.  Move
27728         --with-java-home to libgcj-specific section.  Document
27729         --with-ecj-jar.
27730         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
27731
27732 2007-01-15  Jan Hubicka  <jh@suse.cz>
27733
27734         * tree-ssa-dce.c (DCE_TODOs): New.
27735         (propagate_necessity): Return if something changed.
27736         (eliminate_unnecessary_stmts): Likewise.
27737         (perform_tree_ssa_dce): Return TODO flags when needed.
27738         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
27739
27740 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
27741
27742         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
27743         (fyl2x_extend<mode>xf3_i387): New insn pattern.
27744         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
27745         patterns using X87MODEF12 mode macro.  Extend operand 1
27746         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
27747         (log10<mode>2): Ditto.
27748         (log2<mode>2): Ditto.
27749         (log1p<mode>2): Ditto.
27750         (logb<mode>2): Ditto.
27751         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
27752         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
27753         (*fxtractxf3_i387): Rename from *fxtractxf3.
27754         (fxtract_extend<mode>xf3_i387): New insn pattern.
27755         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
27756         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
27757         and gen_fyl2xxf3_i387().
27758
27759 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
27760
27761         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
27762         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
27763         get_loop_exit_edges.  Changed return type to bool.
27764         * cfgloop.h (fix_loop_placement): Declaration removed.
27765
27766 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
27767
27768         * param.h (MIN_VECT_LOOP_BOUND): New.
27769         * params.def (MIN_VECT_LOOP_BOUND): New.
27770         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
27771         argument - minimum threshold for number of iterations.
27772         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
27773         argument to declaration.
27774         * tree-vect-analyze.c (vect_analyze_operations): Check value of
27775         MIN_VECT_LOOP_BOUND.
27776         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
27777         slpeel_tree_peel_loop_to_edge with additional argument.
27778         (vect_do_peeling_for_alignment): Likewise.
27779         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
27780
27781 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
27782
27783         PR target/30413
27784         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
27785         operands of size 1.
27786
27787 2007-01-14  Jan Hubicka  <jh@suse.cz>
27788
27789         * tree-dfa.c (remove_referenced_var): New function.
27790         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
27791         prune referenced vars list too.
27792         * tree-flow.h (remove_referenced_var): Declare.
27793
27794 2007-01-14  Jan Hubicka  <jh@suse.cz>
27795
27796         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
27797         separately.
27798         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
27799         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
27800         * except.h (verify_eh_throw_table_statements): Kill prototype.
27801         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
27802         into call exrepssions.
27803         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
27804         eh trhow verifier.
27805         * tree-cfg.c: Include pointer-set.h.
27806         (verify_node_sharing): Work on pointer set.
27807         (verify_eh_throw_stmt_node): New.
27808         (verify_stmts): Use pointers sets, verify throw_stmt.
27809
27810 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
27811
27812         * ipa-reference.c (analyze_function): Consider also addresses taken
27813         in phi nodes.
27814
27815 2007-01-12  Roger Sayle  <roger@eyesopen.com>
27816
27817         * c-typeck.c (null_pointer_constant_p): Replace use of
27818         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
27819         (build_c_cast): Likewise.
27820
27821 2007-01-12  Roger Sayle  <roger@eyesopen.com>
27822
27823         * tree.h (force_fit_type_double): Remove unused final argument.
27824         * c-common.c (constant_expression_warning): Replace use of
27825         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
27826         (convert_and_check): Likewise.
27827         (shorten_compare): Update call to force_fit_type_double.
27828         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
27829         * convert.c (convert_to_pointer): Update call to
27830         force_fit_type_double.
27831         * fold-const.c (force_fit_type_double): Remove overflowed_const
27832         argument.
27833         (int_const_binop, fold_convert_const_int_from_int,
27834         fold_convert_const_int_from_real, fold_div_compare,
27835         fold_sign_changed_comparison, fold_unary, fold_negate_const,
27836         fold_abs_const, fold_not_const): Remove the final argument from
27837         calls to force_fit_type_double.
27838
27839 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27840
27841         * configure.ac: Set insn to "nop" for spu-*-* also.
27842         * configure: Regenerate.
27843
27844 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
27845
27846         * builtins.def : Add BUILT_IN_FREE.
27847
27848 2007-01-12  Jan Hubicka  <jh@suse.cz>
27849
27850         PR tree-optimization/30443
27851         * tree-inline.c (tree_function_versioning): Do not optimize when
27852         cloning for inlining.
27853
27854 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
27855
27856         * doc/loop.texi: Document recording of loop exits.
27857         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
27858         (update_single_exits_after_duplication,
27859         update_single_exit_for_duplicated_loop,
27860         update_single_exit_for_duplicated_loops): Removed.
27861         (duplicate_loop_to_header_edge): Do not call
27862         update_single_exits_after_duplication and
27863         update_single_exit_for_duplicated_loops.
27864         (loop_version): Do not update single_exit information.
27865         (fix_loop_structure): Use record_loop_exits instead of
27866         mark_single_exit_loops.
27867         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
27868         the lists of loop exits.
27869         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
27870         split_edge, merge_blocks): Update the lists of loop exits.
27871         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
27872         loop_optimizer_init.
27873         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
27874         of mark_single_exit_loops.
27875         (loop_optimizer_finalize): Call release_recorded_exits.
27876         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
27877         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
27878         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
27879         update single exit information.
27880         * lambda-code.c (perfect_nestify): Ditto.
27881         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
27882         (mark_single_exit_loops): Removed.
27883         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
27884         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
27885         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
27886         functions.
27887         (get_loop_exit_edges, single_exit): Use recorded exit lists.
27888         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
27889         (verify_loop_structure): Verify consistency of the exit lists.
27890         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
27891         (set_single_exit): Removed.
27892         * cfgloop.h (struct loop_exit): New function.
27893         (struct loop): single_exit_ field replaced by exits field.
27894         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
27895         LOOPS_HAVE_RECORDED_EXITS.
27896         (struct loops): Added exits hash.
27897         (mark_single_exit_loops, set_single_exit): Declaration removed.
27898         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
27899
27900 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
27901
27902         * doc/invoke.texi: Avoid use of @headitem.
27903
27904 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
27905
27906         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
27907
27908 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
27909
27910         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
27911         list of targets.
27912
27913 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
27914             Richard Sandiford  <richard@codesourcery.com>
27915
27916         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
27917         * config/m68k/m68k.opt: Resort options.
27918         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
27919
27920 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
27921             Richard Sandiford  <richard@codesourcery.com>
27922
27923         * doc/invoke.texi: Document the macros that are defined by
27924         m68k's -mtune and -mhard-float options.
27925         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
27926         (m68k_cpp_cpu_family): Likewise.
27927         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
27928         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
27929         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
27930         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
27931         (m68k_cpp_cpu_family): Likewise.
27932
27933 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
27934
27935         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
27936         macros besides mc68000 as tuning macros.  Use a switch statement
27937         to set them and mcpu32.
27938
27939 2007-01-12  Julian Brown  <julian@codesourcery.com>
27940
27941         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
27942         (TARGET_68040_ONLY): Rename to...
27943         (TARGET_68040): ...this.
27944         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
27945         * config/m68k/m68k.md: Likewise.
27946
27947 2007-01-12  Julian Brown  <julian@codesourcery.com>
27948             Nathan Sidwell  <nathan@codesourcery.com>
27949             Richard Sandiford  <richard@codesourcery.com>
27950
27951         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
27952         the -mcpu= argument associated with the --with-cpu setting.
27953         Define M68K_DEFAULT_TUNE to the default -mtune= option,
27954         if different from the one implied by the -mcpu setting.
27955         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
27956         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
27957         * doc/invoke.texi: Mention ColdFire in the introduction to the
27958         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
27959         -mno-div and -mhard-float options.  Make -m68881 a synonym for
27960         -mhard-float.  Document the previously-undocumented -m5206e,
27961         -m528x, -m5307 and -m5407 options.  Tweak the existing option
27962         documentation for consistency.
27963         * doc/install.texi: Mention new --with-cpu arguments.
27964         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
27965         default CPU if neither -mcpu nor -march are specified.
27966         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
27967         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
27968         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
27969         using m68k_tune to decide between families that implement the
27970         same ISA.  Use m68k_tune to set __mcfv4e__.
27971         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
27972         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
27973         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
27974         (FL_ISA_C, FL_ISA_MMU): New macros.
27975         (MASK_COLDFIRE): Delete.
27976         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
27977         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
27978         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
27979         (TARGET_HARD_FLOAT): Do not define here.
27980         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
27981         (TUNE_68000): New macro.
27982         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
27983         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
27984         (TUNE_CFV2): Redefine in terms of m68k_tune.
27985         (uarch_type, target_device, fpu_type): New enums.
27986         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
27987         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
27988         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
27989         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
27990         (FL_FOR_isa_c): New macros.
27991         (m68k_isa): New enum.
27992         (m68k_target_selection): New structure.
27993         (all_devices, all_isas, all_microarchs): New tables.
27994         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
27995         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
27996         (MASK_ALL_CPU_BITS): Delete.
27997         (m68k_find_selection): New function.
27998         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
27999         Map the legacy target options to a combination of the new ones.
28000         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
28001         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
28002         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
28003         settings.
28004         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
28005         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
28006         properties.
28007         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
28008         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
28009         * config/m68k/m68k-devices.def: New file.
28010
28011 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28012             Nathan Sidwell  <nathan@codesourcery.com>
28013
28014         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
28015         (SUBTARGET_EXTRA_SPECS): New macros.
28016         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
28017         use %(asm_cpu_spec) instead.
28018         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
28019         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
28020         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
28021         (EXTRA_SPECS): Rename to...
28022         (SUBTARGET_EXTRA_SPECS): ...this.
28023
28024 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28025             Richard Sandiford  <richard@codesourcery.com>
28026             Julian Brown  <julian@codesourcery.com>
28027
28028         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28029         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
28030         to the configuration's default CPU.
28031         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
28032         Remove default masks.
28033         (m680[012]0-*-*): Set the default with_cpu to the first part of
28034         the target name.
28035         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
28036         (m68k*-*-linux): Extend the --with-cpu handling to...
28037         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
28038         and m68010.  Don't set target_cpu_default2.
28039         * doc/install.texi: Document --with-cpu for m68k.
28040         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
28041         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
28042         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
28043         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
28044         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
28045         (ASM_SPEC): Remove use of %(asm_cpu_default).
28046         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
28047         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
28048         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
28049         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
28050         __HAVE_FPU__ if TARGET_HARD_FLOAT.
28051         (TARGET_DEFAULT): Delete.
28052         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
28053         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
28054         (CPP_CPU_SPEC): Delete.
28055         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
28056         the appropriate string.
28057         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
28058         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
28059         (ASM_SPEC): Don't use %(asm_default_spec).
28060         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
28061         TARGET_DEFAULT and add MASK_68881.
28062         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
28063
28064 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28065
28066         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
28067         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
28068         MASK_68010 alongside MASK_68020.
28069         * doc/invoke.texi: Document -m68010.
28070         * config/m68k/m68k.opt (m68010): New.
28071         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
28072         if TUNE_68010.
28073         (TUNE_68010): New macro.
28074         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
28075         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
28076         (M68K_CPU_m68332): Add MASK_68010.
28077         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
28078         fallback definition.
28079         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
28080         defines.
28081         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
28082         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
28083         to all entries that use MASK_68020.
28084         (output_move_simode_const, output_move_himode, output_move_qimode)
28085         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
28086         instead of TARGET_68020 to select clr behavior.  Remove comment
28087         about there being no TARGET_68010.
28088         * config/m68k/m68k.md: Likewise throughout.
28089
28090 2007-01-12  Julian Brown  <julian@codesourcery.com>
28091
28092         * config/m68k/m68k.h (TARGET_ISAB): New macro.
28093         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
28094         * config/m68k/m68k.md: Likewise.
28095
28096 2007-01-12  Julian Brown  <julian@codesourcery.com>
28097
28098         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
28099         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
28100
28101 2007-01-12  Julian Brown  <julian@codesourcery.com>
28102
28103         * config/m68k/m68k.h (TUNE_68040_60): New macro.
28104         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
28105         * config/m68k/m68k.md: Likewise.
28106
28107 2007-01-12  Julian Brown  <julian@codesourcery.com>
28108             Richard Sandiford  <richard@codesourcery.com>
28109
28110         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
28111         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
28112         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
28113         TARGET_CPU32.
28114         (TARGET_CPU32): Rename to...
28115         (TUNE_CPU32): ...this.
28116         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
28117         (TUNE_CFV2): New macros.
28118         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
28119         remove conditions that are implied by TARGET_68020.
28120         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
28121         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
28122         (m68k_output_function_epilogue): Likewise.
28123         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
28124         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
28125         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
28126         non-68000 timings.  Refactor multiplication and division costs.
28127         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
28128         TUNE_CPU32 instead of TARGET_CPU32.
28129         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
28130         and TUNE_68060 instead of TARGET_68060.
28131         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
28132         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
28133         TARGET_CPU32.
28134         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
28135         && !TARGET_COLDFIRE" to choose between moveq and clr.
28136         Likewise in the unnamed movsf pattern.
28137         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
28138         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
28139         ashiftrt pattern.
28140
28141 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28142
28143         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
28144         of tabbing before backslashes.
28145
28146 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28147
28148         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
28149         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
28150         (ASM_OUTPUT_INTERNAL_LABEL): Define.
28151
28152 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
28153
28154         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
28155         find_interesting_uses_cond.
28156         (find_interesting_uses_cond): Use extract_cond_operands.
28157         (rewrite_use_compare): Use extract_cond_operands and
28158         force_gimple_operand_bsi.  Do not call update_stmt.
28159         (determine_use_iv_cost_condition): Use extract_cond_operands.
28160         Return cheaper of using original bound and changing the exit bound.
28161
28162 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
28163
28164         PR tree-optimization/29516
28165         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
28166         most_expensive_mult_to_index, addr_to_parts,
28167         create_mem_ref, maybe_fold_tmr): Make the type of
28168         fields of TARGET_MEM_REF sizetype.
28169         (move_fixed_address_to_symbol, move_pointer_to_base):
28170         New functions.
28171         * tree.def (TARGET_MEM_REF): Add comment on types of
28172         the operands.
28173
28174 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
28175
28176         * c-common.c (vector_types_convertible_p): Treat opaque types as
28177         always convertible if they have the same size, but not otherwise.
28178
28179 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
28180
28181         * ifcvt.c (struct noce_if_info): Add comments to the fields.
28182         Remove the b_unconditional field.
28183         (noce_try_sign_mask): Do not look at b_unconditional.
28184         (noce_process_if_block): Do not use merge_if_blocks.  Update
28185         the CFG here.  Do not set b_unconditional.
28186         (cond_move_process_if_block): Likewise.
28187         (find_cond_trap): Likewise.
28188         (check_cond_move_block): Require simple jump insns at the end
28189         of the basic block.
28190
28191 2007-01-11  Jan Hubicka  <jh@suse.cz>
28192
28193         PR tree-optimization/1046
28194         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
28195         when alias info is not ready.
28196         (pass_tail_recursion): Do not require aliasing.
28197         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
28198         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
28199         * tree-ssa-copy.c (pass_copy_prop): Likewise.
28200         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
28201         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
28202         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
28203         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
28204         before inlining.
28205         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
28206         When aliasing is not build, mark statement as volatile.
28207
28208 2007-01-11  Tom Tromey  <tromey@redhat.com>
28209
28210         PR preprocessor/15185, PR preprocessor/20989:
28211         * doc/cppopts.texi <-MT>: Update description of algorithm for
28212         computing default target.
28213         <-M, -MD>: Reword "basename" text.
28214
28215 2007-01-11  Roger Sayle  <roger@eyesopen.com>
28216
28217         * builtins.c (expand_builtin_pow, expand_builtin_powi,
28218         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
28219         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
28220         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
28221         fold_builtin_bswap, real_constp, fold_builtin_pow,
28222         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
28223         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
28224         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28225         * convert.c (convert_to_pointer): Likewise.
28226         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
28227         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
28228         const_binop, fold_convert_const_int_from_int,
28229         fold_convert_const_int_from_real,
28230         fold_convert_const_real_from_real, sign_bit_p,
28231         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
28232         fold_sign_changed_comparison, fold_unary, fold_comparison,
28233         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
28234         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
28235         * print-tree.c (print_node_brief, print_node): Likewise.
28236         * stor-layout.c (place_field, layout_type): Likewise.
28237         * tree-chrec.c (keep_cast): Likewise.
28238         * tree.c (build_vector, build_real, build_real_from_int_cst,
28239         build_complex): Likewise.
28240
28241 2007-01-11  Roger Sayle  <roger@eyesopen.com>
28242
28243         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
28244         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
28245
28246 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
28247
28248         * configure.ac (strict1_warn): Rename to strict_warn.
28249         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
28250         cc_set_by_configure, quoted_cc_set_by_configure,
28251         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
28252         all_boot_languages, all_stagestuff): Remove.
28253         (target_list): Remove bootstrap targets.
28254         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
28255         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
28256         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
28257         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
28258         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
28259         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
28260         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
28261         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
28262         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
28263         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
28264         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
28265         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
28266         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
28267         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
28268         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
28269         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
28270         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
28271         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
28272         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
28273         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
28274         (mostlyclean): Adjust.
28275         (clean, distclean): Don't mention bootstrap stuff.
28276         * configure: Regenerate.
28277         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
28278         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
28279         treelang/config-lang.in (stagestuff): Remove.
28280         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
28281         stageprofile, stagefeedback, stagestuff): Remove mention.
28282
28283 2007-01-11  Nick Clifton  <nickc@redhat.com>
28284
28285         * config/mcore/predicates.md (mcore_general_movesrc_operand):
28286         Accept CONSTs.
28287         (mcore_general_movdst_operand): Do not accept CONST_INTs.
28288         (mcore_arith_K_S_operand): Run the test for the S constraint not
28289         the test for the M constraint.
28290         (mcore_addsub_operand): Do not accept integer values that are
28291         larger than 32 bits.
28292         * config/mcore/mcore.md: Remove unused constraints from split.
28293         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
28294         (addsi3): Likewise.
28295         (allocate_stack): Likewise.
28296         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
28297         operands to 32 bits.
28298         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
28299         INTVAL.
28300         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
28301         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
28302         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
28303         mcore_output_bclri, mcore_output_andn, output_inline_const,
28304         mcore_output_move, mcore_output_movedouble): Likewise.
28305         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
28306         (output_inline_const): Likewise.
28307         (output_inline_const): Fix format strings used in sprintf
28308         statements.
28309         * config/mcore/mcore-protos.h: Update prototypes for changed
28310         functions in mcore.c.
28311         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
28312         HOST_WIDE_INT and not int.
28313         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
28314         CONST_OK_FOR_N): Likewise.
28315         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
28316         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
28317         an INTVAL.
28318
28319 2007-01-10  Jan Hubicka  <jh@suse.cz>
28320
28321         * tree-vrp.c (remove_range_assertions): Release defs.
28322         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
28323         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
28324
28325 2007-01-10  Paul Brook  <paul@codesourcery.com>
28326
28327         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
28328         * config/arm/arm.md (mulsi3subsi): New insn.
28329
28330 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
28331
28332         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
28333         (tree_transform_and_unroll_loop): New.
28334         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
28335         Declare.
28336
28337 2007-01-10  Robert Kennedy <jimbob@google.com>
28338
28339         * fold-const.c (fold_comparison): Fold comparisons like (x *
28340         1000 < 0) to (x < 0).
28341
28342 2007-01-10  Ian Lance Taylor  <iant@google.com>
28343
28344         * tree-pretty-print.c (dump_generic_node): Print parentheses when
28345         operands have the same priority.
28346
28347 2007-01-10  Tom Tromey  <tromey@redhat.com>
28348
28349         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
28350         (fold_binary): Likewise.
28351         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
28352         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
28353         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
28354         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
28355         * langhooks.h (struct lang_hooks): Removed field
28356         'can_use_bit_fields_p'.
28357
28358 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
28359
28360         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
28361
28362 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
28363
28364         * function.c (get_last_funcdef_no): New function.
28365         * function.h (get_last_funcdef_no): Declare.
28366         * tree-inline.c (initialize_cfun): Add initialization.
28367         (tree_function_versioning): Cleanup.
28368
28369 2007-01-10  Jan Hubicka  <jh@suse.cz>
28370
28371         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
28372         PHIs.
28373
28374 2007-01-10  Sa Liu  <saliu@de.ibm.com>
28375             Ben Elliston  <bje@au.ibm.com>
28376
28377         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
28378         for SAVE_NONLOCAL and Pmode for any other save level.
28379         * spu-protos.h (spu_restore_stack_block): Declare.
28380         * spu.md (save_stack_block): Remove.
28381         (restore_stack_block): Call spu_restore_stack_block.
28382         * spu.c (spu_restore_stack_block): New function.
28383         (spu_expand_epilogue): Remove old comment.
28384
28385 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
28386
28387         PR tree-optimization/30322
28388         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
28389         (cand_value_at): Return the value as aff_tree.
28390         (may_eliminate_iv): Convert the bound from aff_tree to tree.
28391         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
28392         aff_combination_mult): New functions.
28393         (aff_combination_add): Use aff_combination_add_cst.
28394         (aff_combination_convert): Allow conversions to a wider type.
28395         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
28396         * tree-affine.h (aff_combination_mult): Declare.
28397
28398 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
28399
28400         * doc/tm.texi: Update documentation to reflect reality of exec
28401         and start file search behaviours. Update copyright year.
28402         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
28403         header file directories.
28404
28405 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
28406
28407         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
28408         (*cosxf2): Rename to cosxf2_i387.
28409         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
28410         using X87MODEF12 mode macro. Rename patterns to
28411         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
28412         for SSE math.
28413         (*cosdf2, *cossf2): Ditto.
28414         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
28415         to match extended input operands.
28416         (sincos<mode>3): New expander.
28417         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
28418         insn patterns and corresponding splitters.
28419
28420 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
28421
28422         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
28423         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
28424
28425 2007-01-09  Nicolas Pitre  <nico@cam.org>
28426
28427         PR target/30173
28428         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
28429
28430 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
28431
28432         * target.h (struct gcc_target): New field library_rtti_comdat.
28433         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
28434         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
28435         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
28436         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
28437
28438 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
28439
28440         * doc/invoke.texi (Optimize Options): Correct description of -O0.
28441
28442 2007-01-08  Richard Guenther  <rguenther@suse.de>
28443
28444         * tree.h (force_fit_type_double): Export.
28445         (force_fit_type): Remove.
28446         * fold-const.c (force_fit_type_double): New function.
28447         (force_fit_type): Remove.
28448         (int_const_binop): Use it.
28449         (fold_convert_const_int_from_int): Likewise.
28450         (fold_convert_const_int_from_real): Likewise.
28451         (fold_div_compare): Likewise.
28452         (fold_sign_changed_comparison): Likewise.
28453         (fold_unary): Likewise.
28454         (fold_negate_const): Likewise.
28455         (fold_abs_const): Likewise.
28456         (fold_not_const): Likewise.
28457         * c-common.c (shorten_compare): Use force_fit_type_double.
28458         * convert.c (convert_to_pointer): Likewise.
28459
28460 2007-01-08  Richard Guenther  <rguenther@suse.de>
28461
28462         * tree.h (build_int_cst_wide_type): Export.
28463         * tree.c (build_int_cst_wide_type): New function.
28464         (build_int_cst_wide): Fix comment.
28465         * builtins.c (fold_builtin_object_size): Use build_int_cst
28466         to build -1 or 0 of the correct type.  Use fit_double_type
28467         to check for overflow.
28468         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
28469         to build the mask.
28470         (decode_field_reference): Likewise.
28471         (all_ones_mask_p): Likewise.
28472         (native_interpret_int): Use build_int_cst_wide_type.
28473         (fold_binary): Use build_int_cst_type to build an all-ones
28474         value.
28475         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
28476
28477 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
28478
28479         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
28480
28481 2007-01-09  Ben Elliston  <bje@au.ibm.com>
28482
28483         * genautomata.c (STATS_OPTION): New option.
28484         (stats_flag): New flag.
28485         (gen_automata_option): Handle it.
28486         (initiate_automaton_gen): Ditto.
28487         (write_automata): Output statistics only if stats_flag is
28488         set. Likewise, output time statistics only if time_flag is set.
28489         * doc/md.texi (Processor pipeline description): Document new flag.
28490
28491 2007-01-08  Richard Guenther  <rguenther@suse.de>
28492
28493         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
28494         * tree.c (build_int_cst_type): Likewise.
28495         (size_in_bytes): Don't call force_fit_type on the result.
28496         (int_fits_type_p): Use fit_double_type.
28497         * fold-const.c (fit_double_type): New function.
28498         (force_fit_type): Use it.
28499         * tree.h (fit_double_type): Export.
28500
28501 2007-01-08  Jan Hubicka  <jh@suse.cz>
28502
28503         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
28504         * ipa.c (function_and_variable_visibility): Fix return type.
28505
28506 2007-01-08  Richard Guenther  <rguenther@suse.de>
28507
28508         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
28509         of offset to build the index.
28510         * tree-pretty-print.c (dump_generic_node): Don't build negated
28511         const just for printing.
28512         * c-pretty-print.c (pp_c_integer_constant): Likewise.
28513         * builtins.c (fold_builtin_int_roundingfn): Check if result
28514         fits the type by using force_fit_type and comparing the result.
28515         * predict.c (predict_loops): Use compare_tree_int for comparison.
28516         * tree.c (build_int_cst): Fall back to integer_type_node for
28517         NULL_TREE type.
28518         (build_int_cst_wide): Assert type is non-null.
28519
28520 2007-01-08  Roberto Costa  <roberto.costa@st.com>
28521
28522         * tree-vrp.c (extract_range_from_cond_expr): New.
28523         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
28524         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
28525         as expressions.
28526         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
28527         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
28528         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
28529         used as expressions.
28530         * tree-object-size.c (cond_expr_object_size): New.
28531         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
28532
28533 2007-01-08  Jan Hubicka  <jh@suse.cz>
28534
28535         * tree-ssa-forwprop.c (forward_propagate_into_cond,
28536         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
28537         statement.
28538
28539 2007-01-08  Richard Guenther  <rguenther@suse.de>
28540
28541         PR tree-optimization/23603
28542         * tree-vrp.c (set_value_range_to_truthvalue): New function.
28543         (extract_range_from_binary): Fall back to truthvalue instead of
28544         varying for TRUTH_*_EXPR.
28545         (extract_range_from_comparison): Fall back to truthvalue instead of
28546         varying.
28547         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
28548         if all visited PHI values were constant.
28549
28550 2007-01-08  Jan Hubicka  <jh@suse.cz>
28551
28552         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
28553         (cgraph_analyze_function): break out from ...
28554         (cgraph_finalize_compilation_unit): ... here.
28555         (cgraph_expand_function): Remove forgoten commented out line.
28556         (cgraph_optimize): Analyze functions.
28557
28558 2007-01-08  Jan Hubicka  <jh@suse.cz>
28559
28560         * tree-pas.h (TODO_remove_function): New flag.
28561         (TODO_update*): Renumber.
28562         (pass_ipa_increase_alignment,
28563         pass_ipa_function_and_variable_visibility): New passes.
28564         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
28565         (cgraph_function_and_variable_visibility): Move to ipa.c
28566         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
28567         cgraph_increase_alignment.
28568         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
28569         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
28570         calling tree-inline.
28571         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
28572         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
28573         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
28574         (gate_increase_alignment): New function.
28575         (pass_ipa_increase_alignment): New pass.
28576         * ipa.c: Inline tree-pass.h and timevar.h
28577         (function_and_variable_visibility): Move here from cgraphunit.c
28578         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
28579         * passes.c (init_optimization_passes): Add the two new passes.
28580         (execute_todo): Handle cgraph_remove_functions.
28581
28582 2007-01-08  Nick Clifton  <nickc@redhat.com>
28583
28584         * config/frv/predicates.md (reg_or_0_operand): Accept
28585         CONST_DOUBLEs.
28586
28587 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
28588
28589         * config/bfin/rtems.h, config/bfin/t-rtems: New.
28590         * config.gcc: Add bfin*-rtems*.
28591
28592 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
28593
28594         * c.opt: Add -flax-vector-conversions.
28595         * c-typeck.c (convert_for_assignment): Pass flag to
28596         vector_types_convertible_p to allow emission of note.
28597         (digest_init): Likewise.
28598         * c-opts.c: Handle -flax-vector-conversions.
28599         * c-common.c (flag_lax_vector_conversions): New.
28600         (vector_types_convertible_p): Unless -flax-vector conversions
28601         has been passed, disallow conversions between vectors with
28602         differing numbers of subparts and/or element types.  If such
28603         a conversion is disallowed, possibly emit a note on the first
28604         occasion only to inform the user of -flax-vector-conversions.
28605         The new last argument specifies this.
28606         * c-common.h (flag_lax_vector_conversions): New.
28607         (vector_types_convertible_p): Add extra argument.
28608         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
28609         char_type_node for V*QI type vectors.
28610         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
28611         Update to satisfy new typechecking rules.
28612         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
28613         C and C++ variants.
28614         * doc/invoke.texi (C Dialect Options): Document
28615         -flax-vector-conversions.
28616
28617 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
28618
28619         PR tree-optimization/29877
28620         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
28621         a register variable on the RHS to not be replaceable.
28622
28623 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
28624         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
28625         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
28626         const_simm15, const_pow2, const_npow2): Added.
28627         * config/score/misc.md (insv, extv, extzv, movmemsi,
28628         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
28629         * config/score/score.c (score_address_cost, score_select_cc_mode):
28630         Added.
28631         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
28632         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
28633         Update score_print_operand.
28634         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
28635         Adjust register allocate order and update some macro define.
28636         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
28637         mdx_block_move_straight, mdx_block_move_loop_head,
28638         mdx_block_move_loop_body, mdx_block_move_loop_foot,
28639         mdx_block_move_loop, mdx_block_move): Added.
28640         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
28641         mdp_limm): Updated and fix some bug and typo.
28642         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
28643         (movsf, movdf, doloop_end): Added.
28644
28645 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
28646
28647         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
28648         config/arm/thumb2.md: Fix comment typos.
28649         * doc/extend.texi: Fix a typo.
28650
28651 2007-01-07  Eric Christopher  <echristo@apple.com>
28652
28653         * configure.ac: Check for __stack_chk_fail for darwin.
28654         * configure: Regenerate.
28655
28656 2007-01-07  Richard Guenther  <rguenther@suse.de>
28657
28658         * tree-vrp.c (extract_range_from_assert): CSE calls to
28659         compare_values where possible.
28660         (extract_range_from_unary_expr): Likewise.
28661
28662 2007-01-07  Anatoly Sokolov <aesok@post.ru>
28663
28664         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
28665         * config/avr/avr.c (call_insn_operand): Delete function.
28666         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
28667         instead of register number. Use predicates.
28668         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
28669         call_insn_operand): Add.
28670
28671 2007-01-06  Jan Hubicka  <jh@suse.cz>
28672
28673         * tree-pass.h (pass_build_cgraph_edges): Declare.
28674         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
28675         (visited_nodes): Remove.
28676         (cgraph_create_edges): Move to cgraphbuild.c; rename to
28677         build_cgrpah_edges; make visited_nodes local.
28678         (cgraph_process_new_functions): DO not call initialize_inline_failed.
28679         (record_references_in_initializer): Move to cgraphbuild.c
28680         (initialize_inline_failed, rebuild_cgraph_edges,
28681         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
28682         (verify_cgraph_node): Make visited_nodes local.
28683         (cgraph_analyze_function): Do not call cgraph_create_edges and
28684         initialize_inline_failed.
28685         (cgraph_expand_function): Do not call cgraph_lower_function;
28686         assert that function is already lowered.
28687         * Makefile.in (cgraphbuild.o): New.
28688         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
28689         at the end of lowering passes.
28690
28691 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
28692
28693         * ifcvt.c (cond_move_convert_if_block): New function, code
28694         factored out from...
28695         (cond_move_process_if_block): ...here.  Call the new function
28696         on the THEN and ELSE blocks.
28697         (merge_if_block): Do not copy global_live_at_end, merge_blocks
28698         already takes care of this.
28699
28700 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28701
28702         PR c/19978
28703         * tree.h (TREE_OVERFLOW_P): New.
28704         * c-typeck.c (parser_build_unary_op): Warn only if result
28705         overflowed and operands did not.
28706         (parser_build_binary_op): Likewise.
28707         (convert_for_assignment): Remove redundant overflow_warning.
28708         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
28709
28710 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28711
28712         * c-typeck.c (store_init_value): Split over two lines to follow
28713         the GNU coding style.
28714
28715 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
28716
28717         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
28718         __GXX_EXPERIMENTAL_CXX0X__.
28719         * doc/cpp.texi: Same.
28720
28721 2007-01-05  Richard Guenther  <rguenther@suse.de>
28722
28723         PR middle-end/27826
28724         * tree.c (get_narrower): Do not construct COMPONENT_REFs
28725         with mismatched types.  Instead explicitly build a
28726         conversion NOP_EXPR.
28727
28728 2007-01-05  Ian Lance Taylor  <iant@google.com>
28729
28730         * c-common.c (decl_with_nonnull_addr_p): New function.
28731         (c_common_truthvalue_conversion): Call it.
28732         * c-typeck.c (build_binary_op): Likewise.
28733         * c-common.h (decl_with_nonnull_addr_p): Declare.
28734
28735 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
28736
28737         PR c/30360
28738         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
28739         denom against 0.0.
28740
28741 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
28742
28743         * doc/install.texi (Final install): Document the fact that
28744         the GNAT runtime should not be stripped.
28745
28746 2007-01-04  Jan Hubicka  <jh@suse.cz>
28747
28748         * tree-inline.c (fold_marked_statements): Update operand caches
28749         and EH after folding
28750
28751 2007-01-04  Ian Lance Taylor  <iant@google.com>
28752
28753         * c-common.c (check_function_nonnull): Whitespace fix.
28754
28755 2007-01-04  Jan Hubicka  <jh@suse.cz>
28756
28757         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
28758         comitted older version of patch.
28759         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
28760         function, celanup cfg and collect garbage.
28761
28762 2007-01-04  Mike Stump  <mrs@apple.com>
28763
28764         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
28765         (clean): Likewise.
28766
28767 2007-01-04  Eric Christopher  <echristo@apple.com>
28768
28769         * libgcc2.c (__bswapsi2): Use SItype.
28770         (__bswapdi2): Use DItype.
28771         * libgcc2.h: Update for above.
28772
28773 2007-01-04  Paul Brook  <paul@codesourcery.com>
28774
28775         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
28776         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
28777         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
28778         umulsidi3, umulsidi3adddi, smulsi3_highpart,
28779         umulsi3_highpart): Make conditional on !arm_arch6.
28780         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
28781         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
28782         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
28783         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
28784         umulsi3_highpart_v6): New insns.
28785
28786 2007-01-04  Roger Sayle  <roger@eyesopen.com>
28787
28788         * fold-const.c (fold_convert): When casting an expression to void,
28789         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
28790         have a type.  Instead of attempting to build a NOP_EXPR, return
28791         these "special" trees directly.
28792
28793 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
28794
28795         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
28796         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
28797         rs6000_cost->fp not 0 as adjustment for outer NEG.
28798
28799 2007-01-04  Jan Hubicka  <jh@suse.cz>
28800
28801         * cgraph.c (cgraph_release_function_body): New function.
28802         (cgraph_remove_node): Use it.
28803         * cgraph.h (cgraph_release_function_body): Declare.
28804         * cgraphunit.c (cgraph_expand_function): Use it.
28805         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
28806         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
28807         is initialized and while compilation of other function is running.
28808         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
28809         statement CFG annotations from here to ...
28810         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
28811
28812 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
28813
28814         * cfgloop.h (enum li_flags): Make the constants powers of two.
28815
28816 2007-01-04  Jan Hubicka  <jh@suse.cz>
28817
28818         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
28819         set.
28820         (fold_marked_statements): New function.
28821         (optimize_inline_calls, tree_function_versioning): Fold new statements.
28822         * tree-inline.h (copy_body_data): Add statements_to_fold.
28823
28824 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
28825
28826         * config.gcc: Mention libgcc/config.host.
28827         * Makefile.in: Update comments mentioning libgcc.
28828         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
28829         (all.cross, start.encap, rest.encap, rest.cross): Update
28830         dependencies for libgcc move.
28831         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
28832         (clean-target, clean-target-libgcc): Delete.
28833         (srcdirify, GCC_EXTRA_PARTS): New macros.
28834         (libgcc-support, libgcc.mvars): New rules.
28835         (distclean): Remove mention of mklibgcc.
28836         (install): Don't reference INSTALL_LIBGCC.
28837         (install-common): Don't reference EXTRA_PARTS.
28838         (install-libgcc, install-multilib): Delete rules.
28839         * mklibgcc.in: Delete file.
28840         * doc/configfiles.texi: Don't mention mklibgcc.
28841
28842         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
28843         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
28844         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
28845         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
28846         (mklibgcc, ldblspecs): Likewise.
28847
28848         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
28849         (posixpre.def): Use $(T).
28850         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
28851         (SHLIB_SRC, SHLIB_INSTALL): Delete.
28852         (SHLIB_LINK): Make dummy.
28853         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
28854
28855         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
28856
28857         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
28858         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
28859         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
28860         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
28861
28862         * configure.ac (all_outputs): Remove mklibgcc.
28863         * configure: Regenerated.
28864
28865 2007-01-03  Josh Conner  <jconner@apple.com>
28866
28867         PR middle-end/29683
28868         * calls.c (compute_argument_addresses): Set stack and stack_slot
28869         for partial args, too.
28870         (store_one_arg): Use locate.size.constant for the size when
28871         generating a save_area.
28872
28873 2007-01-03  Robert Kennedy <jimbob@google.com>
28874
28875         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
28876         whose definitions are deleted due to basic block merging.
28877
28878 2007-01-03  Paul Brook  <paul@codesourcery.com>
28879
28880         PR target/16634
28881         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
28882         functions.
28883         (use_return_insn): Return 0 for Thumb interrupt functions.
28884         (print_multi_reg): Add rfe argument for IRQ returns.
28885         (arm_output_epilogue): Pop interrupt return address directly into PC.
28886         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
28887
28888 2007-01-03  Paul Brook  <paul@codesourcery.com>
28889
28890         Merge from sourcerygxx-4_1.
28891         * config/arm/thumb2.md: New file.
28892         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
28893         Thumb-2.
28894         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
28895         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
28896         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
28897         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
28898         tables.
28899         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
28900         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
28901         comptibility.
28902         * config/arm/ieee754-sf.S: Ditto.
28903         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
28904         (thumb1_base_register_rtx_p): ... to this.
28905         (thumb_index_register_rtx_p): Rename...
28906         (thumb1_index_register_rtx_p): ... to this.
28907         (thumb_output_function_prologue): Rename...
28908         (thumb1_output_function_prologue): ... to this.
28909         (thumb_legitimate_address_p): Rename...
28910         (thumb1_legitimate_address_p): ... to this.
28911         (thumb_rtx_costs): Rename...
28912         (thumb1_rtx_costs): ... to this.
28913         (thumb_compute_save_reg_mask): Rename...
28914         (thumb1_compute_save_reg_mask): ... to this.
28915         (thumb_final_prescan_insn): Rename...
28916         (thumb1_final_prescan_insn): ... to this.
28917         (thumb_expand_epilogue): Rename...
28918         (thumb1_expand_epilogue): ... to this.
28919         (arm_unwind_emit_stm): Rename...
28920         (arm_unwind_emit_sequence): ... to this.
28921         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
28922         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
28923         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
28924         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
28925         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
28926         thumb2_output_casesi): New functions.
28927         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
28928         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
28929         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
28930         THUMB2_WORK_REGS): Define.
28931         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
28932         arm_condexec_mask, arm_condexec_masklen)): New variables.
28933         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
28934         (arm_override_options): Check new CPU capabilities.
28935         Set new architecture flag variables.
28936         (arm_isr_value): Handle v7m interrupt functions.
28937         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
28938         Thumb-2.
28939         (const_ok_for_arm): Handle Thumb-2 constants.
28940         (arm_gen_constant): Ditto.  Use movw when available.
28941         (arm_function_ok_for_sibcall): Return false for v7m interrupt
28942         functions.
28943         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
28944         (thumb_find_work_register, arm_load_pic_register,
28945         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
28946         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
28947         print_multi_reg, output_mov_long_double_fpa_from_arm,
28948         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
28949         output_mov_double_fpa_from_arm, output_move_double,
28950         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
28951         output_return_instruction, arm_output_function_prologue,
28952         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
28953         arm_output_mi_thunk, thumb_set_return_address): Ditto.
28954         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
28955         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
28956         (arithmetic_instr, shift_op): Use arm_shift_nmem.
28957         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
28958         '!' and 'L'.
28959         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
28960         (thumb_expand_prologue): Use thumb_set_frame_pointer.
28961         (arm_file_start): Output directive for unified syntax.
28962         (arm_unwind_emit_set): Handle stack alignment instruction.
28963         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
28964         Add v6t2, v7, v7a, v7r and v7m.
28965         (RETLDM): Add Thumb-2 code.
28966         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
28967         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
28968         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
28969         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
28970         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
28971         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
28972         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
28973         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
28974         ADJUST_INSN_LENGTH): Define.
28975         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
28976         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
28977         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
28978         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
28979         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
28980         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
28981         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
28982         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
28983         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
28984         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
28985         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
28986         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
28987         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
28988         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
28989         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
28990         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
28991         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
28992         cortex-m3.
28993         * config/arm/arm-tune.md: Regenerate.
28994         * config/arm/arm-protos.h: Update prototypes.
28995         * config/arm/vfp.md: Enable patterns for Thumb-2.
28996         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
28997         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
28998         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
28999         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
29000         * config/arm/libunwind.S: Add Thumb-2 code.
29001         * config/arm/constraints.md: Update include Thumb-2.
29002         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
29003         * config/arm/ieee754-df.S: Ditto.
29004         * config/arm/bpabi.S: Ditto.
29005         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
29006         * config/arm/predicates.md (low_register_operand,
29007         low_reg_or_int_operand, thumb_16bit_operator): New.
29008         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
29009         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
29010         * config/arm/t-arm-elf: Add armv7 multilib.
29011         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
29012         Include thumb2.md.
29013         (UNSPEC_STACK_ALIGN, ce_count): New.
29014         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
29015         arm_zero_extendsidi2, arm_zero_extendqidi2): New
29016         insns/expanders.
29017         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
29018         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
29019         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
29020         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
29021         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
29022         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
29023         insns.
29024         * doc/extend.texi: Document ARMv7-M interrupt functions.
29025         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
29026
29027 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
29028
29029         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
29030         (struct _Unwind_Context): Rename args_size to flags, remove
29031         signal_frame field, add a new args_size field and version field.
29032         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
29033         _Unwind_IsExtendedContext): New inline functions.
29034         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
29035         Assume by_value array is only present if _Unwind_IsExtendedContext.
29036         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
29037         _Unwind_IsSignalFrame.
29038         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
29039         (uw_update_context_1): Use _Unwind_SetSignalFrame.
29040         (uw_init_context_1): Initialize context->flags to
29041         EXTENDED_CONTEXT_BIT.
29042         * config/rs6000/linux-unwind.h (frob_update_context): Use
29043         _Unwind_SetSignalFrame.
29044
29045 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29046
29047         PR middle-end/30353
29048         * gimplify.c (gimplify_modify_expr_complex_part): Move below
29049         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
29050         the value.
29051
29052 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
29053
29054         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
29055         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
29056         RET, AT_SP): Remove.
29057         * config/i386/i386.md (*sse_prologue_save_insn): Use return
29058         instead of RET.
29059
29060         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29061         * cfgbuild.c (find_basic_blocks): Likewise.
29062         * cfgrtl.c (rtl_create_basic_block): Likewise.
29063         * function.c (temp_slots_at_level): Likewise.
29064         * reg-stack.c (stack_regs_mentioned): Likewise.
29065         * regclass.c (allocate_reg_info): Likewise.
29066         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29067         set_bb_for_stmt, move_block_to_fn): Likewise.
29068         * tree-complex.c (tree_lower_complex): Likewise.
29069         * vec.h (VEC_safe_grow_cleared): New.
29070
29071         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
29072
29073 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
29074
29075         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
29076         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
29077         to loop_version.
29078         * cfgloopmanip.c (scale_loop_frequencies): Export.
29079         (loopify): Scale the frequencies by prescribed coefficients.
29080         (set_zero_probability): New function.
29081         (duplicate_loop_to_header_edge): Improve updating of frequencies.
29082         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
29083         and frequencies according to arguments.
29084         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
29085         correctly.
29086         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
29087         * modulo-sched.c (sms_schedule): Set probabilities for entering
29088         versioned loop correctly.
29089         * tree-vect-transform.c (vect_transform_loop): Ditto.
29090         * cfgloop.h (loopify, loop_version): Declaration changed.
29091         (scale_loop_frequencies): Declared.
29092
29093 2007-01-02  Jan Hubicka  <jh@suse.cz>
29094
29095         * cgraph.c: Include tree-flow.h
29096         (cgraph_add_new-function): Handle IPA_SSA mode; execute
29097         early_local_passes.
29098         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
29099         * tree-pass.h (pass_all_early_optimizations): Declare.
29100         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
29101         early_local_passes.
29102         (cgraph_analyze_function): Do early_local_passes.
29103         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
29104         Do not add referenced vars.
29105         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
29106         SSA form.
29107         (gate_all_early_local_passes): New gate.
29108         (pass_early_local_passes): Use new gate.
29109         (execute_early_local_optimizations): New functions.
29110         (gate_all_early_optimizations): New gate.
29111         (pass_all_early_optimizations): New pass.
29112         (execute_free_datastructures): Free SSA only when initialized.
29113         (gate_init_datastructures): Init only when optimizing.
29114         (tree_lowering_passes): Do early local passes when called late.
29115         * tree-profile.c (do_tree_profiling): Don't profile functions added
29116         late.
29117         (do_early_tree_profiling, pass_early_tree_profile): Kill.
29118         * tree-cfg.c (update_modified_stmts): Do not update when operands are
29119         not active.
29120         * passes.c (init_optimizations_passes): Reorder so we go into SSA
29121         during early_local_passes.
29122         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
29123
29124
29125 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
29126
29127         * Makefile.in: Update copyright year.
29128
29129 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
29130
29131         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
29132         in $(lang_checks) and check-consistency targets.
29133
29134 2007-01-02  Jan Hubicka  <jh@suse.cz>
29135
29136         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
29137         Do not add referenced vars.
29138         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
29139         are not active.
29140         * passes.c (init_optimization_passes): Put mudflap_2 after
29141         free_datastructures.
29142
29143 2007-01-02  Jan Hubicka  <jh@suse.cz>
29144
29145         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
29146         Set NOTHROW flag on call statements proved to be nothrow.
29147         Update statement of local calls so new pure/const functions are
29148         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
29149         goto receivers.
29150         (tree_rest_of_compilation): Register hooks and initialize bitmap
29151         early. Do not set after_inlining flag.
29152
29153 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
29154
29155         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
29156         HOST_BITS_PER_LONGLONG
29157
29158 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
29159
29160         PR c/19977
29161         * c-typeck.c (store_init_value): Don't emit pedantic overflow
29162         warning for non-static initializers.
29163
29164 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
29165
29166         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
29167         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
29168         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
29169         Always use set_unique_reg_note to add REG_EQUAL notes.
29170
29171 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29172
29173         Revert:
29174         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29175
29176         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29177         * cfgbuild.c (find_basic_blocks): Likewise.
29178         * cfgrtl.c (rtl_create_basic_block): Likewise.
29179         * function.c (temp_slots_at_level): Likewise.
29180         * reg-stack.c (stack_regs_mentioned): Likewise.
29181         * regclass.c (allocate_reg_info): Likewise.
29182         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29183         set_bb_for_stmt, move_block_to_fn): Likewise.
29184         * tree-complex.c (tree_lower_complex): Likewise.
29185         * vec.h (VEC_safe_grow_cleared): New.
29186
29187 2007-01-02  Ian Lance Taylor  <iant@google.com>
29188
29189         * c-common.c (c_common_truthvalue_conversion): When warning about
29190         using an assignment as a truth value, set TREE_NO_WARNING.
29191
29192 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29193
29194         PR middle-end/7651
29195         * c.opt (Wold-style-declaration): New.
29196         * doc/invoke.texi (C-only Warning Options): New.
29197         (Wold-style-declaration): Document it.
29198         (Wextra): Enabled by -Wextra.
29199         * c-opts.c (c_common_post_options): Enabled by -Wextra.
29200         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
29201         -Wold-style-declaration.
29202
29203 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29204
29205         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29206         * cfgbuild.c (find_basic_blocks): Likewise.
29207         * cfgrtl.c (rtl_create_basic_block): Likewise.
29208         * function.c (temp_slots_at_level): Likewise.
29209         * reg-stack.c (stack_regs_mentioned): Likewise.
29210         * regclass.c (allocate_reg_info): Likewise.
29211         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29212         set_bb_for_stmt, move_block_to_fn): Likewise.
29213         * tree-complex.c (tree_lower_complex): Likewise.
29214         * vec.h (VEC_safe_grow_cleared): New.
29215
29216 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
29217
29218         * c-common.c (c_common_nodes_and_builtins): Since variants of
29219         void_type_node get built before it is given a name, we need to
29220         give those variants the name, too.
29221         (complete_array_type): We need to work with the canonical main
29222         type of the array, from which we will build the qualified version.
29223         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
29224         * print-tree.c (print_node): Display canonical type information
29225         for each type.
29226         * stor-layout.c (layout_type): When we don't know the
29227         alignment of a type for which we're building an array, we end up
29228         guessing wrong, so make the type require structural equality.
29229         * tree.c (make_node_stat): When we build a new type, it is its
29230         own canonical type.
29231         (build_type_attribute_qual_variant): When building an attribute
29232         variant, its canonical type is the non-attribute variant. However,
29233         if the attributes are target-dependent and they differ, we need to
29234         use structural equality checks for this type.
29235         (build_qualified_type): A qualified type is not equivalent to its
29236         unqualified variant; set the canonical type appropriately.
29237         (build_distinct_type_copy): When building a distinct type from
29238         another type, the new type is its own canonical type.
29239         (build_variant_type_copy): When building a new type variant, we
29240         assume that it is equivalent to the original type.
29241         (build_pointer_type_for_mode): When building a pointer type, also
29242         build a canonical type pointer.
29243         (build_reference_type_for_mode): When building a reference type,
29244         also build a canonical type reference.
29245         (build_index_type): When we can't hash an index type (e.g.,
29246         because its maximum value is negative), the index type requires
29247         structural equality tests.
29248         (build_array_type): Build the canonical form of an array type.
29249         (build_function_type): Function types require structural equality,
29250         because they contain default arguments, attributes, etc.
29251         (build_method_type_directly): Ditto for method types.
29252         (build_offset_type): Build the canonical offset type.
29253         (build_complex_type): Build the canonical vector type.
29254         (make_vector_type): Build the canonical vector type.
29255         * tree.h (TYPE_CANONICAL): New.
29256         (TYPE_STRUCTURAL_EQUALITY_P): New.
29257         (SET_TYPE_STRUCTURAL_EQUALITY): New.
29258         (struct tree_type): Added "canonical" field.
29259         * params.h (VERIFY_CANONICAL_TYPES): New.
29260         * doc/c-tree.texi (TYPE_CANONICAL): Document.
29261         (TYPE_STRUCTURAL_EQUALITY_P): Document.
29262         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
29263         * doc/invoke.texi (verify-canonical-types): Document --param
29264         parameter for verifying canonical types.
29265
29266 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
29267
29268         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
29269         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
29270         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
29271         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
29272         tm_file.
29273         * config/rs6000/e500.h: New.
29274         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
29275         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
29276         Remove.
29277         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
29278         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
29279         TARGET_E500_DOUBLE): Remove.
29280         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
29281         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
29282         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
29283         * config/rs6000/rs6000.c (rs6000_override_options): Use
29284         CHECK_E500_OPTIONS.
29285
29286 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
29287
29288         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
29289         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
29290         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
29291         rs6000_emit_cmove): Don't check TARGET_E500.
29292         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
29293         sordered): Don't check TARGET_E500.
29294
29295 2007-01-01  Eric Christopher  <echristo@apple.com>
29296
29297         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
29298         HARD_REGISTER_NUM_P.
29299
29300 2007-01-01  Roger Sayle  <roger@eyesopen.com>
29301
29302         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
29303         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
29304         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
29305         eq/ne Y".
29306
29307 2007-01-01  Mike Stump  <mrs@apple.com>
29308
29309         * configure.ac: Remove support for building with Apple's gcc-3.1.
29310
29311 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
29312
29313         PR middle-end/30311
29314         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
29315         REG is a hard register.  Do not modify REG before calling
29316         subreg_nregs.
29317         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
29318         multiple of the size of YMODE for certain lowpart cases.
29319
29320 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
29321
29322         PR middle-end/30253
29323         * gimplify (voidify_wrapper_expr): Update for
29324         GIMPLE_MODIFY_STMT.
29325
29326 2007-01-01  Andreas Schwab  <schwab@suse.de>
29327
29328         PR target/29166
29329         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
29330         save of BR0 in extra_spill_size instead of spill_size.
29331         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
29332         area.
29333         (ia64_expand_epilogue): Restore BR0 from its new location.
29334
29335 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
29336
29337         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
29338         Use a temporary variable if the left hand side is not a gimple
29339         register.
29340
29341 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
29342
29343         * gimplify.c (gimplify_return_expr): Make the temporary variable
29344         for the return expression, a gimple register variable.
29345
29346 2007-01-01  Jan Hubicka  <jh@suse.cz>
29347
29348         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
29349         INSN_LIST.
29350
29351 2007-01-01  Mike Stump  <mrs@apple.com>
29352
29353         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
29354         .literal16.
29355         * config/darwin.c (machopic_select_rtx_section): Use
29356         HAVE_GAS_LITERAL16.
29357         (darwin_mergeable_constant_section): Likewise.
29358         * configure: Regenerate.
29359         * config.in: Regenerate.
29360
29361 2007-01-01  Jan Hubicka  <jh@suse.cz>
29362             Andrew Pinski  <pinskia@gmail.com>
29363
29364         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
29365         before starting IPA passes.