OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
2
3         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
4         final insn of a split.
5
6 2008-08-30  Jan Hubicka  <jh@suse.cz>
7
8         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
9         optimized for speed.
10         * final.c (compute_alignments): Use optimize_bb_for_size_p.
11         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
12         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
13         flag_gcse_after_reload_set): New static vars.
14         (common_handle_option): Enable those flags for profile-use.
15         (decode_options): Remove optimize_size flags that are handled
16         on higher granuality.
17         * tree-vectorizer.c (vectorize_loops): Use
18         optimize_loop_nest_for_speed_p.
19         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
20         * tree-predcom.c (tree_predictive_commoning): Use
21         optimize_loop_for_speed_p.
22         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
23         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
24         * predict.c (optimize_loop_for_speed_p): Fix walk.
25
26 2008-08-30  Jan Hubicka  <jh@suse.cz>
27
28         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
29         functions.
30         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
31         profile presence locally.
32
33 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
34
35         PR bootstrap/37086
36         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
37         versions before 4.0.
38
39 2008-08-29  Jan Hubicka  <jh@suse.cz>
40
41         * tree-inline.c (insert_init_stmt): Insert sequence even when
42         not in SSA form.
43
44 2008-08-29  Jeff Law  <law@redhat.com>
45
46         * mn10300.c (mn10300_secondary_reload_class): We need secondary
47         reloads for AM33-2 if IN is a pseudo with an equivalent memory
48         location and class is an FP register.
49
50 2008-08-29  Jan Hubicka  <jh@suse.cz>
51
52         * see.c (see_merge_one_def_extension): Silence used uninitialized
53         warning.
54         * matrix-reorg.c (check_allocation_function): Likewise.
55         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
56
57 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
58
59         PR c/37261
60         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
61         compute new & and | in type rather than TREE_TYPE (arg0).
62
63         * dwarf2out.c (fortran_common): Update comment.
64         (gen_variable_die): Swap com_die and var_die variables in Fortran
65         COMMON block handling code.
66
67         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
68
69         * dwarf2out.c (gen_const_die): New function.
70         (size_of_die, value_format, output_die): Output larger
71         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
72         (native_encode_initializer): New function.
73         (tree_add_const_value_attribute): Call it.
74         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
75
76         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
77         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
78         TREE_THIS_VOLATILE to add_type_attribute.
79
80         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
81         types.
82         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
83         types.
84
85         * dwarf2out.c (loc_by_reference): New function.
86         (add_location_or_const_value_attribute): Use it.
87
88         PR fortran/23057
89         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
90         as DW_TAG_variable children of DW_TAG_common_block rather than
91         DW_TAG_member children.  Put DW_AT_external to individual
92         DW_TAG_variable DIEs, not to DW_TAG_common_block.
93
94         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
95         loc_descriptor_from_tree_1.
96
97         PR fortran/29635
98         PR fortran/23057
99         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
100         arguments to imported_module_or_decl.
101         (debug_nothing_tree_tree): Removed.
102         (debug_nothing_tree_tree_tree_bool): New prototype.
103         * debug.c (do_nothing_debug_hooks): Adjust.
104         (debug_nothing_tree_tree): Removed.
105         (debug_nothing_tree_tree_tree_bool): New function.
106         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
107         (gen_variable_die): Put all common vars for the
108         same COMMON block under one DW_TAG_common_block.
109         (declare_in_namespace): Return new context_die, for Fortran
110         return the module DIE instead of adding extra declarations into
111         the namespace.
112         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
113         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
114         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
115         DW_AT_declaration.
116         (dwarf2out_global_decl): Don't skip Fortran global vars.
117         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
118         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
119         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
120         DW_TAG_imported_declaration as child of previous
121         DW_TAG_imported_module.
122         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
123         * sdbout.c (sdb_debug_hooks): Likewise.
124         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
125
126 2008-08-29  Jan Hubicka  <jh@suse.cz>
127
128         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
129
130         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
131         * ipa-cp.c (n_cloning_candidates): New static variable.
132         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
133         (ipcp_print_all_lattices): Improve debug output.
134         (ipcp_cloning_candidate_p): New function.
135         (ipcp_initialize_node_lattices): Use it.
136         (ipcp_init_stage): Do only analyzis here; prettier debug output.
137         (ipcp_propagate_stage): Prettier debug output.
138         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
139         (ipcp_print_all_structures): Remove.
140         (ipcp_need_redirect_p): Test !n_cloning_candidates.
141         (ipcp_insert_stage): Prettier debug output; call
142         cgraph_remove_unreachable_nodes before propagating.
143         (pass_ipa_cp): Schedule function removal pass.
144         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
145         debug output.
146         (cgraph_maybe_hot_edge_p): Move to ...
147         * predict.c (cgraph_maybe_hot_edge_p) ... here.
148         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
149         (common_handle_option): Set them; enable ipa-cp when profiling.
150         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
151         (ipa_print_all_jump_functions): Likewise.
152         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
153         (ipa_print_node_params, ipa_print_all_params): New.
154         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
155         ipa_print_all_param_flags): Remove.
156         (ipa_print_node_params, ipa_print_all_params): New.
157
158 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
159
160         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
161         change from 2008-04-03.
162         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
163
164 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
165
166         PR rtl-opt/37251
167
168         * ira-color.c (push_allocnos_to_stack): Truncate
169         removed_splay_allocno_vec.
170
171 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
172
173         PR rtl-opt/37243
174         * ira-color (ira_fast_allocation): Don't assign hard registers to
175         global allocnos.
176
177 2008-08-29  Jan Hubicka  <jh@suse.cz>
178
179         PR middle-end/37278
180         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
181         for cold internal loops.
182
183 2008-08-29  Richard Guenther  <rguenther@suse.de>
184
185         * tree-ssa-structalias.c (create_variable_info_for): Do not
186         create fields for heap vars or vars with a noalias state.
187         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
188         from ESCAPED.
189
190 2008-08-29  Richard Guenther  <rguenther@suse.de>
191
192         * common.opt (ftree-store-ccp): Mark as preserved for
193         backward compatibility.
194         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
195         * tree-pass.h (pass_store_ccp): Remove.
196         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
197         (first_vdef): Remove declaration.
198         (get_value_loaded_by): Likewise.
199         * tree-ssa-ccp.c (do_store_ccp): Remove.
200         (get_default_value): Simplify as do_store_ccp is always false
201         now.  Do not initialize mem_ref.
202         (set_value_varying): Likewise.
203         (canonicalize_float_value): Likewise.
204         (set_lattice_value): Likewise.
205         (likely_value): Likewise.
206         (surely_varying_stmt_p): Likewise.
207         (ccp_initialize): Likewise.
208         (ccp_lattice_meet): Likewise.
209         (ccp_visit_phi_node): Likewise.
210         (ccp_fold): Likewise.
211         (evaluate_stmt): Likewise.
212         (visit_assignment): Likewise.
213         (ccp_visit_stmt): Likewise.
214         (execute_ssa_ccp): Fold into ...
215         (do_ssa_ccp): ... this.
216         (do_ssa_store_ccp): Remove.
217         (gate_store_ccp): Likewise.
218         (pass_store_ccp): Likewise.
219         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
220         initialize mem_ref.
221         * tree-ssa-propagate.c (first_vdef): Remove.
222         (get_value_loaded_by): Likewise.
223         (replace_vuses_in): Likewise.
224         (substitute_and_fold): Do not call replace_vuses_in.
225         * opts.c (decode_options): Do not set flag_tree_store_ccp.
226
227 2008-08-29  Richard Guenther  <rguenther@suse.de>
228
229         PR middle-end/37236
230         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
231         PARAM_NOALIAS tags with is_heapvar.
232         * tree-ssa-operands.c (access_can_touch_variable): Offset
233         based tests do not apply for heapvars.  Fix offset test.
234
235 2008-08-29  Jan Hubicka  <jh@suse.cz>
236
237         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
238         (-fipa-cp-clone): Enabled by default at -O3.
239         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
240         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
241
242 2008-08-29  Jan Hubicka  <jh@suse.cz>
243
244         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
245         New functions.
246         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
247         Declare.
248         * gimple.c (giple_copy_call_skip_args): New function.
249         (giple_copy_call_skip_args): Declare.
250
251         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
252         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
253         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
254         (ipcp_create_replace_map): Improve debug output.
255         (ipcp_need_redirect_p): Return false when not clonning.
256         (ipcp_update_callgraph): Skip args.
257         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
258         skip args.
259         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
260         (save_inline_function_body): Update call of tree_function_versioning.
261         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
262         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
263         (tree_function_versioning): Likewise.
264         * tree-inline.h (tree_function_versioning): Update prototype.
265
266 2008-08-29  Jan Hubicka  <jh@suse.cz>
267
268         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
269         * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
270         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
271         * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
272         * value-prof.c (gimple_divmod_fixed_value_transform,
273         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
274         gimple_stringops_transform): Use optimize_bb_for_size_p.
275         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
276         * final.c (compute_alignments): Use optimize_function_for_size_p.
277         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
278         (fold_builtin_strcpy, fold_builtin_fputs): Use
279         optimize_function_for_size_p.
280         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
281         * recog.c (relax_delay_slots): Likewise.
282         * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
283         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
284         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
285         optimize_function_for_size_p.
286         (cgraph_decide_inlining_of_small_function): Use
287         optimize_function_for_size_p.
288         * global.c (find_reg): Use optimize_function_for_size_p.
289         * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
290         flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
291         flag_prefetch_loop_arrays. Those can work it out from profile.
292         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
293         optimize_loop_for_speed_p.
294         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
295         argument.
296         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
297         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
298         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
299         * local-alloc.c (block_alloc): Pass BB pointer.
300         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
301         * gcse.c (gcse_main): Use optimize_function_for_size_p.
302         * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
303         (decide_peel_completely): Likewise.
304         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
305         optimize_loop_for_size_p.
306         (vect_enhance_data_refs_alignment): Likewise.
307         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
308         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
309         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
310         (try_crossjump_bb): Use optimize_bb_for_size_p.
311         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
312         optimize_loop_for_speed_p.
313         * bb-reorder.c (find_traces_1_round): Likewise.
314         (copy_bb): Use optimize_bb_for_speed_p.
315         (duplicate_computed_gotos): Likewise.
316         * basic-block.h (optimize_loop_nest_for_size_p,
317         optimize_loop_nest_for_speed_p): New.
318         * stmt.c (expand_case): Use optimize_insn_for_size_p.
319
320 2008-08-29  Tristan Gingold  <gingold@adacore.com>
321
322         * gcov.c (main): Call expandargv.
323
324 2008-08-29  Jan Hubicka  <jh@suse.cz>
325
326         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
327         is not cold.
328         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
329         Constify arguments.
330         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
331         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
332         Constify.
333         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
334
335 2008-08-29  Jan Hubicka  <jh@suse.cz>
336
337         * tree-pass.h (pass_strip_predict_hints): Declare.
338         * predict.c (strip_builtin_expect): Rename to ...
339         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
340         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
341         (tree_estimate_probability): Do not strip builtin_expect.
342         (pass_strip_predict_hints): New pass.
343         * tree-inline.c (expand_call_inline): When inlining cold function, predict
344         it as unlikely.
345         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
346
347 2008-08-29  Richard Guenther  <rguenther@suse.de>
348
349         PR tree-optimization/37207
350         * tree-vrp.c (extract_range_from_binary_expr): Also try
351         to constant fold if only one of the operands is a constant.
352
353 2008-08-29  Nick Clifton  <nickc@redhat.com>
354
355         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
356         the same way as SYMBOL_REFs.
357
358 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
359
360         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
361
362 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
363
364         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
365         * config/mips/mips.md (branch_likely): Remove const.  Fix
366         comment formatting.
367         (define_delay for type "branch"): Change to only apply for branch
368         with likely variant.
369         (define_delay for type "branch" and "branch_likely" no).  New delay
370         definition.
371         (equality_op): New code iterator.
372         (bbv, bbinv): New code attributes.
373         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
374         patterns.
375
376 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
377             Andrew Pinski  <pinskia@gcc.gnu.org>
378
379         PR 18050
380         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
381
382 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
383
384         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
385         rule that a symbolic constant must be defined and >= 0 for the
386         corresponding facility to be present at compile-time.
387         * gthr-posix.c: Likewise.
388
389 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
390
391         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
392         * config/mips/mips.md (D): New mode attribute.
393         (mulsi3, muldi3): Merge it into ...
394         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op
395         patterns.
396         (muldi3_mul3): New pattern.
397         (mulsi3_mult3): Rename to mulsi3_mul3.
398
399 2008-08-28  Jan Hubicka  <jh@suse.cz>
400
401         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
402         to fail.
403         * predict.c (always_optimize_for_size_p): Rename to ...
404         (optimize_function_for_size): ... this one; make extern.
405         (optimize_function_for_speed_p): New.
406         (optimize_bb_for_size_p, optimize_bb_for_size_p,
407         optimize_edge_for_size_p,optimize_edge_for_size_p,
408         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
409         * basic-block.h (optimize_function_for_size_p,
410         optimize_function_for_speed_p): Declare.
411         * i386.md (optimize_size checks): Replace them by appropriate
412         predicate.
413         (standard_80387_constant_p, ix86_compute_frame_layout,
414         ix86_expand_epilogue, ix86_decompose_address,
415         print_operand, emit_i387_cw_initialization,
416         inline_memory_move_cost, ix86_pad_returns,
417         ix86_reorg): Replace optimize_size checks.
418
419 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
420
421         * rtl.h (simplify_subreg_regno): Declare.
422         * rtlanal.c (simplify_subreg_regno): New function, split out from...
423         * simplify-rtx.c (simplify_subreg): ...here.
424         * reload.c (find_reloads): Use simplify_subreg_regno instead of
425         subreg_offset_representable_p.
426
427 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
428
429         PR c/30949
430         * c-typeck.c (convert_for_assignment): Give a note describing what
431         was passed and what was expected.
432
433 2008-08-28  Joey Ye  <joey.ye@intel.com>
434
435         * doc/extend.texi: Document AVX built-in functions.
436         * doc/invoke.texi: Document -mavx.
437
438 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
439             Joey Ye  <joey.ye@intel.com>
440             Xuepeng Guo  <xuepeng.guo@intel.com>
441
442         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
443
444         * config/i386/cpuid.h (bit_FMA): New.
445         (bit_XSAVE): Likewise.
446         (bit_OSXSAVE): Likewise.
447         (bit_AVX): Likewise.
448
449         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
450         define.  Use ASM_OUTPUT_AVX_PREFIX.
451
452         * config/i386/gmmintrin.h: New.
453
454         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
455         (OPTION_MASK_ISA_AVX_SET): New.
456         (OPTION_MASK_ISA_FMA_SET): Likewise.
457         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
458         (OPTION_MASK_ISA_FMA_SET): Likewise.
459         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
460         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
461         (pta_flags): Add PTA_AVX and PTA_FMA.
462         (override_options): Handle PTA_AVX and PTA_FMA.
463         (init_cumulative_args): Handle warn_avx.
464         (classify_argument): Return 0 for COImode and OImode.  Return
465         1 and X86_64_AVX_CLASS for 256bit vector types.
466         (examine_argument): Handle X86_64_AVX_CLASS.
467         (construct_container): Likewise.
468         (function_arg_advance_32): Pass OImode and 256bit vector types
469         in AVX register.
470         (function_arg_advance_64): Take a new argument to indicate if a
471         parameter is named.  Handle 256bit vector types.  Return
472         immediately for unnamed 256bit vector mode parameters.
473         (function_arg_advance): Updated.
474         (function_arg_32): Add comments for TImode.  Handle OImode
475         and 256bit vector types.
476         (function_arg_64): Take a new argument to indicate if a
477         parameter is named.  Handle 256bit vector types.  Return NULL
478         for unnamed 256bit vector mode parameters.
479         (function_arg): Updated.
480         (setup_incoming_varargs_64): Support
481         AVX encoding for *sse_prologue_save_insn.
482         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
483         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
484         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
485         enabled, otherwise return -3.
486         (standard_sse_constant_opcode): Handle AVX and 256bit vector
487         modes.
488         (print_reg): Support AVX registers.  Handle 'x' and 't'.
489         Handle 'd' to duplicate the operand.
490         (print_operand): Likewise.  Also support AVX vector compare
491         instructions.
492         (output_387_binary_op): Support AVX.
493         (output_fp_compare): Likewise.
494         (ix86_expand_vector_move_misalign): Likewise.
495         (ix86_attr_length_vex_default): New.
496         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
497         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
498         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
499         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
500         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
501         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
502         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
503         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
504         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
505         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
506         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
507         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
508         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
509         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
510         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
511         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
512         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
513         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
514         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
515         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
516         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
517         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
518         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
519         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
520         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
521         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
522         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
523         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
524         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
525         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
526         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
527         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
528         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
529         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
530         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
531         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
532         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
533         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
534         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
535         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
536         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
537         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
538         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
539         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
540         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
541         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
542         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
543         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
544         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
545         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
546         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
547         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
548         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
549         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
550         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
551         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
552         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
553         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
554         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
555         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
556         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
557         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
558         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
559         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
560         and IX86_BUILTIN_MOVMSKPS256,
561         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
562         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
563         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
564         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
565         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
566         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
567         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
568         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
569         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
570         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
571         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
572         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
573         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
574         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
575         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
576         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
577         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
578         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
579         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
580         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
581         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
582         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
583         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
584         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
585         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
586         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
587         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
588         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
589         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
590         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
591         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
592         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
593         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
594         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
595         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
596         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
597         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
598         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
599         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
600         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
601         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
602         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
603         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
604         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
605         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
606         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
607         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
608         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
609         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
610         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
611         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
612         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
613         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
614         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
615         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
616         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
617         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
618         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
619         IX86_BUILTIN_CMPPS,
620         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
621         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
622         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
623         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
624         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
625         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
626         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
627         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
628         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
629         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
630         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
631         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
632         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
633         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
634         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
635         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
636         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
637         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
638         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
639         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
640         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
641         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
642         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
643         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
644         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
645         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
646         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
647         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
648         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
649         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
650         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
651         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
652         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
653         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
654         IX86_BUILTIN_MOVMSKPS256.
655         (ix86_init_mmx_sse_builtins): Support AVX builtins.
656         (ix86_expand_args_builtin): Likewise.
657         (ix86_expand_special_args_builtin): Likewise.
658         (ix86_hard_regno_mode_ok): Handle AVX modes.
659         (ix86_expand_vector_init_duplicate): Likewise.
660         (ix86_expand_vector_init_one_nonzero): Likewise.
661         (ix86_expand_vector_init_one_var): Likewise.
662         (ix86_expand_vector_init_concat): Likewise.
663         (ix86_expand_vector_init_general): Likewise.
664         (ix86_expand_vector_set): Likewise.
665         (ix86_vector_mode_supported_p): Likewise.
666         (x86_extended_reg_mentioned_p): Check INSN_P before using
667         PATTERN.
668
669         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
670         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
671
672         * config/i386/i386.h (TARGET_AVX): New.
673         (TARGET_FMA): Likewise.
674         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
675         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
676         (VALID_AVX256_REG_MODE): New.
677         (AVX256_VEC_FLOAT_MODE_P): Likewise.
678         (AVX_FLOAT_MODE_P): Likewise.
679         (AVX128_VEC_FLOAT_MODE_P): Likewise.
680         (AVX256_VEC_FLOAT_MODE_P): Likewise.
681         (AVX_VEC_FLOAT_MODE_P): Likewise.
682         (ASM_OUTPUT_AVX_PREFIX): Likewise.
683         (ASM_OUTPUT_OPCODE): Likewise.
684         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
685         support.
686         (SSE_REG_MODE_P): Allow 256bit vector modes.
687         (ix86_args): Add a warn_avx field.
688
689         * config/i386/i386.md (UNSPEC_PCMP): New.
690         (UNSPEC_VPERMIL): Likewise.
691         (UNSPEC_VPERMIL2): Likewise.
692         (UNSPEC_VPERMIL2F128): Likewise.
693         (UNSPEC_MASKLOAD): Likewise.
694         (UNSPEC_MASKSTORE): Likewise.
695         (UNSPEC_CAST): Likewise.
696         (UNSPEC_VTESTP): Likewise.
697         (UNSPECV_VZEROALL): Likewise.
698         (UNSPECV_VZEROUPPER): Likewise.
699         (XMM0_REG): Likewise.
700         (XMM1_REG): Likewise.
701         (XMM2_REG): Likewise.
702         (XMM3_REG): Likewise.
703         (XMM4_REG): Likewise.
704         (XMM5_REG): Likewise.
705         (XMM6_REG): Likewise.
706         (XMM8_REG): Likewise.
707         (XMM9_REG): Likewise.
708         (XMM10_REG): Likewise.
709         (XMM11_REG): Likewise.
710         (XMM12_REG): Likewise.
711         (XMM13_REG): Likewise.
712         (XMM14_REG): Likewise.
713         (XMM15_REG): Likewise.
714         (prefix): Likewise.
715         (prefix_vex_imm8): Likewise.
716         (prefix_vex_w): Likewise.
717         (length_vex): Likewise.
718         (maxmin): Likewise.
719         (movoi): Likewise.
720         (*avx_ashlti3): Likewise.
721         (*avx_lshrti3): Likewise.
722         (*avx_setcc<mode>): Likewise.
723         (*fop_<mode>_comm_mixed_avx): Likewise.
724         (*fop_<mode>_comm_avx): Likewise.
725         (*fop_<mode>_1_mixed_avx): Likewise.
726         (*fop_<mode>_1_avx): Likewise.
727         (*avx_<code><mode>3): Likewise.
728         (*avx_ieee_smin<mode>3): Likewise.
729         (*avx_ieee_smax<mode>3): Likewise.
730         (mode): Add OI, V8SF and V4DF.
731         (length): Support VEX prefix.
732         (*cmpfp_i_mixed): Set prefix attribute.
733         (*cmpfp_i_sse): Likewise.
734         (*cmpfp_iu_mixed): Likewise.
735         (*cmpfp_iu_sse): Likewise.
736         (*movsi_1): Support AVX.
737         (*movdi_2): Likewise.
738         (*movdi_1_rex64): Likewise.
739         (*movti_internal): Likewise.
740         (*movti_rex64): Likewise.
741         (*movsf_1): Likewise.
742         (*movdf_nointeger): Likewise.
743         (*movdf_integer_rex64): Likewise.
744         (*movtf_internal): Likewise.
745         (zero_extendsidi2_32): Likewise.
746         (zero_extendsidi2_rex64): Likewise.
747         (*extendsfdf2_mixed): Likewise.
748         (*extendsfdf2_sse): Likewise.
749         (*truncdfsf_fast_mixed): Likewise.
750         (*truncdfsf_fast_sse): Likewise.
751         (*truncdfsf_mixed): Likewise.
752         (fix_trunc<mode>di_sse): Likewise.
753         (fix_trunc<mode>si_sse): Likewise.
754         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
755         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
756         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
757         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
758         (*rcpsf2_sse): Likewise.
759         (*rsqrtsf2_sse): Likewise.
760         (*sqrt<mode>2_sse): Likewise.
761         (sse4_1_round<mode>2): Likewise.
762         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
763         Support AVX.  Set length attribute properly for AVX.
764
765         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
766         (VECTOR_MODES (FLOAT, 32)): Likewise.
767         (VECTOR_MODE (INT, DI, 8)): Likewise.
768         (VECTOR_MODE (INT, HI, 32)): Likewise.
769         (VECTOR_MODE (INT, QI, 64)): Likewise.
770         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
771         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
772         (VECTOR_MODE (INT, DI, 4)): Removed.
773         (VECTOR_MODE (INT, SI, 8)): Likewise.
774         (VECTOR_MODE (INT, HI, 16)): Likewise.
775         (VECTOR_MODE (INT, QI, 32)): Likewise.
776         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
777         (INT_MODE (OI, 32)): Likewise.
778
779         * config/i386/i386.opt (mavx): New.
780         (mfma): Likewise.
781
782         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
783
784         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
785         (*mov<mode>_internal_avx): New.
786         (*movv2sf_internal_rex64_avx): Likewise.
787         (*movv2sf_internal_avx): Likewise.
788
789         * config/i386/predicates.md (const_4_to_5_operand): New.
790         (const_6_to_7_operand): Likewise.
791         (const_8_to_11_operand): Likewise.
792         (const_12_to_15_operand): Likewise.
793         (avx_comparison_float_operator): Likewise.
794
795         * config/i386/sse.md (AVX256MODEI): New.
796         (AVX256MODE): Likewise.
797         (AVXMODEQI): Likewise.
798         (AVXMODE): Likewise.
799         (AVX256MODEF2P): Likewise.
800         (AVX256MODE2P): Likewise.
801         (AVX256MODE4P): Likewise.
802         (AVX256MODE8P): Likewise.
803         (AVXMODEF2P): Likewise.
804         (AVXMODEF4P): Likewise.
805         (AVXMODEDCVTDQ2PS): Likewise.
806         (AVXMODEDCVTPS2DQ): Likewise.
807         (avxvecmode): Likewise.
808         (avxvecpsmode): Likewise.
809         (avxhalfvecmode): Likewise.
810         (avxscalarmode): Likewise.
811         (avxcvtvecmode): Likewise.
812         (avxpermvecmode): Likewise.
813         (avxmodesuffixf2c): Likewise.
814         (avxmodesuffixp): Likewise.
815         (avxmodesuffixs): Likewise.
816         (avxmodesuffix): Likewise.
817         (vpermilbits): Likewise.
818         (pinsrbits): Likewise.
819         (mov<mode>): Likewise.
820         (*mov<mode>_internal): Likewise.
821         (push<mode>1): Likewise.
822         (movmisalign<mode>): Likewise.
823         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
824         (avx_movdqu<avxmodesuffix>): Likewise.
825         (avx_lddqu<avxmodesuffix>): Likewise.
826         (<plusminus_insn><mode>3): Likewise.
827         (*avx_<plusminus_insn><mode>3): Likewise.
828         (*avx_vm<plusminus_insn><mode>3): Likewise.
829         (mul<mode>3): Likewise.
830         (*avx_mul<mode>3): Likewise.
831         (*avx_vmmul<mode>3): Likewise.
832         (divv8sf3): Likewise.
833         (divv4df3): Likewise.
834         (avx_div<mode>3): Likewise.
835         (*avx_div<mode>3): Likewise.
836         (*avx_vmdiv<mode>3): Likewise.
837         (avx_rcpv8sf2): Likewise.
838         (*avx_vmrcpv4sf2): Likewise.
839         (sqrtv8sf2): Likewise.
840         (avx_sqrtv8sf2): Likewise.
841         (*avx_vmsqrt<mode>2): Likewise.
842         (rsqrtv8sf2): Likewise.
843         (avx_rsqrtv8sf2): Likewise.
844         (*avx_vmrsqrtv4sf2): Likewise.
845         (<code><mode>3): Likewise.
846         (*avx_<code><mode>3_finite): Likewise.
847         (*avx_<code><mode>3): Likewise.
848         (*avx_vm<code><mode>3): Likewise.
849         (*avx_ieee_smin<mode>3): Likewise.
850         (*avx_ieee_smax<mode>3): Likewise.
851         (avx_addsubv8sf3): Likewise.
852         (avx_addsubv4df3): Likewise.
853         (*avx_addsubv4sf3): Likewise.
854         (*avx_addsubv2df3): Likewise.
855         (avx_h<plusminus_insn>v4df3): Likewise.
856         (avx_h<plusminus_insn>v8sf3): Likewise.
857         (*avx_h<plusminus_insn>v4sf3): Likewise.
858         (*avx_h<plusminus_insn>v2df3): Likewise.
859         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
860         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
861         (*avx_maskcmp<mode>3): Likewise.
862         (avx_nand<mode>3): Likewise.
863         (*avx_<code><mode>3): Likewise.
864         (*avx_nand<mode>3): Likewise.
865         (*avx_<code><mode>3): Likewise.
866         (*avx_cvtsi2ss): Likewise.
867         (*avx_cvtsi2ssq): Likewise.
868         (*avx_cvtsi2sd): Likewise.
869         (*avx_cvtsi2sdq): Likewise.
870         (*avx_cvtsd2ss): Likewise.
871         (avx_cvtss2sd): Likewise.
872         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
873         (avx_cvtps2dq<avxmodesuffix>): Likewise.
874         (avx_cvttps2dq<avxmodesuffix>): Likewise.
875         (*avx_cvtsi2sd): Likewise.
876         (*avx_cvtsi2sdq): Likewise.
877         (avx_cvtdq2pd256): Likewise.
878         (avx_cvtpd2dq256): Likewise.
879         (avx_cvttpd2dq256): Likewise.
880         (*avx_cvtsd2ss): Likewise.
881         (*avx_cvtss2sd): Likewise.
882         (avx_cvtpd2ps256): Likewise.
883         (avx_cvtps2pd256): Likewise.
884         (*avx_movhlps): Likewise.
885         (*avx_movlhps): Likewise.
886         (avx_unpckhps256): Likewise.
887         (*avx_unpckhps): Likewise.
888         (avx_unpcklps256): Likewise.
889         (*avx_unpcklps): Likewise.
890         (avx_movshdup256): Likewise.
891         (avx_movsldup256): Likewise.
892         (avx_shufps256): Likewise.
893         (avx_shufps256_1): Likewise.
894         (*avx_shufps_<mode>): Likewise.
895         (*avx_loadhps): Likewise.
896         (*avx_storelps): Likewise.
897         (*avx_loadlps): Likewise.
898         (*avx_movss): Likewise.
899         (*vec_dupv4sf_avx): Likewise.
900         (*vec_concatv2sf_avx): Likewise.
901         (*vec_concatv4sf_avx): Likewise.
902         (*vec_setv4sf_0_avx): Likewise.
903         (*vec_setv4sf_avx): Likewise.
904         (*avx_insertps): Likewise.
905         (avx_vextractf128<mode>): Likewise.
906         (vec_extract_lo_<mode>): Likewise.
907         (vec_extract_hi_<mode>): Likewise.
908         (vec_extract_lo_<mode>): Likewise.
909         (vec_extract_hi_<mode>): Likewise.
910         (vec_extract_lo_v16hi): Likewise.
911         (vec_extract_hi_v16hi): Likewise.
912         (vec_extract_lo_v32qi): Likewise.
913         (vec_extract_hi_v32qi): Likewise.
914         (avx_unpckhpd256): Likewise.
915         (*avx_unpckhpd): Likewise.
916         (avx_movddup256): Likewise.
917         (*avx_movddup): Likewise.
918         (avx_unpcklpd256): Likewise.
919         (*avx_unpcklpd): Likewise.
920         (avx_shufpd256): Likewise.
921         (avx_shufpd256_1): Likewise.
922         (*avx_punpckhqdq): Likewise.
923         (*avx_punpcklqdq): Likewise.
924         (*avx_shufpd_<mode>): Likewise.
925         (*avx_storehpd): Likewise.
926         (*avx_loadhpd): Likewise.
927         (*avx_loadlpd): Likewise.
928         (*avx_movsd): Likewise.
929         (*vec_concatv2df_avx): Likewise.
930         (*avx_<plusminus_insn><mode>3): Likewise.
931         (*avx_<plusminus_insn><mode>3): Likewise.
932         (*avx_mulv8hi3): Likewise.
933         (*avxv8hi3_highpart): Likewise.
934         (*avx_umulv8hi3_highpart): Likewise.
935         (*avx_umulv2siv2di3): Likewise.
936         (*avx_mulv2siv2di3): Likewise.
937         (*avx_pmaddwd): Likewise.
938         (*avx_mulv4si3): Likewise.
939         (*avx_ashr<mode>3): Likewise.
940         (*avx_lshr<mode>3): Likewise.
941         (*avx_ashl<mode>3): Likewise.
942         (*avx_<code><mode>3): Likewise.
943         (*avx_eq<mode>3): Likewise.
944         (*avx_gt<mode>3): Likewise.
945         (*avx_nand<mode>3): Likewise.
946         (*avx_nand<mode>3): Likewise.
947         (*avx_<code><mode>3): Likewise.
948         (*avx_<code><mode>3): Likewise.
949         (*avx_packsswb): Likewise.
950         (*avx_packssdw): Likewise.
951         (*avx_packuswb): Likewise.
952         (*avx_punpckhbw): Likewise.
953         (*avx_punpcklbw): Likewise.
954         (*avx_punpckhwd): Likewise.
955         (*avx_punpcklwd): Likewise.
956         (*avx_punpckhdq): Likewise.
957         (*avx_punpckldq): Likewise.
958         (*avx_pinsr<avxmodesuffixs>): Likewise.
959         (*avx_pinsrq): Likewise.
960         (*avx_loadld): Likewise.
961         (*vec_extractv2di_1_rex64_avx): Likewise.
962         (*vec_extractv2di_1_avx): Likewise.
963         (*vec_dupv2di_avx): Likewise.
964         (*vec_concatv2si_avx): Likewise.
965         (*vec_concatv4si_1_avx): Likewise.
966         (*vec_concatv2di_avx): Likewise.
967         (*vec_concatv2di_rex64_avx): Likewise.
968         (*avx_uavgv16qi3): Likewise.
969         (*avx_uavgv8hi3): Likewise.
970         (*avx_psadbw): Likewise.
971         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
972         (*avx_phaddwv8hi3): Likewise.
973         (*avx_phadddv4si3): Likewise.
974         (*avx_phaddswv8hi3): Likewise.
975         (*avx_phsubwv8hi3): Likewise.
976         (*avx_phsubdv4si3): Likewise.
977         (*avx_phsubswv8hi3): Likewise.
978         (*avx_pmaddubsw128): Likewise.
979         (*avx_pmulhrswv8hi3): Likewise.
980         (*avx_pshufbv16qi3): Likewise.
981         (*avx_psign<mode>3): Likewise.
982         (*avx_palignrti): Likewise.
983         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
984         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
985         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
986         (*avx_mpsadbw): Likewise.
987         (*avx_packusdw): Likewise.
988         (*avx_pblendvb): Likewise.
989         (*avx_pblendw): Likewise.
990         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
991         (avx_ptest256): Likewise.
992         (avx_roundp<avxmodesuffixf2c>256): Likewise.
993         (*avx_rounds<ssemodesuffixf2c>): Likewise.
994         (*avx_aesenc): Likewise.
995         (*avx_aesenclast): Likewise.
996         (*avx_aesdec): Likewise.
997         (*avx_aesdeclast): Likewise.
998         (avx_vzeroupper): Likewise.
999         (avx_vzeroupper_rex64): Likewise.
1000         (avx_vpermil<mode>): Likewise.
1001         (avx_vpermilvar<mode>3): Likewise.
1002         (avx_vpermil2<mode>3): Likewise.
1003         (avx_vperm2f128<mode>3): Likewise.
1004         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1005         (avx_vbroadcastss256): Likewise.
1006         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
1007         (avx_vinsertf128<mode>): Likewise.
1008         (vec_set_lo_<mode>): Likewise.
1009         (vec_set_hi_<mode>): Likewise.
1010         (vec_set_lo_<mode>): Likewise.
1011         (vec_set_hi_<mode>): Likewise.
1012         (vec_set_lo_v16hi): Likewise.
1013         (vec_set_hi_v16hi): Likewise.
1014         (vec_set_lo_v32qi): Likewise.
1015         (vec_set_hi_v32qi): Likewise.
1016         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1017         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1018         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
1019         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
1020         (vec_init<mode>): Likewise.
1021         (*vec_concat<mode>_avx): Likewise.
1022         (blendbits): Support V8SF and V4DF.
1023         (sse2_movq128): Support AVX.
1024         (<sse>_movnt<mode>): Likewise.
1025         (sse2_movntv2di): Likewise.
1026         (sse_rcpv4sf2): Likewise.
1027         (sse_sqrtv4sf2): Likewise.
1028         (sse_rsqrtv4sf2): Likewise.
1029         (<sse>_comi): Likewise.
1030         (<sse>_ucomi): Likewise.
1031         (sse_cvtss2si): Likewise.
1032         (sse_cvtss2si_2): Likewise.
1033         (sse_cvtss2siq): Likewise.
1034         (sse_cvtss2siq_2): Likewise.
1035         (sse_cvttss2si): Likewise.
1036         (sse_cvttss2siq): Likewise.
1037         (sse2_cvtsd2si): Likewise.
1038         (sse2_cvtsd2si_2): Likewise.
1039         (sse2_cvtsd2siq): Likewise.
1040         (sse2_cvtsd2siq_2): Likewise.
1041         (sse2_cvttsd2si): Likewise.
1042         (sse2_cvttsd2siq): Likewise.
1043         (sse2_cvtdq2pd): Likewise.
1044         (*sse2_cvtpd2dq): Likewise.
1045         (*sse2_cvttpd2dq): Likewise.
1046         (*sse2_cvtpd2ps): Likewise.
1047         (sse2_cvtps2pd): Likewise.
1048         (sse3_movshdup): Likewise.
1049         (sse3_movsldup): Likewise.
1050         (sse_storehps): Likewise.
1051         (*sse4_1_extractps): Likewise.
1052         (sse2_storelpd): Likewise.
1053         (vec_dupv2df_sse3): Likewise.
1054         (*vec_concatv2df_sse3): Likewise.
1055         (*sse4_1_pextrb): Likewise.
1056         (*sse4_1_pextrb_memory): Likewise.
1057         (*sse2_pextrw): Likewise.
1058         (*sse4_1_pextrw_memory): Likewise.
1059         (*sse4_1_pextrd): Likewise.
1060         (*sse4_1_pextrq): Likewise.
1061         (sse2_pshufd_1): Likewise.
1062         (sse2_pshuflw_1): Likewise.
1063         (sse2_pshufhw_1): Likewise.
1064         (*sse2_storeq_rex64): Likewise.
1065         (*vec_dupv4si): Likewise.
1066         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
1067         (sse2_pmovmskb): Likewise.
1068         (*sse2_maskmovdqu): Likewise.
1069         (*sse2_maskmovdqu_rex64): Likewise.
1070         (sse_ldmxcsr): Likewise.
1071         (sse_stmxcsr): Likewise.
1072         (abs<mode>2): Likewise.
1073         (sse4_1_movntdqa): Likewise.
1074         (sse4_1_phminposuw): Likewise.
1075         (sse4_1_extendv8qiv8hi2): Likewise.
1076         (*sse4_1_extendv8qiv8hi2): Likewise.
1077         (sse4_1_extendv4qiv4si2): Likewise.
1078         (*sse4_1_extendv4qiv4si2): Likewise.
1079         (sse4_1_extendv2qiv2di2): Likewise.
1080         (*sse4_1_extendv2qiv2di2): Likewise.
1081         (sse4_1_extendv4hiv4si2): Likewise.
1082         (*sse4_1_extendv4hiv4si2): Likewise.
1083         (sse4_1_extendv2hiv2di2): Likewise.
1084         (*sse4_1_extendv2hiv2di2): Likewise.
1085         (sse4_1_extendv2siv2di2): Likewise.
1086         (*sse4_1_extendv2siv2di2): Likewise.
1087         (sse4_1_zero_extendv8qiv8hi2): Likewise.
1088         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
1089         (sse4_1_zero_extendv4qiv4si2): Likewise.
1090         (*sse4_1_zero_extendv4qiv4si2): Likewise.
1091         (sse4_1_zero_extendv2qiv2di2): Likewise.
1092         (*sse4_1_zero_extendv2qiv2di2): Likewise.
1093         (sse4_1_zero_extendv4hiv4si2): Likewise.
1094         (*sse4_1_zero_extendv4hiv4si2): Likewise.
1095         (sse4_1_zero_extendv2hiv2di2): Likewise.
1096         (*sse4_1_zero_extendv2hiv2di2): Likewise.
1097         (sse4_1_zero_extendv2siv2di2): Likewise.
1098         (*sse4_1_zero_extendv2siv2di2): Likewise.
1099         (sse4_1_ptest): Likewise.
1100         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
1101         (sse4_2_pcmpestri): Likewise.
1102         (sse4_2_pcmpestrm): Likewise.
1103         (sse4_2_pcmpistri): Likewise.
1104         (sse4_2_pcmpistrm): Likewise.
1105         (aesimc): Likewise.
1106         (aeskeygenassist): Likewise.
1107
1108 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
1109
1110         * config/i386/predicates.md (vzeroall_operation): New.
1111
1112         * config/i386/sse.md (avx_vzeroall): New.
1113         (*avx_vzeroall): Likewise.
1114
1115 2008-08-28  Paul Brook  <paul@codesourcery.com>
1116             Mark Shinwell  <shinwell@codesourcery.com>
1117             Richard Earnshaw  <richard.earnshaw@arm.com>
1118
1119         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
1120         (TARGET_MIN_ANCHOR_OFFSET): New.
1121         (arm_override_options): Set correct anchor ranges for Thumb-1
1122         and Thumb-2 if required.
1123         (legitimize_pic_address): Handle case involving a TLS symbol
1124         reference with an addend.
1125         (arm_optimization_options): Enable section anchors at -O1 and
1126         above.
1127         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
1128         * config/arm/arm-protos.h (arm_optimization_options): New.
1129
1130 2008-08-28  Nick Clifton  <nickc@redhat.com>
1131
1132         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
1133         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
1134         attribute.
1135
1136         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
1137         * config/v850/v850.md (return): Remove frame size restriction.  
1138
1139         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
1140
1141         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
1142
1143         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
1144
1145         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
1146
1147 2008-08-28  Paul Brook  <paul@codesourcery.com>
1148
1149         * config/arm/vfp11.md: Update license notice.
1150         * config/arm/cortex-r4.md: Ditto.
1151
1152 2008-08-28  Richard Guenther  <rguenther@suse.de>
1153
1154         PR tree-optimization/37207
1155         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
1156         tuplification bug.
1157
1158 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
1159
1160         PR c++/36741
1161         * tree.c (int_fits_type_p): Don't forget unsigned integers
1162           of type sizetype which higher end word equals -1.
1163
1164 2008-08-28  Ira Rosen  <irar@il.ibm.com>
1165
1166         * target.h (struct vectorize): Add new target builtin.
1167         * tree-vectorizer.c (destroy_loop_vec_info): Call 
1168         vect_free_slp_instance instead of vect_free_slp_node.
1169         * tree-vectorizer.h (enum slp_load_perm_type): New.
1170         (struct _slp_instance): Add new fields.
1171         (SLP_INSTANCE_LOAD_PERMUTATION): New.
1172         (SLP_INSTANCE_LOADS): New.
1173         (vect_free_slp_tree): Remove.
1174         (vect_free_slp_instance): Declare.        
1175         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
1176         (vectorizable_load): Add argument.
1177         (vect_transform_slp_perm_load): New.
1178         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to 
1179         vectorizable_load.
1180         (vect_get_place_in_interleaving_chain): New function.
1181         (vect_free_slp_tree): Make static.
1182         (vect_free_slp_instance): New function.
1183         (vect_build_slp_tree): Add new arguments. Allow load permutations and 
1184         collect the load location in the interleaving chain.
1185         (vect_supported_slp_permutation_p): New function.
1186         (vect_supported_load_permutation_p): Likewise.
1187         (vect_analyze_slp_instance): In case of loads permutation, call
1188         vect_supported_load_permutation_p to check that the permutation is 
1189         supported.
1190         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
1191         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
1192         (vect_create_mask_and_perm): New function.
1193         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
1194         (vectorizable_load): Add an argument. Don't keep the created vectors  
1195         statements in the node if permutation is required. Call 
1196         vect_transform_slp_perm_load to generate the permutation.
1197         (vect_transform_stmt): Add new argument. Call vectorizable_load with 
1198         additional argument.
1199         (vect_schedule_slp_instance): In case of loads permutation, allocate  
1200         vectorized statements structure for all the related SLP nodes. Call 
1201         vect_transform_stmt with addditional argument.
1202         (vect_transform_loop): Call vect_transform_stmt with correct arguments. 
1203         * config/spu/spu.c (spu_builtin_vec_perm): New. 
1204         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
1205         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
1206         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
1207         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
1208
1209 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
1210
1211         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
1212         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
1213         __gthread_cond_signal, __gthread_cond_timedwait,
1214         __gthread_cond_timedwait_recursive): New functions.
1215         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
1216         Likewise.
1217         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
1218         thread interfaces.
1219
1220 2008-08-28  Richard Guenther  <rguenther@suse.de>
1221
1222         PR middle-end/37005
1223         * fold-const.c (maybe_canonicalize_comparison_1): Require
1224         undefined overflow only for canonicalizing A +- CST cmp CST.
1225         Make sure to not generate new constants that are not inside
1226         their TYPE_MIN/MAX_VALUE range.
1227         (maybe_canonicalize_comparison): Remove undefined overflow
1228         checking from here.
1229         (fold_binary): Remove now duplicate folding.
1230
1231 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
1232
1233         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
1234         use not updated in the last change.
1235
1236 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1237
1238         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
1239         (IRA_COVER_CLASSES): Add FPUL_REGS.
1240
1241 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1242
1243         PR 37217
1244         * c-common.c (conversion_warning): Check for null operands.
1245
1246 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1247
1248         PR c/31673
1249         * c-decl.c (check_for_loop_decls): Improve error message. Give
1250         hint.
1251
1252 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1253
1254         PR c/37186
1255         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
1256         (convert_for_assignment): Pass corrent OPT_W* parameter to
1257         WARN_FOR_ASSIGNMENT.
1258
1259 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
1260
1261         PR c++/35321
1262         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
1263
1264 2008-08-27  Paul Brook  <paul@codesourcery.com>
1265
1266         * config.gcc: Loosen checks for arm uclinux eabi targets.
1267
1268 2008-08-27  Paul Brook  <paul@codesourcery.com>
1269
1270         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
1271         _clzsi2.
1272         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
1273
1274 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
1275
1276         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
1277         the enumerators of an ENUMERAL_TYPE.
1278         * dbxout.c (dbxout_type): Ditto.
1279
1280 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1281
1282         PR rtl-opt/37219
1283         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
1284         (fwprop_addr): Check that the loop_father is not the outer loop.
1285
1286 2008-08-26  Paul Brook  <paul@codesourcery.com>
1287
1288         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
1289         Remove documentation entry for fmul type.
1290         Use fmuls to annotate single-precision multiplication patterns,
1291         fmuld to annotate double-precision multiplication patterns,
1292         fmacs to annotate single-precision multiply-accumulate patterns
1293         and fmacd to annotate double-precision multiply-accumulate patterns.
1294         * config/arm/vfp11.md: Update reservations accordingly.
1295         * config/arm/arm.md: Note that certain values of the "type"
1296         attribute are documented in vfp.md.
1297         * config/arm/arm1020e.md: Remove out of date duplicate comment.
1298         (v10_cvt): Use new fmul types.
1299
1300 2008-08-26  Paul Brook   <paul@codesourcery.com>
1301
1302         * config/arm/vfp.md: Move pipeline description for VFP11 to...
1303         * config/arm/vfp11.md: ...here.  New.
1304         * config/arm/arm.md: Include vfp11.md.
1305
1306 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
1307
1308         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
1309         parameter to inform call.
1310
1311 2008-08-26  Jeff Law  <law@redhat.com>
1312
1313         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
1314         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
1315         preferred class when copying a constant into a partial word register.
1316
1317 2008-08-26  Ben Elliston  <bje@au.ibm.com>
1318
1319         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
1320         * cp/typeck.c: Likewise.
1321         * cp/tree.c: Likewise.
1322         * gimple-low.c: Likewise.
1323         * jump.c: Likewise.
1324
1325 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
1326
1327         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
1328         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
1329
1330         * doc/passes.texi: Describe IRA.
1331
1332         * doc/tm.texi (IRA_COVER_CLASSES,
1333         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
1334
1335         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
1336         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
1337         -fira-propagate-cost, -fno-ira-share-save-slots,
1338         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
1339
1340         * flags.h (ira_algorithm): New enumeration.
1341         (flag_ira_algorithm, flag_ira_verbose): New external variable
1342         declarations.
1343
1344         * postreload.c (gate_handle_postreload): Don't do post reload
1345         optimizations unless the reload is completed.
1346
1347         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
1348         IRA.
1349
1350         * tree-pass.h (pass_ira): New external variable declaration.
1351
1352         * reload.h: Add 2008 to the Copyright.
1353     
1354         * cfgloopanal.c: Include params.h.
1355         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
1356         mode.
1357     
1358         * params.h (IRA_MAX_LOOPS_NUM): New macro.
1359
1360         * toplev.c (ira.h): New include.
1361         (flag_ira_algorithm, flag_ira_verbose): New external variables.
1362         (backend_init_target): Call ira_init.
1363         (backend_init): Call ira_init_once.
1364         (finalize): Call finish_ira_once.
1365
1366         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
1367         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
1368         external variables.
1369
1370         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
1371         may_move_out_cost): New external variable declarations.
1372         (move_table): New typedef.
1373     
1374         * caller-save.c: Include headers output.h and ira.h.
1375         (no_caller_save_reg_set): New global variable.
1376         (save_slots_num, save_slots): New variables.
1377         (reg_save_code, reg_restore_code, add_stored_regs): Add
1378         prototypes.
1379         (init_caller_save): Set up no_caller_save_reg_set.
1380         (init_save_areas): Reset save_slots_num.
1381         (saved_hard_reg): New structure.
1382         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
1383         (initiate_saved_hard_regs, new_saved_hard_reg,
1384         finish_saved_hard_regs, saved_hard_reg_compare_func): New
1385         functions.
1386         (setup_save_areas): Add code for sharing stack slots.
1387         (all_blocks): New variable.
1388         (save_call_clobbered_regs): Process pseudo-register too.
1389         (mark_set_regs): Process pseudo-register too.
1390         (insert_one_insn): Put the insn after bb note in a empty basic
1391         block.  Add insn check.
1392     
1393         * global.c (eliminable_regset): Make it external.
1394         (mark_elimination): Use DF_LR_IN for IRA.
1395         (pseudo_for_reload_consideration_p): New.
1396         (build_insn_chain): Make it external.  Don't ignore spilled
1397         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
1398         (gate_handle_global_alloc): New function.
1399         (pass_global_alloc): Add the gate function.
1400
1401         * opts.c (decode_options): Set up flag_ira.  Print the warning for
1402         -fira.
1403         (common_handle_option): Process -fira-algorithm and -fira-verbose.
1404
1405         * timevar.def (TV_IRA, TV_RELOAD): New passes.
1406
1407         * regmove.c (regmove_optimize): Don't do replacement of output for
1408         IRA.
1409
1410         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
1411         New external variable declarations.
1412
1413         * local-alloc.c (update_equiv_regs): Make it external.  Return
1414         true if jump label rebuilding should be done.  Rescan new_insn for
1415         notes.
1416         (gate_handle_local_alloc): New function.
1417         (pass_local_alloc): Add the gate function.
1418
1419         * alias.c (value_addr_p, stack_addr_p): New functions.
1420         (nonoverlapping_memrefs_p): Use them for IRA.
1421
1422         * common.opt (fira, fira-algorithm, fira-coalesce,
1423         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
1424         fira-verbose): New options.
1425
1426         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
1427         move_cost, may_move_in_cost, may_move_out_cost): Make the
1428         variables external.
1429         (move_table): Remove typedef.
1430         (init_move_cost): Make it external.
1431         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
1432         functions.
1433
1434         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
1435         setup_reg_classes): New function prototypes.
1436         (eliminable_regset): New external variable declaration.
1437         (build_insn_chain, update_equiv_regs): New function prototypes.
1438     
1439         * Makefile.in (IRA_INT_H): New definition.
1440         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
1441         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
1442         (reload1.o, toplev.o): Add dependence on ira.h.
1443         (cfgloopanal.o): Add PARAMS_H.
1444         (caller-save.o): Add dependence on output.h and ira.h.
1445         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
1446         ira-emit.o, ira-lives.o): New entries.
1447
1448         * passes.c (pass_ira): New pass.
1449
1450         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
1451
1452         * reload1.c (ira.h): Include the header.
1453         (changed_allocation_pseudos): New bitmap.
1454         (init_reload): Initiate the bitmap.
1455         (compute_use_by_pseudos): Permits spilled registers in FROM.
1456         (temp_pseudo_reg_arr): New variable.
1457         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
1458         IRA.  Call alter_reg with the additional parameter.  Don't clear
1459         spilled_pseudos for IRA.  Restore original insn chain for IRA.
1460         Clear changed_allocation_pseudos at the end of reload.
1461         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
1462         (hard_regno_to_pseudo_regno): New variable.
1463         (count_pseudo): Check spilled pseudos.  Set up
1464         hard_regno_to_pseudo_regno.
1465         (count_spilled_pseudo): Check spilled pseudos. Update
1466         hard_regno_to_pseudo_regno.
1467         (find_reg): Use better_spill_reload_regno_p.  Check
1468         hard_regno_to_pseudo_regno.
1469         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
1470         code for IRA.
1471         (eliminate_regs_1): Use additional parameter for alter_reg.
1472         (finish_spills): Set up pseudo_previous_regs only for spilled
1473         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
1474         more arguments.  Don't clear live_throughout and dead_or_set for
1475         spilled pseudos.  Use additional parameter for alter_reg.  Call
1476         mark_allocation_change.  Set up changed_allocation_pseudos.
1477         Remove sanity check.
1478         (emit_input_reload_insns, delete_output_reload): Use additional
1479         parameter for alter_reg.  Call mark_allocation_change.
1480         (substitute, gen_reload_chain_without_interm_reg_p): New
1481         functions.
1482         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
1483     
1484         * testsuite/gcc.dg/20080410-1.c: New file.
1485         
1486         * config/s390/s390.h (IRA_COVER_CLASSES,
1487         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
1488
1489         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
1490
1491         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
1492
1493         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
1494
1495         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
1496
1497         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
1498     
1499         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
1500     
1501         2008-08-24  Jeff Law  <law@redhat.com>
1502         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
1503         when ignoring unavailable registers.
1504
1505         2008-08-24  Jeff Law  <law@redhat.com>
1506         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
1507         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
1508         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
1509         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
1510
1511         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
1512         * ira-build.c (allocno_range_compare_func): Stabilize sort.
1513
1514         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
1515         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
1516         * reload1.c (find_reg): Process registers in register allocation order.
1517
1518         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
1519         * toplev.c (backend_init_target): Move ira_init call from
1520         here...
1521         (lang_dependent_init_target): ...to here.
1522
1523         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
1524         * ira.c (setup_class_subset_and_memory_move_costs): Don't
1525         calculate memory move costs for NO_REGS.
1526
1527         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
1528         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
1529         STACK_REGS is defined.
1530
1531         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
1532         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
1533
1534         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
1535         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
1536
1537         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
1538         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
1539         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
1540         barrier.
1541
1542 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
1543             Dorit Nuzman  <dorit@il.ibm.com>
1544
1545         * gcc/config/spu/spu.md (vec_extract_evenv4si,
1546         vec_extract_evenv4sf, vec_extract_evenv8hi,
1547         vec_extract_evenv16qi, vec_extract_oddv4si,
1548         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
1549         vec_interleave_highv4sf, vec_interleave_lowv4sf,
1550         vec_interleave_highv4si, vec_interleave_lowv4si,
1551         vec_interleave_highv8hi, vec_interleave_lowv8hi,
1552         vec_interleave_highv16qi, vec_interleave_lowv16qi,
1553         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
1554
1555 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
1556
1557         PR target/36756
1558         * config/rs6000/rs6000.c (optimization_options): Don't default to
1559         section anchors without toplevel reorder.
1560
1561 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1562
1563         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
1564         (mfc_end_critical_section): Likewise.
1565
1566 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1567
1568         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
1569         all type qualifiers from element type to vector type.
1570
1571 2008-08-25  David Daney  <ddaney@avtrex.com>
1572
1573         * config/mips/mips.md (immediate_insn): Move up in file, fix
1574         comment typo, reformat.
1575         (fetchop_bit, atomic_hiqi_op memory_barrier,
1576         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
1577         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
1578         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
1579         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
1580         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
1581         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
1582         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
1583         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
1584         sync_old_nand<mode>, sync_new_nand<mode>,
1585         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
1586         test_and_set_12): Moved to sync.md.
1587         (sync.md): Include.
1588         * config/mips/sync.md: New file.
1589
1590 2008-08-25  Richard Henderson  <rth@redhat.com>
1591
1592         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
1593         (regsave): Likewise.
1594         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
1595         (output_cfi_directive): Likewise.
1596         (div_data_align): New.
1597         (output_cfi): Use it.
1598
1599 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
1600
1601         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
1602         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
1603         (TARGET_OCTEON): New macro.
1604         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
1605         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
1606         (ISA_HAS_POP): New macro.
1607         * config/mips/driver-native.c (host_detect_local_cpu): Handle
1608         Octeon.
1609         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1610         Handle Octeon.
1611         * config/mips/mips.md (cpu): Add octeon.
1612         (type): Add pop attribute value.
1613         (popcount<mode>2): New pattern.
1614         * doc/invoke.texi (-march=@var{arch}): Add octeon.
1615
1616 2008-08-24  Jan Hubicka  <jh@suse.cz>
1617
1618         * doc/invoke.texi (-fipa-cp-clone): New option.
1619         (-fipa-cp): Update docs.
1620         (--param ipcp-unit-growth):New.
1621         * ipa-cp.c: Include fibheap.h, params.h
1622         (ipcp_initialize_node_lattices): When not cloning, all externally
1623         visible functions are bottom.
1624         (ipcp_need_redirect_p): Accept clones.
1625         (ipcp_insert_stage): Use cost driven heuristics.
1626         (max_count, dead_nodes): New static vars.
1627         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
1628         ipcp_const_param_count): New functions.
1629         * common.opt (ipa-cp-clone): New command line option.
1630         * params.def (ipcp-unit-growth): New.
1631
1632 2008-08-24  Jan Hubicka  <jh@suse.cz>
1633
1634         * tree-inline.c (tree_function_versioning): Look harder
1635         for referenced vars.
1636
1637 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
1638
1639         PR tree-optimization/37185
1640         * matrix-reorg.c (transform_access_sites): Update changed stmt.
1641
1642 2008-08-23  Jan Hubicka  <jh@suse.cz>
1643
1644         * ipa-cp.c (ipcp_analyze_node): New function.
1645         (ipcp_update_cloned_node): Use it.
1646         (ipcp_init_stage): Likewise.
1647         * ipa-inline.c (function_insertion_hook_holder): New static var.
1648         (analyze_function): Break out from ....
1649         (inline_generate_summary): Here; register insertion hook.
1650         (cgraph_decide_inlining): Remove hook.
1651         (add_new_function): New function.
1652
1653 2008-08-23  Jan Hubicka  <jh@suse.cz>
1654
1655         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
1656
1657 2008-08-23  Jan Hubicka  <jh@suse.cz>
1658
1659         * ipa-cp.c (constant_val_insert): Remove.
1660         (ipcp_propagate_one_const): Remove.
1661         (ipcp_create_replace_map): Always insert replacements to the map.
1662         (ipcp_insert_stage): Do not try to insert statements by hand.
1663         * tree-inline.c (insert_init_stmt): Break out from ...
1664         (setup_one_parameter): ... here; allow NULL BB pointer.
1665         (tree_function_versioning): Use setup_one_parameter to process
1666         replacement map.
1667
1668 2008-08-23  Jan Hubicka  <jh@suse.cz>
1669
1670         * tree.c (decl_address_ip_invariant_p): New function.
1671         * tree.h (decl_address_ip_invariant_p): Declare.
1672         * gimple.c (strip_invariant_refs): Break out from ...
1673         (is_gimple_invariant_address): ... here
1674         (is_gimple_ip_invariant_address): New function.
1675         (is_gimple_ip_invariant): New function.
1676         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
1677         Declare.
1678
1679         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
1680         (ipcp_lat_is_insertable): All constants are insertable.
1681         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
1682         IPA_CONST_VALUE_REF.
1683         (ipcp_initialize_node_lattices): Propagate all types of operands.
1684         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
1685         (ipcp_create_replace_map): Reformat.
1686         (ipcp_need_redirect_p): Simplify.
1687         (ipcp_insert_stage): Check that argument is used before clonning.
1688         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle IPA_CONST_REF.
1689         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
1690         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
1691         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
1692         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
1693         (jump_func_type): Remove IPA_CONST_VALUE_REF.
1694         * tree-inline.c (tree_function_versioning): Add variables referenced by
1695         replacing trees.
1696
1697 2008-08-23  Jan Hubicka  <jh@suse.cz>
1698
1699         PR target/37094
1700         * i386.c (standard_80387_constant_p): Use optimize_size.
1701
1702 2008-08-23  Ira Rosen  <irar@il.ibm.com>
1703
1704         PR tree-optimization/37161
1705         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
1706         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
1707         (vect_determine_vectorization_factor): Move the scalar type
1708         retrieval to vect_get_smallest_scalar_type.
1709         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
1710         scalar type. Remove redundant computation.
1711         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
1712         (vect_get_slp_defs): Take the type of RHS into account if
1713         necessary by calling vect_get_smallest_scalar_type. Call
1714         vect_get_constant_vectors with additional argument.
1715
1716 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1717
1718         PR 35648
1719         * doc/invoke.texi (Wwrite-strings): Clarify description.
1720         
1721 2008-08-23  Ira Rosen  <irar@il.ibm.com>
1722
1723         PR tree-optimization/37174
1724         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
1725         def stmt is a part of the loop before accessing its stmt_vec_info.
1726
1727 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
1728
1729         PR target/11259
1730         * config/avr/avr.md (UNSPEC_SWAP): New constants.
1731         (*swap): New insn pattern.
1732         (*ashlqi3): Rename from ashlqi3 insn pattern.
1733         (ashlqi3): New expanders.
1734         (*lshrqi3): Rename from lshrqi3 insn pattern.
1735         (lshrqi3): New expanders.       
1736         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
1737         lshrqi3_const5, lshrqi3_const6): New splitters.
1738         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
1739         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
1740         peephole2 patterns.
1741
1742 2008-08-22  Richard Guenther  <rguenther@suse.de>
1743
1744         PR tree-optimization/37078
1745         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
1746         [+INF, +INF] ranges.
1747
1748 2008-08-22  Richard Guenther  <rguenther@suse.de>
1749
1750         PR tree-optimization/37143
1751         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
1752         a conversion statement instead of a copy.
1753
1754 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
1755
1756         PR target/37184
1757         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
1758         CCCmode, CCOmode and CCSmode destination modes.
1759
1760         PR target/37191
1761         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
1762         from different units in a single alternative.
1763         (*vec_extractv2sf_1): Ditto.
1764         (*vec_extractv2si_0): Ditto.
1765         (*vec_extractv2si_1): Ditto.
1766         * config/i386/sse.md (sse2_storehpd): Ditto.
1767         (sse2_storelpd): Ditto.
1768         (sse2_loadhpd): Ditto.
1769         (sse2_loadlpd): Ditto.
1770
1771         PR target/37197
1772         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
1773         (popcountsi2): Ditto.
1774         (clzdi2_abm): Ditto.
1775         (popcountdi2): Ditto.
1776         (clzhi2_abm): Ditto.
1777         (popcounthi2): Ditto.
1778
1779 2008-08-22  Richard Guenther  <rguenther@suse.de>
1780
1781         PR middle-end/36548
1782         PR middle-end/37125
1783         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
1784         if the multiplication does not overflow.
1785
1786 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
1787
1788         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
1789
1790 2008-08-21  Richard Henderson  <rth@redhat.com>
1791
1792         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
1793         spurrious comma from test.
1794         * configure: Rebuild.
1795
1796 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1797
1798         PR 30457
1799         * builtins.c (fold_builtin_next_arg): Add warning about undefined
1800         behaviour.
1801         
1802 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
1803
1804         * c-tree.h (grokfield): New argument.
1805         * c-decl.c (grokfield): Handle new location argument.
1806         * c-parser.c (c_parser_struct_declaration): Pass location to
1807         grokfield.
1808
1809 2008-08-21  Richard Guenther  <rguenther@suse.de>
1810
1811         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
1812
1813 2008-08-21  Jan Hubicka  <jh@suse.cz>
1814
1815         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
1816         (cgraph_add_function_insertion_hook,
1817         cgraph_remove_function_insertion_hook,
1818         cgraph_call_function_insertion_hooks): New functions.
1819         * cgraph.h (cgraph_add_function_insertion_hook,
1820         cgraph_remove_function_insertion_hook,
1821         cgraph_call_function_insertion_hooks): Declare.
1822         * ipa-reference.c (function_insertion_hook_holder): New variable.
1823         (check_operand, look_for_address_of): When checking late, do not care
1824         about module bitmaps.
1825         (add_new_function): New function.
1826         (generate_summary): Register hooks; zero module bitmaps.
1827         (propagate): Unregister hooks.
1828         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
1829         (add_new_function): New function.
1830         (generate_summary): Register hook.
1831         (propagate): Remove hook.
1832
1833         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
1834
1835         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
1836         * ipa-cp.c (ipcp_update_cloned_node): New function.
1837         (build_const_val): Handle functions correctly; bring type logic
1838         into sync with tree-inline.c
1839         (ipcp_init_stage):  Take care of computing stuff needed by
1840         indirect inlining; update clones.
1841         (ipcp_generate_summary): Break out of ipcp_driver.
1842         (ipcp_driver): Do only execution and transformation.
1843         (pass_ipa_cp): Make IPA_PASS.
1844         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
1845         offset to address.
1846         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
1847         ipcp, some info is already available.
1848         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
1849         * tree-inline.c (remap_ssa_name): Unshare expression.
1850
1851 2008-08-21  Richard Guenther  <rguenther@suse.de>
1852
1853         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
1854         a PHI ask VN if it is already available.
1855         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
1856         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
1857
1858 2008-08-21  Richard Guenther  <rguenther@suse.de>
1859
1860         PR middle-end/36817
1861         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
1862         makes sure to produce a result of the correct type.
1863
1864 2008-08-21  Jan Hubicka  <jh@suse.cz>
1865         Backport from LTO branch:
1866
1867         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
1868                     Jan Hubicka  <jh@suse.cz>
1869         
1870         * ipa-pure-const.c
1871         (init_state, finish_state, set_function_state, generate_summary):
1872         New functions.
1873         (scan_stmt): Renamed from scan_function.  Changed to keep state in
1874         local static vars rather than cgraph aux field.
1875         (propagate): Renamed from static_execute. Changed to keep state in
1876         local static vars rather than cgraph aux field.
1877         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
1878         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
1879
1880         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
1881
1882         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
1883         * ipa-reference.c (init_function_info, generate_summary, 
1884         propagate): New functions.
1885         (analyze_function):  Call init_function_info.
1886         (static_execute): Stripped into generate_summary and propagate.
1887         (pass_ipa_reference): Made into ipa_opt_pass.
1888
1889 2008-08-21  Richard Guenther  <rguenther@suse.de>
1890
1891         PR tree-optimization/37181
1892         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
1893         folding result.
1894         (extract_range_from_unary_expr): Likewise.
1895
1896 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1897
1898         * diagnostic.c (pedwarn_at): Rename as pedwarn.
1899         (pedwarn): Delete.
1900         * toplev.h (pedwarn_at): Likewise.
1901         * builtins.c: Update all calls to pedwarn.
1902         * c-lex.c: Likewise.
1903         * toplev.c: Likewise.
1904         * c-tree.h: Likewise.
1905         * c-decl.c: Likewise.
1906         * c-errors.c: Likewise.
1907         * c-typeck.c: Likewise.
1908         * c-common.c: Likewise.
1909         * c-parser.c: Likewise.
1910
1911 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
1912
1913         PR target/31070
1914         * config/sparc/sparc.c (function_arg_slotno): Handle structure
1915         with MODE_VECTOR_INT mode.
1916
1917 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1918
1919         PR middle-end/179
1920         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
1921         initialized outside the current module.
1922         (warn_uninitialized_var): Ignore left-hand side when walking the
1923         trees. Ignore address expressions. Examine VUSE operands in gimple
1924         statements with a variable declaration on the right-hand side.
1925
1926 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
1927
1928         PR bootstrap/37155
1929         * rtlanal.c (subreg_offset_representable_p): Revert last change.
1930
1931 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1932
1933         PR 35701
1934         * c-common.c (conversion_warning): Do not warn if applying bit-and
1935         operator to unsigned constant that fits in the target type.
1936
1937 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1938
1939         PR c++/35602
1940         * c-common.c (conversion_warning): Do not warn for artificial
1941         expressions.
1942
1943 2008-08-20  Richard Guenther  <rguenther@suse.de>
1944
1945         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
1946         (extract_range_from_binary_expr): Fall back to constant propagation.
1947         (extract_range_from_unary_expr): Likewise.
1948
1949 2008-08-20  Richard Guenther  <rguenther@suse.de>
1950
1951         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
1952         with TREE_THIS_VOLATILE on shared nodes.
1953         (fold_stmt_r): Likewise.
1954
1955 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
1956
1957         PR c/37171
1958         * c-parser.c (c_parser_attributes): For keywords use canonical
1959         spelling for attr_name.
1960
1961 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1962
1963         * value-prof.c (check_counter): Revert wrong call to error.
1964         
1965 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1966
1967         * profile.c: Update calls to inform.
1968         * value-prof.c: Update calls to inform.
1969         
1970 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1971
1972         * diagnostic.c (inform): Add an explicit location_t parameter.
1973         * toplev.h (inform): Update declaration.
1974         * builtins.c: Update all calls to inform.
1975         * c-common.c: Likewise.
1976         * c-decl.c: Likewise.
1977         * c-opts.c: Likewise.
1978         * c-pch.c: Likewise.
1979         * c-pragma.c: Likewise.
1980         * c-typeck.c: Likewise.
1981         * coverage.c: Likewise.
1982         * opts.c: Likewise.
1983         * toplev.c: Likewise.
1984         * tree-cfg.c: Likewise.
1985         * tree-ssa.c: Likewise.
1986
1987 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
1988
1989         PR target/37169
1990         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
1991         V2DI mode, for SSE4.1, use movq instead of vector set if the
1992         second element is zero and inter-unit moves are OK.
1993
1994 2008-08-20  Richard Guenther  <rguenther@suse.de>
1995
1996         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
1997         properly handle conversion/copy chains after tuplification.
1998
1999 2008-08-20  Richard Guenther  <rguenther@suse.de>
2000
2001         * passes.c (init_optimization_passes): Move the second
2002         forwprop pass before alias computation.  Remove the second
2003         DCE pass.  Remove the first dominator and phi copy/const
2004         prop passes.
2005
2006 2008-08-20  Nick Clifton  <nickc@redhat.com>
2007
2008         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
2009         support of this feature.  Do not assume that a sufficiently new
2010         assembler will support the feature regardless of the target type.
2011         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
2012         * configure: Regenerate.
2013
2014 2008-08-20  Richard Guenther  <rguenther@suse.de>
2015
2016         * tree-vrp.c (found_in_subgraph): Remove.
2017         (live): New global static.
2018         (live_on_edge): New function.
2019         (blocks_visited): Remove.
2020         (register_edge_assert_for_2): Use live_on_edge.
2021         (find_conditional_asserts): Remove code dealing with
2022         found_in_subgraph.  Do not walk the CFG.
2023         (find_switch_asserts): Likewise.
2024         (find_assert_locations_1): Renamed from find_assert_locations.
2025         Move finding assert locations for conditional and switch
2026         statements first.  Update live bitmap.  Do not walk the CFG.
2027         (find_assert_locations): New function.
2028         (insert_range_assertions): Remove entry of CFG walk.
2029         Adjust call to find_assert_locations.
2030         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
2031         that only can appear because of fake exit edges but assert we
2032         never try to insert on those.
2033         (fini_pre): Do not remove fake exit edges here...
2034         (execute_pre): ...but here, before committing edge inserts.
2035
2036 2008-08-19  Richard Guenther  <rguenther@suse.de>
2037
2038         * passes.c (init_optimization_passes): Exchange store-ccp
2039         with a ccp pass.
2040
2041 2008-08-19  Rafael Espindola  <espindola@google.com>
2042
2043         * varasm.c (weak_decls): Move earlier in the file.
2044         (assemble_external): Add weak decls to the weak_decls list.
2045         (declare_weak): Don't add decls to the weak_decls list.
2046
2047 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
2048
2049         PR target/37157
2050         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
2051         before (sse2_shufpd_<mode>).
2052
2053 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
2054
2055         PR debug/37156
2056         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
2057         * tree.c (block_nonartificial_location): Likewise.
2058
2059 2008-08-19  Richard Guenther  <rguenther@suse.de>
2060
2061         PR tree-optimization/35972
2062         PR tree-optimization/23094
2063         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
2064         parameter.
2065         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
2066         handle MISALIGNED_INDIRECT_REF.
2067         (get_ref_from_reference_ops): New helper.
2068         (vn_reference_lookup_pieces): Walk the use-def chain using the
2069         alias-oracle if requested.
2070         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
2071         walking the use-def chain.
2072         (compute_avail): But not here.
2073         (create_component_ref_by_pieces_1): Properly handle
2074         MISALIGNED_INDIRECT_REF.
2075         (do_regular_insertion): Handle fully redundant
2076         expressions after PHI-translation also for SSA_NAME values, not
2077         only constants.  Correctly use edoubleprime for that.
2078
2079 2008-08-19  Ira Rosen  <irar@il.ibm.com>
2080
2081         * tree-vectorizer.c (supportable_widening_operation): Support
2082         multi-step conversion, return the number of steps in such conversion
2083         and the required intermediate types.
2084         (supportable_narrowing_operation): Likewise.
2085         * tree-vectorizer.h (vect_pow2): New function.
2086         (supportable_widening_operation): Change argument types.
2087         (supportable_narrowing_operation): Likewise.
2088         (vectorizable_type_promotion): Add an argument.
2089         (vectorizable_type_demotion): Likewise.
2090         * tree-vect-analyze.c (vect_analyze_operations): Call 
2091         vectorizable_type_promotion and vectorizable_type_demotion with
2092         additional argument.
2093         (vect_get_and_check_slp_defs): Detect patterns.
2094         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
2095         types. 
2096         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
2097         vect_build_slp_tree with correct arguments. Calculate unrolling factor
2098         according to the smallest type in the loop.
2099         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
2100         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call 
2101         supportable_widening_operation with correct arguments. 
2102         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector 
2103         operands lists according to the number of vector statements in left
2104         or right node, if exists.
2105         (vect_gen_widened_results_half): Remove unused argument.
2106         (vectorizable_conversion): Call supportable_widening_operation, 
2107         supportable_narrowing_operation, and vect_gen_widened_results_half
2108         with correct arguments. 
2109         (vectorizable_assignment): Change documentation, support multiple
2110         types in SLP. 
2111         (vectorizable_operation): Likewise.
2112         (vect_get_loop_based_defs): New function.
2113         (vect_create_vectorized_demotion_stmts): Likewise.
2114         (vectorizable_type_demotion): Support loop-aware SLP and general
2115         multi-step conversion. Call vect_get_loop_based_defs and
2116         vect_create_vectorized_demotion_stmts for transformation.
2117         (vect_create_vectorized_promotion_stmts): New function.
2118         (vectorizable_type_promotion): Support loop-aware SLP and general
2119         multi-step conversion. Call vect_create_vectorized_promotion_stmts
2120         for transformation.     
2121         (vectorizable_store): Change documentation, support multiple
2122         types in SLP. 
2123         (vectorizable_load): Likewise.
2124         (vect_transform_stmt): Pass SLP_NODE to 
2125         vectorizable_type_promotion and vectorizable_type_demotion.
2126         (vect_schedule_slp_instance): Move here the calculation of number
2127         of vectorized statements for each node from...
2128         (vect_schedule_slp): ... here.
2129         (vect_transform_loop): Call vect_schedule_slp without the last
2130         argument.
2131
2132 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2133
2134         PR bootstrap/37152
2135         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change = 
2136         to == in assert statement.
2137         (vectorizable_reduction): Fix typo.
2138
2139 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
2140
2141         PR bootstrap/37153
2142         * value-prof.c (check_counter): Dereference pointer to overall
2143         count when printing it.
2144
2145 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
2146
2147         * profile.h: Really add it.
2148
2149 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
2150
2151         * mcf.c: Really add it.
2152
2153 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
2154             Vinodha Ramasamy  <vinodha@google.com>
2155
2156         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
2157         count_scale.
2158         * value-prof.c (check_counter): Fix the counter if
2159         flag_profile_correction is true.
2160         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
2161         tree_mod_subtract_transform):
2162         Follow check_counter parameter change.
2163         * common.opt (fprofile-correction): New option.
2164         * mcf.c: New file.
2165         * profile.h: Likewise.
2166         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
2167         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
2168         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
2169         functions.
2170         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
2171         flag_profile_correction is set.
2172
2173 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
2174
2175         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
2176
2177 2008-08-18  Tomas Bily  <tbily@suse.cz>
2178
2179         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
2180         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
2181         CONVERT_EXPR_P.
2182         * tree-data-ref.c (split_constant_offset_1): Likewise.
2183         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
2184         * tree-sra.c (sra_walk_expr): Likewise.
2185         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
2186         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
2187         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
2188         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
2189         Likewise.
2190         * gimple.c (gimple_assign_unary_nop_p): Likewise.
2191         * tree-vect-transform.c (vectorizable_type_demotion)
2192         (vectorizable_type_promotion): Likewise.
2193         * tree-inline.c (expand_call_inline): 
2194         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
2195         (forward_propagate_addr_expr_1, forward_propagate_comparison)
2196         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2197         * expr.c (expand_expr_real_1): Likewise.
2198         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
2199         (gimple_assign_unary_useless_conversion_p): Likewise.
2200         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
2201         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
2202         * fold-const.c (fold_unary): Likewise.
2203         * tree.h (CONVERT_EXPR_P): Likewise.
2204         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
2205         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
2206         * tree-vrp.c: 
2207         (register_edge_assert_for_2, extract_range_from_unary_expr)
2208         (register_edge_assert_for_1): Likewise.
2209         
2210 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2211
2212         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
2213         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
2214         (enum real_value_const): Delete.
2215         (get_real_const): Delete.
2216         * real.c (get_real_const): Delete.
2217         (dconst_e_ptr): Define.
2218         (dconst_third_ptr): Define.
2219         (dconst_sqrt2_ptr): Define.
2220         * builtins.c: Update all callers.
2221
2222 2008-08-18  Richard Guenther  <rguenther@suse.de>
2223
2224         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
2225         statement iterator after statement removal.
2226
2227 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
2228
2229         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
2230         (detect_processor_freebsd): Likewise.
2231         (host_detect_local_cpu): Call newly added functions for FreeBSD.
2232
2233 2008-08-18  Richard Guenther  <rguenther@suse.de>
2234
2235         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
2236         and loads have the correct types.
2237
2238 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2239
2240         PR cpp/7263
2241         * c-opts.c (cpp_opts): Remove static.
2242         * c-parser.c (cpp_opts): Declare it extern.
2243         (disable_extension_diagnostics): Handle cpp options.
2244         (enable_extension_diagnostics): Likewise.
2245
2246 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2247
2248         * diagnostics.c (permerror_at): Rename as permerror.
2249         (permerror): Delete.
2250         * toplev.h: Likewise.
2251
2252 2008-08-18  Richard Guenther  <rguenther@suse.de>
2253
2254         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
2255         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
2256         Move call_cdce before build_alias.  Move copyrename2,
2257         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
2258         right after final inlining.
2259         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
2260         (pass_build_cfg): But instead via TODO_dump_func.
2261
2262 2008-08-18  Richard Guenther  <rguenther@suse.de>
2263
2264         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
2265         element index.
2266         (scalarize_init): If we failed to generate some initializers
2267         do not generate zeros for not instantiated members.  Instead
2268         rely on the copy out.
2269         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
2270         about missing flow-sensitive alias info only if we have
2271         aliases computed.
2272
2273 2008-08-17  Nick Clifton  <nickc@redhat.com>
2274
2275         * doc/extend.texi (Function Attributes): Fix typo in description
2276         if hot function attribute.
2277
2278 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
2279             Richard Sandiford  <rdsandiford@googlemail.com>
2280
2281         * doc/install.texi (--with-mips-plt): Document.
2282         * doc/invoke.texi (-mplt, -mno-plt): Document.
2283         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
2284         and handle ${with_mips_plt}.
2285         * config/mips/mips.opt (mplt): New option.
2286         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
2287         (TARGET_ABICALLS_PIC2): Likewise.
2288         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
2289         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
2290         (ASM_SPEC): Use !mabi=* instead of !mabi*.
2291         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
2292         to decide whether to output ".option picX" directives.
2293         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
2294         Pass -call_nonpic rather than -KPIC for -mplt.
2295         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
2296         on the command line.  Also remove it when -mabi=64 is used without
2297         -msym32.
2298         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
2299         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
2300         TARGET_ABICALLS_PIC0.
2301         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
2302         TARGET_ABICALLS.
2303         (mips16_build_function_stub): Only output ".option pic" directives
2304         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
2305         (mips16_build_call_stub): Fix comment and remove redundant
2306         ".set at"/"set .noat" directives.
2307         (mips_function_rodata_section): Use the default behaviour for
2308         TARGET_ABSOLUTE_ABICALLS.
2309         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
2310         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
2311         (mips_restore_gp): Do nothing if the current function doesn't use
2312         a global pointer.
2313         (mips_expand_prologue): Only save $gp if the current function uses it.
2314         Use a normal move for TARGET_ABICALLS_PIC0.
2315         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
2316
2317 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
2318
2319         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
2320         of function when handling GLOBAL_POINTER_REGNUM.
2321
2322 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
2323
2324         PR ada/20548
2325         * common.opt (-fstack-check): Do not declare the variable here.
2326         (-fstack-check=): New option variant.
2327         * doc/invoke.texi (Code Gen Options): Document it.
2328         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
2329         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
2330         (STACK_CHECK_STATIC_BUILTIN): New macro.
2331         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
2332         * opts.c: Include expr.h.
2333         (common_handle_option) <OPT_fold_stack_check_>: New case.
2334         <OPT_fstack_check>: Likewise.
2335         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
2336         consistently in the test for variable-sized types.  Adjust for
2337         new behaviour of flag_stack_check.
2338         * explow.c: Include except.h.
2339         (allocate_dynamic_stack_space): Do not take into account
2340         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
2341         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
2342         for variable-sized parameters.  Treat all parameters whose size is
2343         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
2344         stack checking is enabled.
2345         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
2346         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
2347         if generic stack checking is enabled.
2348         (expand_function_end): Adjust for new behaviour of flag_stack_check.
2349         * reload1.c (reload): Likewise.
2350         * stmt.c (expand_decl): Assert that all automatic variables have
2351         fixed size at this point and remove dead code.
2352         * flags.h (stack_check_type): New enumeration type.
2353         (flag_stack_check): Declare.
2354         * toplev.c (flag_stack_check): New global variable.
2355         * Makefile.in (opts.o): Add dependency on EXPR_H.
2356         (explow.o): Add dependency on except.h.
2357
2358 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
2359
2360         * config/avr/avr.c (avr_override_options): Reduce value of 
2361         PARAM_INLINE_CALL_COST.
2362
2363 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
2364
2365         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
2366         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
2367         lieu of TYPE_MODE (type) throughout.
2368
2369 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
2370
2371         * config/arm/arm.c (add_minipool_backward_ref): Check for
2372         8-byte-aligned entries in second case of forcing insertion after a
2373         particular entry.  Change third case to avoid inserting
2374         non-8-byte-aligned entries before 8-byte-aligned ones.
2375
2376 2008-08-15  Richard Guenther  <rguenther@suse.de>
2377
2378         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
2379         strip components for unknown size accesses.
2380
2381 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
2382
2383         * config/s390/2097.md New file.
2384         * config/s390/s390.md ("z10prop" attribute): Define none,
2385         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
2386         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
2387         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
2388         possible values and apply them to insns as appropriate.
2389         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
2390         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
2391         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
2392         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
2393         values.
2394         ("bfp" mode attribute): Removed.  Every occurence replaced
2395         with <mode>.
2396         * config/s390/s390.c (struct "z10_cost"): Updated entries.
2397         * config/s390/2084.md (insn_reservation "x_itof"): Updated
2398           type attribute.
2399
2400 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2401
2402         PR c/28152
2403         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
2404         for keywords.
2405         
2406 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
2407
2408         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
2409         additional argument. Support reduction when duplication is needed due
2410         to data-types of different sizes in the loop.
2411         (get_initial_def_for_induction): Fix printout.
2412         (vect_get_vec_def_for_stmt_copy): Support case where the
2413         vec_stmt_for_operand is a phi node.
2414         (vectorizable_reduction): Support reduction when duplication is needed 
2415         due to data-types of different sizes in the loop.
2416         (vectorizable_call): Remove restriction to not vectorize in case we 
2417         have data-types of different sizes in the loop.
2418         (vectorizable_conversion): Likewise.
2419         (vectorizable_operation): Likewise.
2420         (vectorizable_type_demotion): Likewise.
2421         (vectorizable_type_promotion): Likewise.
2422         (vectorizable_induction): Add restriction to not vectorize in case 
2423         we have data-types of different sizes in the loop.
2424
2425 2008-08-14  Christophe Saout  <christophe@saout.de>
2426             Uros Bizjak  <ubizjak@gmail.com>
2427
2428         PR target/37101
2429         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
2430         (*vec_concatv2di_rex64_sse4_1): Ditto.
2431         (*vec_concatv2di_rex64_sse): Ditto.
2432
2433 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
2434
2435         PR middle-end/37103
2436         * fold-const.c (fold_widened_comparison): Do not allow
2437         sign changes that change the result even if shorter type
2438         is wider than arg1_unw's type.
2439
2440 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
2441
2442         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
2443         Skip if the multilib testing specifies -march that does not
2444         agree with the one specified in the testcase.
2445
2446 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
2447
2448         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
2449         zero extend SImode values being converted to TFmode before passing
2450         to libcalls.
2451
2452 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2453
2454         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
2455         __PPU__ when targeting the Cell/B.E. PPU processor.
2456
2457 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
2458
2459         * gimple.h (gimple_call_set_chain): Accept SSA variables.
2460         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
2461         Rematerialize the static chain, if any.
2462         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
2463         static chain.
2464
2465 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
2466
2467         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
2468         (new_loc_descr): Likewise.
2469         (add_loc_descr): Likewise.
2470         (size_of_loc_descr): Likewise.
2471         (size_of_locs): Likewise.
2472         (output_loc_operands): Likewise.
2473         (output_loc_sequence): Likewise.
2474         (new_reg_loc_descr): New.
2475         (build_cfa_loc): Use it.
2476         (build_cfa_aligned_loc): Likewise.
2477         (one_reg_loc_descriptor): Likewise.
2478         (based_loc_descr): Likewise.
2479
2480 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2481
2482         PR 30551
2483         * doc/invoke.texi (Wmain): Update.
2484         * c-decl.c (start_decl): warn_main is only 0 or 1.
2485         (start_function): Likewise. Fix formatting.
2486         (finish_function): Delete redundant warning.
2487         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
2488         * c-opts (c_common_handle_option): -Wall only has effect if
2489         warn_main is uninitialized. OPT_Wmain is automatically
2490         handled. -pedantic also enables Wmain.
2491         (c_common_post_options): Handle all logic for Wmain here.
2492         * c-common.c (warn_main): Delete.
2493         (check_main_parameter_types): Make pedwarns conditional on
2494         OPT_Wmain.
2495         * c-common.h (warn_main): Delete.
2496
2497 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
2498
2499         PR middle-end/36701
2500         * expr.c (emit_group_store): Allocate stack temp with the
2501         largest alignment when copying from register to stack.
2502
2503 2008-08-13  Richard Guenther  <rguenther@suse.de>
2504
2505         * tree.h (maybe_fold_offset_to_address): Declare.
2506         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
2507         (ccp_fold): Handle pointer conversions the same as fold_stmt.
2508         Likewise for POINTER_PLUS_EXPR.
2509         (maybe_fold_offset_to_reference): Enable disabled code.
2510         (maybe_fold_offset_to_address): New function.
2511         (fold_stmt_r): Use it.
2512         (fold_gimple_assign): Likewise.
2513         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
2514         (gimplify_expr): Likewise.
2515
2516 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2517
2518         * toplev.h (pedwarn_at): Fix declaration.
2519         
2520 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
2521
2522         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
2523         LINK_SPEC): Use %R in -Y P argument.
2524
2525 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2526
2527         PR c/15236
2528         * diagnostic.c (pedwarn_at): New.
2529         * toplev.h (pedwarn_at): Declare.
2530         * c-tree.h (build_enumerator): Update declaration.
2531         * c-decl.c (finish_enum): Update comment.
2532         (build_enumerator): Take a location parameter. Give a pedwarn but do
2533         not perform any conversion.
2534         * c-parser.c (c_parser_enum_specifier): Set correct location for
2535         enumerator.
2536
2537 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2538
2539         PR 35635
2540         * c-common.c (conversion_warning): Use a switch. Ignore boolean
2541         expressions except for conversions to signed:1 bitfields. Handle
2542         COND_EXPR with constant operands.
2543         
2544 2008-08-13  Richard Guenther  <rguenther@suse.de>
2545
2546         PR tree-optimization/15255
2547         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
2548         (struct oecount_s): New struct and VEC types.
2549         (cvec): New global.
2550         (oecount_hash): New function.
2551         (oecount_eq): Likewise.
2552         (oecount_cmp): Likewise.
2553         (zero_one_operation): New function.
2554         (build_and_add_sum): Likewise.
2555         (undistribute_ops_list): Perform un-distribution of multiplication
2556         and division on the chain of summands.
2557         (should_break_up_subtract): Also break up subtracts for factors.
2558         (reassociate_bb): Delete dead visited statements.
2559         Call undistribute_ops_list.  Re-sort and optimize if it did something.
2560         * passes.c (init_optimization_passes): Move DSE before
2561         reassociation.
2562         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
2563         PHI nodes.
2564
2565 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
2566
2567         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
2568
2569         * doc/invoke.texi: Revert unintended checkin.
2570
2571 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
2572
2573         PR libgomp/26165
2574         * gcc.c (include_spec_function): Tweak call to find_a_file.
2575
2576 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
2577
2578         PR middle-end/37014
2579         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
2580         and TRUTH_ORIF_EXPR.
2581         * dojump.c (do_jump): Likewise.
2582
2583         PR tree-optimization/37084
2584         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
2585         if id->regimplify, don't assume stmt is a cast assignment.
2586
2587 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
2588
2589         * final.c (final_scan_insn): Use app_enable/app_disable functions.
2590
2591 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2592
2593         PR bootstrap/37097
2594         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
2595         by last change.
2596
2597 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2598
2599         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
2600         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
2601
2602         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
2603         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
2604         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
2605         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
2606         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
2607
2608         * doc/tm.texi (Storage Layout): Remove documentation for
2609         TARGET_FLOAT_FORMAT.
2610
2611         * simplify-rtx.c (simplify_binary_operation_1): Replace
2612         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
2613
2614 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2615
2616         * real.h (struct real_format): New member has_sign_dependent_rounding.
2617         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
2618         spu_single_format, ieee_double_format, mips_double_format,
2619         motorola_double_format, ieee_extended_motorola_format,
2620         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
2621         ieee_extended_intel_96_round_53_format, ibm_extended_format,
2622         mips_extended_format, ieee_quad_format, mips_quad_format,
2623         vax_f_format, vax_d_format, vax_g_format): Initialize it.
2624         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
2625
2626         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
2627         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
2628         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
2629         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
2630         (ROUND_TOWARDS_ZERO): Likewise.
2631
2632         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
2633         (FLOAT_MODE_FORMAT): New macro.
2634         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
2635         (MODE_COMPOSITE_P): ... this new macro.
2636         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
2637         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
2638         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
2639
2640         * flags.h: Include "real.h".
2641
2642         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
2643         REAL_MODE_FORMAT_COMPOSITE_P.
2644         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
2645
2646         * doc/tm.texi (Storage Layout): Remove documentation of
2647         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
2648         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
2649         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
2650         they only apply to libgcc2.a.
2651
2652 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2653
2654         * config/spu/float_disf.c: New file.
2655         * config/spu/float_unsdisf.c: New file.
2656         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
2657         (LIB2FUNCS_EXCLUDE): Define.
2658
2659 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2660             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2661
2662         * real.h (struct real_format): New member round_towards_zero.
2663         * real.c (round_for_format): Respect fmt->round_towards_zero.
2664         (ieee_single_format, mips_single_format, motorola_single_format,
2665         spu_single_format, ieee_double_format, mips_double_format,
2666         motorola_double_format, ieee_extended_motorola_format,
2667         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
2668         ieee_extended_intel_96_round_53_format, ibm_extended_format,
2669         mips_extended_format, ieee_quad_format, mips_quad_format,
2670         vax_f_format, vax_d_format, vax_g_format): Initialize it.
2671         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
2672
2673         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
2674         real_format to choose rounding mode when calling MPFR functions.
2675         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
2676         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
2677
2678         * real.h (real_to_decimal_for_mode): Add prototype.
2679         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
2680         Respect target rounding mode when generating decimal representation.
2681         (real_to_decimal): New stub for backwards compatibility.
2682         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
2683         real_to_decimal_for_mode instead of real_to_decimal.
2684
2685         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
2686
2687 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2688             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2689
2690         * real.c (spu_single_format): New variable.
2691         * real.h (spu_single_format): Declare.
2692
2693         * config/spu/spu.c (spu_override_options): Install SFmode format.
2694         (spu_split_immediate): Use integer mode to operate on pieces of
2695         floating-point values in all cases.
2696
2697         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
2698         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
2699         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
2700
2701 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2702
2703         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
2704
2705 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2706
2707         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
2708
2709 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
2710
2711         PR c++/36688
2712         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
2713         on the VAR_DECL instead of TYPE_READONLY on its type.
2714
2715 2008-08-12  Ira Rosen  <irar@il.ibm.com>
2716
2717         * tree-vectorizer.c: Depend on langhooks.h.
2718         (supportable_widening_operation): Add two arguments. Support double
2719         type conversions.
2720         (supportable_narrowing_operation): Likewise.
2721         * tree-vectorizer.h (supportable_widening_operation): Add two 
2722         arguments.
2723         (supportable_narrowing_operation): Likewise.
2724         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
2725         supportable_widening_operation with correct arguments.
2726         * tree-vect-transform.c (vectorizable_conversion): Likewise.
2727         (vectorizable_type_demotion): Support double type conversions.
2728         (vectorizable_type_promotion): Likewise.
2729         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
2730
2731 2008-08-11  Michael Matz  <matz@suse.de>
2732
2733         * i386/i386.c (override_options): Move initialisation from
2734         flag_schedule_insns_after_reload to here from ...
2735         (optimization_options): ... here.
2736
2737 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
2738
2739         PR rtl-optimization/36998
2740         * dwarf2out.c (compute_barrier_args_size_1,
2741         compute_barrier_args_size): Temporarily remove assertions.
2742
2743 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2744
2745         PR middle-end/20644
2746         * tree-ssa.c (struct walk_data): Add new flag
2747         warn_possibly_uninitialized.
2748         (warn_uninitialized_var): Use it.
2749         (warn_uninitialized_vars): New.
2750         (execute_early_warn_uninitialized): Call it.
2751         (execute_late_warn_uninitialized): Likewise.
2752
2753 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2754
2755         PR middle-end/36238
2756         * reload1.c (gen_reload): Guard calls to get_secondary_mem
2757         for memory subregs.
2758
2759 2008-08-09  Jan Hubicka  <jh@suse.cz>
2760
2761         PR target/37055
2762         * optabs.c (maybe_emit_unop_insn): Remove produced code if
2763         expansion failed.
2764         (expand_fix): Be prepared for expansion to fail.
2765         (expand_sfix_optab): Remove instructions if expansion failed.
2766
2767 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
2768
2769         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
2770         avr31 architecture.
2771         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
2772         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2773
2774 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2775
2776         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
2777         mips/t-libgcc-mips16 to tmake_file.
2778         * config/mips/mips-protos.h (mips_call_type): New enum.
2779         (mips_pic_base_register, mips_got_load): Declare.
2780         (mips_restore_gp): Take an rtx argument.
2781         (mips_use_pic_fn_addr_reg_p): Declare.
2782         (mips_expand_call): Replace the sibcall_p argument with
2783         a mips_call_type argument.  Add a lazy_p parameter.
2784         (mips_split_call): Declare.
2785         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
2786         (MIPS16_PIC_TEMP): Likewise.
2787         (reg_class): Delete M16_NA_REGS.
2788         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
2789         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
2790         (mips_split_hi_p): Declare.
2791         * config/mips/mips.c (mips_split_hi_p): New array.
2792         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
2793         (mips_got_symbol_type_p): New function.
2794         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
2795         (mips16_stub_function_p): New function.
2796         (mips16_local_function_p): Likewise.
2797         (mips_use_pic_fn_addr_reg_p): Likewise.
2798         (mips_cannot_force_const_mem): Return false for HIGHs.
2799         Extend CONST_INT and symbolic handling to MIPS16, using
2800         mips_symbol_insns to check that the base symbol type is a
2801         legitimate constant.  Reject GOT-based constants if
2802         TARGET_MIPS16_PCREL_LOADS.
2803         (mips_const_insns): Check targetm.cannot_force_const_mem when
2804         decomposing a symbolic base and a large offset.
2805         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
2806         When calling a function that needs $25 from MIPS16 code,
2807         move the target address into $25 separately and add a USE
2808         to the call insn.
2809         (mips16_gp_pseudo_reg): Insert the initializer immediately
2810         before the first real insn.
2811         (mips_pic_base_register, mips_got_load): New functions.
2812         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
2813         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
2814         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
2815         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
2816         (mips_call_tls_get_addr): Update the call to mips_expand_call,
2817         also passing NULL_RTX rather than const0_rtx as the aux argument.
2818         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
2819         instead of TARGET_EXPLICIT_RELOCS.
2820         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
2821         (mips_load_call_address): Replace the sibcall_p argument with
2822         a mips_call_type argument.  Use mips_got_load.
2823         (mips16_local_alias): New structure.
2824         (mips16_local_aliases): New variable.
2825         (mips16_local_aliases_hash): New function.
2826         (mips16_local_aliases_eq): Likewise.
2827         (mips16_local_alias): Likewise.
2828         (mips16_stub_function): Likewise.
2829         (mips16_build_function_stub): Create a local alias for the target
2830         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
2831         .cpload directive and an R_MIPS_NONE relocation for the target
2832         function, then load the alias rather than the function itself.
2833         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
2834         (mips16_copy_fpr_return_value): Use mips16_stub_function and
2835         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
2836         (mips16_build_call_stub): Replace the FN parameter with an
2837         FN_PTR parameter.  Force the address into a register if it
2838         isn't a call_insn_operand; don't rely on the caller to do this.
2839         If a call to a locally-defined and locally-binding MIPS16
2840         function must be made indirectly, redirect the call to the
2841         function's local alias.  Use mips16_stub_function_p,
2842         mips16_stub_function, mips_expand_call and use_reg.
2843         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
2844         Use explicit %hi and %lo accesses where possible.
2845         Use MIPS_CALL to generate the correct code form of a
2846         jal instruction.  Add clobbers of $18 instead of uses.
2847         Update the call to mips_emit_call_insn.
2848         (mips_expand_call): Replace the SIBCALL_P argument with a
2849         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
2850         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
2851         allowing it to modify the call address.  Update the calls to
2852         mips_load_call_address and mips_emit_call_insn.
2853         (mips_split_call): New function.
2854         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
2855         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
2856         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
2857         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
2858         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
2859         if TARGET_MIPS16.
2860         (mips_cprestore_slot): New function.
2861         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
2862         and use mips_cprestore_slot.
2863         (mips_output_function_prologue): Handle TARGET_MIPS16 for
2864         LOADGP_OLDABI.
2865         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
2866         then use a copygp_mips16 instruction to set up $28.
2867         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
2868         (mips16_lay_out_constants): Call split_all_insns_noflow.
2869         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
2870         false if TARGET_MIPS16.
2871         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
2872         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
2873         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
2874         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
2875         MIPS16 code.  Allow MIPS16 o32 PIC.
2876         (mips_override_options): Allow MIPS16 o32 PIC.
2877         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
2878         after reload if TARGET_USE_GOT.
2879         (UNSPEC_COPYGP): New constant.
2880         (length): Use a default length of 8 for MIPS16 GOT loads.
2881         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
2882         (*got_page<mode>): Check mips_split_hi_p.
2883         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
2884         (unspec_got<mode>, unspec_call<mode>): New expanders.
2885         (load_got<mode>, load_call<mode>): Remove the length attributes.
2886         Use a got attribute instead of a type attribute.
2887         (copygp_mips16): New insn.
2888         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
2889         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
2890         (sibcall, sibcall_value, call, call_value): Update the calls
2891         to mips_expand_call.
2892         (call_internal, call_value_internal): Use mips_split_call.
2893         (call_value_multiple_internal): Likewise.
2894         (call_split): Move after call_internal (the insn it is split from).
2895         (call_internal_direct, call_value_internal_direct): Turn into
2896         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
2897         (call_direct_split, call_value_direct_split): New patterns.
2898         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
2899         and use M16_REGS instead of M16_NA_REGS.
2900         * config/mips/predicates.md (const_call_insn_operand): Replace
2901         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
2902         mips_use_pic_fn_addr_reg_p check.
2903         (move_operand): Reject HIGHs if mips_split_hi_p.
2904         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
2905         (__mips16_floatunsisf): Inline __mips16_floatsisf.
2906         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
2907         * config/mips/libgcc-mips16.ver: New file.
2908         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
2909         $(srcdir)/config/mips/libgcc-mips16.ver.
2910
2911 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2912
2913         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
2914         (mips_unspec_address, mips_unspec_offset_high): Likewise.
2915         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
2916         (mips16_cfun_returns_in_fpr_p): Likewise.
2917
2918 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2919
2920         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
2921         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
2922         rather than 4 to PC.
2923
2924 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2925
2926         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
2927         (FUNCTION_PROFILER): Save the static chain pointer into $2
2928         beforehand and restore it aftewards.
2929         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
2930         address directly into $25 and call the function through $25;
2931         do not clobber $3.  Pad the DImode version to cover the space
2932         left by the deleted $25 <- $3 move.
2933         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
2934         the removal of the $25 <- $3 move.
2935         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
2936         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
2937
2938 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2939             Daniel Jacobowitz  <dan@codesourcery.com>
2940
2941         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
2942         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
2943         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
2944         * config/mips/mips.c (mips_start_function_definition): New function.
2945         (mips_end_function_definition): Likewise.
2946         (mips_output_function_prologue): Use mips_start_function_definition.
2947         (mips_output_function_epilogue): Use mips_end_function_definition.
2948         (build_mips16_function_stub): Use mips_start_function_definition
2949         and mips_end_function_definition.
2950         (build_mips16_call_stub): Likewise.
2951
2952 2008-08-09  Richard Guenther  <rguenther@suse.de>
2953
2954         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
2955         * gimple.h (gimple_call_fn): Adjust comment.
2956         (gimple_call_set_fndecl): New function.
2957         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
2958         longer having bare FUNCTION_DECL operand.
2959         (gimple_call_return_type): Likewise.
2960         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
2961
2962         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
2963         (gimple_mod_pow2): Likewise.
2964         (gimple_mod_subtract): Likewise.
2965         (gimple_ic): Likewise.
2966         (gimple_stringop_fixed_value): Likewise.
2967         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
2968         longer having bare FUNCTION_DECL operand.
2969         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
2970         * omp-low.c (optimize_omp_library_calls): Likewise.
2971         * cgraphunit.c (update_call_expr): Likewise.
2972         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
2973         (execute_convert_to_rsqrt): Likewise.
2974         * cfgexpand.c (gimple_to_tree): Simplify.
2975         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
2976         bare FUNCTION_DECL operand.
2977         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
2978         (convert_gimple_call): Use gimple_call_fndecl.
2979         * c-common.c (c_warn_unused_result): Likewise.
2980
2981 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2982
2983         PR c/17880
2984         * c-typeck.c (digest_init): Call verify_sequence_points from here.
2985         (c_finish_return): Likewise.
2986         (c_start_case): Likewise.
2987         * c-common.c (warn_for_collisions_1): Use explicit location in
2988         warning.
2989         * c-parser.c (c_parser_condition): New. Call
2990         verify_sequence_points.
2991         (c_parser_paren_condition): Call c_parser_condition.
2992         (c_parser_for_statement): Call c_parser_condition.
2993
2994 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2995
2996         PR 36901
2997         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.  
2998         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
2999         Moved from diagnostic.h
3000         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
3001         DK_PERMERROR.
3002         (emit_diagnostic): New.
3003         (warning0, pedwarn0): Delete.
3004         (warning, warning_at, pedwarn, permerror): Return bool.  
3005         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
3006         Moved to diagnostic.c.
3007         (struct diagnostic_context): Use correct type for
3008         classify_diagnostic.
3009         (diagnostic_report_diagnostic): Update declaration.
3010         (emit_diagnostic): Declare.
3011         * errors.c (warning): Return bool.  
3012         * errors.h (warning): Update declaration.
3013         * toplev.h (warning0, pedwarn0): Delete.
3014         (warning, warning_at, pedwarn, permerror): Return bool.
3015         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
3016         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
3017         inform. Update all calls.
3018         (diagnose_mismatched_decls): Check return value of warning/pedwarn
3019         before giving informative note.
3020         (implicit_decl_warning): Likewise.  
3021         * c-typeck.c (build_function_call): Likewise.  
3022         * tree-sssa.c (warn_uninit): Likewise.  
3023         * builtins.c (gimplify_va_arg_expr): Likewise.
3024
3025 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3026
3027         PR 7651
3028         * doc/invoke.texi (-Wextra): Move warning from here...
3029         (-Wuninitialized): ... to here.
3030         
3031 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3032
3033         PR 28875
3034         * flags.h (set_Wunused): Delete
3035         * toplev.c (process_options): Handle Wunused flags here.
3036         * opts.c (maybe_warn_unused_parameter): Delete.
3037         (common_handle_option): Replace set_Wunused by warn_unused.
3038         (set_Wextra): Do not handle Wunused-parameter here.
3039         (set_Wunused): Delete.
3040         * c-opts.c (c_common_handle_option): Replace set_Wunused by
3041         warn_unused.
3042         * common.opt (Wunused): Add Var and Init.
3043         (Wunused-function): Likewise.
3044         (Wunused-label): Likewise.
3045         (Wunused-parameter): Likewise.
3046         (Wunused-value): Likewise.
3047         (Wunused-variable): Likewise.
3048         
3049 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
3050
3051         * doc/invoke.texi: Add cpu_type power7.
3052         * config.in (HAVE_AS_VSX): New.
3053         * config.gcc: Add cpu_type power7.
3054         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
3055         VSX instructions.
3056         * configure: Regenerate.
3057         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
3058         power5.
3059         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
3060         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
3061         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
3062
3063 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
3064
3065         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
3066         type to vectorize.builtin_conversion.
3067         (vectorizable_conversion): Likewise.
3068         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
3069         integral type as input.
3070         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
3071         FIX_TRUNC_EXPR.
3072         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
3073         and ALTIVEC_BUILTIN_VCTSXS.
3074         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
3075         formatting. 
3076
3077 2008-08-08  Richard Guenther  <rguenther@suse.de>
3078
3079         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
3080         (surely_varying_stmt_p): Calls are varying only if they are
3081         non-builtin and not indirect or have no result.
3082         (ccp_fold): Re-instantiate code before the tuples merge.
3083
3084 2008-08-08  Richard Guenther  <rguenther@suse.de>
3085
3086         PR tree-optimization/37056
3087         * gimple.h (gimple_assign_rhs_class): New helper function.
3088         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
3089         unary operations properly.
3090
3091 2008-08-07  Jan Hubicka  <jh@suse.cz>
3092
3093         * i386.h (ix86_size_cost): Declare.
3094         (ix86_cur_cost): New function macro.
3095         * i386.md (peepholes expanding size and splitters): Predicate by
3096         optimize_insn_for_speed_p.
3097         (peepholes reduce size and splitters): Predicate by
3098         optimize_insn_for_size_p.
3099         * i386.c (ix86_size_cost): Rename from ...
3100         (size_cost): This one.
3101         (override_options): Update.
3102         (decide_alg): Likewise.
3103         (ix86_expand_clear): Use RTL profile.
3104         (ix86_pad_returns): Use RTL profile.
3105
3106 2008-08-07  Jan Hubicka  <jh@suse.cz>
3107
3108         * recog.c (split_all_insns): Set RTL profile
3109         (peephole2_optimize): Likewise.
3110         * function.c (thread_prologue_and_epilogue_insns): Likewise.
3111         * combine.c (combine_instructions): Likewise.
3112
3113 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3114
3115         * c-common.c (c_common_reswords): Also warn about keyword "bool".
3116
3117 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
3118         
3119         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
3120         value in a6 after the set_frame_ptr insn.
3121         
3122 2008-08-07  Richard Henderson  <rth@redhat.com>
3123
3124         PR debug/37033
3125         * gcc.c (cpp_options): Pass along -g*.
3126
3127 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
3128
3129         * config/arm/arm.c (output_move_neon): Update comment describing
3130         big-endian vector layout.
3131         (arm_assemble_integer): Do not handle big-endian NEON vectors
3132         specially.
3133         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
3134         neon_vget_lane<mode>_sext_internal,
3135         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
3136         element indices for big-endian.
3137
3138 2008-08-07  Richard Henderson  <rth@redhat.com>
3139
3140         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
3141         * configure, config.in: Rebuild.
3142         * debug.h (dwarf2out_do_cfi_asm): Declare.
3143         * c-cppbuiltin.c (c_cpp_builtins): Use it.
3144         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
3145         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
3146         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
3147
3148 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
3149
3150         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
3151         movv2si_internal): Combine into mov<mode>_internal.
3152         (movv2si_internal_2): Remove.
3153
3154 2008-08-07  Jan Hubicka  <jh@suse.cz>
3155
3156         PR target/37048
3157         * i386.md (single stringop patterns): Enable unconditionally. 
3158
3159 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
3160
3161         PR target/36992
3162         * config/i386/emmintrin.h (_mm_move_epi64): Use
3163         __builtin_ia32_movq128.
3164
3165         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
3166         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
3167
3168         * config/i386/sse.md (sse2_movq128): New.
3169
3170         * doc/extend.texi: Document __builtin_ia32_movq128.
3171
3172 2008-08-07  Richard Guenther  <rguenther@suse.de>
3173
3174         PR middle-end/37042
3175         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
3176         pointers can access anything.
3177
3178 2008-08-06  Jan Hubicka  <jh@suse.cz>
3179
3180         * optabs.c (emit_unop_insn): Break out to ...
3181         (maybe_emit_unop_insn): ... this one.
3182         (expand_sfix_optab): Use maybe variant.
3183         * optabs.h (maybe_emit_unop_insn): Declare.
3184
3185         * i386.md (mov0 patterns): Enable by default.
3186         (FP conversion expanders): Disable expansion of code expanding
3187         sequences when instruction should be optimized for size.
3188         (single strinop patterns): Enable when optimizing for size.
3189         (string expanders): Disable expanding of code expanding sequences
3190         when optimizning instruction for size.
3191         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
3192         per BB basis.
3193         (ix86_fp_comparison_sahf_cost): Likewise.
3194         (ix86_expand_branch): Likewise.
3195         (ix86_expand_ashl_const): Likewise.
3196         (ix86_split_ashl): Likewise.
3197         (ix86_expand_strlen): Likewise.
3198         (ix86_emit_fp_unordered_jump): Likewie.
3199
3200 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3201
3202         * c-common.c: Fix typo.
3203         (c_common_reswords): Activate more C++ keyword warnings.
3204
3205         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
3206
3207 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3208
3209         PR 26785
3210         * diagnostic.c (permerror_at): New.
3211         * toplev.h (permerror_at): Declare.
3212         
3213 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
3214             Ira Rosen  <irar@il.ibm.com>
3215
3216         * tree-vect-transform.c (vect_model_simple_cost): Return
3217         immediately if stmt is pure SLP.
3218         (vect_model_store_cost): Ditto.
3219         (vect_model_load_cost): Ditto.
3220         (vectorizable_store): Remove PURE_SLP check before call
3221         to vect_model_store_cost.
3222         (vect_model_store_cost): When checking whether stmt describe
3223         strided access, add a check that it is not slp_node.
3224
3225 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3226
3227         PR 8715
3228         * c-common.c (warn_for_sign_compare): New. Handle separately the
3229         case that 'constant' is zero.
3230         * c-typeck.c (build_binary_op): Move code to c-common.c
3231         
3232 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3233
3234         * config/alpha/alpha.c (alpha_preferred_reload_class,
3235         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
3236         alpha_output_mi_thunk_osf): Avoid C++ keywords.
3237         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
3238         * config/arm/arm.md: Likewise.
3239         * config/avr/avr-protos.h (preferred_reload_class,
3240         test_hard_reg_class, avr_simplify_comparison_p,
3241         out_shift_with_cnt, class_max_nregs): Likewise.
3242         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
3243         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
3244         preferred_reload_class, test_hard_reg_class): Likewise.
3245         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
3246         bfin_memory_move_cost, bfin_secondary_reload,
3247         bfin_output_mi_thunk): Likewise.
3248         * config/crx/crx.c (crx_secondary_reload_class,
3249         crx_memory_move_cost): Likewise.
3250         * config/frv/frv-protos.h (frv_secondary_reload_class,
3251         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
3252         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
3253         frv_secondary_reload_class, frv_class_likely_spilled_p,
3254         frv_class_max_nregs): Likewise.
3255         * config/h8300/h8300.c (h8300_classify_operand,
3256         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
3257         Likewise.
3258         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
3259         * config/ia64/ia64.c (ia64_preferred_reload_class,
3260         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
3261         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
3262         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
3263         Likewise.
3264         * config/m68hc11/m68hc11.c (preferred_reload_class,
3265         m68hc11_memory_move_cost): Likewise.
3266         * config/mcore/mcore.c (mcore_secondary_reload_class,
3267         mcore_reload_class): Likewise.
3268         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
3269         mips_class_max_nregs, mips_cannot_change_mode_class,
3270         mips_preferred_reload_class, mips_secondary_reload_class,
3271         mips_output_mi_thunk): Likewise.
3272         * config/mmix/mmix.c (mmix_preferred_reload_class,
3273         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
3274         Likewise.
3275         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
3276         Likewise.
3277         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
3278         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
3279         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
3280         * config/rs6000/rs6000.c (paired_expand_vector_init,
3281         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
3282         compare_section_name, rs6000_memory_move_cost): Likewise.
3283         * config/s390/s390.c (s390_emit_compare_and_swap,
3284         s390_preferred_reload_class, s390_secondary_reload,
3285         legitimize_pic_address, legitimize_tls_address,
3286         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
3287         s390_class_max_nregs): Likewise.
3288         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
3289         * config/s390/s390.md: Likewise.
3290         * config/score/score-protos.h (score_secondary_reload_class,
3291         score_preferred_reload_class): Likewise.
3292         * config/score/score.c (score_preferred_reload_class,
3293         score_secondary_reload_class): Likewise.
3294         * config/score/score3.c (score3_output_mi_thunk,
3295         score3_preferred_reload_class, score3_secondary_reload_class,
3296         score3_hard_regno_mode_ok): Likewise.
3297         * config/score/score3.h (score3_preferred_reload_class,
3298         score3_secondary_reload_class): Likewise.
3299         * config/score/score7.c (score7_output_mi_thunk,
3300         score7_preferred_reload_class, score7_secondary_reload_class,
3301         score7_hard_regno_mode_ok): Likewise.
3302         * config/score/score7.h (score7_preferred_reload_class,
3303         score7_secondary_reload_class): Likewise.
3304         * config/sh/sh.c (prepare_move_operands, output_far_jump,
3305         output_branchy_insn, add_constant, gen_block_redirect,
3306         sh_insn_length_adjustment, sh_cannot_change_mode_class,
3307         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
3308         Likewise.
3309         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
3310         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
3311         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
3312         xstormy16_preferred_reload_class): Likewise.
3313         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
3314         xtensa_expand_atomic, override_options,
3315         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
3316         Likewise.
3317         * reorg.c (try_merge_delay_insns): Likewise.
3318         * tree.c (merge_dllimport_decl_attributes): Likewise.
3319
3320         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
3321
3322 2008-08-06  Michael Matz  <matz@suse.de>
3323
3324         * Makefile.in (write_entries_to_file): Quote words.
3325         * gengtype.c: (read_input_line): Skip over leading white-space.
3326
3327 2008-08-06  Marc Gauthier  <marc@tensilica.com>
3328
3329         * config.gcc: Match more processor names for Xtensa.
3330         * configure.ac: Likewise.
3331         * doc/install.texi (Specific): Likewise.
3332         * configure: Regenerate.
3333
3334 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3335
3336         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
3337         * calls.c (avoid_likely_spilled_reg): Likewise.
3338         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
3339         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
3340         * config/i386/i386.c (ix86_expand_special_args_builtin,
3341         ix86_secondary_reload): Likewise.
3342         * except.c (struct eh_region, gen_eh_region_catch,
3343         remove_unreachable_regions, duplicate_eh_regions,
3344         assign_filter_values, build_post_landing_pads,
3345         sjlj_find_directly_reachable_regions, remove_eh_handler,
3346         reachable_next_level, foreach_reachable_handler,
3347         can_throw_internal_1, can_throw_external_1,
3348         collect_one_action_chain): Likewise.
3349         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
3350         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
3351         * function.c (update_temp_slot_address, instantiate_new_reg,
3352         instantiate_virtual_regs_in_rtx,
3353         instantiate_virtual_regs_in_insn): Likewise.
3354         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
3355         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
3356         gimplify_cleanup_point_expr): Likewise.
3357         * ipa-cp.c (ipcp_lattice_changed): Likewise.
3358         * passes.c (next_pass_1): Likewise.
3359         * print-tree.c (print_node_brief, print_node): Likewise.
3360         * profile.c (branch_prob): Likewise.
3361         * tree-dump.c (dump_register): Likewise.
3362         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
3363         Likewise.
3364         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
3365         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
3366         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
3367         copy_arguments_for_versioning, copy_static_chain): Likewise.
3368         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
3369         add_new_name_mapping, register_new_name_mapping): Likewise.
3370         * tree-mudflap.c (mf_xform_derefs): Likewise.
3371         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
3372         get_init_expr, combine_chains): Likewise.
3373         * tree-pretty-print.c (dump_generic_node): Likewise.
3374         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
3375         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
3376         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
3377         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
3378
3379 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3380
3381         PR middle-end/37010
3382         * calls.c (expand_call): Use the biggest preferred stack
3383         boundary.
3384
3385 2008-08-06  Michael Matz  <matz@suse.de>
3386
3387         PR target/36613
3388         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
3389         for reused reload, instead of overwriting them.
3390
3391 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3392
3393         PR middle-end/37009
3394         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
3395         for incoming stack boundary.
3396
3397         * function.c (assign_parm_find_entry_rtl): Update
3398         parm_stack_boundary.
3399
3400         * function.h (rtl_data): Add parm_stack_boundary.
3401
3402         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
3403         parm_stack_boundary for incoming stack boundary.
3404
3405 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
3406
3407         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
3408         for unrepresentable subregs or treat them as equal to other regs
3409         or subregs with the same register number.
3410
3411 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
3412
3413         PR middle-end/35432
3414         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
3415         if want_value.
3416
3417 2008-08-06  Jan Hubicka  <jh@suse.cz>
3418
3419         * predict.c (maybe_hot_frequency_p): When profile is absent, all
3420         frequencies might be hot.
3421
3422 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
3423
3424         * reload.c (find_reloads): Force constants into literal pool
3425         also if they are wrapped in a SUBREG.
3426
3427 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
3428
3429         PR target/35659
3430         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
3431         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
3432         Don't allow predicated instructions for data speculation.
3433         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
3434         declaration.
3435
3436 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
3437
3438         * haifa-sched.c (extend_global): Split to extend_global_data and
3439         extend_region_data.  Update all uses.
3440         (extend_all): Rename to extend_block_data.
3441
3442 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
3443
3444         * sched-rgn.c (new_ready): Check if instruction can be
3445         speculatively scheduled before attempting speculation.
3446         (debug_rgn_dependencies): Remove wrongful assert.
3447
3448 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
3449
3450         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
3451         
3452 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
3453         
3454         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
3455         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
3456         va_size, and type_size.
3457         
3458 2008-08-04  Jason Merrill  <jason@redhat.com>
3459
3460         PR c++/37016
3461         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
3462         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
3463
3464 2008-08-05  Richard Henderson  <rth@redhat.com>
3465
3466         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
3467         * configure: Rebuild.
3468
3469 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3470
3471         PR tree-opt/37024
3472         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
3473         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
3474         is a conversion.
3475
3476 2008-08-05  Richard Henderson  <rth@redhat.com>
3477
3478         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
3479         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
3480         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
3481         * common.opt (fdwarf2-cfi-asm): New.
3482         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
3483         * config.in, configure: Rebuild.
3484         * dwarf2asm.c (dw2_asm_output_data_raw): New.
3485         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
3486         (dw2_force_const_mem): Externalize.
3487         * dwarf2asm.h: Update.
3488         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
3489         generate a real label.
3490         (output_cfi_directive): New.
3491         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
3492         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
3493         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
3494         and .cfi_lsda.
3495         (dwarf2out_end_epilogue): Emit .cfi_endproc.
3496         (output_loc_operands_raw, output_loc_sequence_raw): New.
3497         (output_cfa_loc_raw): New.
3498         
3499 2008-08-05  Paul Brook  <paul@codesourcery.com>
3500
3501         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
3502         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
3503         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
3504         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
3505         * config/arm/arm.h (TARGET_VFPD32): Define.
3506         (TARGET_VFP3): Use TARGET_VFPD32.
3507         (fputype): Add FPUTYPE_VFP3D16.
3508         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
3509         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
3510         * config/arm/arm-cores.def: Add cortex-r4f.
3511         * config/arm/arm-tune.md: Regenerate.
3512
3513 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3514
3515         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
3516         Reword some comments throughout the file.
3517
3518         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
3519         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
3520         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
3521         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
3522
3523         (MFC_START_ENABLE): Remove PPU-only define.
3524         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
3525         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
3526
3527         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
3528         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
3529         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
3530         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
3531         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
3532         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
3533         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
3534
3535         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
3536         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
3537         (mfc_sdcrt, mfc_sdcrtst): Likewise.
3538         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
3539
3540         (spu_read_machine_status): Fix typo.
3541
3542 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3543
3544         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
3545         SUBREG of multi-word hard register.
3546         * config/spu/spu.c (valid_subreg): Likewise.
3547         (adjust_operand): Handle SUBREGs of multi-word hard registers.
3548
3549 2008-08-04  Richard Guenther  <rguenther@suse.de>
3550
3551         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
3552         the candidate with the stripped base if that base is different
3553         from the original base even for offset zero.
3554
3555 2008-08-04  Richard Guenther  <rguenther@suse.de>
3556
3557         PR middle-end/36691
3558         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
3559         check for no_overflow.
3560
3561 2008-08-04  Richard Guenther  <rguenther@suse.de>
3562
3563         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
3564
3565 2008-08-04  Paul Brook  <paul@codesourcery.com>
3566
3567         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
3568         (arm_order_regs_for_local_alloc): New function.
3569         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
3570         prototype.
3571         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
3572
3573 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
3574
3575         PR target/37012
3576         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
3577         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
3578         (ix86_expand_epilogue): Likewise.
3579
3580 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
3581
3582         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
3583         in comments.
3584
3585 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
3586
3587         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
3588         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
3589         (*movv2sf_internal_rex64): Ditto.
3590
3591 2008-08-03  Jan Hubicka  <jh@suse.cz>
3592
3593         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
3594         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
3595         * expmed.c (expand_smod_pow2): Likewise.
3596
3597 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
3598
3599         PR target/36992
3600         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
3601         alternative 0 of operand 1.
3602         (*vec_concatv2di_rex64_sse): Ditto.
3603         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
3604         of operand 1.
3605         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
3606         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
3607         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
3608         (*movv2sf_internal_rex64): Ditto.
3609
3610 2008-08-02  Richard Guenther  <rguenther@suse.de>
3611
3612         PR target/35252
3613         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
3614         (ssedoublesizemode): New mode attribute.
3615         (sse_shufps): Call gen_sse_shufps_v4sf.
3616         (sse_shufps_1): Macroize.
3617         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
3618         (sse2_shufpd_1): Macroize.
3619         (vec_extract_odd, vec_extract_even): New expanders.
3620         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
3621         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
3622         * i386.c (ix86_expand_vector_init_one_nonzero): Call
3623         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
3624         (ix86_expand_vector_set): Likewise.
3625         (ix86_expand_reduc_v4sf): Likewise.
3626
3627 2008-08-01  Doug Kwan  <dougkwan@google.com>
3628
3629         * matrix-reorg.c: Re-enable all code.
3630         (struct malloc_call_data): Change CALL_STMT to gimple type.
3631         (collect_data_for_malloc_call): Tuplify.
3632         (struct access_site_info): Change STMT to gimple type.
3633         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
3634         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
3635         (struct free_info): Change STMT to gimple type.
3636         (struct matrix_access_phi_node):  Change PHI to gimple type.
3637         (get_inner_of_cast_expr): Remove.
3638         (may_flatten_matrices_1): Tuplify.
3639         (may_flatten_matrices): Ditto.
3640         (mark_min_matrix_escape_level): Ditto.
3641         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
3642         (ssa_accessed_in_call_rhs): New
3643         (ssa_accessed_in_assign_rhs): New
3644         (record_access_alloc_site_info): Tuplify.
3645         (add_allocation_site): Ditto.
3646         (analyze_matrix_allocation_site): Ditto.
3647         (analyze_transpose): Ditto.
3648         (get_index_from_offset): Ditto.
3649         (update_type_size): Ditto.
3650         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
3651         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
3652         (analyze_accesses_for_phi_node): Tuplify.
3653         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
3654         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
3655         (analyze_matrix_accesses): Tuplify.
3656         (check_var_data): New call-back type for check_var_notmodified_p.
3657         (check_var_notmodified_p): Tuplify and use call-back struct to
3658         return statement found.
3659         (can_calculate_expr_before_stmt): Factor out statement related code
3660         into ...
3661         (can_calculate_stmt_before_stmt): New.
3662         (check_allocation_function): Tuplify.
3663         (find_sites_in_func): Ditto.
3664         (record_all_accesses_in_func): Ditto.
3665         (transform_access_sites): Ditto.
3666         (transform_allocation_sites): Ditto.
3667         (matrix_reorg): Re-enable.
3668         (gate_matrix_reorg): Re-enable.
3669
3670 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
3671
3672         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
3673         for labels for which it hasn't been set yet.  If it has been set,
3674         stop walking insns and continue with next worklist item.
3675         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
3676         if the only BARRIER is at the very end of a function.
3677
3678 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
3679
3680         * cfgexpand.c (expand_stack_alignment): Assert that
3681         stack_realign_drap and drap_rtx must match.
3682
3683         * function.c (instantiate_new_reg): If DRAP is used to realign
3684         stack, replace virtual_incoming_args_rtx with internal arg
3685         pointer.
3686
3687 2008-08-01  Richard Guenther  <rguenther@suse.de>
3688
3689         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
3690         loop information only if we initialized it.
3691         (execute_pre): Call fini_pre with in_fre.
3692         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
3693         if we do not unroll because we hit max-completely-peeled-insns.
3694         Use our estimation for consistency, do allow shrinking.
3695
3696 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
3697
3698         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
3699         with MIN_STACK_BOUNDARY.
3700         (ix86_update_stack_boundary): Likewise.
3701         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
3702         STACK_BOUNDARY.
3703
3704         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
3705         (MIN_STACK_BOUNDARY): This.
3706
3707 2008-08-01  Richard Guenther  <rguenther@suse.de>
3708
3709         PR middle-end/36997
3710         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
3711
3712 2008-08-01  Richard Guenther  <rguenther@suse.de>
3713
3714         PR tree-optimization/36988
3715         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
3716         do not matter if that doesn't change volatile qualification.
3717
3718 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
3719
3720         * configure.ac: Do not generate libada-mk.  Do not subst
3721         host_cc_for_libada.
3722         * libada-mk.in: Remove.
3723         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
3724         * configure: Regenerate.
3725
3726 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
3727
3728         * tree-pass.h: Added comment about not dumping passes with name
3729         starting with star in struct opt_pass.
3730         * passes.c (register_dump_files_1): Don't do dump for a pass with
3731         name starting with star.
3732         * doc/passes.texi (Pass manager): Mention pass names and special
3733         meaning of star prefix to avoid dump.
3734
3735 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
3736
3737         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
3738         to MIPS64r2.
3739         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
3740         (ISA_MIPS64R2): New macro.
3741         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
3742         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
3743         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
3744         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
3745         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
3746         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
3747         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
3748         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
3749         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
3750         Move up to keep list alphabetically sorted.
3751         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
3752         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
3753         processor.
3754         * doc/invoke.texi (MIPS Options): Add -mips64r2.
3755         (-march=@var{arch}): Add mips64r2.
3756
3757 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3758
3759         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
3760
3761 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
3762
3763         * expr.c (expand_assignment): Check for complete type.
3764
3765 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3766
3767         PR debug/36977
3768         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
3769
3770         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
3771         for stack alignment.
3772
3773         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
3774
3775 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
3776
3777         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
3778         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
3779
3780 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
3781
3782         PR rtl-optimization/36419
3783         * dwarf2out.c (barrier_args_size): New variable.
3784         (compute_barrier_args_size, compute_barrier_args_size_1): New
3785         functions.
3786         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
3787         if not called yet in the current function, use barrier_args_size
3788         array to find the new args_size value.
3789         (dwarf2out_frame_debug): Free and clear barrier_args_size.
3790
3791 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3792
3793         PR debug/36980
3794         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
3795         rule 19.
3796
3797 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3798
3799         PR debug/36976
3800         * dwarf2out.c (dwarf2out_args_size_adjust): New.
3801         (dwarf2out_stack_adjust): Use it.
3802         (dwarf2out_frame_debug_expr): Likewise.
3803
3804 2008-07-31  Richard Guenther  <rguenther@suse.de>
3805
3806         PR tree-optimization/36978
3807         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
3808         the generated condition.
3809
3810 2008-07-31  Richard Guenther  <rguenther@suse.de>
3811
3812         * passes.c (init_optimization_passes): Always call
3813         pass_early_warn_uninitialized.
3814         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
3815         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
3816         * doc/passes.texi (Warn for uninitialized variables): Adjust.
3817
3818 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
3819
3820         PR c/36970
3821         * builtins.c (maybe_emit_free_warning): New function.
3822         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
3823         maybe_emit_free_warning for BUILT_IN_FREE.
3824
3825         PR debug/36278
3826         * dwarf2out.c (get_context_die): New function.
3827         (force_decl_die, force_type_die): Use it.
3828         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
3829         returns NULL, force generation of DW_TAG_typedef and put that into
3830         DW_AT_import.
3831
3832         PR preprocessor/36649
3833         * c-pch.c (c_common_read_pch): Save and restore
3834         line_table->trace_includes across PCH restore.
3835
3836 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
3837
3838         PR ada/36554
3839         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
3840
3841 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
3842
3843         PR 36974
3844         * final.c (call_from_call_insn): Handle COND_EXEC.
3845
3846 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
3847
3848         * builtins.c (std_gimplify_va_arg_expr): Replace
3849         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
3850         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
3851
3852 2008-07-30  Joey Ye  <joey.ye@intel.com>
3853             H.J. Lu  <hongjiu.lu@intel.com>
3854
3855         * builtins.c (expand_builtin_setjmp_receiver): Replace
3856         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
3857         (expand_builtin_apply_args_1): Likewise.
3858         (expand_builtin_longjmp): Need DRAP for stack alignment.
3859         (expand_builtin_apply): Likewise.
3860
3861         * caller-save.c (setup_save_areas): Call assign_stack_local_1
3862         instead of assign_stack_local to allow alignment reduction.
3863
3864         * calls.c (emit_call_1): Need DRAP for stack alignment if
3865         return pops.
3866         (expand_call): Replace virtual_incoming_args_rtx with
3867         crtl->args.internal_arg_pointer.
3868         * stmt.c (expand_nl_goto_receiver): Likewise.
3869
3870         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
3871         alignment and store to stack_alignment_estimated and
3872         max_used_stack_slot_alignment.
3873         (expand_one_var): Likewise.
3874         (expand_stack_alignment): New function.
3875         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
3876         and stack_alignment_estimated fields in rtl_data.  Call
3877         expand_stack_alignment at end.
3878
3879         * defaults.h (INCOMING_STACK_BOUNDARY): New.
3880         (MAX_STACK_ALIGNMENT): Likewise.
3881         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
3882         (SUPPORTS_STACK_ALIGNMENT): Likewise.
3883
3884         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
3885         stack alignment when generating virtual registers.
3886
3887         * function.c (assign_stack_local): Renamed to ...
3888         (assign_stack_local_1): This.  Add a parameter to indicate
3889         if it is OK to reduce alignment.
3890         (assign_stack_local): Use it.
3891         (instantiate_new_reg): Instantiate virtual incoming args rtx
3892         to vDRAP if stack realignment and DRAP is needed.
3893         (assign_parms): Collect parameter/return type alignment and
3894         contribute to stack_alignment_estimated.
3895         (locate_and_pad_parm): Likewise.
3896         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
3897         with crtl->args.internal_arg_pointer.
3898
3899         * function.h (rtl_data): Add new field drap_reg,
3900         max_used_stack_slot_alignment, stack_alignment_estimated,
3901         stack_realign_needed, need_drap, stack_realign_processed and
3902         stack_realign_finalized.
3903         (stack_realign_fp): New macro.
3904         (stack_realign_drap): Likewise.
3905
3906         * global.c (compute_regsets): Frame pointer is needed when
3907         stack is realigned.  Can eliminate frame pointer when stack is
3908         realigned and dynamic realigned argument pointer isn't used.
3909
3910         * reload1.c (update_eliminables):  Frame pointer is needed
3911         when stack is realigned.
3912         (init_elim_table): Can eliminate frame pointer when stack is
3913         realigned and dynamic realigned argument pointer isn't used.
3914
3915         * rtl.h (assign_stack_local_1): Declare new funtion.
3916
3917         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
3918         (TARGET_GET_DRAP_RTX): Likewise.
3919         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
3920         TARGET_GET_DRAP_RTX.
3921
3922         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
3923
3924         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
3925         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
3926
3927 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
3928             H.J. Lu  <hongjiu.lu@intel.com>
3929
3930         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
3931         vdrap_reg, stack_realign and drap_reg_saved.
3932         (add_cfi): Don't allow redefining CFA when DRAP is used.
3933         (reg_save): Handle stack alignment.
3934         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
3935         alignment.  Don't generate DWARF information for (set fp sp)
3936         when DRAP is used.
3937         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
3938         to INVALID_REGNUM.
3939         (int_loc_descriptor): Move prototype forward.  Also define if
3940         DWARF2_UNWIND_INFO is true.
3941         (output_cfa_loc): Handle DW_CFA_expression.
3942         (build_cfa_aligned_loc): New.
3943         (based_loc_descr): Update assert for stack realign.  For local
3944         variables, use sp+offset when stack is aligned without drap and
3945         fp+offset when stack is aligned with drap.  For arguments, use
3946         cfa+offset when drap is used to align stack.
3947
3948 2008-07-30  Joey Ye  <joey.ye@intel.com>
3949             H.J. Lu  <hongjiu.lu@intel.com>
3950
3951         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
3952         Break long line.
3953         (ix86_gen_andsp): New.
3954         (ix86_user_incoming_stack_boundary): Likewise.
3955         (ix86_default_incoming_stack_boundary): Likewise.
3956         (ix86_incoming_stack_boundary): Likewise.
3957         (ix86_can_eliminate): Likewise.
3958         (find_drap_reg): Likewise.
3959         (ix86_update_stack_boundary): Likewise.
3960         (ix86_get_drap_rtx): Likewise.
3961         (ix86_finalize_stack_realign_flags): Likewise.
3962         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
3963         (TARGET_GET_DRAP_RTX): Likewise.
3964         (override_options): Overide option value for new options.
3965         (ix86_function_ok_for_sibcall): Remove check for
3966         force_align_arg_pointer.
3967         (ix86_handle_cconv_attribute): Likewise.
3968         (ix86_function_regparm): Likewise.
3969         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
3970         (ix86_va_start): Replace virtual_incoming_args_rtx with
3971         crtl->args.internal_arg_pointer.
3972         (ix86_select_alt_pic_regnum): Check DRAP register.
3973         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
3974         (ix86_compute_frame_layout): Compute frame layout wrt stack
3975         realignment.
3976         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
3977         (ix86_expand_prologue): Decide if stack realignment is needed
3978         and generate prologue code accordingly.
3979         (ix86_expand_epilogue): Generate epilogue code wrt stack
3980         realignment is really needed or not.
3981         
3982         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
3983         (ABI_STACK_BOUNDARY): Likewise.
3984         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
3985         (STACK_REALIGN_DEFAULT): Likewise.
3986         (INCOMING_STACK_BOUNDARY): Likewise.
3987         (MAX_STACK_ALIGNMENT): Likewise.
3988         (ix86_incoming_stack_boundary): Likewise.
3989         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
3990         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
3991         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
3992         (machine_function): Remove force_align_arg_pointer.
3993
3994         * config/i386/i386.md (BX_REG): New.
3995         (R13_REG): Likewise.
3996
3997         * config/i386/i386.opt (mforce_drap): New.
3998         (mincoming-stack-boundary): Likewise.
3999         (mstackrealign): Add Init(-1).
4000
4001         * config/i386/i386-protos.h (ix86_can_eliminate): New
4002
4003 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
4004
4005         * doc/extend.texi: Update force_align_arg_pointer.
4006
4007         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
4008         -mstackrealign.
4009
4010         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
4011         (INCOMING_STACK_BOUNDARY): Likewise.
4012         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
4013         (TARGET_GET_DRAP_RTX): Likewise.
4014
4015 2008-07-30  Andreas Schwab  <schwab@suse.de>
4016
4017         PR rtl-optimization/36929
4018         * dse.c (replace_inc_dec): Use emit_insn_before instead of
4019         add_insn_before and fix argument order.
4020         (replace_inc_dec_mem): Handle NULL rtx.
4021
4022 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
4023
4024         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
4025         function.
4026         (arm_compute_initial_elimination_offset): Use it.
4027         (arm_compute_save_reg_mask): Include static chain save slot when
4028         calculating alignment.
4029         (arm_get_frame_offsets): Ditto.
4030         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
4031         that we can use to decrement the stack when the stack decrement
4032         could be too big for an immediate value in a single insn.
4033         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
4034
4035 2008-07-30  Richard Guenther  <rguenther@suse.de>
4036
4037         PR tree-optimization/36967
4038         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
4039         Release defs of statements we remove.
4040
4041 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
4042
4043         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
4044         instead of NULL_RTVEC.
4045
4046 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
4047
4048         PR target/35866
4049
4050         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
4051         vector modes.
4052
4053 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
4054
4055         * final.c (call_from_call_insn): New.
4056         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
4057
4058 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
4059
4060         * configure.ac: Substitute ADA_CFLAGS.
4061         * configure: Regenerate.
4062         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
4063         * Makefile.in: Remove mention of X_* variables.
4064         * config/pa/x-ada-hpux10: Remove.
4065         * config/pa/x-ada: Remove.
4066
4067         * doc/fragments.texi: Update.
4068
4069 2008-07-30  Olivier Hainque  <hainque@adacore.com>
4070
4071         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
4072         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
4073         __dso_handle explicitly here.
4074
4075 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4076
4077         PR 34389
4078         * c-typeck.c (build_binary_op): Encapsulate code into...
4079         * c-common.c (shorten_binary_op): ...this new function.
4080         (conversion_warning): Use the new function. Handle non-negative
4081         constant in bitwise-and.
4082         * c-common.h (shorten_binary_op): Declare.
4083
4084 2008-07-30  Olivier Hainque  <hainque@adacore.com>
4085
4086         * scan.c (make_sstring_space): Add explicit conversions of
4087         allocator's return value.
4088         * fix-header.c (recognized_function): Likewise.
4089
4090 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4091
4092         * doc/cpp.texi: Update to GFDL 1.2.
4093         * doc/gcc.texi: Do not list GPL as Invariant Section.
4094         * doc/gccint.texi: Likewise.  Update copyright years.
4095         * doc/install.texi: Update copyright years.
4096
4097 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
4098
4099         PR target/36955
4100         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
4101         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
4102
4103 2008-07-29  Jan Hubicka  <jh@suse.cz>
4104
4105         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
4106         (grokdeclarator): Likewise.
4107         * langhooks.c (lhd_warn_unused_global_decl): Use
4108         DECL_DECLARED_INLINE_P.
4109         * print-tree.c (print_node): Remove DECL_INLINE check.
4110
4111 2008-07-29  Richard Guenther  <rguenther@suse.de>
4112
4113         PR tree-optimization/36945
4114         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
4115         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
4116         Record invariant addresses un-decomposed.
4117         (copy_reference_ops_from_call): Record reference call
4118         arguments properly.  Simplify.
4119         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
4120         helper split out from ...
4121         (create_component_ref_by_pieces): ... here.  Simplify.
4122         Prepare for recursive invocation for call arguments.
4123         (create_expression_by_pieces): Adjust call to
4124         create_component_ref_by_pieces.
4125         (compute_avail): Process operand 2 of reference ops.
4126
4127 2008-07-29  Richard Guenther  <rguenther@suse.de>
4128
4129         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
4130
4131 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
4132
4133         * c-format.c (check_format_types): Revert unwanted checkin.
4134
4135 2008-07-29  Jan Hubicka  <jh@suse.cz>
4136
4137         * flags.h (flag_really_no_inline): Remove.
4138         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
4139         * toplev.c (flag_really_no_inline): Remove.
4140         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
4141         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
4142         (cgraph_decide_inlining_incrementally): Likewise.
4143         (compute_inline_parameters): Likewise.
4144         * opts.c (decode_options): Simplify.
4145         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
4146         * common.opt (finline): Initialize to 1.
4147         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
4148
4149 2008-07-29  Jan Hubicka  <jh@suse.cz>
4150
4151         * predict.c (always_optimize_for_size_p): New function.
4152         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
4153         optimize_edge_for_size_p, optimize_edge_for_speed_p,
4154         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
4155         functions.
4156         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
4157         * function.c (prepare_function_start): Set default profile.
4158         * function.h (rtl_data): Add maybe_hot_insn_p.
4159         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
4160         (construct_exit_block): Likewise.
4161         (tree_expand_cfg): Likewise.
4162         * basic-block.h
4163         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
4164         optimize_edge_for_size_p, optimize_edge_for_speed_p,
4165         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
4166         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
4167         Declare.
4168
4169 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4170
4171         PR 34985
4172         * c-decl.c (merge_decls): Merge USED flags.
4173
4174 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
4175
4176         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
4177         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
4178         next_stack, lab_false and lab_over trees.
4179
4180 2008-07-28  Richard Guenther  <rguenther@suse.de>
4181
4182         PR tree-optimization/36957
4183         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
4184         (useless_type_conversion_p): Remove.
4185         (types_compatible_p): Remove.
4186         * gimple.h (tree_ssa_useless_type_conversion): Declare.
4187         (useless_type_conversion_p): Declare.
4188         (types_compatible_p): Declare.
4189         (gimple_expr_type): Return the base type only if it is
4190         trivially convertible to the subtype.
4191
4192 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
4193
4194         * configure.ac: Use the m4_do macro to concatenate the warnings into
4195         one string in ACX_PROG_CC_WARNING_OPTS,
4196         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
4197         * configure: Regenerate.
4198
4199 2008-07-28  Richard Guenther  <rguenther@suse.de>
4200
4201         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
4202         (insert_fake_stores): Remove.
4203         (realify_fake_stores): Likewise.
4204         (execute_pre): Remove dead code.
4205         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
4206         (find_func_aliases): Deal with it here instead.
4207         Re-enable gcc_unreachable call.
4208
4209 2008-07-28  Richard Guenther  <rguenther@suse.de>
4210
4211         Merge from gimple-tuples-branch.
4212
4213         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
4214         * gimple.def: New file.
4215         * gsstruct.def: Likewise.
4216         * gimple-iterator.c: Likewise.
4217         * gimple-pretty-print.c: Likewise.
4218         * tree-gimple.c: Removed.  Merged into ...
4219         * gimple.c: ... here.  New file.
4220         * tree-gimple.h: Removed.  Merged into ...
4221         * gimple.h: ... here.  New file.
4222
4223         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
4224         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
4225         --enable-checking=gimple flag.
4226         * config.in: Likewise.
4227         * configure: Regenerated.
4228
4229         * tree-ssa-operands.h: Tuplified.
4230         * tree-vrp.c: Likewise.
4231         * tree-loop-linear.c: Likewise.
4232         * tree-into-ssa.c: Likewise.
4233         * tree-ssa-loop-im.c: Likewise.
4234         * tree-dump.c: Likewise.
4235         * tree-complex.c: Likewise.
4236         * cgraphbuild.c: Likewise.
4237         * tree-ssa-threadupdate.c: Likewise.
4238         * tree-ssa-loop-niter.c: Likewise.
4239         * tree-pretty-print.c: Likewise.
4240         * tracer.c: Likewise.
4241         * gengtype.c: Likewise.
4242         * tree-loop-distribution.c: Likewise.
4243         * tree-ssa-loop-unswitch.c: Likewise.
4244         * cgraph.c: Likewise.
4245         * cgraph.h: Likewise.
4246         * tree-ssa-loop-manip.c: Likewise.
4247         * value-prof.c: Likewise.
4248         * tree-ssa-loop-ch.c: Likewise.
4249         * tree-tailcall.c: Likewise.
4250         * value-prof.h: Likewise.
4251         * tree.c: Likewise.
4252         * tree.h: Likewise.
4253         * tree-pass.h: Likewise.
4254         * ipa-cp.c: Likewise.
4255         * tree-scalar-evolution.c: Likewise.
4256         * tree-scalar-evolution.h: Likewise.
4257         * target.h: Likewise.
4258         * lambda-mat.c: Likewise.
4259         * tree-phinodes.c: Likewise.
4260         * diagnostic.h: Likewise.
4261         * builtins.c: Likewise.
4262         * tree-ssa-alias-warnings.c: Likewise.
4263         * cfghooks.c: Likewise.
4264         * fold-const.c: Likewise.
4265         * cfghooks.h: Likewise.
4266         * omp-low.c: Likewise.
4267         * tree-ssa-dse.c: Likewise.
4268         * ipa-reference.c: Likewise.
4269         * tree-ssa-uncprop.c: Likewise.
4270         * toplev.c: Likewise.
4271         * tree-gimple.c: Likewise.
4272         * tree-gimple.h: Likewise.
4273         * tree-chrec.c: Likewise.
4274         * tree-chrec.h: Likewise.
4275         * tree-ssa-sccvn.c: Likewise.
4276         * tree-ssa-sccvn.h: Likewise.
4277         * cgraphunit.c: Likewise.
4278         * tree-ssa-copyrename.c: Likewise.
4279         * tree-ssa-ccp.c: Likewise.
4280         * tree-ssa-loop-ivopts.c: Likewise.
4281         * tree-nomudflap.c: Likewise.
4282         * tree-call-cdce.c: Likewise.
4283         * ipa-pure-const.c: Likewise.
4284         * c-format.c: Likewise.
4285         * tree-stdarg.c: Likewise.
4286         * tree-ssa-math-opts.c: Likewise.
4287         * tree-ssa-dom.c: Likewise.
4288         * tree-nrv.c: Likewise.
4289         * tree-ssa-propagate.c: Likewise.
4290         * ipa-utils.c: Likewise.
4291         * tree-ssa-propagate.h: Likewise.
4292         * tree-ssa-alias.c: Likewise.
4293         * gimple-low.c: Likewise.
4294         * tree-ssa-sink.c: Likewise.
4295         * ipa-inline.c: Likewise.
4296         * c-semantics.c: Likewise.
4297         * dwarf2out.c: Likewise.
4298         * expr.c: Likewise.
4299         * tree-ssa-loop-ivcanon.c: Likewise.
4300         * predict.c: Likewise.
4301         * tree-ssa-loop.c: Likewise.
4302         * tree-parloops.c: Likewise.
4303         * tree-ssa-address.c: Likewise.
4304         * tree-ssa-ifcombine.c: Likewise.
4305         * matrix-reorg.c: Likewise.
4306         * c-decl.c: Likewise.
4307         * tree-eh.c: Likewise.
4308         * c-pretty-print.c: Likewise.
4309         * lambda-trans.c: Likewise.
4310         * function.c: Likewise.
4311         * langhooks.c: Likewise.
4312         * ebitmap.h: Likewise.
4313         * tree-vectorizer.c: Likewise.
4314         * function.h: Likewise.
4315         * langhooks.h: Likewise.
4316         * tree-vectorizer.h: Likewise.
4317         * ipa-type-escape.c: Likewise.
4318         * ipa-type-escape.h: Likewise.
4319         * domwalk.c: Likewise.
4320         * tree-if-conv.c: Likewise.
4321         * profile.c: Likewise.
4322         * domwalk.h: Likewise.
4323         * tree-data-ref.c: Likewise.
4324         * tree-data-ref.h: Likewise.
4325         * tree-flow-inline.h: Likewise.
4326         * tree-affine.c: Likewise.
4327         * tree-vect-analyze.c: Likewise.
4328         * c-typeck.c: Likewise.
4329         * gimplify.c: Likewise.
4330         * coretypes.h: Likewise.
4331         * tree-ssa-phiopt.c: Likewise.
4332         * calls.c: Likewise.
4333         * tree-ssa-coalesce.c: Likewise.
4334         * tree.def: Likewise.
4335         * tree-dfa.c: Likewise.
4336         * except.c: Likewise.
4337         * except.h: Likewise.
4338         * cfgexpand.c: Likewise.
4339         * tree-cfgcleanup.c: Likewise.
4340         * tree-ssa-pre.c: Likewise.
4341         * tree-ssa-live.c: Likewise.
4342         * tree-sra.c: Likewise.
4343         * tree-ssa-live.h: Likewise.
4344         * tree-predcom.c: Likewise.
4345         * lambda.h: Likewise.
4346         * tree-mudflap.c: Likewise.
4347         * ipa-prop.c: Likewise.
4348         * print-tree.c: Likewise.
4349         * tree-ssa-copy.c: Likewise.
4350         * ipa-prop.h: Likewise.
4351         * tree-ssa-forwprop.c: Likewise.
4352         * ggc-page.c: Likewise.
4353         * c-omp.c: Likewise.
4354         * tree-ssa-dce.c: Likewise.
4355         * tree-vect-patterns.c: Likewise.
4356         * tree-ssa-ter.c: Likewise.
4357         * tree-nested.c: Likewise.
4358         * tree-ssa.c: Likewise.
4359         * lambda-code.c: Likewise.
4360         * tree-ssa-loop-prefetch.c: Likewise.
4361         * tree-inline.c: Likewise.
4362         * tree-inline.h: Likewise.
4363         * tree-iterator.c: Likewise.
4364         * tree-optimize.c: Likewise.
4365         * tree-ssa-phiprop.c: Likewise.
4366         * tree-vect-transform.c: Likewise.
4367         * tree-object-size.c: Likewise.
4368         * tree-outof-ssa.c: Likewise.
4369         * cfgloop.c: Likewise.
4370         * system.h: Likewise.
4371         * tree-profile.c: Likewise.
4372         * cfgloop.h: Likewise.
4373         * c-gimplify.c: Likewise.
4374         * c-common.c: Likewise.
4375         * tree-vect-generic.c: Likewise.
4376         * tree-flow.h: Likewise.
4377         * c-common.h: Likewise.
4378         * basic-block.h: Likewise.
4379         * tree-ssa-structalias.c: Likewise.
4380         * tree-switch-conversion.c: Likewise.
4381         * tree-ssa-structalias.h: Likewise.
4382         * tree-cfg.c: Likewise.
4383         * passes.c: Likewise.
4384         * ipa-struct-reorg.c: Likewise.
4385         * ipa-struct-reorg.h: Likewise.
4386         * tree-ssa-reassoc.c: Likewise.
4387         * cfgrtl.c: Likewise.
4388         * varpool.c: Likewise.
4389         * stmt.c: Likewise.
4390         * tree-ssanames.c: Likewise.
4391         * tree-ssa-threadedge.c: Likewise.
4392         * langhooks-def.h: Likewise.
4393         * tree-ssa-operands.c: Likewise.
4394         * config/alpha/alpha.c: Likewise.
4395         * config/frv/frv.c: Likewise.
4396         * config/s390/s390.c: Likewise.
4397         * config/m32c/m32c.c: Likewise.
4398         * config/m32c/m32c-protos.h: Likewise.
4399         * config/spu/spu.c: Likewise.
4400         * config/sparc/sparc.c: Likewise.
4401         * config/i386/i386.c: Likewise.
4402         * config/sh/sh.c: Likewise.
4403         * config/xtensa/xtensa.c: Likewise.
4404         * config/stormy16/stormy16.c: Likewise.
4405         * config/ia64/ia64.c: Likewise.
4406         * config/rs6000/rs6000.c: Likewise.
4407         * config/pa/pa.c: Likewise.
4408         * config/mips/mips.c: Likewise.
4409
4410 2008-07-28  Simon Baldwin  <simonb@google.com>
4411
4412         * c-pragma.c (handle_pragma_message): New function.
4413         (init_pragma): Register handle_pragma_message.
4414         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
4415         documentation.
4416
4417 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
4418
4419         PR tree-optimization/35252
4420         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
4421         REALPART_EXPR to be considered as same load operation.
4422
4423 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
4424
4425         PR tree-optimization/36830
4426         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
4427         (expressions_equal_p): Return false if only one operand is null.
4428
4429 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
4430
4431         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
4432         version requirements.
4433
4434 2008-07-26  Olivier Hainque  <hainque@adacore.com>
4435
4436         * collect2.c (symkind): New enum.  Symbol kinds we care about.
4437         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
4438         code and head comment accordingly.
4439         (scan_prog_file): Use symkind names instead of bare integers.
4440
4441 2008-07-25  Jan Hubicka  <jh@suse.cz>
4442
4443         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
4444         DECL_INLINE.
4445         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
4446         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
4447         * dojump.c (clear_pending_stack_adjust): Likewise.
4448         * print-tree.c (print_node): Ignore DECL_INLINE.
4449         * tree-inline.c (inlinable_function_p): Likewise.
4450
4451 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
4452
4453         * doc/extend.texi (hot attribute): Document that the hot attribute
4454         turns on -O3 for some ports.
4455         (cold attribute): Document that the cold attribute turns on -Os
4456         for some ports
4457
4458         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
4459         reflect function specific option support.
4460
4461         * target.h (struct target_option_hooks): Add fields to say whether
4462         the cold attribute implies -Os and the hot attribute implies -O3.
4463
4464         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
4465         By default, do not turn on -Os for cold functions.
4466         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
4467         not turn on -O3 for hot functions.
4468
4469         * c-common.c (handle_hot_attribute): Use target hook to determine
4470         if hot functions should enable -O3.
4471         (handle_cold_attribute): Use target hook to determine if cold
4472         functions should enable -Os.
4473
4474         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
4475         (override_options): Move disable scheduling to
4476         optimization_options.
4477         (optimization_options): Disable scheduling here, not
4478         override_options.
4479         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4480         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4481
4482         * config/ia64/ia64.c (ia64_override_options): Move setting
4483         scheduling flags to ia64_optimization_options.
4484         (ia64_optimization_options): Disable scheduling options here, and
4485         not in ia64_override_options.
4486         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4487         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4488
4489 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
4490
4491         PR target/36936
4492         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
4493
4494 2008-07-25  Martin Jambor  <mjambor@suse.cz>
4495
4496         PR tree-optimization/36926
4497         * ipa-prop.c (ipa_analyze_call_uses): Call
4498         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
4499
4500 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
4501
4502         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
4503         movv2si_internal): Add mem = reg alternative.
4504
4505 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
4506
4507         PR bootstrap/36918
4508         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
4509         DEFAULT_PCC_STRUCT_RETURN to 127.
4510
4511 2008-07-24  Jan Hubicka  <jh@suse.cz>
4512
4513         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
4514         (build_cgraph_edges): Likewise.
4515         * cgraph.c (cgraph_node): Do not update assembler hash.
4516         (cgraph_remove_node): Drop non-unit-at-a-time code.
4517         * tree-pass.h (pass_O0_always_inline): Remove.
4518         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
4519         * toplev.c (process_options): Flag unit-at-a-time does not imply
4520         no section anchors.
4521         * cgraphunit.c: Update comments.
4522         (decide_is_function_needed): Drop non-unit-at-a-time mode.
4523         (cgraph_assemble_pending_functions): Remove.
4524         (cgraph_reset_node): Drop non-unit-at-a-time code.
4525         (cgraph_finalize_function): Likewise.
4526         (cgraph_analyze_function): Likewise.
4527         (cgraph_finalize_compilation_unit): Likewise.
4528         (cgraph_expand_function): Likewise.
4529         (cgraph_optimize): Likesise.
4530         (save_inline_function_body): Likewise.
4531         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
4532         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
4533         * ipa-inline.c: Update comments.
4534         (enum inlining_mode): remove INLINE_SPEED.
4535         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
4536         (cgraph_mark_inline_edge): Likewise.
4537         (try_inline): Likewise.
4538         (cgraph_decide_inlining_incrementally): Likewise.
4539         (cgraph_gate_inlining): Remove.
4540         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
4541         (cgraph_gate_early_inlining): Likewise.
4542         (gate_inline_passes): Remove.
4543         (pass_inline_parameters, pass_ipa_inline): Remove gates.
4544         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
4545         pass_O0_always_inline): Remove.
4546         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
4547         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
4548         * opts.c (no_unit_at_a_time_default): Remove.
4549         (decode_options): Remove flag_unit_at_a_time reset and warning.
4550         * opts.h (no_unit_at_a_time_default): Remove.
4551         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
4552         early in GNU dialect.
4553         (merge_decls): Update comment; drop unit-at-a-time check.
4554         (finish_decl): Likewise.
4555         (grok_declaration): Remove flag_inline_trees code.
4556         (finish_functions): Return on function returning non-void on all
4557         statics.
4558         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
4559         * cfgexpand.c (expand_one_static_var): Remove.
4560         (expand_one_var): Remove expand_one_static_var call.
4561         (expand_used_vars_for_block): Remove flag_unit_a_time check.
4562         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
4563         and flag_unit_at_a-time compatibility checks.
4564         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
4565         * tree-inline.c (flag_inline_trees): Remove.
4566         (inlinable_function_p): Don't check it.
4567         (expand_call_inline): Remove non-unit-at-a-time code.
4568         * tree-inline.h (flag_inline_trees): Remove.
4569         * tree-optimize.c (execute_early_local_optimizations): Remove
4570         unit-at-a-time checks.
4571         (tree_rest_of_compilation): Likewise.
4572         * combine.c (setup_incoming_promotions): Likewise.
4573         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
4574         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
4575         * passes.c (pass_inline_parameters): Update comments; remove
4576         O0_alwaysinline pass.
4577         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
4578         (execute_one_pass): Likewise.
4579         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
4580         (ix86_function_sseregparm): Likewise.
4581         * arm.c (arm_function_in_section_p): Likewise.
4582         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
4583         * varpool.c: Update comments.
4584         (decide_is_variable_needed): Remove unit-at-a-time checks.
4585         (varpool_finalize_decl): Likewise.
4586
4587 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
4588
4589         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
4590         to 2 instead of -1.
4591         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
4592
4593 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
4594
4595         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
4596         imp symbol extension.
4597
4598         2008-07-23  Ian Lance Taylor  <iant@google.com>
4599
4600         * tree-vrp.c (infer_value_range): Ignore asm statements when
4601         looking for memory accesses for -fdelete-null-pointer-checks.
4602
4603 2008-07-24  Ben Elliston  <bje@au.ibm.com>
4604
4605         * config/spu/spu-c.c (__vector_keyword): New variable.
4606         (vector_keyword): Likewise.
4607         (spu_categorize_keyword): New function.
4608         (spu_macro_to_expand): Likewise.
4609         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
4610         compiling an ISO C dialect.
4611
4612 2008-07-24  Ben Elliston  <bje@au.ibm.com>
4613
4614         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
4615         conventional usage.
4616
4617 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
4618
4619         * configure: Regenerate.
4620         * configure.ac: Require texinfo 4.7.
4621         * doc/install.texi: Document texinfo 4.7 requirement.
4622
4623 2008-07-23  Martin Jambor  <mjambor@suse.cz>
4624
4625         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
4626         rather than for DECL_SAVED_TREE.
4627         * ipa-prop.c: Include diagnostic.h.
4628         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
4629         thoroughly.
4630         (ipa_detect_param_modifications): Function rewritten from scratch.
4631         (ipa_compute_jump_functions): Changed accesses to modification flags.
4632         (ipa_free_node_params_substructures): Update flags destruction.
4633         (ipa_node_duplication_hook): Update flags duplication.
4634         (ipa_print_all_params_modified): Updated flag access.
4635         * ipa-prop.h (struct ipa_param_flags): New structure.
4636         (struct ipa_node_params): New field modification_analysis_done,
4637         modified_flags changed into param_flags.
4638         (ipa_is_ith_param_modified): Changed to use new flags.
4639         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
4640
4641         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
4642         ipa-cp.c and split into two functions.
4643         (ipa_print_node_jump_functions): New function.
4644         (compute_scalar_jump_functions): New function.
4645         (type_like_member_ptr_p): New function.
4646         (compute_pass_through_member_ptrs): New function.
4647         (fill_member_ptr_cst_jump_function): New function.
4648         (determine_cst_member_ptr): New function.
4649         (compute_cst_member_ptr_arguments): New function.
4650         (ipa_compute_jump_functions): Complete rewrite.
4651         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
4652         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
4653         (struct ipa_member_ptr_cst): New structure.
4654         (union jump_func_value): New field member_cst.
4655         * ipa-cp.c (ipcp_lat_is_insertable): New function.
4656         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
4657         jump function types.
4658         (ipcp_print_all_lattices): Slight fprintf rearrangement.
4659         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
4660         instead of ipcp_print_all_jump_functions.
4661         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
4662         only for replacable scalars.
4663
4664         * doc/invoke.texi (Optimize options): Add description of
4665         -findirect-inlining.
4666         * common.opt (flag_indirect_inlining): New flag.
4667         * opts.c (decode_options): Set flag_indirect_inlining when
4668         optimize >= 3.
4669
4670         * ipa-inline.c: Include ipa-prop.h.
4671         (inline_indirect_intraprocedural_analysis): New function.
4672         (inline_generate_summary): Allocate parameter and argument info
4673         structures, call inline_indirect_intraprocedural_analysis on each
4674         node when doing indirect inlining and deallocate indirect inlining
4675         data structures in the end.
4676         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
4677         (free_all_ipa_structures_after_iinln): New function.
4678         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
4679         done.
4680         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
4681
4682         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
4683         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
4684         of computing the frequency separately.
4685         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
4686         of computing the frequency separately.
4687         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
4688         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
4689         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
4690         (ipa_get_stmt_member_ptr_load_param): New function.
4691         (ipa_is_ssa_with_stmt_def): New function.
4692         (ipa_note_param_call): New function.
4693         (ipa_analyze_call_uses): New function.
4694         (ipa_analyze_stmt_uses): New function.
4695         (ipa_analyze_params_uses): New function.
4696         (ipa_free_node_params_substructures): Also free the param_calls linked
4697         list.
4698         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
4699         (ipa_print_node_param_flags): New function.
4700         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
4701         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
4702         * ipa-prop.h (struct ipa_param_flags): New field called.
4703         (struct ipa_param_call_note): New structure.
4704         (struct ipa_node_params): New fields param_calls and
4705         uses_analysis_done.
4706         (ipa_is_ith_param_called): New function.
4707         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
4708         ipa_analyze_params_uses and dump parameter flags.
4709
4710         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
4711         ipa_propagate_indirect_call_infos if performing indirect inlining,
4712         pass a new parameter new_edges to it.
4713         (add_new_edges_to_heap): New fucntion.
4714         (cgraph_decide_inlining_of_small_functions): New vector
4715         new_indirect_edges for newly found indirect edges , call
4716         ipa_propagate_indirect_call_infos after inlining.
4717         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
4718         inlining if performing indirect inlining.  Call
4719         free_all_ipa_structures_after_iinln when doing so too.
4720         (inline_generate_summary): Do not call
4721         free_all_ipa_structures_after_iinln here.
4722         * ipa-prop.c (update_jump_functions_after_inlining): New function.
4723         (print_edge_addition_message): New function.
4724         (update_call_notes_after_inlining): New function.
4725         (propagate_info_to_inlined_callees): New function.
4726         (ipa_propagate_indirect_call_infos): New function.
4727         * ipa-prop.h: Include cgraph.h
4728         (struct ipa_param_call_note): Fields reordered, new field processed.
4729         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
4730         flag indirect_call.
4731         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
4732         rediscovered call statements.
4733         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
4734         (dump_cgraph_node): Dump also the indirect_call flag.
4735         (cgraph_clone_edge): Copy also the indirect_call flag.
4736         * tree-inline.c (copy_bb): Do not check for fndecls from call
4737         expressions, check for edge availability when moving clones.
4738         (get_indirect_callee_fndecl): New function.
4739         (expand_call_inline): If callee declaration is not apprent from
4740         the statement, try calling get_indirect_callee_fndecl.  Do not
4741         issue warnings or call sorry when not inlinings an indirect edge.
4742         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
4743
4744         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
4745         bit more frandly to matching.
4746         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
4747         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
4748         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
4749
4750 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
4751
4752         PR 36907
4753         * opth-gen.awk: Suppress function specific features when building
4754         target libraries.
4755         * optc-gen.awk: Ditto.
4756
4757 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4758
4759         PR 35058
4760         * diagnostic.c (pedwarn): Add opt parameter.
4761         (pedwarn0): New.
4762         * c-tree.h (pedwarn_init): Add opt parameter.
4763         (pedwarn_c90): Likewise.
4764         (pedwarn_c99): Likewise.
4765         * c-errors.c (pedwarn_c99): Likewise.
4766         (pedwarn_c90): Likewise.
4767         * toplev.h (pedwarn): Update declaration.
4768         (pedwarn0): Declare.
4769         * c-lex.c: All calls to pedwarn changed.
4770         * builtins.c: All calls to pedwarn changed.
4771         * toplev.c: All calls to pedwarn changed.
4772         * c-decl.c: All calls to pedwarn changed.
4773         * c-typeck.c: All calls to pedwarn changed.
4774         * c-common.c: All calls to pedwarn changed.
4775         * c-parser.c: All calls to pedwarn changed.
4776
4777 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
4778             Karthik Kumar  <karthikkumar@gmail.com>
4779
4780         * attribs.c (file scope): Include c-common.h.
4781         (decl_attributes): Add support for #pragma GCC optimize and
4782         #pragma GCC option.
4783
4784         * targhooks.c (default_can_inline_p): New function that is the
4785         default for the TARGET_CAN_INLINE_P target hook.
4786
4787         * targhooks.h (default_can_inline_p): Add declaration.
4788
4789         * tree.c (cl_optimization_node): New static tree for building
4790         OPTIMIZATION_NODE tree.
4791         (cl_target_option_node): New static tree for building
4792         TARGET_OPTION_NODE tree.
4793         (cl_option_hash_table): New hash table for hashing
4794         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
4795         (cl_option_hash_hash): New function to provide the hash value for
4796         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
4797         (cl_option_hash_eq): New function to provide an equality test for
4798         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
4799         (tree_code_size): Add support for OPTIMIZATION_NODE and
4800         TARGET_OPTION_NODE trees.
4801         (tree_code_structure): Add support for OPTIMIZATION_NODE and
4802         TARGET_OPTION_NODE trees.
4803         (build_optimization_node): Build a tree that has all of the
4804         current optimization options.
4805         (build_target_option_node): Build a tree that has the target
4806         options that might be changed on a per function basis.
4807
4808         * tree.h (file scope): Include options.h.
4809         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
4810         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
4811         (TREE_OPTIMIZATION): Ditto.
4812         (TREE_TARGET_SPECIFIC): Ditto.
4813         (struct tree_function_decl): Add fields for remembering the
4814         current optimization options and target specific options.
4815         (struct tree_optimization_option): New tree variant that remembers
4816         the optimization options.
4817         (struct tree_target_option): New tree variant that remembers the
4818         target specific flags that might change for compiling a particular
4819         function.
4820         (union tree_node): Include tree_optimization_option and
4821         tree_target_option fields.
4822         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
4823         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
4824         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
4825         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
4826         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
4827         optimization and target options.
4828         (optimization_default_node): New macro to refer to global_trees
4829         field.
4830         (optimization_current_node): Ditto.
4831         (optimization_cold_node): Ditto.
4832         (optimization_hot_node): Ditto.
4833         (target_option_default_node): Ditto.
4834         (target_option_current_node): Ditto.
4835         (current_option_pragma): Ditto.
4836         (current_optimize_pragma): Ditto.
4837
4838         * target.h (struct gcc_target): Add valid_option_attribute_p,
4839         target_option_save, target_option_restore, target_option_print,
4840         target_option_pragma_parse, and can_inline_p hooks.
4841
4842         * toplev.h (parse_optimize_options): Add declaration.
4843         (fast_math_flags_struct_set_p): Ditto.
4844
4845         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
4846         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
4847         optimize is used.
4848
4849         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
4850         tree_can_inline_p hook to see if one function can inline another.
4851         (cgraph_decide_inlining): Ditto.
4852         (cgraph_decide_inlining_incrementally): Ditto.
4853
4854         * opts.c (decode_options): Add support for running multiple times
4855         to allow functions with different target or optimization options
4856         than was specified on the command line.
4857         (fast_math_flags_struct_set_p): New function that is similar to
4858         fast_math_flags_set_p, except it uses the values in the
4859         cl_optimization structure instead of global variables.
4860
4861         * optc-gen.awk: Add support for TargetSave to allow a back end to
4862         declare new fields that need to be saved when using function
4863         specific options.  Include flags.h and target.h in the options.c
4864         source.  Add support for Save to indicate which options can be set
4865         for individual functions.  Generate cl_optimize_save,
4866         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
4867         cl_target_option_restore, cl_target_option_print functions to
4868         allow functions to use different optimization or target options.
4869
4870         * opt-functions.awk (var_type_struct): Return the type used for
4871         storing the field in a structure.
4872
4873         * opth-gen.awk: Add support for TargetSave to allow a back end to
4874         declare new fields that need to be saved when using function
4875         specific options.  Add support for Save to indicate which options
4876         can be set for individual functions.  Only generate one extern for
4877         Mask fields.  Generate cl_optimization and cl_target_option
4878         structures to remember optimization and target options.
4879
4880         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
4881         collecting new tree nodes.
4882         (TS_TARGET_OPTION): Ditto.
4883
4884         * c-decl.c (merge_decls): Merge function specific target and
4885         optimization options.
4886
4887         * function.c (invoke_set_current_function_hook): If the function
4888         uses different optimization options, change the global variables
4889         to reflect this.
4890
4891         * coretypes.h (struct cl_optimization): Add forward reference.
4892         (struct cl_target_option): Ditto.
4893
4894         * c-pragma.c (option_stack): New static vector to remember the
4895         current #pragma GCC option stack.
4896         (handle_pragma_option): New function to support #pragma GCC option
4897         to change target options.
4898         (optimize_stack): New static vector to remember the current
4899         #pragma GCC optimize stack.
4900         (handle_pragma_optimize): New function to support #pragma GCC
4901         optimize to change optimization options.
4902         (init_pragma): Add support for #pragma GCC optimize and #pragma
4903         GCC option.
4904
4905         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
4906         optimization options.
4907         (TARGET_OPTION_NODE): New tree code for remembering certain target
4908         options.
4909
4910         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
4911         TARGET_OPTION_NODE trees.
4912
4913         * common.opt (-O): Add Optimization flag.
4914         (-Os): Ditto.
4915         (-fmath-errno): Ditto.
4916         (-falign-functions): Add UInteger flag to make sure flag gets full
4917         int in cl_optimization structure.
4918         (-falign-jumps): Ditto.
4919         (-falign-labels): Ditto.
4920         (-falign-loops): Ditto.
4921         (-fsched-stalled-insns): Ditto.
4922         (-fsched-stalled-insns-dep): Ditto.
4923
4924         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
4925         definition.
4926         (TARGET_OPTION_SAVE): Ditto.
4927         (TARGET_OPTION_RESTORE): Ditto.
4928         (TARGET_OPTION_PRINT): Ditto.
4929         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
4930         (TARGET_CAN_INLINE_P): Ditto.
4931         (TARGET_INITIALIZER): Add new hooks.
4932
4933         * tree-inline.c (tree_can_inline_p): New function to determine
4934         whether one function can inline another.  Check if the functions
4935         use compatible optimization options, and also call the backend
4936         can_inline_p hook.
4937
4938         * tree-inline.h (tree_can_inline_p): Add declaration.
4939
4940         * c-common.c (c_common_attribute): Add support for option and
4941         optimize attributes.
4942         (handle_option_attribute): Add support for the option attribute to
4943         allow the user to specify different target options for compiling a
4944         specific function.
4945         (handle_optimize_attribute): Add support for the optimize
4946         attribute to allow the user to specify different optimization
4947         options for compiling a specific function.
4948         (handle_hot_attribute): Turn on -O3 optimization for this one
4949         function if it isn't the default optimization level.
4950         (handle_cold_attribute): Turn on -Os optimization for this one
4951         function if it insn't the default optimization.
4952         (const_char_p): New const char * typedef.
4953         (optimize_args): New static vector to remember the optimization
4954         arguments.
4955         (parse_optimize_options): New function to set up the optimization
4956         arguments from either the optimize attribute or #pragma GCC optimize.
4957
4958         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
4959         (builtin_define_std): Ditto.
4960
4961         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
4962         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
4963         (x86_64-*-*): Ditto.
4964
4965         * Makefile.in (TREE_H): Add options.h.
4966         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
4967
4968         * doc/extend.texi (option attribute): Document new attribute.
4969         (optimize attribute): Ditto.
4970         (hot attribute): Document hot attribute sets -O3.
4971         (cold attribute): Document cold attribute sets -Os.
4972         (#pragma GCC option): Document new pragma.
4973         (#pragma GCC optimize): Ditto.
4974
4975         * doc/options.texi (TargetSave): Document TargetSave syntax.
4976         (UInteger): Document UInteger must be used for certain flags.
4977         (Save): Document Save option to create target specific options
4978         that can be saved/restored on a function specific context.
4979
4980         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
4981         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
4982
4983         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
4984         (TARGET_OPTION_SAVE): Ditto.
4985         (TARGET_OPTION_RESTORE): Ditto.
4986         (TARGET_OPTION_PRINT): Ditto.
4987         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
4988         (TARGET_CAN_INLINE_P): Ditto.
4989
4990         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
4991         -mfpmath=sse,387.
4992         (-mfpmath=both): Ditto.
4993
4994 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
4995             Karthik Kumar  <karthikkumar@gmail.com>
4996
4997         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
4998         (TARGET_POPCNT): Ditto.
4999         (TARGET_SAHF): Ditto.
5000         (TARGET_AES): Ditto.
5001         (TARGET_PCLMUL): Ditto.
5002         (TARGET_CMPXCHG16B): Ditto.
5003         (TARGET_RECIP): Move switch into target_flags.
5004         (TARGET_FUSED_MADD): Ditto.
5005         (ix86_arch_features): Make an unsigned char type.
5006         (ix86_tune_features): Ditto.
5007         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
5008         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
5009         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
5010
5011         * config/i386/i386.opt (arch): New TargetSave field to define
5012         fields that need to be saved for function specific option support.
5013         (tune): Ditto.
5014         (fpmath): Ditto.
5015         (branch_cost): Ditto.
5016         (ix86_isa_flags_explicit): Ditto.
5017         (tune_defaulted): Ditto.
5018         (arch_specified): Ditto.
5019         (-m128-long-double): Add Save flag to save option for target
5020         specific option support.
5021         (-m80387): Ditto.
5022         (-maccumulate-outgoing-args): Ditto.
5023         (-malign-double): Ditto.
5024         (-malign-stringops): Ditto.
5025         (-mfancy-math-387): Ditto.
5026         (-mhard-float): Ditto.
5027         (-mieee-fp): Ditto.
5028         (-minline-all-stringops): Ditto.
5029         (-minline-stringops-dynamically): Ditto.
5030         (-mms-bitfields): Ditto.
5031         (-mno-align-stringops): Ditto.
5032         (-mno-fancy-math-387): Ditto.
5033         (-mno-push-args): Ditto.
5034         (-mno-red-zone): Ditto.
5035         (-mpush-args): Ditto.
5036         (-mred-zone): Ditto.
5037         (-mrtd): Ditto.
5038         (-msseregparm): Ditto.
5039         (-mstack-arg-probe): Ditto.
5040         (-m32): Ditto.
5041         (-m64): Ditto.
5042         (-mmmx): Ditto.
5043         (-m3dnow): Ditto.
5044         (-m3dnowa): Ditto.
5045         (-msse): Ditto.
5046         (-msse2): Ditto.
5047         (-msse3): Ditto.
5048         (-msse4.1): Ditto.
5049         (-msse4.2): Ditto.
5050         (-msse4): Ditto.
5051         (-mno-sse4): Ditto.
5052         (-msse4a): Ditto.
5053         (-msse5): Ditto.
5054         (-mrecip): Move flag into target_flags.
5055         (-mcld): Ditto.
5056         (-mno-fused-madd): Ditto.
5057         (-mfused-madd): Ditto.
5058         (-mabm): Move flag into ix86_isa_flags.
5059         (-mcx16): Ditto.
5060         (-mpopcnt): Ditto.
5061         (-msahf): Ditto.
5062         (-maes): Ditto.
5063         (-mpclmul): Ditto.
5064
5065         * config/i386/i386-c.c: New file for #pragma support.
5066         (ix86_target_macros_internal): New function to #define or #undef
5067         target macros based when the user uses the #pragma GCC option to
5068         change target options.
5069         (ix86_pragma_option_parse): New function to add #pragma GCC option
5070         support.
5071         (ix86_target_macros): Move defining the target macros here from
5072         TARGET_CPU_CPP_BUILTINS in i386.h.
5073         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
5074         defined, initialize any subtarget #pragmas.
5075
5076         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
5077         REGISTER_TARGET_PRAGMAS.
5078
5079         * config/i386/t-i386: New file for x86 dependencies.
5080         (i386.o): Make dependencies mirror the include files used.
5081         (i386-c.o): New file, add dependencies.
5082
5083         * config/i386/i386-protos.h (override_options): Add bool argument.
5084         (ix86_valid_option_attribute_tree): Add declaration.
5085         (ix86_target_macros): Ditto.
5086         (ix86_register_macros): Ditto.
5087
5088         * config/i386/i386.c (ix86_tune_features): Move initialization of
5089         the target masks to initial_ix86_tune_features to allow functions
5090         to have different target options.  Make type unsigned char,
5091         instead of unsigned int.
5092         (initial_ix86_tune_features): New static vector to hold processor
5093         masks for the tune variables.
5094         (ix86_arch_features): Move initialization of the target masks to
5095         initial_ix86_arch_features to allow functions to have different
5096         target options.  Make type unsigned char, instead of unsigned int.
5097         (initial_ix86_arch_features): New static vector to hold processor
5098         masks for the arch variables.
5099         (enum ix86_function_specific_strings): New enum to describe the
5100         string options used for attribute((option(...))).
5101         (ix86_target_string): New function to return a string that
5102         describes the target options.
5103         (ix86_debug_options): New function to print the current options in
5104         the debugger.
5105         (ix86_function_specific_save): New function hook to save the
5106         function specific global variables in the cl_target_option structure.
5107         (ix86_function_specific_restore): New function hook to restore the
5108         function specific variables from the cl_target_option structure to
5109         the global variables.
5110         (ix86_function_specific_print): New function hook to print the
5111         target specific options in the cl_target_option structure.
5112         (ix86_valid_option_attribute_p): New function hook to validate
5113         attribute((option(...))) arguments.
5114         (ix86_valid_option_attribute_tree): New function that is common
5115         code between attribute((option(...))) and #pragma GCC option
5116         support that parses the options and returns a tree holding the options.
5117         (ix86_valid_option_attribute_inner_p): New helper function for
5118         ix86_valid_option_attribute_tree.
5119         (ix86_can_inline_p): New function hook to decide if one function
5120         can inline another on a target specific basis.
5121         (ix86_set_current_function); New function hook to switch target
5122         options if the user used attribute((option(...))) or #pragma GCC
5123         option.
5124         (ix86_tune_defaulted): Move to static file scope from
5125         override_options.
5126         (ix86_arch_specified): Ditto.
5127         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
5128         ix86_isa_flags.
5129         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
5130         (OPTION_MASK_ISA_ABM_SET): Ditto.
5131         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
5132         (OPTION_MASK_ISA_CX16_SET): Ditto.
5133         (OPTION_MASK_ISA_SAHF_SET): Ditto.
5134         (OPTION_MASK_ISA_AES_UNSET): Ditto.
5135         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
5136         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
5137         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
5138         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
5139         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
5140         (struct ptt): Move to static file scope from override_options.
5141         (processor_target_table): Ditto.
5142         (cpu_names): Ditto.
5143         (ix86_handle_option): Add support for options that are now isa options.
5144         (override_options): Add support for declaring functions that
5145         support different target options than were specified on the
5146         command line.  Move struct ptt, processor_target_table, cpu_names,
5147         ix86_tune_defaulted, ix86_arch_specified to static file scope.
5148         Add bool argument.  Fix up error messages so the appropriate error
5149         is given for either command line or attribute.
5150         (ix86_previous_fndecl): New static to remember previous function
5151         declaration to see if we need to change target options.
5152         (ix86_builtins_isa): New array to record the ISA of each builtin
5153         function.
5154         (def_builtin): Always create the builtin function, even if the
5155         current ISA doesn't support it.
5156         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
5157         tests for those builtins.
5158         (ix86_init_builtins): Remove TARGET_MMX test for calling
5159         ix86_init_mmx_sse_builtins.
5160         (ix86_expand_builtin): If the current ISA doesn't support a given
5161         builtin, signal an error.
5162         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
5163         (TARGET_SET_CURRENT_FUNCTION): Ditto.
5164         (TARGET_OPTION_SAVE): Ditto.
5165         (TARGET_OPTION_RESTORE): Ditto.
5166         (TARGET_OPTION_PRINT): Ditto.
5167         (TARGET_CAN_INLINE_P): Ditto.
5168
5169 2008-07-22  Rafael Avila de Espindola  <espindola@google.com>
5170
5171         * c-typeck.c (build_external_ref): Don't call assemble_external.
5172         * final.c (output_operand): Call assemble_external.
5173
5174 2008-07-21  DJ Delorie  <dj@redhat.com>
5175
5176         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
5177         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
5178
5179 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5180
5181         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
5182         original insn and splitter contents into ...
5183         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
5184         flag_unsafe_math_optimizations.  Add dummy scratch register.
5185         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
5186         !flag_unsafe_math_optimizations.  Returns number with next
5187         highest magnitude if this is still less or equal to the true
5188         quotient in magnitude.
5189
5190 2008-07-21  Rafael Avila de Espindola  <espindola@google.com>
5191
5192         * Makefile.in: Replace toplev.h with TOPLEV_H.
5193         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
5194         * c-lex.c (fe_file_change): Don't set in_system_header.
5195         * c-parser.c (c_token): Remove in_system_header.
5196         (c_lex_one_token): Don't set in_system_header.
5197         (c_parser_set_source_position_from_token): Don't set in_system_header.
5198         * diagnostic.c (diagnostic_report_diagnostic): Use location from
5199         diagnostic_info.
5200         (warning_at): New.
5201         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
5202         * flags.h (in_system_header): Remove.
5203         * function.c (saved_in_system_header): Remove.
5204         (push_cfun): Don't set in_system_header.
5205         (pop_cfun): Don't set in_system_header.
5206         (push_struct_function): Don't set in_system_header.
5207         * input.h (expanded_location): Add sysp.
5208         (in_system_header_at): New.
5209         (in_system_header): New.
5210         * toplev.c (in_system_header): Remove.
5211         * toplev.h: Include input.h
5212         (warning_at): New.
5213         * tree-cfg.c (execute_warn_function_return): Call warning_at.
5214         * tree-ssa.c (warn_uninit): Call warning_at.
5215         (warn_uninitialized_var): Update calls to warn_uninit.
5216         (warn_uninitialized_phi): Update calls to warn_uninit.
5217         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
5218         (expand_location): Initialize xloc.sysp.
5219         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
5220         (tree_decl_with_vis): Remove in_system_header_flag.
5221
5222 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
5223
5224         PR target/36822
5225         * recog.c (asm_operand_ok): Change the order of the extra
5226         memory constraint checks.
5227
5228 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5229
5230         PR tree-opt/36879
5231         * tree-switch-conversion.c (build_one_array): Call
5232         varpool_mark_needed_node and varpool_finalize_decl
5233         instead of assemble_variable.
5234
5235 2008-07-19  Jan Hubicka  <jh@suse.cz>
5236
5237         * cgraph.c (cgraph_add_new_function): Do early local passes.
5238         * tree-nrv.c (gate_pass_return_slot): New gate.
5239         (pass_nrv): Add the gate.
5240         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
5241         functions.
5242         (coalesce_ssa_name): Coalesce SSA names.
5243         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
5244         not optimizing so unused user vars remains visible.
5245         * common.opt (flag_tree_ter): Always enable by default.
5246         * tree-ssa-ter.c: Include flags.h
5247         (is_replaceable_p): Check that locations match; when aliasing is missing
5248         be conservative about loads.
5249         * tree-optimize.c (gate_init_datastructures): Remove.
5250         (pass_init_datastructures): New.
5251         * passes.c: Reorder passes so we always go into SSA.
5252
5253 2008-07-19  Jan Hubicka  <jh@suse.cz>
5254
5255         * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
5256         * doc/invoke.texi (--combine): Likewise.
5257         (-finline-functions-called-once): Update levels when enabled.
5258         (-funit-at-a-time): Document new behaviour.
5259         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
5260         -fno-section-anchors when disabled explicitly.
5261         (inline params): They are not ignored now.
5262         (precompiled headers): Remove unit-at-a-time as being incompatible.
5263         * opts.c (decode_options): Handle unit-at-a-time as alias;
5264         imply -fno-section-anchors when toplevel reorder is disabled
5265         explicitly.
5266         * common.opt (ftoplevel-reorder): Set default value to 2.
5267         (funit-at-a-time): Set default value to 1.
5268         * config/rs6000/rs6000.c (optimization_options): Set section anchors
5269         to 2.
5270
5271 2008-07-19  Jan Hubicka  <jh@suse.cz>
5272
5273         * builtins.c (expand_builtin_int_roundingfn,
5274         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
5275         it is not useful.
5276
5277 2008-07-19  Richard Guenther  <rguenther@suse.de>
5278
5279         PR bootstrap/36864
5280         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
5281         * tree-ssa-sccvn.c (get_constant_value_id): New function.
5282         * tree-ssa-pre.c (get_expr_value_id): For newly created
5283         constant value-ids make sure to add the expression to its
5284         expression-set.
5285
5286 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
5287
5288         PR middle-end/36877
5289         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
5290         return value of the builtin is ignored.
5291
5292 2008-07-19  Olivier Hainque  <hainque@adacore.com>
5293
5294         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
5295         bits, a C conformant malloc implementation has to provide.
5296         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
5297
5298 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
5299
5300         PR target/36780
5301         PR target/36827
5302         * reload.c (find_reloads_subreg_address): Only reload address if
5303         reloaded == 0, not for reloaded != 1.
5304
5305         Revert:
5306         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
5307         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
5308         (m32c_legitimate_address_p): Handle "++rii" addresses created by
5309         m32c_legitimize_reload_address.
5310
5311         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5312         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
5313         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
5314
5315 2008-07-19  Olivier Hainque  <hainque@adacore.com>
5316
5317         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
5318         argument, saying whether nested array are to be collapsed
5319         into a single array type DIE with multiple subscripts.
5320         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
5321         issues, centralize the nested array types collapsing control and
5322         disable the transformation for Ada.
5323
5324 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
5325
5326         PR target/36786
5327         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
5328         x86_64_shift_adj.
5329         (x86_64_shift_adj_2): New expander.
5330         (x86_64_shift_adj_3): Ditto.
5331         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
5332         to split TImode operands.
5333         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
5334         (ix86_split_lshr): Ditto.
5335
5336 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
5337
5338         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
5339         and __CHAR32_TYPE__.
5340         * c-typeck.c (digest_init): Support char16_t and char32_t.
5341         (set_nonincremental_init_from_string): Idem.
5342
5343 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5344
5345         PR middle-end/36859
5346         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
5347         PREFERRED_STACK_BOUNDARY.
5348         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
5349
5350 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5351
5352         PR middle-end/36858
5353         * function.c (locate_and_pad_parm): Cap boundary earlier.
5354
5355 2008-07-17  Julian Brown  <julian@codesourcery.com>
5356
5357         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
5358         no-op for targets which don't use DLLs.
5359
5360 2008-07-17  Martin Jambor  <mjambor@suse.cz>
5361
5362         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
5363         that nodes are relevant by examining the node->analyzed flag.
5364         (ipcp_init_stage): Check which nodes are relevant, assert that the
5365         relevant ones are also required.
5366         (ipcp_propagate_stage): Check on the side arrays are properly
5367         allocated.
5368         (ipcp_print_all_jump_functions): Make sure not to touch any node
5369         that is not analyzed or an edge that does not have a corresponding
5370         entry in the on-the-side vectors.
5371         (ipcp_function_scale_print): Likewise.
5372         (ipcp_update_callgraph): Check that the node is relevant.
5373         (ipcp_insert_stage): Check that the node is relevant.  Check there is
5374         an info for every node and edge.
5375         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
5376         (ipa_print_all_tree_maps): Likewise and a new variable info.
5377         (ipa_print_all_params_modified): Likewise.
5378         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
5379
5380 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
5381
5382         PR target/25343
5383         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
5384
5385 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
5386
5387         PR rtl-optimization/36753
5388         * fwprop.c (use_killed_between): Don't shortcut
5389         single-definition global registers.
5390
5391 2008-07-16  Jan Hubicka  <jh@suse.cz>
5392
5393         * cgraph.h (varpool_empty_needed_queue): Declare.
5394         * cgraphunit.c (output_in_order): Mark all variables as needed;
5395         empty the queue.
5396         * varpool.c (varpool_assemble_node): Update debug queue.
5397         (varpool_assemble_pending_decls): Don't do it here.
5398         (varpool_empty_needed_queue):  New function.
5399
5400 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5401
5402         * recog.c (peephole2_optimize): Fix formatting.
5403
5404 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5405
5406         * c-pch.c (get_ident): Avoid C++ keywords.
5407         * combine-stack-adj.c (single_set_for_csa): Likewise.
5408         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
5409         output_asm_insn): Likewise.
5410         * reload.c (push_secondary_reload, find_reusable_reload,
5411         push_reload, combine_reloads, find_reloads,
5412         debug_reload_to_stream): Likewise.
5413         * reload.h (struct reload): Likewise.
5414         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
5415         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
5416         emit_output_reload_insns): Likewise.
5417         * targhooks.c (default_secondary_reload): Likewise.
5418         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
5419
5420 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5421
5422         * recog.c (validate_change_1, validate_change,
5423         validate_unshare_change, validate_replace_rtx_1, struct
5424         funny_match, constrain_operands, peephole2_optimize): Avoid C++
5425         keywords.
5426         * reload.c (push_secondary_reload, secondary_reload_class,
5427         scratch_reload_class, find_valid_class, find_reusable_reload,
5428         push_reload, find_dummy_reload, find_reloads_address_1,
5429         find_reloads_address_part, find_equiv_reg): Likewise.
5430         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
5431         choose_reload_regs): Likewise.
5432         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
5433         Likewise.
5434         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
5435         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
5436         * sched-rgn.c (concat_INSN_LIST): Likewise.
5437         * stor-layout.c (mode_for_size, mode_for_size_tree,
5438         smallest_mode_for_size): Likewise.
5439
5440 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5441
5442         * cfg.c (dump_reg_info): Avoid C++ keywords.
5443         * dwarf2asm.c (dw2_force_const_mem,
5444         dw2_asm_output_encoded_addr_rtx): Likewise.
5445         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
5446         * expmed.c (expand_shift): Likewise.
5447         * global.c (find_reg): Likewise.
5448         * graph.c (draw_edge): Likewise.
5449         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
5450         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
5451         widen_clz, widen_bswap, expand_parity, expand_unop,
5452         emit_cmp_and_jump_insn_1): Likewise.
5453         * postreload.c (reload_cse_simplify_operands): Likewise.
5454         * ra.h (add_neighbor): Likewise.
5455         * reg-stack.c (remove_regno_note, change_stack): Likewise.
5456         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
5457         record_reg_classes, copy_cost, record_address_regs,
5458         invalid_mode_change_p): Likewise.
5459         * regrename.c (regrename_optimize, scan_rtx_reg,
5460         dump_def_use_chain, find_oldest_value_reg,
5461         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
5462
5463 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
5464
5465         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
5466         MASK_POWERPC64 for power4 in previous commit.
5467
5468 2008-07-16  Olivier Hainque  <hainque@adacore.com>
5469
5470         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
5471         instead of bare conversion to cast const-ness away.
5472
5473 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
5474
5475         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
5476         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
5477         * config/xtensa/xtensa.c (xtensa_function_value): New function.
5478         (TARGET_FUNCTION_VALUE): Define.
5479
5480 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
5481
5482         * config/rs6000/rs6000.c (processor_target_table): Add
5483         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
5484
5485 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
5486
5487         PR target/36827
5488         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
5489         (m32c_legitimate_address_p): Handle "++rii" addresses created by
5490         m32c_legitimize_reload_address.
5491
5492 2007-07-16  Rafael Avila de Espindola  <espindola@google.com>
5493
5494         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
5495         DECL_IN_SYSTEM_HEADER in sync.
5496
5497 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
5498
5499         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
5500         * tree-ssa-pre.c (pre_expr_eq): Ditto
5501         (get_constant_for_value_id): Take a type as an argument.
5502         (fully_constant_expression): Pass in type.
5503         (find_or_generate_expression): Short circuit constant case.
5504         (create_expression_by_pieces): Remove special casing of
5505         pointer_plus.
5506         (do_regular_insertion): Short circuit constant case.
5507         (do_partial_partial_insertion): Ditto.
5508
5509 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5510
5511         PR target/36782
5512         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
5513
5514 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
5515
5516         * config/xtensa/libgcc-xtensa.ver: New file.
5517         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
5518
5519 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5520
5521         * df-problems.c (df_set_note): Avoid C++ keywords.
5522         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
5523         * dse.c (record_store, remove_useless_values): Likewise.
5524         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
5525         gen_reg_rtx_offset, operand_subword, change_address_1,
5526         change_address, adjust_address_1, offset_address,
5527         widen_memory_access, emit_copy_of_insn_after): Likewise.
5528         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
5529         * fwprop.c (should_replace_address, propagate_rtx_1,
5530         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
5531         Likewise.
5532         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
5533         gcse_emit_move_after, update_ld_motion_stores): Likewise.
5534         * lcm.c (compute_insert_delete, pre_edge_lcm,
5535         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
5536         * lower-subreg.c (resolve_reg_notes): Likewise.
5537         * mode-switching.c (optimize_mode_switching): Likewise.
5538
5539 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5540
5541         * bt-load.c (add_btr_def, migrate_btr_def,
5542         branch_target_load_optimize): Avoid C++ keywords.
5543         * caller-save.c (insert_restore, insert_save, insert_one_insn):
5544         Likewise.
5545         * combine.c (subst, simplify_set, make_extraction,
5546         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
5547         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
5548         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
5549
5550 2008-07-15  Richard Guenther  <rguenther@suse.de>
5551
5552         PR middle-end/36369
5553         * c-common.c (strict_aliasing_warning): Do not warn for
5554         TYPE_REF_CAN_ALIAS_ALL pointers.
5555         (c_common_get_alias_set): may_alias types are not special.
5556         * tree.c (build_pointer_type_for_mode): Look up the may_alias
5557         attribute and set can_ref_all accordingly.
5558         (build_reference_type_for_mode): Likewise.
5559         * doc/extend.texi (may_alias): Clarify.
5560
5561 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5562
5563         PR target/36780
5564         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
5565         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
5566
5567 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5568
5569         PR target/31568
5570         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
5571         gcc_assert, instead call output_operand_lossage.
5572
5573 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
5574
5575         * builtins.c (std_canonical_va_list): Treat structure based
5576         va_list types.
5577
5578 2008-07-15  Ben Elliston  <bje@au.ibm.com>
5579
5580         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
5581
5582 2007-07-14  Rafael Avila de Espindola  <espindola@google.com>
5583
5584         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
5585         is set.
5586
5587 2008-07-14  Jan Hubicka  <jh@suse.cz>
5588
5589         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
5590         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
5591         fix predicates and constraints.
5592         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
5593         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
5594
5595 2008-07-14  Doug Kwan  <dougkwan@google.com>
5596
5597         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
5598         additional option file arm/eabi.opt.
5599         * config/arm/eabi.h (File): New configuration file for EABI targets.
5600         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
5601         SUBSUBTARGET_EXTRA_SPECS.
5602         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
5603         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
5604         from STARTFILE_SPEC so that it can be referenced in an override.
5605         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
5606         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
5607         can be referenced in an override.
5608         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
5609         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
5610         so that it can be referenced in an override.
5611         (LINK_SPEC): Use BPABI_LINK_SPEC.
5612         * config/arm/eabi.opt (File): New.
5613
5614 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5615
5616         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
5617         (FIXED_VALUE_H): New variable.
5618         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
5619         input.h, fixed-value.h.
5620         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
5621         (BASIC_BLOCK_H): Use $(BITMAP_H).
5622         (FUNCTION_H): Add varray.h.
5623         (IPA_REFERENCE_H): Use $(BITMAP_H).
5624         (CGRAPH_H): Add $(BASIC_BLOCK_H).
5625         (DF_H): Use $(BITMAP_H).
5626         (GGC_H): Add statistics.h.
5627         (INSN_ADDR_H): New.
5628         (INSN_ATTR_H): Use it.
5629         (SYSTEM_H): Add safe-ctype.h, filenames.h.
5630         (INPUT_H): New.
5631         (SYMTAB_H): Add $(OBSTACK_H).
5632         (CPP_INTERNAL_H): New.
5633         (TREE_DUMP_H): Add tree-pass.h.
5634         (TREE_FLOW_H): Use $(BITMAP_H)
5635         (PRETTY_PRINT_H): Use $(INPUT_H).
5636         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
5637         (GSTAB_H): New.
5638         (BITMAP_H): New.
5639         (many object files): Fix lots of header dependencies throughout.
5640
5641 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5642
5643         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
5644         New macros.
5645         (s-gtyp-input): Use them to write tmp-gi.list.
5646         (echo_to_gi.list): Remove.
5647
5648 2008-07-14  Richard Guenther  <rguenther@suse.de>
5649
5650         * tree-ssa-sccvn.c (pre_info): Remove.
5651         (switch_to_PRE_table): Likewise.
5652         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
5653         (set_hashtable_value_ids): Do not create value-ids for the
5654         optimistic tables.
5655         (run_scc_vn): Remove double test.  Remove bogus special-case
5656         in value-number printing.
5657         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
5658         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
5659         SSA_NAME_VALUE.
5660         * tree-flow-inline.h (get_value_handle): Remove.
5661         * tree-flow.h (get_value_handle): Remove.
5662
5663 2008-07-14  Martin Jambor  <mjambor@suse.cz>
5664
5665         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
5666         in which we generate arithmetics is not a subrange.
5667
5668 2008-07-14  Martin Jambor  <mjambor@suse.cz>
5669
5670         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
5671
5672 2008-07-14  Richard Guenther  <rguenther@suse.de>
5673
5674         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
5675
5676 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
5677
5678         PR target/36745
5679         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
5680         reload for symbol refs moved to r0 with -fPIC.
5681         (legitimize_pic_address): Use the target register as temporary
5682         reg if possible.
5683         (emit_symbolic_move): Adjust comment.
5684         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
5685         New expanders.
5686
5687 2008-07-14  Ben Elliston  <bje@au.ibm.com>
5688
5689         * c-common.h (C_CPP_HASHNODE): New macro.
5690         * coretypes.h (struct cpp_token): Forward declare.
5691         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
5692         the context-sensitive keyword method.
5693         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
5694         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
5695         expand_bool_pixel): New.
5696         (altivec_categorize_keyword): New function.
5697         (init_vector_keywords): New function.
5698         (rs6000_macro_to_expand): Likewise.
5699         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
5700         compiling an ISO C dialect.
5701
5702 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
5703
5704         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
5705         (create_expression_by_pieces): Fix typo.
5706         (do_regular_insertion): Use debug counter here too.
5707
5708 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
5709
5710         PR target/35492.
5711         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
5712         CONST_OK_FOR_LETTER_P.  All port-local users changed.
5713         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
5714         implement Kp matching power-of-two.
5715         (CONSTRAINT_LEN): Define to match.
5716         * config/cris/cris.md: Replace all use of constraint K with Kc.
5717         ("*btst*): Use Kp for operand 0 of last alternative.
5718
5719 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5720
5721         PR testsuite/36440
5722         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
5723         and quad formats.
5724
5725 2008-07-13  Jan Hubicka  <jh@suse.cz>
5726
5727         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
5728         to be mangled too.
5729
5730 2008-07-13  Richard Guenther  <rguenther@suse.de>
5731
5732         PR middle-end/36811
5733         * langhooks.c (lhd_print_error_function): Deal with recursive
5734         BLOCK trees.
5735
5736 2008-07-12  Jan Hubicka  <jh@suse.cz>
5737
5738         * cgraph.c (assembler_name_hash): New static var.
5739         (hash_node_by_assembler_name, eq_assembler_name): New.
5740         (cgraph_node_for_asm): Use hashtable.
5741         (cgraph_remove_node): Maintain hashtable.
5742         (change_decl_assembler_name): Sanity check that names are not changing
5743         after aliasing was processed.
5744         * cgraph.h (varpoon_node): Add next GGC marker.
5745         * tree.c (decl_assembler_name_equal): Constify.
5746         (decl_assembler_name_hash): New.
5747         * tree.h (decl_assembler_name_equal): Constify.
5748         (decl_assembler_name_hash): Update.
5749
5750 2008-07-12  David Daney  <ddaney@avtrex.com>
5751
5752         * config/mips/driver-native.c (host_detect_local_cpu): Handle
5753         sb1 and r5000 cpus.
5754
5755 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
5756
5757         * doc/md.texi: Document the MIPS "v" constraint.
5758         * config/mips/mips.h (reg_class): Revert last change.
5759         (REG_CLASS_NAMES): Likewise.
5760         (REG_CLASS_CONTENTS): Likewise.
5761         * config/mips/mips.c (mips_regno_to_class): Likewise.
5762         * config/mips/constraints.md (v): Likewise, but add documentation.
5763         Add a comment to say that this constraint should not be used in
5764         gcc code.
5765
5766 2008-07-11  DJ Delorie  <dj@redhat.com>
5767
5768         * config/h8300/h8300.md (length): Fix branch offset limit.
5769
5770 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
5771
5772         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
5773         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
5774         (avr_hard_regno_scratch_ok): New function.
5775         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
5776         * config/avr/avr.md (all peepholes that request a scratch register):
5777         Remove avr_peep2_scratch_safe use.
5778
5779 2008-07-11  Tom Tromey  <tromey@redhat.com>
5780             Ian Lance Taylor  <iant@google.com>
5781
5782         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
5783         (struct c_common_resword): Define.
5784         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
5785         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
5786         (c_common_reswords, num_c_common_reswords): Declare.
5787         * c-common.c (c_common_reswords): New global const array.
5788         (num_c_common_reswords): New const int.
5789         * c-parser.c (struct resword, reswords): Don't define.
5790         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
5791         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
5792         than reswords.  If warning about C++ keywords, give them a special
5793         RID code.
5794         (c_lex_one_token): Warn about C++ keywords.  Call
5795         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
5796         (c_parser_external_declaration): Look for RID_xxx rather than
5797         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
5798         (c_parser_statement_after_labels): Likewise.
5799         (c_parser_objc_class_instance_variables): Likewise.
5800         (c_parser_objc_class_declaration): Likewise.
5801         (c_parser_objc_try_catch_statement): Likewise.
5802         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
5803         (declspecs_add_type): Likewise.
5804
5805 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
5806
5807         * ggc-page.c (alloc_page):
5808         Substituting xmalloc, xcalloc with
5809         XNEWVEC and XCNEWVAR macros which add the
5810         needed casts.
5811
5812 2008-07-11  Richard Guenther  <rguenther@suse.de>
5813
5814         PR tree-optimization/36765
5815         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
5816         aliases from HEAP vars to SMTs.
5817
5818 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5819
5820         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
5821         * configure.ac (loose_warn): Move -Wc++-compat from here...
5822         (strict_warn): ...to here.
5823         * configure: Regenerate.
5824
5825 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
5826
5827         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
5828         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
5829         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
5830         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
5831         excluding more specific h8300-*-* and sh-*-* targets.
5832
5833 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
5834
5835         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
5836         (eliminate): Ditto.
5837         (execute_pre): Call loop_optimizer_finalize in early exit.
5838
5839 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
5840
5841         PR middle-end/36790
5842         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
5843         uids in the bitmap, not just VAR_DECL uids.
5844
5845         PR rtl-optimization/36419
5846         * combine-stack-adj.c (adjust_frame_related_expr): New function.
5847         (combine_stack_adjustments_for_block): Call it if needed.  Delete
5848         correct insn.
5849         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
5850         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
5851         prologue sp adjustment.
5852
5853 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
5854
5855         PR other/28322
5856         * opts.c (print_ignored_options): Report postponed diagnostics for
5857         unknown -Wno-* options as warnings, not errors.
5858         (postpone_unknown_option_error): Renamed to...
5859         (postpone_unknown_option_warning): ... this.
5860
5861 2008-07-09  Doug Kwan  <dougkwan@google.com>
5862
5863         Revert:
5864         2008-07-08  Doug Kwan  <dougkwan@google.com>
5865
5866         * config/arm/arm.opt (mandroid): New option.
5867         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
5868         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
5869         (CC1_SPEC): Same.
5870         (CC1PLUS_SPEC): Same.
5871         (LIB_SPEC): Same.
5872         (STARTFILE_SPEC): Same.
5873         (ENDFILE_SPEC): Same.
5874         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
5875         used.
5876
5877 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
5878
5879         PR target/35802
5880         * config/mips/mips.h (reg_class): Remove V1_REG.
5881         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
5882         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
5883         instead of V1_REGS.
5884         (mips_get_tp): New function.
5885         (mips_legitimize_tls_address): Use it.
5886         * config/mips/constraints.md (v): Delete.
5887         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
5888         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
5889         After reload, split into a move and ...
5890         (*tls_get_tp_<mode>_split): ...this new instruction.
5891
5892 2008-07-09  David Daney  <ddaney@avtrex.com>
5893
5894         * config/mips/driver-native.c: Include coretypes.h and tm.h.
5895
5896 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
5897
5898         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
5899         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
5900         Add c argument.
5901         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
5902         htab_delete should be called.  Don't free c.
5903         (lookup_tmp_var): Create temp_htab lazily.
5904         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
5905         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
5906         callers.
5907         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
5908         lower_omp_ordered, lower_omp_critical, lower_omp_for,
5909         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
5910         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
5911         * tree-sra.c (generate_element_init): Likewise.
5912         * tree-mudflap.c (execute_mudflap_function_ops,
5913         execute_mudflap_function_decls): Likewise.
5914         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
5915         * tree-gimple.h (struct gimplify_ctx): New type.
5916         (push_gimplify_context): Adjust prototype.
5917
5918 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
5919
5920         * tree-ssa-pre.c (phi_translate_1): Update placement of
5921         add_to_value calls.
5922
5923 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
5924
5925         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
5926         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
5927         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
5928         * targhooks.c (default_hard_regno_scratch_ok): New function.
5929         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
5930         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
5931         * recog.c:  Include "target.h".
5932         (peep2_find_free_register): Add check for global regs. Add target
5933         specific check.
5934         * Makefile.in (recog.o): Depend on target.h.
5935
5936 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
5937
5938         * config/sh/sh.c (sh_canonical_va_list_type): New.
5939         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
5940
5941 2008-07-09  Raksit Ashok <raksit@google.com>
5942
5943         * doc/invoke.texi (Option Summary): Mention new option
5944         -Wdisallowed-function-list=...
5945         (Warning Options): Document -Wdisallowed-function-list=...
5946         * common.opt (Wdisallowed-function-list=): New flag.
5947         * flags.h (warn_disallowed_functions): External definition of new
5948         boolean warning flag.
5949         (warn_if_disallowed_function_p): Declare new function.
5950         * opts.c (warning_disallowed_functions): New static variable.
5951         (warn_disallowed_functions): New boolean warning flag.
5952         (warn_if_disallowed_function_p): New function.
5953         (add_comma_separated_to_vector): Rename
5954         add_instrument_functions_exclude_list to this.
5955         (common_handle_option): Handle new option. Rename calls to
5956         add_instrument_functions_exclude_list into calls to
5957         add_comma_separated_to_vector.
5958         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
5959         based on flag warn_disallowed_functions.
5960
5961 2008-07-09  Christian Bruel  <christian.bruel@st.com>
5962
5963         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
5964          instead of get_attr_length.
5965
5966 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5967
5968         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
5969         keywords.
5970         * genemit.c (gen_insn): Likewise.
5971         * gengtype.c (note_def_vec): Likewise.
5972         * gengtype.h (note_def_vec): Likewise.
5973         * genoutput.c (struct data, output_insn_data, process_template,
5974         gen_expand, gen_split, note_constraint): Likewise.
5975         * genrecog.c (new_decision, add_to_sequence, factor_tests,
5976         make_insn_sequence): Likewise.
5977         * gensupport.c (record_insn_name): Likewise.
5978
5979 2008-07-08  Doug Kwan  <dougkwan@google.com>
5980
5981         * config/arm/arm.opt (mandroid): New option.
5982         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
5983         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
5984         (CC1_SPEC): Same.
5985         (CC1PLUS_SPEC): Same.
5986         (LIB_SPEC): Same.
5987         (STARTFILE_SPEC): Same.
5988         (ENDFILE_SPEC): Same.
5989         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
5990         used.
5991
5992 2008-07-08  Raksit Ashok  <raksit@google.com>
5993
5994         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
5995         (set_storage_via_setmem): Fix expected_align parameter.
5996         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
5997         missing from the list.
5998         * doc/md.texi (movmem): Explicitly state that expected alignment is
5999         to be expressed in bytes.
6000         (setmem): Explicitly state that expected alignment is to be expressed
6001         in bytes.
6002
6003 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
6004
6005         * reload.c (find_reloads_subreg_address): Do not require validity
6006         of address in original mode before reloading address.
6007
6008 2008-07-07  Tianwei Sheng  <tianweis@google.com>
6009
6010         * df-core.c (df_remove_problem): Adjust the access to avoid out of
6011         bounds array access.
6012
6013 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
6014
6015         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
6016
6017 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
6018
6019         Fix PR tree-optimization/23455
6020         Fix PR tree-optimization/35286
6021         Fix PR tree-optimization/35287
6022         * Makefile.in (OBJS-common): Remove tree-vn.o.
6023         (tree-vn.o): Remove.
6024         * dbgcnt.def: Add treepre_insert debug counter.
6025         * gcc/tree-flow.h (add_to_value): Updated for other changes.
6026         (debug_value_expressions): Ditto.
6027         (print_value_expressions): Ditto.
6028         * tree-pretty-print.c (dump_generic_node): Updated for
6029         VALUE_HANDLE removal.
6030         * tree-ssa-dom.c (record_equality): Ditto.
6031         (cprop_operand): Ditto.
6032         (lookup_avail_expr): Ditto.
6033         * tree-ssa-threadedge.c
6034         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
6035         (simplify_control_stmt_condition): Ditto.
6036         * tree.c (tree_code_size): Ditto.
6037         (tree_node_structure): Ditto.
6038         (iterative_hash_expr): Ditto.
6039         * tree.def: Ditto.
6040         * tree.h (VALUE_HANDLE_ID): Ditto.
6041         (VALUE_HANDLE_EXPR_SET): Ditto.
6042         (struct tree_value_handle): Ditto.
6043         (union tree_node): Ditto.
6044         * treestruct.def: Ditto.
6045         * tree-vn.c: Removed.
6046         * tree-ssa-pre.c: Rewritten entirely.
6047         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
6048         (constant_value_ids): Ditto.
6049         (vn_nary_op_t): Moved to header.
6050         (vn_phi_t): Ditto.
6051         (vn_reference_op_t): Ditto
6052         (vn_reference_t): Ditto.
6053         (next_value_id): New variable.
6054         (VN_INFO): Add an assert.
6055         (vn_constant_eq): New function.
6056         (vn_constant_hash): Ditto.
6057         (get_or_alloc_constant_value_id): Ditto.
6058         (value_id_constant_p): Ditto.
6059         (vn_reference_compute_hash): De-staticify.
6060         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
6061         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
6062         (valueize_refs): Update opcode if it changes from ssa name to constant.
6063         (vn_reference_lookup_1): Add new argument.
6064         (vn_reference_lookup):  Ditto.
6065         (vn_reference_lookup_pieces): New function.
6066         (vn_reference_insert): Add return type. Modify to deal with value ids.
6067         (vn_reference_insert_pieces):  New function.
6068         (vn_nary_op_compute_hash): De-staticify.
6069         (vn_nary_op_eq): Ditto.
6070         (vn_nary_op_lookup_pieces): New function.
6071         (vn_nary_op_lookup): Add new argument.
6072         (vn_nary_op_insert_pieces): New function.
6073         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
6074         (vn_phi_insert): Ditto.
6075         (visit_unary_op): Update for callee changes.
6076         (visit_binary_op): Ditto.
6077         (visit_reference_op_load): Ditto.
6078         (visit_reference_op_store): Ditto.
6079         (init_scc_vn): Init next_value_id, constant_to_value_id and
6080         constant_value_ids.
6081         (free_scc_vn): Free them.
6082         (set_hashtable_value_ids): New function.
6083         (run_scc_vn): Use it.
6084         (get_max_value_id): New function.
6085         (get_next_value_id): Ditto.
6086         (expressions_equal_p): Moved from tree-vn.c
6087         (sort_vuses): Ditto.
6088         (sort_vuses_heap): Ditto.
6089         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
6090         above).
6091         * tree.c (iterative_hash_hashval_t): Made non-static
6092         * tree.h (iterative_hash_hashval_t): Declare it.
6093
6094 2008-07-08  Martin Jambor  <mjambor@suse.cz>
6095
6096         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
6097         instead of ipa_create_node_params.
6098         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
6099         ipa_check_create_edge_args, free them with
6100         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
6101
6102         * ipa-prop.c: Include flags.h and tree-inline.h.
6103         (ipa_node_params_vector): New variable.
6104         (ipa_edge_args_vector): New variable.
6105         (edge_removal_hook_holder): New variable.
6106         (node_removal_hook_holder): New variable.
6107         (edge_duplication_hook_holder): New variable.
6108         (node_duplication_hook_holder): New variable.
6109         (ipa_detect_param_modifications): Check for presence of modified flags.
6110         (ipa_compute_jump_functions): Check for presence of jump functions.
6111         (ipa_free_edge_args_substructures): New function.
6112         (ipa_create_node_params): Removed.
6113         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
6114         (ipa_free_node_params_substructures): New function.
6115         (ipa_free_all_node_params): Changed to deallocate the on-the-side
6116         vector.
6117         (ipa_edge_removal_hook): New function.
6118         (ipa_node_removal_hook): New function.
6119         (duplicate_array): New function.
6120         (ipa_edge_duplication_hook): New function.
6121         (ipa_node_duplication_hook): New function.
6122         (ipa_register_cgraph_hooks): New function.
6123         (ipa_unregister_cgraph_hooks): New function.
6124         (free_all_ipa_structures_after_ipa_cp): New function.
6125
6126         * ipa-prop.h: Include vec.h.
6127         (ipa_node_params_t): New typedef with vector types for it.
6128         (ipa_edge_args_t):  New typedef with vector types for it.
6129         (IPA_NODE_REF): Changed to access an on-the-side vector.
6130         (IPA_EDGE_REF): Changed to access an on-the-side vector.
6131         (ipa_check_create_node_params): New function.
6132         (ipa_check_create_edge_args): New function.
6133
6134         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
6135         all users.
6136
6137 2008-07-07  Tom Tromey  <tromey@redhat.com>
6138
6139         * configure, config.in: Rebuilt.
6140         * configure.ac: Don't check for scandir or alphasort.
6141
6142 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
6143
6144         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
6145         types immediately after creating them.
6146
6147 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
6148
6149         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
6150
6151 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
6152
6153         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
6154         dump_constraint_graph.
6155         (dump_constraint_edge): New function.
6156         (dump_constraint_graph): New function.
6157         (debug_constraint_graph): New function.
6158         (dump_constraint): Removed useless comparison.
6159         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
6160         (dump_constraint_graph): Declare.
6161         (debug_constraint_graph): Declare.
6162         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
6163
6164 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
6165
6166         * config/i386/i386.c (is_va_list_char_pointer): New.
6167         (ix86_va_start): Replace compare with ms_va_list_type_node
6168         by is_va_list_char_pointer.
6169         (ix86_gimplify_va_arg): Likewise.
6170
6171 2008-07-07  Martin Jambor  <mjambor@suse.cz>
6172
6173         * cgraph.c (cgraph_edge_max_uid): New variable.
6174         (struct cgraph_edge_hook_list): New type.
6175         (struct cgraph_node_hook_list): New type.
6176         (struct cgraph_2edge_hook_list): New type.
6177         (struct cgraph_2node_hook_list): New type.
6178         (first_cgraph_edge_removal_hook): New variable.
6179         (first_cgraph_node_removal_hook): New variable.
6180         (first_cgraph_edge_duplicated_hook): New variable.
6181         (first_cgraph_node_duplicated_hook): New variable.
6182         (cgraph_add_edge_removal_hook): New function.
6183         (cgraph_remove_edge_removal_hook): New function.
6184         (cgraph_call_edge_removal_hooks):  New function.
6185         (cgraph_add_node_removal_hook):  New function.
6186         (cgraph_remove_node_removal_hook):  New function.
6187         (cgraph_call_node_removal_hooks):  New function.
6188         (cgraph_add_edge_duplication_hook):  New function.
6189         (cgraph_remove_edge_duplication_hook):  New function.
6190         (cgraph_call_edge_duplication_hooks):  New function.
6191         (cgraph_add_node_duplication_hook):  New function.
6192         (cgraph_remove_node_duplication_hook):  New function.
6193         (cgraph_call_node_duplication_hooks):  New function.
6194         (cgraph_create_edge): Assign to edge uid.
6195         (cgraph_remove_edge): Call edge removal hooks.
6196         (cgraph_node_remove_callees): Call edge removal hooks.
6197         (cgraph_node_remove_callers): Call edge removal hooks.
6198         (cgraph_remove_node): Call node removal hooks.
6199         (cgraph_clone_edge): Call edge duplication hooks.
6200         (cgraph_clone_node): Call node duplication hooks.
6201
6202         * cgraph.h (cgraph_edge): New field uid.
6203         (cgraph_edge_hook): New type.
6204         (cgraph_node_hook): New type.
6205         (cgraph_2edge_hook): New type.
6206         (cgraph_2node_hook): New type.
6207
6208 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
6209
6210         * config.in: Regenerate.
6211
6212 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
6213
6214         * gcc.c (print_sysroot): New.
6215         (option_map, display_help, process_command): Handle the
6216         -print-sysroot option.
6217         (main): Print the sysroot if requested.
6218         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
6219
6220 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6221
6222         PR target/34780
6223         * unwind-pe.h (size_of_encoded_value): add attribute unused.
6224
6225 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
6226
6227         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
6228         (assign_parm_setup_block_p): Also check mode of entry_parm.
6229
6230 2008-07-07  Richard Guenther  <rguenther@suse.de>
6231
6232         * tree-ssa-structalias.h (set_used_smts): Remove.
6233         * tree-ssa-structalias.c (used_smts): Likewise.
6234         (set_used_smts): Likewise.
6235         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
6236         call to set_used_smts.
6237
6238 2008-07-07  Richard Guenther  <rguenther@suse.de>
6239
6240         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
6241         (new_var_info): Set it to false.
6242         (solution_set_add): Correctly handle pointers outside a var and
6243         inside a field.
6244         (type_safe): Treat variables with is_full_var properly.
6245         (do_sd_constraint): Likewise.
6246         (do_ds_constraint): Likewise.
6247         (process_constraint): Remove zeroing offset for !use_field_sensitive.
6248         (get_constraint_for_ptr_offset): New function.
6249         (get_constraint_for_component_ref): For addresses at least include
6250         the last field of the variable.  Handle is_full_vars properly.
6251         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
6252         (handle_ptr_arith): Remove.
6253         (find_func_aliases): Simplify assignment handling.
6254         (create_function_info_for): For parameter and result varinfos set
6255         is_full_var flag.
6256         (create_variable_info_for): Set is_full_var flag whenever we
6257         just created a single varinfo for a decl.
6258         (init_alias_vars): Initialize use_field_sensitive from
6259         max-fields-for-field-sensitive parameter.
6260
6261 2008-07-07  Richard Guenther  <rguenther@suse.de>
6262
6263         PR tree-optimization/36713
6264         * tree-flow-inline.h (is_call_used): New function.
6265         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
6266         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
6267         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
6268
6269 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
6270
6271         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
6272
6273 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
6274
6275         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
6276
6277 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
6278             Nathan Sidwell  <nathan@codesourcery.com>
6279
6280         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
6281         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
6282         tmake_file.
6283         * config/m68k/t-linux: New.
6284         * doc/install.texi: Document m68k-*-linux is now multilibbed by
6285         default.
6286
6287 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
6288
6289         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
6290         * config/m68k/m68k-devices.def: Remove multilibs that only differ
6291         by MAC/EMAC.
6292
6293 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6294
6295         * gcc.c (execute): Fix -Wc++-compat warning.
6296
6297 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
6298
6299         PR target/36720
6300         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
6301         constant for little endian.
6302
6303 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
6304
6305         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
6306         mips_base_mips16 instead of TARGET_MIPS16.
6307         (mips_base_mips16): Declare.
6308         * config/mips/mips.c (mips_base_mips16): Make global.
6309         (was_mips16_p): Remove GTY marker.
6310         (was_mips16_pch_p): New variable.
6311         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
6312         (mips_override_options): Force to non-MIPS16 mode initially.
6313         Do not complain about MIPS16 PIC incompatibilities here.
6314         Only allow -mgpopt if -mexplicit-relocs is in force for
6315         non-MIPS16 code.
6316
6317 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
6318
6319         * configure.ac: Check for caddr_t, define to char * if not defined.
6320         * configure: Regenerate.
6321         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
6322         (mmap_gt_pch_use_address): Likewise.
6323         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
6324
6325 2008-07-06  Richard Guenther  <rguenther@suse.de>
6326
6327         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
6328         (new_var_info): Deal with it.
6329         (solution_set_add): Likewise.
6330         (bitpos_of_field): Make signed, fix.
6331         (struct fieldoff): Remove type and decl fields.  Make size field
6332         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
6333         flags.
6334         (fieldoff_compare): Deal with it.
6335         (push_fields_onto_fieldstack): Remove has_union argument, glob
6336         adjacent non-pointer fields together.
6337         (create_function_info_for): Do not set has_union.
6338         (create_variable_info_for): Simplify.
6339
6340 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
6341
6342         * config.gcc (extra_headers): Add cross-stdarg.h for target
6343         x86_64-*-* and i?86-*-*.
6344         * config/i386/cross-stdarg.h: New.
6345         * builtins.c (std_fn_abi_va_list): New.
6346         (std_canonical_va_list_type): New.
6347         (stabilize_va_list): Replace va_list_type_node use by
6348         mtarget.canonical_va_list_type.
6349         (gimplify_va_arg_expr): Likewise.
6350         (expand_builtin_va_copy): Replace va_list_type_node use by
6351         mtarget.fn_abi_va_list.
6352         * tree-sra.c (is_va_list_type): New helper.
6353         (decl_can_be_decomposed_p): Replace
6354         va_list_type_node use by is_va_list_type.
6355         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
6356         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
6357         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
6358         * config/i386/i386-protos.h (ix86_get_valist_type): New.
6359         (ix86_enum_va_list): New.
6360         * config/i386/i386.c (sysv_va_list_type_node): New.
6361         (ms_va_list_type_node): New.
6362         (ix86_function_type_abi): Remove sorry.
6363         (ix86_build_builtin_va_list_abi): New.
6364         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
6365         for 64-bit targets.
6366         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
6367         (ix86_init_builtins_va_builtins_abi): New.
6368         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
6369         for 64-bit targets.
6370         (ix86_handle_abi_attribute): New.
6371         (attribute_spec): Add sysv_abi and ms_abi.
6372         (ix86_fn_abi_va_list): New.
6373         (ix86_canonical_va_list_type): New.
6374         (ix86_enum_va_list): New.
6375         (TARGET_FN_ABI_VA_LIST): New.
6376         (TARGET_CANONICAL_VA_LIST_TYPE): New.
6377         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
6378         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
6379         (TARGET_CANONICAL_VA_LIST_TYPE): New.
6380         (TARGET_ENUM_VA_LIST): New.
6381         * expr.h (std_fn_abi_va_list): New.
6382         (std_canonical_va_list_type): New.
6383         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
6384         (TARGET_CANONICAL_VA_LIST_TYPE): New.
6385         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
6386         TARGET_CANONICAL_VA_LIST_TYPE.
6387         * target.h (struct gcc_target): Add fn_abi_va_list hook
6388         and canonical_va_list_type hook.
6389
6390 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6391
6392         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
6393         integral and pointer types.
6394
6395 2008-07-04  Roger Sayle  <roger@eyesopen.com>
6396
6397         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
6398         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
6399
6400 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
6401
6402         PR target/36684
6403         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
6404
6405 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
6406
6407         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
6408         build_gimple_modify_stmt.
6409         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
6410         gimple operand.  Use fold_build* instead of build*.
6411
6412 2008-07-04  Richard Guenther  <rguenther@suse.de>
6413
6414         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
6415         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
6416         properly to compute the reachability set if we do field-sensitive PTA.
6417         * invoke.texi (max-fields-for-field-sensitive): Document default.
6418         * opts.c (decode_options): Set max-fields-for-field-sensitive to
6419         100 for optimize >= 2.
6420
6421 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6422
6423         * ggc-zone.c (lookup_page_table_if_allocated,
6424         set_page_table_entry, zone_find_object_size, alloc_small_page,
6425         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
6426         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
6427         -Wc++-compat and/or -Wcast-qual warnings.
6428
6429 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
6430
6431         PR target/36634
6432         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
6433         pic_offset_table_rtx to be marked as used here.
6434         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
6435         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
6436         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
6437         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
6438         !TARGET_SECURE_PLT.
6439
6440 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6441
6442         * alloc-pool.c (hash_descriptor, eq_descriptor,
6443         alloc_pool_descriptor): Fix -Wc++-compat warnings.
6444         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
6445         Likewise.
6446         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
6447         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
6448         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
6449         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
6450         Likewise.
6451
6452 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
6453
6454         * tree-flow.h (loop_only_exit_p): Declare.
6455         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
6456         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
6457         the number of iterations if it is constant.  Otherwise, if this is the
6458         only possible exit of the loop, use the conservative estimate on the
6459         number of iterations of the entire loop if available.
6460
6461 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
6462
6463         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
6464         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
6465         Add synchronization functions.
6466         * config/sync.c: New file.
6467         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
6468         (LIBGCC_SYNC_CFLAGS): Likewise.
6469
6470 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
6471
6472         PR target/36710
6473         * config/i386/i386.md (mode): Add TF to "mode" attribute.
6474         (*pushtf_sse): New insn pattern.
6475         (pushtf splitters): New splitters.
6476
6477 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
6478
6479         PR middle-end/35736
6480         * predict.c (build_predict_expr): Use void_type_node for the tree
6481         type, instead of NULL_TREE.
6482
6483 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
6484
6485         * config/i386/i386.c (contains_aligned_value_p): Return true
6486         for TCmode.
6487         (ix86_data_alignment): Align TCmode to 128bits.
6488         (ix86_local_alignment): Likewise.
6489
6490 2008-07-03  Andrew Haley  <aph@redhat.com>
6491
6492         PR bootstrap/33304
6493         * vec.h (VEC_TA): New.
6494         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
6495         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
6496         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
6497         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
6498         (C_COMMON_FIXED_TYPES): Remove first arg.
6499         (C_COMMON_FIXED_MODE_TYPES): Likewise.
6500         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
6501         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
6502         not to use empty macro arguments.
6503
6504 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
6505
6506         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
6507         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
6508         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
6509         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
6510         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
6511         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
6512         config/ia64/crtn.asm, config/m68hc11/larith.asm,
6513         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
6514         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
6515         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
6516         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
6517         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
6518         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
6519         config/rs6000/e500crtres64gpr.asm,
6520         config/rs6000/e500crtres64gprctr.asm,
6521         config/rs6000/e500crtrest32gpr.asm,
6522         config/rs6000/e500crtrest64gpr.asm,
6523         config/rs6000/e500crtresx32gpr.asm,
6524         config/rs6000/e500crtresx64gpr.asm,
6525         config/rs6000/e500crtsav32gpr.asm,
6526         config/rs6000/e500crtsav64gpr.asm,
6527         config/rs6000/e500crtsav64gprctr.asm,
6528         config/rs6000/e500crtsavg32gpr.asm,
6529         config/rs6000/e500crtsavg64gpr.asm,
6530         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
6531         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
6532         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
6533         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
6534         config/sparc/sol2-cn.asm: Remove .file directives.
6535
6536 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
6537
6538         * resource.c (mark_referenced_resources): Look inside
6539         UNSPEC_VOLATILEs and ASM_INPUTs.
6540
6541 2008-07-02  Ian Lance Taylor  <iant@google.com>
6542
6543         * rtlanal.c (add_reg_note): New function.
6544         * rtl.h (add_reg_note): Declare.
6545         * auto-inc-dec.c (attempt_change): Use add_reg_note.
6546         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
6547         * builtins.c (expand_builtin_longjmp): Likewise.
6548         (expand_builtin_nonlocal_goto): Likewise.
6549         * calls.c (emit_call_1, expand_call): Likewise.
6550         * cfgexpand.c (add_reg_br_prob_note): Likewise.
6551         * cfglayout.c (fixup_reorder_chain): Likewise.
6552         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6553         (commit_one_edge_insertion): Likewise.
6554         * combine.c (move_deaths, distribute_notes): Likewise.
6555         * df-problems.c (df_set_note): Likewise.
6556         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
6557         (set_unique_reg_note): Likewise.
6558         (emit_copy_of_insn_after): Likewise.
6559         * expr.c (expand_expr_real): Likewise.
6560         * gcse.c (add_label_notes): Likewise.
6561         * haifa-sched.c (create_check_block_twin): Likewise.
6562         * jump.c (mark_jump_label_1): Likewise.
6563         * loop-doloop.c (add_test, doloop_modify): Likewise.
6564         * loop-unswitch.c (compare_and_jump_seq): Likewise.
6565         * lower-subreg.c (move_eh_region_note): Likewise.
6566         * optabs.c (emit_libcall_block): Likewise.
6567         * predict.c (predict_insn): Likewise.
6568         (combine_predictions_for_insn): Likewise.
6569         * recog.c (peephole2_optimize): Likewise.
6570         * regmove.c (try_auto_increment): Likewise.
6571         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
6572         * reload.c (find_reloads): Likewise.
6573         * reload1.c (fixup_eh_region_note): Likewise.
6574         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
6575         * reorg.c (delete_prior_computation): Likewise.
6576         (delete_computation, dbr_schedule): Likewise.
6577         * config/pa/pa.c (legitimize_pic_address): Likewise.
6578         * config/sh/sh.c (sh_reorg): Likewise.
6579
6580 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
6581
6582         PR target/36669
6583         * config/libgcc-glibc.ver: Add %exclude.
6584         * config/m32r/libgcc-glibc.ver: Likwise.
6585         * config/s390/libgcc-glibc.ver: Likwise.
6586         * config/sh/libgcc-glibc.ver: Likwise.
6587         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
6588
6589         * config/i386/libgcc-glibc.ver: New.
6590
6591         * config/i386/libgcc-x86_64-glibc.ver: Removed.
6592
6593 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
6594
6595         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
6596         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
6597         i[34567]86-*-linux*, x86_64-*-linux*.  Add
6598         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
6599         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
6600         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
6601         i[34567]86-*-linux*, x86_64-*-linux*.
6602
6603         * libgcc-std.ver: Add empty GCC_4.4.0.
6604
6605         * mkmap-symver.awk: Support multiple versions per symbol.
6606
6607         * config/i386/i386.c (ix86_init_builtins): Always define
6608         __builtin_fabsq and __builtin_copysignq with fallbacks.
6609         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
6610         and __builtin_copysignq if SSE2 isn't available.
6611
6612         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
6613         (LIBGCC2_TF_CEXT): Likwise.
6614         (TF_SIZE): Likwise.
6615
6616         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
6617
6618         * config/i386/sfp-machine.h: Moved to libgcc.
6619
6620         * config/i386/sfp-machine.h: New.
6621         * config/i386/t-linux: Likwise.
6622
6623         * config/i386/t-darwin: Remove softfp_wrap_start and
6624         softfp_wrap_end.
6625         * config/i386/t-darwin64: Likewise.
6626
6627         * config/i386/t-fprules-softfp64: Renamed to ...
6628         * config/i386/t-fprules-softfp: This.
6629
6630         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
6631         and softfp_wrap_end.
6632
6633 2008-07-02  Jason Merrill  <jason@redhat.com>
6634
6635         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
6636
6637         * tree.c (ctor_to_list): New fn.
6638         * tree.h: Declare it.
6639         (CONSTRUCTOR_ELT): New macro.
6640         (CONSTRUCTOR_NELTS): New macro.
6641
6642 2008-07-02  Richard Guenther  <rguenther@suse.de>
6643
6644         * tree-ssa-structalias.c (struct variable_info): Reorder
6645         to fill padding on 64bit hosts.  Make collapsed_to an int.
6646         (get_varinfo_fc): Deal with that.
6647         (new_var_info): Likewise.
6648         (collapse_rest_of_var): Likewise.
6649
6650 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
6651
6652         * doc/install.texi (--enable-java-home): Document.
6653         (--enable-aot-compile-rpm): Likewise.
6654         (--with-arch-directory): Likewise.
6655         (--with-os-directory): Likewise.
6656         (--with-origin-name): Likewise.
6657         (--with-arch-suffix): Likewise.
6658         (--with-jvm-root-dir): Likewise.
6659         (--with-jvm-jar-dir): Likewise.
6660         (--with-python-dir): Likewise.
6661
6662 2008-07-02  Richard Guenther  <rguenther@suse.de>
6663
6664         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
6665         from decls explicitly.  Merge operand checking from tuples.
6666
6667 2008-07-02  Martin Jambor  <mjambor@suse.cz>
6668
6669         * tree-switch-conversion.c: Included timevar.h which I forgot before.
6670
6671 2008-07-02  Martin Jambor  <mjambor@suse.cz>
6672
6673         * tree-switch-conversion.c: Included timevar.h
6674         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
6675
6676         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
6677
6678 2008-07-02  Martin Jambor  <mjambor@suse.cz>
6679
6680         * tree-switch-conversion.c: Corrected various comments and
6681         whitespace issues
6682         (build_constructors): Fixed minor formatting mistakes.
6683
6684         * invoke.texi (Optimize Options): Corrected the
6685         switch-conversion-max-branch-ratio parameter.
6686
6687 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
6688
6689         * final.c (asm_insn_count): Return zero for an empty asm body.
6690
6691 2008-07-02  Richard Guenther  <rguenther@suse.de>
6692
6693         * bitmap.h (bitmap_set_bit): Return bool.
6694         (bitmap_clear_bit): Likewise.
6695         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
6696         write to the bitmap if it would.
6697         (bitmap_clear_bit): Likewise.
6698         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
6699         bitmap_set_bit return value.
6700         (add_pred_graph_edge): Likewise.
6701         (add_graph_edge): Likewise.
6702         (do_sd_constraint): Likewise.
6703         (do_ds_constraint): Likewise.
6704
6705 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6706
6707         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
6708         Fix -Wc++-compat and/or -Wcast-qual warnings.
6709         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
6710         gen_regparm_prefix): Likewise.
6711         * vmsdbgout.c (write_modbeg, lookup_filename,
6712         vmsdbgout_source_line, vmsdbgout_init): Likewise.
6713
6714 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
6715
6716         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
6717         defaults.h definition apply.
6718
6719 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
6720
6721         * function.c (assign_parm_remove_parallels): New.
6722         (assign_parm_setup_block_p): Do not return true for non-BLKmode
6723         PARALLELs.
6724         (assign_parm_setup_block): Do not handle them.
6725         (assign_parm_setup_reg, assign_parm_setup_stack): Call
6726         assign_parm_remove_parallels.
6727
6728 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
6729
6730         * c-typeck.c (convert_for_assignment): Use
6731         vector_targets_convertible_p.
6732         * c-common.c (vector_targets_convertible_p): New.
6733         * c-common.h (vector_targets_convertible_p): New prototype.
6734         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
6735         opaque_p_V2SI_type_node.
6736
6737 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
6738
6739         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
6740         RFmode constants.
6741
6742 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
6743
6744         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
6745         TFmode constants via two element DImode vector for hosts with
6746         HOST_BITS_PER_WIDE_INT < 64.
6747         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
6748         also for HOST_BITS_PER_WIDE_INT < 64.
6749
6750 2008-07-01  Richard Guenther  <rguenther@suse.de>
6751
6752         PR tree-optimization/36666
6753         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
6754         (get_constraint_exp_from_ssa_var): Split into ...
6755         (get_constraint_exp_for_temp): ... this ...
6756         (get_constraint_for_ssa_var): ... and that.
6757         Return constraint expressions for all touched sub-fields
6758         if the results address is not taken.
6759         (process_constraint): Remove assertion that aggregate
6760         assignments do not happen at this place.
6761         (get_constraint_for_component_ref): Add address_p argument.
6762         Return constraint expressions for all touched sub-fields
6763         if the results address is not taken.
6764         (do_deref): Use get_constraint_exp_for_temp.
6765         (get_constraint_for_1): Rename from ...
6766         (get_constraint_for): ... this.  Add the old function as wrapper.
6767         (do_structure_copy): Use get_constraint_for_1.
6768
6769 2008-07-01  Martin Jambor  <mjambor@suse.cz>
6770
6771         * Makefile.in (tree-switch-conversion.o): Add.
6772         (OBJS-common): Add tree-swtch-conversion.o.
6773         * passes.c (init_optimization_passes): Add pass_convert_switch.
6774         * tree-pass.h: (pass_convert_switch): Add.
6775         * tree-switch-conversion.c: New file.
6776         * gcc.dg/tree-ssa/cswtch.c: New testcase.
6777         * common.opt (ftree-cswtch): New option.
6778         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
6779         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
6780         * opts.c (decode_options): Set flag_tree_switch_conversion when
6781         optimization level is >= 2.
6782         * doc/invoke.texi (Optimize Options): Added description of
6783         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
6784
6785 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6786
6787         * config/darwin-driver.c (darwin_default_min_version): Fix
6788         -Wc++-compat warnings.
6789
6790 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
6791
6792         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
6793         of operand 0.
6794
6795 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
6796
6797         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
6798
6799 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
6800
6801         PR rtl-optimization/34744
6802         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
6803         (df_scan_free_internal): Free data structures not
6804         allocated in storage pools.
6805         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
6806         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
6807         df_scan_free_mws_vec.
6808         * dse.c (dse_step6): Free offset_map_p and offset_map_n
6809         unconditionally.
6810
6811 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
6812
6813         * config/i386/i386.c (contains_aligned_value_p): Return true
6814         for __float128.
6815         (ix86_function_arg_boundary): Return its natural boundary
6816         for __float128.
6817         (return_in_memory_32): Don't check TDmode.
6818         (ix86_split_to_parts): Support splitting into 4 parts and
6819         support TFmode for 32bit target.
6820         (ix86_split_long_move): Support splitting into 4 parts.
6821         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
6822         for SSE2.
6823         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
6824         (ix86_init_builtins): Here.
6825         (ix86_scalar_mode_supported_p): Always return true for TFmode.
6826         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
6827         'q' and 'w', respectively.
6828
6829         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
6830         TARGET_64BIT.
6831         (movtf_internal): Likewise.
6832         (<code>tf2): Likewise.
6833         (*absnegtf2_sse): Likewise.
6834         (copysign<mode>3): Likewise.
6835         (copysign<mode>3_const): Likewise.
6836         (copysign<mode>3_var): Likewise.
6837         (define_split UNSPEC_COPYSIGN): Likewise.
6838         * config/i386/sse.md (*nandtf3): Likewise.
6839         (<code>tf3): Likewise.
6840         (*<code>tf3): Likewise.
6841
6842 2008-06-30  Joey Ye  <joey.ye@intel.com>
6843             H.J. Lu  <hongjiu.lu@intel.com>
6844
6845         * global.c (compute_regsets): Set frame_pointer_needed here.
6846         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
6847
6848 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6849
6850         * doc/install.texi (specific): Expand Windows build notes.
6851
6852 2008-06-30  Ira Rosen  <irar@il.ibm.com>
6853
6854         PR tree-optimization/36648
6855         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
6856         number of prolog iterations by step. Fix the comment.
6857
6858 2008-06-30  Richard Guenther  <rguenther@suse.de>
6859
6860         PR middle-end/36671
6861         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
6862         handle calls from ECF_MALLOC functions.
6863         (handle_pure_call): ECF_MALLOC functions do not return
6864         call-used memory.
6865         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
6866
6867 2008-06-29  Andreas Schwab  <schwab@suse.de>
6868
6869         * config/m68k/m68k.c (print_operand): Always print a float
6870         constant in hex.
6871         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
6872         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
6873         Remove macros.
6874
6875         * config/rs6000/x-linux64: Remove never used file.
6876
6877 2008-06-29  Richard Guenther  <rguenther@suse.de>
6878
6879         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
6880         prototype.
6881         (struct alias_info): Move ...
6882         * tree-ssa-alias.c: ... here.
6883         (update_alias_info): Declare.
6884         (compute_may_aliases): Call it.
6885         (update_alias_info): New function.
6886         * tree-ssa-structalias.c (update_alias_info): Move ...
6887         * tree-ssa-alias.c (update_alias_info_1): ... here.
6888         * tree-ssa-structalias.c (process_constraint_1): Remove
6889         unused from_call argument.  Rename to ...
6890         (process_constraint): ... this.  Delete old wrapper.
6891         (make_constraint_to): Adjust callers.
6892         (handle_const_call): Likewise.
6893         (handle_pure_call): Likewise.
6894         (init_base_vars): Likewise.
6895         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
6896         (find_func_aliases): We don't need structure copies for
6897         complex types.
6898         (make_constraint_from_anything): Remove.
6899         (create_variable_info_for): For globals make constraints
6900         from escaped, not from anything.
6901         (compute_points_to_sets): Do not call update_alias_info.
6902         (ipa_pta_execute): Use make_constraint_from.
6903
6904 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6905
6906         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
6907         (bitmap.o-warn, dominance.o-warn): New.
6908         * configure.ac (cxx_compat_warn): Delete.
6909         (loose_warn): Add -Wcast-qual and -Wc++-compat.
6910         * system.h: Remove #pragma diagnostic for -Wcast-qual and
6911         -Wc++-compat.
6912         * configure: Regenerate.
6913
6914         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
6915         warnings.
6916
6917 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6918
6919         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
6920         * df-scan.c (df_notes_rescan): Likewise.
6921         * ggc-page.c (set_page_table_entry): Likewise.
6922         * intl.c (gcc_gettext_width): Likewise.
6923         * varasm.c (get_unnamed_section, get_noswitch_section,
6924         get_section): Likewise.
6925
6926 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
6927
6928         * regrename.c (build_def_use): Don't copy RTX.
6929
6930 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
6931
6932         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
6933         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
6934         punctuation.  Use @ref instead of @xref.
6935         (Function Names): Remove stray @display/@end display.
6936         (C++ Attributes): Use @ref instead of @xref.
6937         (Deprecated Features): Fix punctuation around @xref.
6938         (Backwards Compatibility): Likewise.
6939         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
6940
6941 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
6942
6943         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
6944         constants for E500 double.
6945
6946 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6947
6948         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
6949         element type of const_vector.
6950
6951 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
6952
6953         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
6954         Remove FLAGS_REG clobber from expander pattern.
6955         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
6956         (anddi3, andsi3, andhi3, andqi3): Ditto.
6957         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
6958         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
6959         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
6960         (ashlsi3, ashlhi3, ashlqi3): Ditto.
6961         (ashrsi3, ashrhi3, ashrqi3): Ditto.
6962         (lshrsi3, lshrhi3, lshrqi3): Ditto.
6963         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
6964         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
6965
6966 2008-06-28  Richard Guenther  <rguenther@suse.de>
6967
6968         * tree-ssa-structalias.c (callused_id, var_callused,
6969         callused_tree): Add.
6970         (handle_pure_call): New function.
6971         (find_func_aliases): Call it.
6972         (find_what_p_points_to): Handle the call-used set.
6973         (clobber_what_escaped): Likewise.
6974         (compute_call_used_vars): New function.
6975         (init_base_vars): Init the call-used variable.
6976         (do_sd_constraint): Do not propagate the solution from CALLUSED
6977         but use CALLUSED as a placeholder.
6978         (solve_graph): Likewise.
6979         * tree-flow-inline.h (gimple_call_used_vars): New function.
6980         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
6981         (compute_call_used_vars): Declare.
6982         * tree-ssa-alias.c (set_initial_properties): Call
6983         compute_call_used_vars.
6984         (reset_alias_info): Clear call-used variables.
6985         (add_call_clobber_ops): Assert we are not called for const/pure
6986         functions.  Remove handling of them.
6987         (add_call_read_ops): Handle pure functions by adding the
6988         call-used set of variables as VUSEs.
6989         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
6990         (delete_tree_ssa): Free it.
6991         * tree-dfa.c (remove_referenced_var): Clear the var from the
6992         call-used bitmap.
6993
6994 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
6995
6996         * tree.c (build_varargs_function_type_list): New.
6997         (build_function_type_list_1): New.
6998         (build_function_type_list): Use build_function_type_list_1.
6999         * tree.h (build_varargs_function_type_list): New.
7000
7001 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7002
7003         PR target/34856
7004         * config/spu/spu.c (spu_builtin_splats): Do not generate
7005         invalid CONST_VECTOR expressions.
7006         (spu_expand_vector_init): Likewise.
7007
7008 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
7009
7010         * optabs.c (libfunc_decls): New variable.
7011         (libfunc_decl_hash, libfunc_decl_eq): New functions.
7012         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
7013         for the same function twice.
7014
7015 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
7016
7017         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
7018         ix86_expand_binary_operator directly.
7019         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
7020         for operand 2.
7021         (*ashrti3_1): Ditto.
7022         (*lshrti3_1): Ditto.
7023         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
7024         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
7025         using only one splitter.  Conditionaly execute splitter before or
7026         after peephole2 pass.
7027         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
7028         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
7029         Use only one alternative in asm template.
7030         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
7031         in asm template.
7032         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
7033         "J" operand constraint for operand 2.
7034         (*ashldi3_cconly_rex64): Ditto.
7035         (*ashrdi3_cmp_rex64): Ditto.
7036         (*ashrdi3_cconly_rex64): Ditto.
7037         (*lshrdi3_cmp_rex64): Ditto.
7038         (*lshrdi3_cconly_rex64): Ditto.
7039         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
7040         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
7041         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
7042         gen_x86_shrd_1.
7043
7044 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
7045
7046         * gimplify.c (omp_is_private): Don't return true if decl is not
7047         already private on #pragma omp for or #pragma omp parallel for.
7048
7049         PR debug/36617
7050         * tree-cfg.c (struct move_stmt_d): Replace block field with
7051         orig_block and new_block fields.
7052         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
7053         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
7054         (move_block_to_fn): Replace vars_map and new_label_map arguments
7055         with struct move_stmt_d pointer.
7056         (replace_block_vars_by_duplicates): New function.
7057         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
7058         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
7059         all subblocks of ORIG_BLOCK to the new function.  Call
7060         replace_block_vars_by_duplicates.
7061         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
7062         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
7063         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
7064         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
7065         (expand_omp): Temporarily set input_location to the location of
7066         region's controlling stmt.
7067         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
7068         BIND_EXPR, push ctx->block_vars and gimplification vars into
7069         the BIND_EXPR and its block's BLOCK_VARS instead of directly
7070         into dest function.
7071         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
7072         there are any BLOCK_VARS.
7073         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
7074         OMP_PARALLEL or OMP_TASK stmt.
7075         (lower_omp): Save and restore input_location around the lower_omp_1
7076         call.
7077
7078 2008-06-27  Richard Guenther  <rguenther@suse.de>
7079
7080         PR tree-optimization/36400
7081         PR tree-optimization/36373
7082         PR tree-optimization/36344
7083         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
7084         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
7085         (update_alias_info): Remove call clobbering code.
7086         (make_constraint_to): New helper function.
7087         (make_escape_constraint): Likewise.
7088         (handle_rhs_call): Use it on all pointer containing arguments.
7089         Also mark the static chain escaped.
7090         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
7091         instead of ANYTHING.
7092         (make_constraint_from): New helper split out from ...
7093         (make_constraint_from_anything): ... here.
7094         (find_func_aliases): Add constraints for escape sites.
7095         (intra_create_variable_infos): Make constraints from NONLOCAL
7096         for parameters.
7097         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
7098         as ANYTHING.
7099         (clobber_what_p_points_to): Remove.
7100         (clobber_what_escaped): New function.
7101         (init_base_vars): Init NONLOCAL and ESCAPED.
7102         (do_sd_constraint): Do not propagate the solution from ESCAPED
7103         but use ESCAPED as a placeholder.
7104         (solve_graph): Likewise.
7105         * tree-flow.h (clobber_what_p_points_to): Remove.
7106         (clobber_what_escaped): Declare.
7107         * tree-ssa-alias.c (set_initial_properties): Call it.
7108         Remove code clobbering escaped pointers.
7109
7110 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
7111
7112         * function.c (allocate_struct_function): Only allocate a unique
7113         funcdef_no if the decl is nonzero.
7114
7115 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
7116
7117         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
7118         * config/mips/mips.c (mips_split_const_insns): New function.
7119         * config/mips/mips.md (move_type): New attribute.
7120         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
7121         (dword_mode): New attribute.
7122         (type): Avoid long line.  Map "move_type"s to "type"s,
7123         choosing "multi" for doubleword moves if appropriate.
7124         Swap MTC/MFC comments to match their declaration order.
7125         (extended_mips16): Default to "yes" if "move_type" is "sll0",
7126         "type" is "branch" or "jal" is "direct".
7127         (length): Handle "extended_mips16" first.  Make the default
7128         "0" for "ghost" instructions.  Set the length from "move_type".
7129         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
7130         of "type", with "sll0" for the register alternative.  Remove the
7131         "extended_mips16" attribute.
7132         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
7133         of "type", with "shift_shift" for the register alternative.
7134         Remove the "length" attribute.
7135         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
7136         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
7137         of "type", with "andi" for the register alternative.
7138         (*zero_extendqihi2): Likewise.
7139         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
7140         of "andi" instead of a "type" of "arith".
7141         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
7142         instead of "type".
7143         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
7144         (mov_<store>r, *mov<mode>_ra): Likewise.
7145         (extendsidi2): Use "move_type" instead of "type", with "move"
7146         for the register alternative.
7147         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
7148         of "type", with "signext" for the register alternative.
7149         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
7150         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
7151         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
7152         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
7153         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
7154         (unnamed branch insn): Likewise.
7155         (*movdi_gp32_fp64): Fold into...
7156         (*movdi_32bit): ...here.
7157         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
7158         (*movdf_hardfloat): ...this new pattern.
7159         (*movdf_softfloat): Remove redundant FPR alternatives.
7160         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
7161         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
7162         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
7163         the "move" attribute.
7164         (*movdi_32bit): Use "move_type" instead of "type" and remove the
7165         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
7166         and "store" for COP loads and stores.
7167         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
7168         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
7169         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
7170         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
7171         (*movtf_mips16, *movv2sf): Likewise.
7172         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
7173         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
7174         (mfhc1<mode>): Use "move_type" instead of "move".
7175         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
7176         (loadgp_blockage): Remove the "length" attribute.
7177         (blockage, set_got_version, update_got_version): Likewise.
7178         (call_internal): Remove the "extended_mips16" attribute.
7179         (call_value_internal, call_value_multiple_internal): Likewise.
7180         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
7181         instead of "move".
7182         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
7183         the "length" attribute.
7184
7185 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7186
7187         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
7188         -Wcast-qual warnings.
7189         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
7190         handle_pragma_pop_macro): Likewise.
7191         * collect2.c (resolve_lib_name): Likewise.
7192         * config/arc/arc.c (arc_init): Likewise.
7193         * config/arm/arm.c (neon_builtin_compare,
7194         locate_neon_builtin_icode): Likewise.
7195         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
7196         * config/bfin/bfin.c (bfin_init_machine_status,
7197         bfin_optimize_loop): Likewise.
7198         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
7199         * config/cris/cris.c (cris_init_expanders): Likewise.
7200         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
7201         * config/darwin.c (machopic_indirection_eq,
7202         machopic_indirection_name, machopic_output_indirection): Likewise.
7203         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
7204         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
7205         frv_optimize_membar): Likewise.
7206         * config/i386/cygwin.h (mingw_scan,
7207         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
7208         * config/i386/cygwin1.c (mingw_scan): Likewise.
7209         * config/i386/i386.c (machopic_output_stub): Likewise.
7210         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
7211         i386_pe_unique_section): Likewise.
7212         * config/ia64/ia64.c (ia64_init_machine_status,
7213         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
7214         Likewise.
7215         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
7216         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
7217         * config/m68k/m68k.c (m68k_handle_option,
7218         m68k_sched_md_init_global): Likewise.
7219         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
7220         mcore_unique_section): Likewise.
7221         * config/mips/mips.c (mips_block_move_straight,
7222         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
7223         Likewise.
7224         * config/mmix/mmix.c (mmix_init_machine_status,
7225         mmix_encode_section_info): Likewise.
7226         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
7227         * config/rs6000/rs6000.c (rs6000_init_machine_status,
7228         print_operand_address, output_toc, redefine_groups,
7229         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
7230         * config/s390/s390.c (s390_init_machine_status): Likewise.
7231         * config/score/score.c (score_block_move_straight,
7232         score_block_move_loop_body): Likewise.
7233         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
7234         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
7235         * emit-rtl.c (find_auto_inc): Likewise.
7236         * gcc.c (translate_options, process_command): Likewise.
7237         * reorg.c (dbr_schedule): Likewise.
7238         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
7239         * xcoffout.c (xcoffout_declare_function): Likewise.
7240
7241 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
7242
7243         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
7244         ipa-pta working again.
7245
7246 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
7247
7248         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
7249         genautomata.
7250
7251 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
7252
7253         * config.gcc (powerpc*-*-*): Add new core e500mc.
7254         * config/rs6000/e500mc.md: New file.
7255         * config/rs6000/rs6000.c (processor_costs): Add new costs for
7256         e500mc.
7257         (rs6000_override_options): Add e500mc case to
7258         processor_target_table. Altivec and Spe options not allowed
7259         with e500mc. Add isel instruction to e500mc by
7260         default. Initialize rs6000_cost for e500mc.
7261         (rs6000_issue_rate): Set issue rate for e500mc.
7262         * config/rs6000/rs6000.h (processor_type): Add
7263         PROCESSOR_PPCE500MC.
7264         (ASM_CPU_SPEC): Add e500mc.
7265         Set TARGET_ISEL to rs6000_isel.
7266         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
7267         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
7268         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
7269         Include e500mc.md.
7270         * doc/invoke.texi: Add e500mc to list of cpus.
7271
7272 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7273
7274         PR c/34867
7275         * c-lex.c (lex_charconst): Initialize unsignedp.
7276
7277 2008-06-27  Olivier Hainque  <hainque@adacore.com>
7278
7279         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
7280         documented assumptions.
7281
7282 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
7283
7284         * dwarf2out.c: Remove trailing white spaces.  Break long line
7285         in comments.
7286
7287 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
7288
7289         * libfuncs.h (LTI_synchronize): New libfunc_index.
7290         (synchronize_libfunc): Declare.
7291         * builtins.c (expand_builtin_synchronize): Consider using
7292         synchronize_libfunc before falling back on an asm blockage.
7293         * config/mips/mips.c: Include libfuncs.h
7294         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
7295
7296 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
7297
7298         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
7299         parameter.  Copy stack_reg to r11 where appropriate.
7300         (no_global_regs_above): Add gpr parameter.
7301         (rs6000_stack_info): Only add padding for SPE save area if we
7302         are saving SPE GPRs and CR.
7303         (saveres_routine_syms): New variable.
7304         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
7305         Define.
7306         (rs6000_savres_routine_sym): New function.
7307         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
7308         split out of...
7309         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
7310         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
7311         Tweak FPR out-of-line saving.
7312         (rs6000_make_savres_rtx): New function.
7313         (rs6000_use_multiple_p): New function.
7314         (rs6000_savres_strategy): New function.
7315         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
7316         out-of-line if appropriate.
7317         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
7318         if we are optimizing for size.
7319         (GP_SAVE_INLINE): Define.
7320         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
7321         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
7322         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
7323         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
7324         (*save_fpregs_<mode>): Add use of r11.
7325         (*restore_gpregs_<mode>): New insn.
7326         (*return_and_restore_gpregs_<mode>): New insn.
7327         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
7328         use r11.
7329         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
7330         (*restore_gpregs_spe): New insn.
7331         (*return_and_restore_gpregs_spe): New insn.
7332         * config/rs6000/predicates.md (save_world_operation): Fix check.
7333
7334 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
7335
7336         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
7337         this point, so assert that.
7338
7339 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
7340
7341         * cfganal.c: Include vec.h and vecprim.h.
7342         (compute_idf): Import from...
7343         * tree-into-ssa (compute_idf): ...here.
7344         * basic-block.h (compute_idf): Export.
7345
7346 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
7347
7348         * c-decl.c (merge_decls): Use !current_function_decl to check for
7349         extern declaration of C99 inline function being at file scope.
7350
7351 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
7352
7353         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
7354
7355 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7356
7357         * alias.c (record_alias_subset, init_alias_analysis): Fix
7358         -Wc++-compat and/or -Wcast-qual warnings.
7359         * attribs.c (lookup_attribute_spec): Likewise.
7360         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
7361         copy_bb, connect_traces,
7362         find_rarely_executed_basic_blocks_and_cr): Likewise.
7363         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
7364         note_btr_set, migrate_btr_defs): Likewise.
7365         * builtins.c (result_vector, expand_builtin_memcpy,
7366         expand_builtin_mempcpy_args, expand_builtin_strncpy,
7367         builtin_memset_read_str, expand_builtin_printf,
7368         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
7369         Likewise.
7370         * caller-save.c (mark_set_regs): Likewise.
7371         * calls.c (expand_call, emit_library_call_value_1): Likewise.
7372         * cgraph.c (cgraph_edge): Likewise.
7373         * combine.c (likely_spilled_retval_1): Likewise.
7374         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
7375         htab_counts_entry_del, get_coverage_counts): Likewise.
7376         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
7377         new_cselib_val): Likewise.
7378         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
7379         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
7380         Likewise.
7381         * df-core.c (df_compact_blocks): Likewise.
7382         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
7383         * df-scan.c (df_grow_reg_info, df_ref_create,
7384         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
7385         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
7386         df_record_entry_block_defs, df_record_exit_block_uses,
7387         df_bb_verify): Likewise.
7388         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
7389         DF_REF_EXTRACT_MODE_CONST): New.
7390         * dominance.c (get_immediate_dominator, get_dominated_by,
7391         nearest_common_dominator, root_of_dom_tree,
7392         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
7393         -Wc++-compat and/or -Wcast-qual warnings.
7394         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
7395         record_store, replace_read, check_mem_read_rtx, scan_insn,
7396         dse_step1, dse_record_singleton_alias_set): Likewise.
7397         * dwarf2asm.c (dw2_force_const_mem): Likewise.
7398
7399 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7400
7401         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
7402         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
7403         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
7404         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
7405         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
7406         add_ranges_num, add_ranges_by_labels, file_info_cmp,
7407         file_name_acquire, output_file_names, add_const_value_attribute,
7408         premark_used_types_helper, file_table_eq, file_table_hash,
7409         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
7410         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
7411         -Wcast-qual warnings.
7412         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
7413         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
7414         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
7415         gen_reg_rtx, start_sequence, init_emit): Likewise.
7416         * et-forest.c (et_new_occ, et_new_tree): Likewise.
7417         * except.c (init_eh_for_function, gen_eh_region,
7418         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
7419         arh_to_landing_pad, arh_to_label, add_action_record,
7420         add_call_site, switch_to_exception_section): Likewise.
7421         * expmed.c (synth_mult): Likewise.
7422         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
7423         store_expr): Likewise.
7424         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
7425         Likewise.
7426         * function.c (assign_stack_temp_for_type,
7427         allocate_struct_function, match_asm_constraints_1): Likewise.
7428         * gcov-io.c (gcov_allocate): Likewise.
7429         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
7430         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
7431         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
7432         record_one_set, insert_expr_in_table, insert_set_in_table,
7433         dump_hash_table, compute_hash_table_work, alloc_hash_table,
7434         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
7435         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
7436         -Wcast-qual warnings.
7437
7438 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7439
7440         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
7441         -Wcast-qual warnings.
7442         * gcc.c (process_command): Likewise.
7443         * genattrtab.c (oballoc): Use XOBNEW.
7444         (oballocvec): Define.
7445         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
7446         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
7447         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
7448         -Wc++-compat and/or -Wcast-qual warnings.
7449         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
7450         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
7451         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
7452         gen_presence_absence_set, gen_automaton, gen_regexp_el,
7453         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
7454         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
7455         add_excls, process_presence_absence_names,
7456         process_presence_absence_patterns, add_presence_absence,
7457         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
7458         get_free_state, add_arc, get_free_automata_list_el,
7459         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
7460         transform_3, cache_presence, create_ainsns, create_automata,
7461         create_state_ainsn_table, dfa_insn_code_enlarge,
7462         output_trans_func, output_min_issue_delay_func,
7463         output_dead_lock_func, output_reset_func,
7464         output_get_cpu_unit_code_func, output_dfa_start_func,
7465         expand_automata): Likewise.
7466         * genextract.c (gen_insn): Likewise.
7467         * gengtype-lex.l: Likewise.
7468         * gengtype.c (read_input_list, adjust_field_type,
7469         process_gc_options): Likewise.
7470         * genoutput.c (note_constraint): Likewise.
7471         * genpreds.c (mangle, add_constraint): Likewise.
7472         * genrecog.c (process_define_predicate, new_decision,
7473         add_to_sequence): Likewise.
7474         * gensupport.c (record_insn_name): Likewise.
7475
7476 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7477
7478         * config/i386/driver-i386.c (detect_caches_amd,
7479         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
7480         and/or -Wcast-qual warnings.
7481         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
7482         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
7483         gt_pch_save): Likewise.
7484         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
7485         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
7486         * global.c (compute_regsets): Likewise.
7487         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
7488         finish_graph_dump_file): Likewise.
7489         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
7490         unlink_bb_notes): Likewise.
7491         * integrate.c (get_hard_reg_initial_val): Likewise.
7492         * ipa-prop.c (ipa_push_func_to_list): Likewise.
7493         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
7494         * local-alloc.c (update_equiv_regs): Likewise.
7495         * loop-invariant.c (check_invariant_table_size,
7496         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
7497         Likewise.
7498         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
7499         altered_reg_used, mark_altered): Likewise.
7500         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
7501         insert_var_expansion_initialization,
7502         combine_var_copies_in_loop_exit, apply_opt_in_copies,
7503         release_var_copies): Likewise.
7504         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
7505         analyze_matrix_decl, add_allocation_site, analyze_transpose,
7506         analyze_accesses_for_phi_node, check_var_notmodified_p,
7507         check_allocation_function, find_sites_in_func,
7508         record_all_accesses_in_func, transform_access_sites,
7509         transform_allocation_sites): Likewise.
7510         * omp-low.c (new_omp_region, create_omp_child_function_name,
7511         check_omp_nesting_restrictions, check_combined_parallel,
7512         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
7513         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
7514         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
7515         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
7516         Likewise.
7517         * opts-common.c (prune_options): Likewise.
7518         * opts.c (add_input_filename, print_filtered_help,
7519         get_option_state): Likewise.
7520         * params.c (add_params): Likewise.
7521         * passes.c (set_pass_for_id, next_pass_1,
7522         do_per_function_toporder, pass_fini_dump_file): Likewise.
7523         * postreload.c (reload_cse_simplify_operands): Likewise.
7524         * predict.c (tree_predicted_by_p, tree_predict_edge,
7525         clear_bb_predictions, combine_predictions_for_bb): Likewise.
7526
7527 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7528
7529         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
7530         warnings.
7531         * recog.c (check_asm_operands, validate_change_1): Likewise.
7532         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
7533         subst_asm_stack_regs): Likewise.
7534         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
7535         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
7536         * regmove.c (reg_is_remote_constant_p): Likewise.
7537         * regrename.c (regrename_optimize, scan_rtx_reg,
7538         kill_clobbered_value, kill_set_value, kill_autoinc_value):
7539         Likewise.
7540         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
7541         regstat_compute_calls_crossed): Likewise.
7542         * reload1.c (init_reload, new_insn_chain,
7543         has_nonexceptional_receiver, reload, copy_reloads,
7544         calculate_needs_all_insns, init_elim_table): Likewise.
7545         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
7546         * rtl.c (shallow_copy_rtx_stat): Likewise.
7547         * rtlanal.c (parms_set): Likewise.
7548         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
7549         sbitmap_resize, sbitmap_vector_alloc): Likewise.
7550         * sched-ebb.c (earliest_block_with_similiar_load,
7551         add_deps_for_risky_insns): Likewise.
7552         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
7553         schedule_region): Likewise.
7554         * see.c (eq_descriptor_pre_extension,
7555         hash_descriptor_pre_extension, hash_del_pre_extension,
7556         eq_descriptor_properties, hash_descriptor_properties,
7557         hash_del_properties, see_seek_pre_extension_expr,
7558         see_initialize_data_structures, see_print_register_properties,
7559         see_print_pre_extension_expr, see_delete_merged_def_extension,
7560         see_delete_unmerged_def_extension, see_emit_use_extension,
7561         see_pre_delete_extension, see_map_extension, see_commit_changes,
7562         see_analyze_merged_def_local_prop,
7563         see_analyze_merged_def_local_prop,
7564         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
7565         see_set_prop_merged_def, see_set_prop_unmerged_def,
7566         see_set_prop_unmerged_use, see_print_one_extension,
7567         see_merge_one_use_extension, see_merge_one_def_extension,
7568         see_store_reference_and_extension, see_update_uses_relevancy,
7569         see_update_defs_relevancy): Likewise.
7570         * statistics.c (hash_statistics_hash, hash_statistics_eq,
7571         hash_statistics_free, curr_statistics_hash): Likewise.
7572         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
7573         expand_asm_operands, expand_return, case_bit_test_cmp,
7574         expand_case): Likewise.
7575         * stor-layout.c (start_record_layout): Likewise.
7576         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
7577         gt_pch_save_stringpool): Likewise.
7578         * tree-data-ref.c (hash_stmt_vertex_info,
7579         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
7580         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
7581
7582 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
7583
7584         PR target/36627
7585         * config/i386/i386.md : Change constraints of HImode and QImode
7586         immediate operands from "i" to "n".  Change SImode "ni" constraint to
7587         "i" and SImode "rmi" constraint to "g".  Remove all constraints
7588         from const0_operand and const1_operand predicated operands.
7589         (i): Change QImode and HImode attribute from "i" to "n".
7590         (*subqi_2): Change HImode operands to QImode.
7591         (*subqi_3): Ditto.
7592
7593 2008-06-25  Olivier Hainque  <hainque@adacore.com>
7594
7595         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
7596         sed substitutions.
7597
7598 2008-06-25  Richard Guenther  <rguenther@suse.de>
7599
7600         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
7601         not overflow the result type.
7602
7603 2008-06-25  Richard Guenther  <rguenther@suse.de>
7604
7605         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
7606         (vn_lookup): Likewise.
7607
7608 2008-06-25  Richard Guenther  <rguenther@suse.de>
7609
7610         PR tree-optimization/35518
7611         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
7612         * tree-sra.c (instantiate_element): Use fold_build3 to build
7613         BIT_FIELD_REFs.
7614         (try_instantiate_multiple_fields): Likewise.
7615
7616 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7617
7618         * config/rs6000/rs6000.md: Change all string instruction's clobber to
7619         be early clobbers.
7620
7621 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7622
7623         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
7624         use_backchain_to_restore_sp to true
7625         if the offset of the link register save area would go over the 32k - 1
7626         offset limit of the load
7627         instructions.
7628
7629 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
7630
7631         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
7632         anchor for the type-punning blurb.  Cross-reference "Structures
7633         unions enumerations and bit-fields implementation".  Provide a
7634         cast-through-pointer example.  Make final sentence self-contained.
7635         * doc/implement-c.texi (Structures unions enumerations and
7636         bit-fields implementation): Cross-reference the type-punning blurb
7637         in the -fstrict-aliasing documentation.
7638
7639 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7640
7641         PR middle-end/36594
7642         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
7643         the memory instead of the memory itself for the save area.
7644
7645 2008-06-24  Olivier Hainque  <hainque@adacore.com>
7646             Nicolas Roche  <roche@adacore.com>
7647
7648         * gengtype.c (srcdir_len): size_t instead of int.
7649         (get_file_realbasename): New function.  For F a filename, the real
7650         basename of F, with all the path components stripped.
7651         (get_file_srcdir_relative_path): New function.  For F a filename, the
7652         relative path to F from $(srcdir).
7653         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
7654         get_file_realbasename.  Adjust the head comment.
7655         (get_prefix_langdir_index): New function. For F a filename, return the
7656         lang_dir_names[] relative index of the language directory that is
7657         a prefix in F.
7658         (get_file_langdir): For F a filename, return the name of the language
7659         directory where F is located.
7660         (get_file_gtfilename): New function. The gt- output file name for an
7661         input filename F.
7662         (get_output_file_with_visibility): Replace in-line computations with
7663         uses of get_file_gtfilename and get_prefix_langdir_index.
7664         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
7665
7666 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
7667
7668         PR tree-optimization/36504
7669         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
7670         references without base address.
7671
7672 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
7673
7674         PR middle-end/36584
7675         * calls.c (expand_call): Increase alignment for recursive functions.
7676
7677 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
7678
7679         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
7680         (TARGET_FUNCTION_VALUE): New define.
7681         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
7682         * config/avr/avr.h (FUNCTION_VALUE): Remove.
7683
7684 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
7685
7686         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
7687         (fmod<mode>3): Ditto.
7688         (remainderxf3): Ditto.
7689         (remainder<mode>3): Ditto.
7690
7691 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
7692
7693         PR target/36533
7694         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
7695         REG is a hard register.
7696
7697         PR tree-optimization/36508
7698         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
7699         499, don't check it at all in release compilers.
7700
7701 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
7702
7703         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
7704         together with SSE_TARGET_MATH to disable insn pattern.
7705         (*fop_<MODEF:mode>_2_i387): Ditto.
7706         (*fop_<MODEF:mode>_3_i387): Ditto.
7707
7708 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
7709
7710         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
7711
7712 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7713
7714         PR middle-end/34906
7715         * gimplify.c (gimplify_asm_expr): Check the return code of
7716         parse_output_constraint call, set function return and is_inout
7717         value if it failed.
7718
7719 2008-06-22  Ian Lance Taylor  <iant@google.com>
7720
7721         * c-lex.c (narrowest_unsigned_type): Change itk to int.
7722         (narrowest_signed_type): Likewise.
7723         * c-typeck.c (c_common_type): Change local variable mclass to enum
7724         mode_class, twice.
7725         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
7726         tcc_comparison, not the tree code itself.
7727         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
7728         (c_expand_expr): Cast modifier to enum expand_modifier.
7729         * c-common.h (C_RID_CODE): Add casts.
7730         (C_SET_RID_CODE): Define.
7731         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
7732         (c_lex_one_token): Add cast to avoid warning.
7733         (c_parser_objc_type_name): Rename local typename to type_name.
7734         (check_no_duplicate_clause): Change code parameter to enum
7735         omp_clause_code.
7736         (c_parser_omp_var_list_parens): Change kind parameter to enum
7737         omp_clause_code.
7738         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
7739         c_parser_omp_list_var_parens.
7740         (c_parser_omp_threadprivate): Likewise.
7741         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
7742         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
7743         * c-format.c (NO_FMT): Define.
7744         (printf_length_specs): Use NO_FMT.
7745         (asm_fprintf_length_specs): Likewise.
7746         (gcc_diag_length_specs): Likewise.
7747         (scanf_length_specs): Likewise.
7748         (strfmon_length_specs): Likewise.
7749         (gcc_gfc_length_specs): Likewise.
7750         (printf_flag_specs): Change 0 to STD_C89.
7751         (asm_fprintf_flag_specs): Likewise.
7752         (gcc_diag_flag_specs): Likewise.
7753         (gcc_cxxdiag_flag_specs): Likewise.
7754         (scanf_flag_specs): Likewise.
7755         (strftime_flag_specs): Likewise.
7756         (strfmon_flag_specs): Likewise.
7757         (print_char_table): Likewise.
7758         (asm_fprintf_char_table): Likewise.
7759         (gcc_diag_char_table): Likewise.
7760         (gcc_tdiag_char_table): Likewise.
7761         (gcc_cdiag_char_table): Likewise.
7762         (gcc_cxxdiag_char_table): Likewise.
7763         (gcc_gfc_char_table): Likewise.
7764         (scan_char_table): Likewise.
7765         (time_char_table): Likewis.
7766         (monetary_char_table): Likewise.
7767         * c-format.h (BADLEN): Likewise.
7768
7769 2008-06-21  Ian Lance Taylor  <iant@google.com>
7770
7771         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
7772         Define END_OF_BASE_TREE_CODES around inclusion.
7773         * tree.c (tree_code_type): New global array.
7774         (tree_code_length, tree_code_name): Likewise.
7775         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
7776         $(lang_tree_files).
7777         (all-tree.def, s-alltree): New targets.
7778         (gencheck.h, s-gencheck): Remove.
7779         (tree.o): Depend upon all-tree.def.
7780         (build/gencheck.o): Remove gencheck.h dependency.
7781         (mostlyclean): Don't remove gencheck.h.
7782         * c-common.h (enum c_tree_code): Remove.
7783         * c-lang.c (tree_code_type): Remove.
7784         (tree_code_length, tree_code_name): Remove.
7785         * gencheck.c (tree_codes): Include all-tree.def, rather than
7786         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
7787         after it is used.
7788         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
7789         than tree.def.
7790         * cp/cp-tree.h (enum cplus_tree_code): Remove.
7791         (operator_name_info): Size to MAX_TREE_CODES.
7792         (assignment_operator_name_info): Likewise.
7793         * cp/cp-lang.c (tree_code_type): Remove.
7794         (tree_code_length, tree_code_name): Remove.
7795         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
7796         (assignment_operator_name_info): Likewise.
7797         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
7798         MAX_TREE_CODES.
7799         * cp/mangle.c (write_expression): Likewise.
7800         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
7801         * fortran/f95-lang.c (tree_code_type): Remove.
7802         (tree_code_length, tree_code_name): Remove.
7803         * java/java-tree.h (enum java_tree_code): Remove.
7804         * java/lang.c (tree_code_type): Remove.
7805         (tree_code_length, tree_code_name): Remove.
7806         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
7807         * objc/objc-act.h (enum objc_tree_code): Remove.
7808         * objc/objc-lang.c (tree_code_type): Remove.
7809         (tree_code_length, tree_code_name): Remove.
7810         * objcp/objcp-lang.c (tree_code_type): Remove.
7811         (tree_code_length, tree_code_name): Remove.
7812         * ada/ada-tree.h (enum gnat_tree_code): Remove.
7813         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
7814         * ada/misc.c (tree_code_type): Remove.
7815         (tree_code_length, tree_code_name): Remove.
7816
7817 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
7818
7819         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
7820         the grand_bitmap_obstack.
7821
7822 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7823
7824         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
7825         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
7826         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
7827         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
7828         move_stmt_r, new_label_mapper): Likewise.
7829         * tree-complex.c (cvc_lookup): Likewise.
7830         * tree-dfa.c (create_function_ann): Likewise.
7831         * tree-dump.c (dump_register): Likewise.
7832         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
7833         find_phi_replacement_condition): Likewise.
7834         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
7835         tree_function_versioning): Likewise.
7836         * tree-into-ssa.c (cmp_dfsnum): Likewise.
7837         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
7838         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
7839         get_nonlocal_debug_decl, convert_nonlocal_reference,
7840         convert_nonlocal_omp_clauses, get_local_debug_decl,
7841         convert_local_reference, convert_local_omp_clauses,
7842         convert_nl_goto_reference, convert_nl_goto_receiver,
7843         convert_tramp_reference, convert_call_expr): Likewise.
7844         * tree-outof-ssa.c (contains_tree_r): Likewise.
7845         * tree-parloops.c (reduction_phi, initialize_reductions,
7846         eliminate_local_variables_1, add_field_for_reduction,
7847         add_field_for_name, create_phi_for_local_result,
7848         create_call_for_reduction_1, create_loads_for_reductions,
7849         create_stores_for_reduction, create_loads_and_stores_for_name):
7850         Likewise.
7851         * tree-phinodes.c (allocate_phi_node): Likewise.
7852         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
7853         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
7854         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
7855         * tree-ssa-coalesce.c (compare_pairs): Likewise.
7856         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
7857         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
7858         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
7859         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
7860         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
7861         vn_nary_op_insert): Likewise.
7862         * tree-ssa.c (redirect_edge_var_map_add,
7863         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
7864         * tree-vectorizer.c (vectorize_loops): Likewise.
7865         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
7866         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
7867         tree_cons_stat, build1_stat, build_variant_type_copy,
7868         decl_init_priority_lookup, decl_fini_priority_lookup,
7869         decl_priority_info, decl_restrict_base_lookup,
7870         decl_restrict_base_insert, decl_debug_expr_lookup,
7871         decl_debug_expr_insert, decl_value_expr_lookup,
7872         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
7873         type_hash_add, get_file_function_name, tree_check_failed,
7874         tree_not_check_failed, tree_range_check_failed,
7875         omp_clause_range_check_failed, build_omp_clause,
7876         build_vl_exp_stat): Likewise.
7877         * value-prof.c (gimple_histogram_value,
7878         gimple_duplicate_stmt_histograms): Likewise.
7879         * var-tracking.c (attrs_list_insert, attrs_list_copy,
7880         unshare_variable, variable_union_info_cmp_pos, variable_union,
7881         dataflow_set_different_1, dataflow_set_different_2,
7882         vt_find_locations, variable_was_changed, set_variable_part,
7883         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
7884         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
7885         section_entry_hash, object_block_entry_eq,
7886         object_block_entry_hash, create_block_symbol,
7887         initialize_cold_section_name, default_function_rodata_section,
7888         strip_reg_name, set_user_assembler_name, const_desc_eq,
7889         build_constant_desc, output_constant_def, lookup_constant_def,
7890         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
7891         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
7892         default_internal_label): Likewise.
7893         * varray.c (varray_init, varray_grow): Likewise.
7894         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
7895
7896 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
7897
7898         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
7899         operators for "test" insn.  Macroize insn using SWI mode macro.
7900         (*jcc_fused_2): Ditto.
7901         (*jcc_fused_3): Macroize insn using SWI mode macro.
7902         (*jcc_fused_4): Ditto.
7903
7904 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
7905
7906         * tree-ssa-pre.c: Fix typo in comment.
7907         (init_antic, fini_antic): Add explicit funtions for
7908         initializing and deinitializing ANTIC and AVAIL sets.
7909         (create_expression_by_pieces): Fix typo in comment.
7910         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
7911         (execute_pre): Eventually dump details about ANTIC_IN.
7912
7913 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7914
7915         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
7916         * gcc.c (translate_options, init_spec, store_arg, read_specs,
7917         add_to_obstack, file_at_path, find_a_file, execute,
7918         add_preprocessor_option, add_assembler_option, add_linker_option,
7919         process_command, insert_wrapper, do_option_spec, do_self_spec,
7920         spec_path, do_spec_1, is_directory, main, used_arg,
7921         getenv_spec_function): Likewise.
7922         * tlink.c (symbol_hash_lookup, file_hash_lookup,
7923         demangled_hash_lookup, symbol_push, file_push, frob_extension):
7924         Likewise.
7925
7926 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
7927
7928         * doc/rtl.texi: Updated subreg section.
7929
7930 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
7931
7932         PR c++/36523
7933         * cgraphunit.c (cgraph_process_new_functions): Don't clear
7934         node->needed and node->reachable.
7935         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
7936         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
7937         (expand_task_call): Don't call expand_task_copyfn.
7938         (expand_task_copyfn): Renamed to...
7939         (finalize_task_copyfn): ... this.
7940
7941 2008-06-19  Jan Hubicka  <jh@suse.cz>
7942
7943         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
7944         clobbering framepointer.
7945
7946 2008-06-19  Jan Hubicka  <jh@suse.cz>
7947
7948         * tree-optimize.c (execute_early_local_optimizations): Set
7949         cgraph_state only at first invocation.
7950
7951 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7952
7953         * system.h (-Wc++-compat): Activate as a warning, no an error.
7954
7955 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
7956
7957         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
7958         instead of "#" in insn asm template.
7959         (*jcc_fused_2): Ditto.
7960
7961 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
7962
7963         * config/i386/i386.h (ix86_tune_indices)
7964         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
7965         (TARGET_FUSE_CMP_AND_BRANCH): New define.
7966         * config/i386/i386.md (*jcc_fused_1): New insn pattern
7967         (*jcc_fused_2): Ditto.
7968         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
7969         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
7970         (print operand): Handle 'E' and 'e' code.
7971
7972 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
7973
7974         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
7975         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7976         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7977
7978 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
7979
7980         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
7981         node->decl.
7982         (cgraph_expand_function): Use local copy of decl.
7983         (cgraph_expand_all_functions): Remove redundant initialization of
7984         order_pos.
7985         (cgraph_optimize): Reword internal_error message.
7986
7987 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
7988
7989         * arm-protos.h (arm_return_in_memory): Remove public
7990         arm_return_in_memory() prototype.
7991         * arm.c (arm_return_in_memory): Add static prototype, add target
7992         hook macro, change definition and comments.
7993         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
7994
7995 2008-06-19  Ben Elliston  <bje@au.ibm.com>
7996
7997         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
7998         real.c: Remove references to IEEE 754R.
7999         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
8000         * doc/libgcc.texi (Decimal float library routines): Likewise.
8001
8002 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8003
8004         * targhooks.h (struct gcc_target): New member unwind_word_mode.
8005         (default_unwind_word_mode): Add prototype.
8006         * targhooks.c (default_unwind_word_mode): New function.
8007         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
8008         instead of word_mode.
8009         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
8010         (TARGET_INITIALIZER): Use it.
8011
8012         * c-common.c (handle_mode_attribute): Support "unwind_word"
8013         mode attribute.
8014         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
8015
8016         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
8017         word_mode to access SjLj_Function_Context member "data".
8018         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
8019         conversion from targetm.eh_return_filter_mode () to
8020         targetm.unwind_word_mode () if they differ.
8021
8022         * builtin-types.def (BT_UNWINDWORD): New primitive type.
8023         (BT_FN_UNWINDWORD_PTR): New function type.
8024         (BT_FN_WORD_PTR): Remove.
8025         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
8026         * except.c (expand_builtin_extend_pointer): Convert pointer to
8027         targetm.unwind_word_mode () instead of word_mode.
8028
8029         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
8030         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
8031         (spu_unwind_word_mode): New function.
8032         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
8033         (TARGET_UNWIND_WORD_MODE): Define.
8034         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
8035
8036 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8037
8038         * config/spu/spu.c (reg_align): Remove.
8039         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
8040         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
8041         (spu_split_store): Likewise.
8042
8043 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
8044
8045         * gcc/tree-vn.c: Fix typo in comment.
8046
8047 2008-06-18  Jan Hubicka  <jh@suse.cz>
8048
8049         * cgraphunit.c (cgraph_optimize): Output debug info when doing
8050         toplevel reorder too.
8051
8052 2008-06-18  Jan Hubicka  <jh@suse.cz>
8053
8054         * c-opts.c (c_common_post_options): PCH is not compatible with
8055         no-unit-at-a-time.
8056         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
8057         -fno-toplevel-reorder by default now.
8058
8059 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8060
8061         PR documentation/30739
8062         * doc/install.texi (Prerequisites): Document dependency on awk.
8063
8064 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
8065             Ian Lance Taylor  <iant@google.com>
8066
8067         PR rtl-optimization/35604
8068         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
8069         only want to change jump destinations, not eventual label comparisons.
8070
8071 2008-06-16  Jan Hubicka  <jh@suse.cz>
8072
8073         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
8074         syntax errors.
8075         (cgraph_analyze_function): Likewise.
8076
8077 2008-06-16  Jan Hubicka  <jh@suse.cz>
8078
8079         * cgraph.h (cgraph_mark_if_needed): New function.
8080         * cgraphunit.c (cgraph_mark_if_needed): New function.
8081         * c-decl.c (duplicate_decl): Use it.
8082
8083 2008-06-16  Jan Hubicka  <jh@suse.cz>
8084
8085         * cgraph.c (cgraph_add_new_function): When in expansion state, do
8086         lowering.
8087
8088 2008-06-16  Jan Hubicka  <jh@suse.cz>
8089
8090         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
8091
8092 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
8093             Kazu Hirata  <kazu@codesourcery.com>
8094             Maxim Kuvyrkov  <maxim@codesourcery.com
8095
8096         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
8097         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
8098         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
8099         EXTRA_SPEC_FUNCTIONS.
8100         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
8101         (DRIVER_SELF_SPECS): Adjust.
8102         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
8103         * config/mips/st.h, config/mips/t-st: New.
8104         * config/mips/driver-native.c, config/mips/x-native: New.
8105         * doc/invoke.texi (MIPS): Document 'native' value for -march and
8106         -mtune options.
8107
8108 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
8109
8110         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
8111         from it.
8112         (ISA_HAS_FP_CONDMOVE): New macro.
8113         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
8114         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
8115         (ISA_HAS_NMADD3_NMSUB3): New macro.
8116         * config/mips/mips.c (mips_rtx_costs): Update.
8117         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
8118         compiling for ST Loongson 2E/2F.
8119         (madd<mode>): Rename to madd4<mode>.  Update.
8120         (madd3<mode>): New pattern.
8121         (msub<mode>): Rename to msub4<mode>.  Update.
8122         (msub3<mode>): New pattern.
8123         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
8124         (nmadd3<mode>): New pattern.
8125         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
8126         (nmadd3<mode>_fastmath): New pattern.
8127         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
8128         (nmsub3<mode>): New pattern.
8129         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
8130         (nmsub3<mode>_fastmath): New pattern.
8131         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
8132
8133 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
8134
8135         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
8136         (DF_REF_INSN_INFO): New.
8137         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
8138         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
8139         with a NULL DF_REF_INSN_INFO.
8140         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
8141         DF_INSN_SET.
8142         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
8143         DF_INSN_INFO_EQ_USES): New.
8144         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
8145         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
8146         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
8147         * df-core.c: Update comment for above changes.
8148         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
8149         DF_INSN_UID_* macros.
8150         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
8151         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
8152         insn rtx.  Update all callers.
8153         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
8154         df_ref_create_structure, df_insn_refs_collect): Likewise.
8155         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
8156         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
8157         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
8158         macros to access the insn refs.
8159         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
8160         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
8161         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
8162         for accessing the refs.
8163         (try_fwprop_subst): Likewise.
8164         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
8165         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
8166         for accessing the refs.
8167         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
8168         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
8169         to look at the insn refs.
8170         (record_uses): Likewise.
8171         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
8172         function anymore.
8173         (mark_artificial_uses): Don't mark_insn for artificial refs.
8174         (mark_reg_rependencies): Likewise.
8175
8176         * doc/rtl.texi: Remove documentation of ADDRESSOF.
8177
8178 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8179
8180         * configure: Regenerate.
8181
8182 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
8183
8184         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
8185         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8186         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8187
8188 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
8189
8190         * config/avr/avr.c (avr_mcu_t): Add attiny167.
8191         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8192         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8193
8194 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
8195
8196         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
8197         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8198         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8199
8200 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
8201
8202         * tree-ssa-sccvn.c: Fix format of comments.
8203
8204 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
8205
8206         * cgraph.c: Remove unneeded forward declarations of eq_node()
8207         and hash_node().
8208
8209 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
8210
8211         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
8212         REG_RETVAL notes.
8213         (see_update_relevancy): Likewise.
8214         * fwprop.c (try_fwprop_subst): Likewise.
8215         * rtlanal.c (noop_move_p): Likewise.
8216         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
8217         notes to non-existing libcall blocks.
8218         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
8219         Remove orig_set.
8220         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
8221         (dead_libcall_p): Remove.
8222         (delete_trivially_dead_insns): Don't use it.
8223         * web.c (union_defs): Remove comment about keeping nops.
8224         * gcse.c (hash_scan_insn): Don't take libcall pointers.
8225         (compute_hash_table_work): Don't track libcall notes.
8226         (do_local_cprop): Don't take libcall pointers.  Don't update
8227         libcall notes.
8228         (adjust_libcall_notes): Deleted.
8229         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
8230         ever have existed in the first place).
8231         (replace_store_insn): Don't try to remove libcall notes.
8232         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
8233         (resolve_reg_notes): Don't call them.
8234         (resolve_simple_move): Likewise.
8235         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
8236         Don't remove REG_RETVAL notes.
8237         * emit-rtl.c (try_split): Don't update libcall notes.
8238         (emit_copy_of_insn_after): Dito.
8239         * cselib.c (cselib_current_insn_in_libcall): Remove.
8240         (cselib_process_insn): Don't set/clear it.
8241         (new_elt_loc_list): Don't record it.
8242         (cselib_init): Don't initialize it.
8243         * cselib.c (struct elt_loc_list): Remove in_libcall field.
8244         * loop-invariant.c (find_invariant_insn): Don't look for libcall
8245         notes.
8246         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
8247         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
8248         (init_deps): Don't initialize it.
8249         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
8250         * combine.c (delete_noop_moves): Don't update libcall notes.
8251         (can_combine_p): Remove now pointless #if 0 block.
8252         (try_combine): Remove another obsolete #if 0 block.
8253         (distribute_notes): Don't distribute libcall notes.
8254         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
8255         * dce.c (libcall_dead_p): Remove.
8256         (delete_unmarked_insns): Don't handle libcall blocks.
8257         (preserve_libcall_for_dce): Remove.
8258         (prescan_insns_for_dce): Don't special-case libcall block insns.
8259         * reload1 (reload): Don't handle libcall notes.
8260         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
8261         documentation.
8262
8263 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
8264
8265         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
8266         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8267         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8268
8269 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
8270
8271         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
8272         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8273         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8274
8275 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8276
8277         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
8278
8279 2008-06-16  Ira Rosen  <irar@il.ibm.com>
8280
8281         PR tree-optimization/36493
8282         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
8283         the arguments list. Use VECTYPE to create vector pointer.
8284         (vectorizable_store): Fail if accesses through a pointer to vectype
8285         do not alias the original memory reference operands.
8286         Call vect_create_data_ref_ptr without the removed argument.
8287         (vectorizable_load): Likewise.
8288         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
8289         removed argument.
8290
8291 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
8292
8293         PR target/36336
8294         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
8295         reg_equiv_constant.
8296
8297 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8298
8299         * config/mips/loongson2ef.md: New file.
8300         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
8301         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
8302         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
8303         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
8304         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
8305         and loongson_2f.
8306         (loongson2ef.md): New include.
8307         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
8308         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
8309         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
8310         (loongson_gt_<mode>, loongson_extract_halfword)
8311         (loongson_insert_halfword_0, loongson_insert_halfword_2)
8312         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
8313         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
8314         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
8315         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
8316         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
8317         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
8318         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
8319         (vec_interleave_low<mode>): Define type attribute.
8320         * config/mips/mips.c (mips_ls2): New static variable.
8321         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
8322         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
8323         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
8324         Implement target scheduling hooks.
8325         (mips_multipass_dfa_lookahead): Update to handle tuning for
8326         Loongson 2E/2F.
8327         (mips_sched_init): Initialize data for Loongson scheduling.
8328         (mips_ls2_variable_issue): New static function.
8329         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
8330         Add sanity check.
8331         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
8332         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
8333         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
8334         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
8335         Handle ST Loongson 2E/2F cores.
8336         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
8337
8338 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8339
8340         * omp-low.c (extract_omp_for_data): Fix comment typo.
8341         * c.opt: Fix typo.
8342
8343 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8344
8345         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
8346         FIXME note about gcc/config.guess.
8347         * doc/options.texi (Option file format): Remove non-ASCII bytes.
8348         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
8349         * doc/cppopts.texi: Likewise.
8350         * doc/extend.texi: Likewise.
8351         * doc/gcc.texi: Likewise.
8352         * doc/gccint.texi: Likewise.
8353         * doc/gcov.texi: Likewise.
8354         * doc/gty.texi: Likewise.
8355         * doc/hostconfig.texi: Likewise.
8356         * doc/install.texi: Likewise.
8357         * doc/invoke.texi: Likewise.
8358         * doc/loop.texi: Likewise.
8359         * doc/makefile.texi: Likewise.
8360         * doc/md.texi: Likewise.
8361         * doc/passes.texi: Likewise.
8362         * doc/tm.texi: Likewise.
8363         * doc/tree-ssa.texi: Likewise.
8364         * doc/trouble.texi: Likewise.
8365
8366 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
8367             Nathan Sidwell  <nathan@codesourcery.com>
8368             Maxim Kuvyrkov  <maxim@codesourcery.com>
8369             Richard Sandiford  <rdsandiford@googlemail.com>
8370
8371         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
8372         * config/mips/mips-protos.h (mips_expand_vector_init): New.
8373         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
8374         builtins.
8375         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
8376         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
8377         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
8378         V8QImode cases.
8379         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
8380         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
8381         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
8382         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
8383         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
8384         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
8385         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
8386         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
8387         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
8388         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
8389         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
8390         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
8391         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
8392         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
8393         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
8394         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
8395         (mips_builtins): Add Loongson builtins.
8396         (mips_loongson_2ef_bdesc): New.
8397         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
8398         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
8399         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
8400         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
8401         New.
8402         (mips_expand_vector_init): New.
8403         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
8404         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
8405         if appropriate.
8406         * config/mips/mips.md: Add unspec numbers for Loongson
8407         builtins.  Include loongson.md.
8408         (MOVE64): Include Loongson vector modes.
8409         (SPLITF): Include Loongson vector modes.
8410         (HALFMODE): Handle Loongson vector modes.
8411         * config/mips/loongson.md: New.
8412         * config/mips/loongson.h: New.
8413         * config.gcc: Add loongson.h header for mips*-*-* targets.
8414         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
8415
8416 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
8417
8418         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
8419         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
8420         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
8421         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
8422         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
8423         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
8424         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
8425         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
8426         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
8427         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
8428         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
8429         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
8430         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
8431         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
8432         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
8433         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
8434         Remove use_fixproto=yes.
8435         (ia64*-*-hpux*): Remove comment about using fixproto.
8436         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
8437
8438 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8439
8440         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
8441         library rebuilds.
8442         * configure: Regenerate.
8443
8444 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
8445
8446         PR middle-end/36520
8447         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
8448         before evaluating it.
8449
8450 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
8451
8452         PR c/36507
8453         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
8454         nested inline functions.
8455         (start_decl, start_function): Don't invert DECL_EXTERNAL
8456         for nested inline functions.
8457
8458 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
8459
8460         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
8461         splits that must be made for correctness.
8462
8463 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
8464
8465         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
8466         (AVAIL_NON_MIPS16): Likewise.
8467         (mips_builtin_description): Replace target_flags with a predicate.
8468         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
8469         (dspr2_32): New availability predicates.
8470         (MIPS_BUILTIN): New macro.
8471         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
8472         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
8473         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
8474         Replace the TARGET_FLAGS parameters with AVAIL parameters.
8475         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
8476         (mips_dsp_32only_bdesc): Merge into...
8477         (mips_builtins): ...this new array.
8478         (mips_bdesc_map, mips_bdesc_arrays): Delete.
8479         (mips_init_builtins): Update after above changes.
8480         (mips_expand_builtin_1): Merge into...
8481         (mips_expand_builtin): ...here and update after above changes.
8482
8483 2008-06-12  Paul Brook  <paul@codesourcery.com>
8484
8485         * longlong.h (__arm__): Define count_leading_zeros.
8486         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
8487         (clzsi2, clzdi2): New functions.
8488         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
8489         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
8490         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
8491         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
8492         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
8493         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
8494         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
8495         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
8496         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
8497         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
8498
8499 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
8500
8501         * config/m68k/m68k.c (m68k_tune_flags): New.
8502         (override_options): Compute m68k_tune_flags.
8503         (MULL_COST, MULW_COST): Update for various variants of CFV2.
8504         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
8505
8506 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
8507
8508         PR middle-end/36506
8509         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
8510
8511 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8512
8513         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
8514         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
8515
8516 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8517
8518         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
8519         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
8520
8521 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
8522
8523         PR middle-end/36506
8524         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
8525         reductions.
8526
8527 2008-06-12  Richard Guenther  <rguenther@suse.de>
8528
8529         PR tree-optimization/36345
8530         * tree-flow.h (struct ptr_info_def): Align escape_mask,
8531         add memory_tag_needed flag.
8532         (may_alias_p): Declare.
8533         * tree-ssa-alias.c (may_alias_p): Export.
8534         (set_initial_properties): Use memory_tag_needed flag.
8535         (update_reference_counts): Likewise.
8536         (reset_alias_info): Reset memory_tag_needed flag.
8537         (create_name_tags): Check memory_tag_needed flag.
8538         (dump_points_to_info_for): Dump it.
8539         * tree-ssa-structalias.c (struct variable_info): Remove
8540         directly_dereferenced flag.
8541         (new_var_info): Do not initialize it.
8542         (process_constraint_1): Do not set it.
8543         (update_alias_info): Set is_dereferenced flag.
8544         (set_uids_in_ptset): Use may_alias_p.
8545         (set_used_smts): Check memory_tag_needed flag.
8546         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
8547         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
8548         memory_tag_needed flag.
8549         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
8550         from broken design.
8551
8552 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
8553
8554         * config/i386/i386.c (ix86_compute_frame_layout): Disable
8555         red zone for w64 abi.
8556         (ix86_expand_prologue): Likewise.
8557         (ix86_force_to_memory): Likewise.
8558         (ix86_free_from_memory): Likewise.
8559
8560 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
8561
8562         PR target/36425
8563         * config/rs6000/rs6000.c (rs6000_override_options): Set
8564         rs6000_isel conditionally to the absence of comand line override.
8565         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
8566         Remove duplicate rs6000_isel setting.
8567         * config/rs6000/eabispe.h: Ditto.
8568
8569 2008-06-11  Richard Guenther  <rguenther@suse.de>
8570
8571         * alias.c (get_alias_set): Use the element alias-set for arrays.
8572         (record_component_aliases): For arrays and vectors do nothing.
8573         * c-common.c (strict_aliasing_warning): Handle the cases
8574         of alias set zero explicitly.
8575         * Makefile.in (dfp.o-warn): Add -Wno-error.
8576
8577 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
8578
8579         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
8580         tune_32 tune_64.
8581         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
8582         tune_32 tune_64 to supported_defaults.  Allow values not
8583         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
8584         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
8585         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
8586         with_cpu_64 to generic for 64-bit-supporting configurations, not
8587         with_cpu.  Remove FIXMEs.
8588         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
8589         --with-arch-64, --with-tune-32, --with-tune-64): Document.
8590         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
8591         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
8592         arch_32 and arch_64.
8593
8594 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
8595             Olivier Hainque  <hainque@adacore.com>
8596
8597         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
8598         Use DECL_SIZE_UNIT to retrieve the size of the field.
8599
8600 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
8601
8602         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
8603         with function calls after declarations.  Lay out
8604         neon_float_type_node before further use.
8605
8606 2008-06-11  Richard Guenther  <rguenther@suse.de>
8607
8608         * tree-flow.h (may_point_to_global_var): Declare.
8609         * tree-ssa-alias.c (may_point_to_global_var): New function.
8610         * tree-ssa-sink.c (is_hidden_global_store): Use it.
8611
8612 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
8613
8614         * configure.ac: Teach that fido supports .debug_line.
8615         * configure: Regenerate.
8616
8617 2008-06-10  Tom Tromey  <tromey@redhat.com>
8618
8619         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
8620         debug hook.
8621
8622 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
8623
8624         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
8625         (encode_decimal64, decode_decimal64, encode_decimal128,
8626         decode_decimal128): Reverse order of 32-bit parts of value if host
8627         and target endianness differ.
8628
8629 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
8630
8631         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
8632         Avoid division by 0.
8633         (tree_mod_pow2_value_transform): Likewise.
8634         (tree_ic_transform): Likewise.
8635         (tree_stringops_transform): Likewise.
8636         (tree_mod_subtract_transform): Likewise.
8637         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
8638         (copy_edges_for_bb): Likewise.
8639         (initialize_cfun): Likewise.
8640
8641 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
8642
8643         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
8644         nonmemory_operand. Add "N" operand constraint.
8645         (*btsi): Ditto.
8646         (*jcc_btdi_mask_rex64): New instruction and split pattern.
8647         (*jcc_btsi_mask): Ditto.
8648         (*jcc_btsi_mask_1): Ditto.
8649
8650 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
8651
8652         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
8653         TYPE_CANONICAL for copied element type.
8654
8655 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
8656
8657         PR target/36473
8658         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
8659         Add m_CORE2 and m_GENERIC.
8660         * config/i386/predicates.md (bt_comparison_operator): New predicate.
8661         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
8662         (*btsi): Ditto.
8663         (*jcc_btdi_rex64): New instruction and split pattern.
8664         (*jcc_btsi): Ditto.
8665         (*jcc_btsi_1): Ditto.
8666         (*btsq): Fix Intel asm dialect operand order.
8667         (*btrq): Ditto.
8668         (*btcq): Ditto.
8669
8670 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
8671
8672         PR middle-end/36447
8673         * simplify-rtx.c (simplify_subreg): Add check for shift count
8674         greater than size.
8675
8676 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
8677
8678         * doc/md.texi: Synchronize with later constraints.md change.
8679         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
8680         with a C implementation.
8681         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
8682         MFLO handling.
8683         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
8684         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
8685         when moving to and from MD_REGNUM.
8686         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
8687         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
8688         Handle byte and halfword moves.
8689         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
8690         separately.
8691         * config/mips/constraints.md (h): Turn into NO_REGS.
8692         (l, x): Update documentation.
8693         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
8694         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
8695         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
8696         (HILO): New mode iterator.
8697         (MOVE128): Add TI.
8698         (any_div): New code iterator.
8699         (u): Extend code attribute to div and udiv.
8700         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
8701         d_operand in the splitters.  Remove redundant CONST_INT checks.
8702         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
8703         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
8704         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
8705         accordingly, using normal moves instead of unspecs to move LO into
8706         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
8707         (<u>mulsidi3): Handle expansion in C code.
8708         (<u>mulsidi3_32bit_internal): Rename to...
8709         (<u>mulsidi3_32bit): ...this.
8710         (<u>mulsidi3_32bit_r4000): Fix insn separator.
8711         (*<u>mulsidi3_64bit): Rename to...
8712         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
8713         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
8714         to set LO and HI to the multiplication result.  Use a normal move
8715         for MFLO and an unspec for MFHI.
8716         (*<u>mulsidi3_64bit_parts): Replace with...
8717         (<u>mulsidi3_64bit_hilo): ...this new instruction.
8718         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
8719         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
8720         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
8721         instead of HI.  Split the instruction into a separate multiplication
8722         and MFHI if !TARGET_FIX_R4000.
8723         (<su>muldi3_highpart): Likewise.
8724         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
8725         and the "=h" clobber.
8726         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
8727         (<u>mulditi3): New expander.
8728         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
8729         (madsi): Remove "=h" clobber.
8730         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
8731         Force the modulus result to be a GPR and split the instruction into
8732         a division followed by an MFHI after reload.
8733         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
8734         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
8735         the MIPS16 HIGH define_split.
8736         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
8737         of acc<->gpr moves to "multi".
8738         (*movdi_64bit): Replace the single "x" alternative with
8739         alternatives for moving into and out of "a".
8740         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
8741         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
8742         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
8743         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
8744         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
8745         (movti): New expander.
8746         (*movti, *movti_mips16): New insns.
8747         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
8748         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
8749         (mthi<GPR:mode>_<HILO:mode>): Likewise.
8750         * config/mips/predicates.md (fpr_operand): Delete.
8751         (d_operand): New predicate.
8752
8753 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
8754
8755         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
8756         failure on some Bourne shells.
8757         (x86_64-*-*): Ditto.
8758
8759 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
8760
8761         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
8762
8763 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
8764
8765         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
8766         (sparc-sun-solaris2*): Likewise.
8767
8768 2008-06-09  Arnaud Charlet  <charlet@adacore.com
8769
8770         * doc/install.texi: Update requirements to build the Ada compiler.
8771
8772 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
8773
8774         * df-scan.c (struct df_scan_problem_data): Remove the
8775         mw_link_pool alloc pool.
8776         (df_scan_free_internal): Don't free it.
8777         (df_scan_alloc): Don't allocate it.
8778         * df.h (struct df_link): Update comment.
8779
8780 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
8781
8782         * except.h: Correct checks for when SJLJ exceptions must be used.
8783
8784 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8785
8786         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
8787         default.
8788
8789 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
8790
8791         PR tree-optimization/36218
8792         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
8793         configure for the build system.
8794         (BUILD_LDFLAGS): Define.
8795         * configure: Regenerate.
8796         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
8797
8798 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
8799
8800         PR target/36424
8801         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
8802         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
8803         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
8804
8805 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
8806
8807         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
8808
8809 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
8810
8811         * config.gcc (Obsolete configurations): Remove list of
8812         configurations.
8813         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
8814         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
8815         targets matched by those patterns.
8816         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
8817         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
8818         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
8819         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
8820         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
8821         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
8822         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
8823         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
8824         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
8825         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
8826         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
8827         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
8828         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
8829         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
8830         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
8831         Make code for Solaris 7 and greater unconditional for Solaris.
8832         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
8833         Remove --with-* handling.
8834         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
8835         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
8836         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
8837         LINK_OS_WINDISS_SPEC): Remove.
8838         * config/rs6000/sysv4.opt (mwindiss): Remove.
8839         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
8840         * configure: Regenerate.
8841         * doc/cpp.texi: Don't mention BeOS.
8842         * doc/extend.texi (interrupt): Don't mention MS1.
8843         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
8844         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
8845         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
8846         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
8847         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
8848         Remove.
8849         * doc/invoke.texi (MT Options): Remove.
8850         (-mwindiss): Remove.
8851         (CRIS Options): Remove cris-axis-aout references.
8852         (HPPA Options): Don't mention hppa1.1-*-pro.
8853         * doc/md.texi: (MorphoTech family): Remove.
8854         * libgcc2.c: Don't handle UWIN.
8855         * config/alpha/t-unicosmk: Remove.
8856         * config/alpha/unicosmk.h: Remove.
8857         * config/arm/kaos-arm.h: Remove.
8858         * config/arm/kaos-strongarm.h: Remove.
8859         * config/arm/strongarm-coff.h: Remove.
8860         * config/arm/strongarm-elf.h: Remove.
8861         * config/arm/strongarm-pe.h: Remove.
8862         * config/arm/t-strongarm-pe: Remove.
8863         * config/arm/t-xscale-coff: Remove.
8864         * config/arm/t-xscale-elf: Remove.
8865         * config/arm/xscale-coff.h: Remove.
8866         * config/arm/xscale-elf.h: Remove.
8867         * config/chorus.h: Remove.
8868         * config/cris/aout.h: Remove.
8869         * config/cris/aout.opt: Remove.
8870         * config/cris/t-aout: Remove.
8871         * config/i386/beos-elf.h: Remove.
8872         * config/i386/kaos-i386.h: Remove.
8873         * config/i386/ptx4-i.h: Remove.
8874         * config/i386/sco5.h: Remove.
8875         * config/i386/sco5.opt: Remove.
8876         * config/i386/sysv4-cpp.h: Remove.
8877         * config/i386/sysv5.h: Remove.
8878         * config/i386/t-beos: Remove.
8879         * config/i386/t-sco5: Remove.
8880         * config/i386/t-uwin: Remove.
8881         * config/i386/uwin.asm: Remove.
8882         * config/i386/uwin.h: Remove.
8883         * config/kaos.h: Remove.
8884         * config/mips/windiss.h: Remove.
8885         * config/mt: Remove directory.
8886         * config/pa/pa-osf.h: Remove.
8887         * config/pa/pa-pro-end.h: Remove.
8888         * config/pa/t-pro: Remove.
8889         * config/ptx4.h: Remove.
8890         * config/rs6000/beos.h: Remove.
8891         * config/rs6000/kaos-ppc.h: Remove.
8892         * config/rs6000/t-beos: Remove.
8893         * config/rs6000/windiss.h: Remove.
8894         * config/sh/kaos-sh.h: Remove.
8895         * config/sol2-6.h: Remove.
8896         * config/sparc/sol26-sld.h: Remove.
8897         * config/sparc/sysv4-only.h: Remove.
8898         * config/vax/bsd.h: Remove.
8899         * config/vax/t-memfuncs: Remove.
8900         * config/vax/ultrix.h: Remove.
8901         * config/vax/vaxv.h: Remove.
8902         * config/windiss.h: Remove.
8903
8904 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
8905
8906         PR rtl-optimization/36438
8907         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
8908         for vector shifts with constant scalar shift operands.
8909
8910 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
8911
8912         * doc/invoke.texi: Document -march=xlr.
8913         * config/mips/xlr.md: New file.
8914         * config/mips/mips.md: Include it.
8915         (cpu): Add "xlr".
8916         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
8917         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
8918         (mips_rtx_cost_data): Likewise.
8919
8920 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
8921
8922         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
8923         PRE_INC and PRE_DEC cases.
8924
8925 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
8926
8927         PR rtl-optimization/36419
8928         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
8929         the emitting jump insn.
8930
8931         PR target/36362
8932         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
8933         is not bool, boolify the whole *expr_p and convert to the desired type.
8934
8935 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
8936
8937         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
8938         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
8939         Add omp_private_outer_ref hook, add another argument to
8940         omp_clause_default_ctor hook.
8941         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
8942         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
8943         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
8944         hook_tree_tree_tree_tree_null.
8945         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
8946         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
8947         * hooks.c (hook_tree_tree_tree_tree_null): New function.
8948         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
8949         * tree.def (OMP_TASK): New tree code.
8950         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
8951         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
8952         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
8953         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
8954         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
8955         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
8956         OMP_CLAUSE_COLLAPSE_EXPR): Define.
8957         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
8958         (OMP_DIRECTIVE_P): Add OMP_TASK.
8959         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
8960         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
8961         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
8962         and OMP_CLAUSE_UNTIED entries.
8963         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
8964         num_ops to 2.
8965         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
8966         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
8967         * tree-pretty-print.c (dump_omp_clause): Handle
8968         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
8969         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
8970         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
8971         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
8972         warning about unsigned iterators.  Change decl/init/cond/incr
8973         arguments to TREE_VECs, check arguments for all collapsed loops.
8974         (c_finish_omp_taskwait): New function.
8975         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
8976         ws_clauses.
8977         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
8978         default_function_array_conversion on init.  Add par_clauses argument.
8979         If decl is present in parallel's lastprivate clause, change it to
8980         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
8981         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
8982         collapse count in clauses.
8983         (c_parser_omp_for, c_parser_omp_parallel): Adjust
8984         c_parser_omp_for_loop callers.
8985         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
8986         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
8987         (c_parser_omp_clause_name): Handle collapse and untied clauses.
8988         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
8989         functions.
8990         (c_parser_omp_clause_schedule): Handle schedule(auto).
8991         Include correct location in the error message.
8992         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
8993         and PRAGMA_OMP_CLAUSE_UNTIED.
8994         (OMP_TASK_CLAUSE_MASK): Define.
8995         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
8996         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
8997         * tree-nested.c (convert_nonlocal_omp_clauses,
8998         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
8999         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
9000         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9001         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
9002         OMP_CLAUSE_DECL.
9003         (conver_nonlocal_reference, convert_local_reference,
9004         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
9005         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
9006         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
9007         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
9008         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
9009         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
9010         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
9011         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
9012         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
9013         OMP_CLAUSE_UNTIED.
9014         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
9015         * c-common.h (c_finish_omp_taskwait): New prototype.
9016         * gimple-low.c (lower_stmt): Handle OMP_TASK.
9017         * tree-parloops.c (create_parallel_loop): Create 1 entry
9018         vectors for OMP_FOR_{INIT,COND,INCR}.
9019         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
9020         (make_edges): Handle OMP_TASK.
9021         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
9022         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9023         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
9024         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
9025         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
9026         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
9027         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
9028         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
9029         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
9030         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
9031         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
9032         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
9033         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
9034         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
9035         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
9036         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
9037         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
9038         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
9039         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
9040         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
9041         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
9042         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
9043         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
9044         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
9045         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
9046         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
9047         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
9048         original iterator is present in lastprivate clause or if
9049         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
9050         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9051         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
9052         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
9053         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
9054         if it is set, lookup var in outer contexts too.  Handle
9055         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
9056         to be implicitly determined firstprivate for task regions.
9057         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
9058         if it is set, lookup var in outer contexts too.  Set
9059         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
9060         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
9061         OMP_CLAUSE_UNTIED.  Take region_type as last argument
9062         instead of in_parallel and in_combined_parallel.
9063         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
9064         Adjust callers.
9065         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
9066         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
9067         (new_omp_context): Set default_kind to
9068         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
9069         (omp_region_type): New enum.
9070         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
9071         fields, add region_type.
9072         (new_omp_context): Take region_type as argument instead of is_parallel
9073         and is_combined_parallel.
9074         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
9075         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
9076         ctx->is_combined_parallel checks.
9077         (gimplify_omp_task): New function.
9078         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
9079         OMP_CLAUSE_UNTIED.
9080         * omp-low.c (extract_omp_for_data): Use schedule(static)
9081         for schedule(auto).  Handle pointer and unsigned iterators.
9082         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
9083         Add loops argument.  Extract data for collapsed OMP_FOR loops.
9084         (expand_parallel_call): Assert sched_kind isn't auto,
9085         map runtime schedule to index 3.
9086         (struct omp_for_data_loop): New type.
9087         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
9088         Add loop, loops, collapse and iter_type fields.
9089         (workshare_safe_to_combine_p): Disallow combined for if
9090         iter_type is unsigned long long.  Don't combine collapse > 1 loops
9091         unless all bounds and steps are constant.  Adjust extract_omp_for_data
9092         caller.
9093         (expand_omp_for_generic): Handle pointer, unsigned and long long
9094         iterators.  Handle collapsed OMP_FOR loops.  Adjust
9095         for struct omp_for_data changes.  If libgomp function doesn't return
9096         boolean_type_node, add comparison of the return value with 0.
9097         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
9098         pointer, unsigned and long long iterators.  Adjust for struct
9099         omp_for_data changes.
9100         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
9101         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
9102         unsigned long long.  Allocate loops array, pass it to
9103         extract_omp_for_data.  For collapse > 1 loops use always
9104         expand_omp_for_generic.
9105         (omp_context): Add sfield_map and srecord_type fields.
9106         (is_task_ctx, lookup_sfield): New functions.
9107         (use_pointer_for_field): Use is_task_ctx helper.  Change first
9108         argument's type from const_tree to tree.  Clarify comment.
9109         In OMP_TASK disallow copy-in/out sharing.
9110         (build_sender_ref): Call lookup_sfield instead of lookup_field.
9111         (install_var_field): Add mask argument.  Populate both record_type
9112         and srecord_type if needed.
9113         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
9114         in srecord_type.
9115         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
9116         and DECL_FIELD_OFFSET.
9117         (scan_sharing_clauses): Adjust install_var_field callers.  For
9118         firstprivate clauses on explicit tasks allocate the var by value in
9119         record_type unconditionally, rather than by reference.
9120         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
9121         Use is_taskreg_ctx instead of is_parallel_ctx.
9122         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9123         (create_omp_child_function_name): Add task_copy argument, use
9124         *_omp_cpyfn* names if it is true.
9125         (create_omp_child_function): Add task_copy argument, if true create
9126         *_omp_cpyfn* helper function.
9127         (scan_omp_parallel): Adjust create_omp_child_function callers.
9128         Rename parallel_nesting_level to taskreg_nesting_level.
9129         (scan_omp_task): New function.
9130         (lower_rec_input_clauses): Don't run constructors for firstprivate
9131         explicit task vars which are initialized by *_omp_cpyfn*.
9132         Pass outer var ref to omp_clause_default_ctor hook if
9133         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
9134         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
9135         OMP_CLAUSE_REDUCTION_INIT.
9136         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
9137         avoid duplicate setting of fields.  Handle
9138         OMP_CLAUSE_PRIVATE_OUTER_REF.
9139         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
9140         copy-out if TREE_READONLY, only copy-in.
9141         (expand_task_copyfn): New function.
9142         (expand_task_call): New function.
9143         (struct omp_taskcopy_context): New type.
9144         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
9145         New functions.
9146         (lower_omp_parallel): Rename to...
9147         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
9148         Call create_task_copyfn if srecord_type is needed.  Adjust
9149         sender_decl type.
9150         (task_shared_vars): New variable.
9151         (check_omp_nesting_restrictions): Warn if work-sharing,
9152         barrier, master or ordered region is closely nested inside OMP_TASK.
9153         Add warnings for barrier if closely nested inside of work-sharing,
9154         ordered, or master region.
9155         (scan_omp_1): Call check_omp_nesting_restrictions even for
9156         GOMP_barrier calls.  Rename parallel_nesting_level to
9157         taskreg_nesting_level.  Handle OMP_TASK.
9158         (lower_lastprivate_clauses): Even if some lastprivate is found on a
9159         work-sharing construct, continue looking for them on parent parallel
9160         construct.
9161         (lower_omp_for_lastprivate): Add lastprivate clauses
9162         to the beginning of dlist rather than end.  Adjust for struct
9163         omp_for_data changes.
9164         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
9165         not after it.  Handle collapsed OMP_FOR loops, adjust for
9166         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
9167         (get_ws_args_for): Adjust extract_omp_for_data caller.
9168         (scan_omp_for): Handle collapsed OMP_FOR
9169         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9170         (lower_omp_single_simple): If libgomp function doesn't return
9171         boolean_type_node, add comparison of the return value with 0.
9172         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
9173         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
9174         (parallel_nesting_level): Rename to...
9175         (taskreg_nesting_level): ... this.
9176         (is_taskreg_ctx): New function.
9177         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
9178         of is_parallel_ctx.
9179         (execute_lower_omp): Rename parallel_nesting_level to
9180         taskreg_nesting_level.
9181         (expand_omp_parallel): Rename to...
9182         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
9183         Call omp_task_call for OMP_TASK regions.
9184         (expand_omp): Adjust caller, handle OMP_TASK.
9185         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
9186
9187         * bitmap.c (bitmap_default_obstack_depth): New variable.
9188         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
9189         if argument is NULL and bitmap_default_obstack is already initialized.
9190         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
9191         at the end.
9192         * matrix-reorg.c (matrix_reorg): Likewise.
9193
9194 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
9195
9196         * config/i386/i386.md (*indirect_jump): Macroize using P
9197         mode iterator.  Remove !TARGET_64BIT from insn constraints.
9198         (*tablejump_1): Ditto.
9199         (*indirect_jump_rex64): Remove insn pattern.
9200         (*tablejump_1_rex64): Ditto.
9201         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
9202         and eh_return_si insn patterns.
9203
9204 2008-06-06  Richard Guenther  <rguenther@suse.de>
9205
9206         * tree-ssa-structalias.c (merge_smts_into): Remove.
9207         (find_what_p_points_to): Do not bother to compute the
9208         points-to set for pt_anything pointers.
9209         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
9210         for pt_anything pointers is ok.
9211
9212 2008-06-06  Jan Hubicka  <jh@suse.cz>
9213
9214         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
9215
9216 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9217
9218         * cgraph.c: Fix typos in comments.
9219         (cgraph_availability_names): Fix string typo.
9220         * fold-const.c: Fix typos in comments.
9221         (fold_binary): Fix typo in warning.
9222         * genautomata.c: Fix typos in comments.
9223         (check_presence_pattern_sets): Fix typo in local variable.
9224         (output_description): Fix typo in output.
9225         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
9226         * hwint.h: Likewise.
9227         * matrix-reorg.c (check_allocation_function): Likewise.
9228         * omega.c (smooth_weird_equations): Likewise.
9229         * auto-inc-dec.c: Fix typos in comments.
9230         * bb-reorder.c: Likewise.
9231         * builtins.c: Likewise.
9232         * c-common.c: Likewise.
9233         * c-cppbuiltin.c: Likewise.
9234         * c-parser.c: Likewise.
9235         * c-pretty-print.c: Likewise.
9236         * cfgcleanup.c: Likewise.
9237         * cfgexpand.c: Likewise.
9238         * cfghooks.c: Likewise.
9239         * cfglayout.c: Likewise.
9240         * cfgloopmanip.c: Likewise.
9241         * cgraphunit.c: Likewise.
9242         * coverage.c: Likewise.
9243         * dbxout.c: Likewise.
9244         * df-byte-scan.c: Likewise.
9245         * df-core.c: Likewise.
9246         * df-problems.c: Likewise.
9247         * df-scan.c: Likewise.
9248         * dfp.c: Likewise.
9249         * dominance.c: Likewise.
9250         * domwalk.c: Likewise.
9251         * dse.c: Likewise.
9252         * dwarf2out.c: Likewise.
9253         * emit-rtl.c: Likewise.
9254         * et-forest.c: Likewise.
9255         * function.c: Likewise.
9256         * function.h: Likewise.
9257         * gcc.c: Likewise.
9258         * gcov-io.c: Likewise.
9259         * gcov.c: Likewise.
9260         * gcse.c: Likewise.
9261         * genattrtab.c: Likewise.
9262         * ggc-page.c: Likewise.
9263         * gimplify.c: Likewise.
9264         * gthr-lynx.h: Likewise.
9265         * haifa-sched.c: Likewise.
9266         * ipa-cp.c: Likewise.
9267         * ipa-inline.c: Likewise.
9268         * ipa-prop.h: Likewise.
9269         * ipa-pure-const.c: Likewise.
9270         * ipa-struct-reorg.c: Likewise.
9271         * ipa-struct-reorg.h: Likewise.
9272         * ipa-type-escape.c: Likewise.
9273         * ipa.c: Likewise.
9274         * loop-doloop.c: Likewise.
9275         * mips-tfile.c: Likewise.
9276         * mkmap-flat.awk: Likewise.
9277         * mkmap-symver.awk: Likewise.
9278         * modulo-sched.c: Likewise.
9279         * omp-low.c: Likewise.
9280         * optabs.c: Likewise.
9281         * optabs.h: Likewise.
9282         * opts.c: Likewise.
9283         * passes.c: Likewise.
9284         * postreload-gcse.c: Likewise.
9285         * postreload.c: Likewise.
9286         * predict.c: Likewise.
9287         * pretty-print.h: Likewise.
9288         * profile.c: Likewise.
9289         * protoize.c: Likewise.
9290         * ra-conflict.c: Likewise.
9291         * real.c: Likewise.
9292         * recog.c: Likewise.
9293         * regclass.c: Likewise.
9294         * regs.h: Likewise.
9295         * reload.c: Likewise.
9296         * rtl-error.c: Likewise.
9297         * rtlanal.c: Likewise.
9298         * scan.h: Likewise.
9299         * sched-rgn.c: Likewise.
9300         * see.c: Likewise.
9301         * stmt.c: Likewise.
9302         * target.h: Likewise.
9303         * tree-dfa.c: Likewise.
9304         * tree-eh.c: Likewise.
9305         * tree-flow-inline.h: Likewise.
9306         * tree-inline.c: Likewise.
9307         * tree-into-ssa.c: Likewise.
9308         * tree-loop-distribution.c: Likewise.
9309         * tree-nested.c: Likewise.
9310         * tree-parloops.c: Likewise.
9311         * tree-pass.h: Likewise.
9312         * tree-pretty-print.c: Likewise.
9313         * tree-profile.c: Likewise.
9314         * tree-scalar-evolution.c: Likewise.
9315         * tree-sra.c: Likewise.
9316         * tree-ssa-alias-warnings.c: Likewise.
9317         * tree-ssa-ccp.c: Likewise.
9318         * tree-ssa-coalesce.c: Likewise.
9319         * tree-ssa-dom.c: Likewise.
9320         * tree-ssa-dse.c: Likewise.
9321         * tree-ssa-forwprop.c: Likewise.
9322         * tree-ssa-live.c: Likewise.
9323         * tree-ssa-live.h: Likewise.
9324         * tree-ssa-loop-im.c: Likewise.
9325         * tree-ssa-loop-ivopts.c: Likewise.
9326         * tree-ssa-loop-niter.c: Likewise.
9327         * tree-ssa-loop-prefetch.c: Likewise.
9328         * tree-ssa-phiopt.c: Likewise.
9329         * tree-ssa-phiprop.c: Likewise.
9330         * tree-ssa-sccvn.c: Likewise.
9331         * tree-ssa-ter.c: Likewise.
9332         * tree-ssa-threadupdate.c: Likewise.
9333         * tree-ssa.c: Likewise.
9334         * tree-vect-analyze.c: Likewise.
9335         * tree-vect-transform.c: Likewise.
9336         * tree-vectorizer.c: Likewise.
9337         * tree-vn.c: Likewise.
9338         * tree-vrp.c: Likewise.
9339         * tree.c: Likewise.
9340         * tree.def: Likewise.
9341         * tree.h: Likewise.
9342         * unwind-dw2-fde.c: Likewise.
9343         * unwind.inc: Likewise.
9344         * value-prof.c: Likewise.
9345         * vmsdbgout.c: Likewise.
9346
9347 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
9348
9349         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
9350         always place FP constants in the TOC for TARGET_POWERPC64.
9351         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
9352
9353 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
9354
9355         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
9356         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
9357         enable for TARGET_E500_DOUBLE.
9358         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
9359         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
9360         floating-point modes like integer modes for E500 double.
9361         (rs6000_legitimate_offset_address_p): Likewise.
9362         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
9363         addressing for DDmode for E500 double.
9364         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
9365         modes as using 64-bits of registers for E500 double.
9366         (spe_build_register_parallel): Do not handle DDmode or TDmode.
9367         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
9368         specially for E500 double.
9369         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
9370         TDmode for E500 double.
9371         (rs6000_gimplify_va_arg): Only handle SDmode in registers
9372         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
9373         (rs6000_split_multireg_move): Do not handle TDmode specially for
9374         E500 double.
9375         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
9376         using 64-bit registers for E500 double.
9377         (emit_frame_save): Do not handle DDmode specially for E500 double.
9378         (gen_frame_mem_offset): Likewise.
9379         (rs6000_function_value): Do not call spe_build_register_parallel
9380         for DDmode or TDmode.
9381         (rs6000_libcall_value): Likewise.
9382         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
9383         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
9384         for E500 double.
9385
9386 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
9387
9388         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
9389         in comments.
9390
9391 2008-06-04  Junjie Gu <jgu@tensilica.com>
9392
9393         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
9394         comparison for frame pointers.
9395
9396 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
9397
9398         PR target/27386
9399         * config/avr/avr.h (PUSH_ROUNDING): Remove.
9400
9401 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
9402
9403         PR target/30243
9404         * builtins.c (expand_builtin_signbit): Don't take lowpart when
9405         register is already smaller or equal to required mode.
9406
9407 2008-06-04  Xinliang David Li  <davidxl@google.com>
9408
9409         * tree-call-cdce.c: New file.
9410         (cond_dead_built_in_calls): New static variable.
9411         (input_domain): New struct.
9412         (check_pow): New function.
9413         (check_builtin_call): Ditto.
9414         (check_target_format): Ditto.
9415         (is_call_dce_candidate): Ditto.
9416         (gen_one_condition): Ditto.
9417         (gen_conditions_for_domain): Ditto.
9418         (get_domain): Ditto.
9419         (gen_conditions_for_pow_cst_base): Ditto.
9420         (gen_conditions_for_pow_int_base): Ditto.
9421         (gen_conditions_for_pow): Ditto.
9422         (get_no_error_domain): Ditto.
9423         (gen_shrink_wrap_conditions): Ditto.
9424         (shrink_wrap_one_built_in_call): Ditto.
9425         (shink_wrap_conditional_dead_built_in_calls): Ditto.
9426         (tree_call_cdce): Ditto.
9427         (gate_call_cdce): Ditto.
9428         (pass_call_cdce): New gimple pass.
9429         * passes.c: (init_optimization_passes): New pass.
9430         * tree-pass.h: New pass declaration.
9431         * opts.c (decode_options): New flag setting.
9432         * common.opt: Add -ftree-builtin-call-dce flag.
9433         * Makefile.in: Add new source file.
9434         * tempvar.def: New tv_id.
9435         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
9436
9437 2008-06-04  Richard Guenther  <rguenther@suse.de>
9438
9439         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
9440         (is_call_clobbered): Always check var_ann->call_clobbered.
9441         (mark_call_clobbered): Always set var_ann->call_clobbered.
9442         (clear_call_clobbered): Always clear var_ann->call_clobbered.
9443         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
9444         (reset_alias_info): Clear call clobbering info on MTAGs and
9445         globals as well.
9446         (set_pt_anything): Set pt_global_mem.
9447         (create_tag_raw): Adjust comment.
9448         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
9449
9450 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
9451             Maxim Kuvyrkov  <maxim@codesourcery.com>
9452
9453         * config/m68k/m68k.opt (mxgot): New option.
9454         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
9455         (m68k_output_addr_const_extra): New.
9456         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
9457         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
9458         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
9459         * doc/invoke.texi (M680x0 Options): Document -mxgot.
9460
9461 2008-06-04  Richard Guenther  <rguenther@suse.de>
9462
9463         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
9464         negative or non-representable offsets.
9465
9466 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
9467
9468         * config/i386/i386.c (ix86_gen_leave): New.
9469         (ix86_gen_pop1): Likewise.
9470         (ix86_gen_add3): Likewise.
9471         (ix86_gen_sub3): Likewise.
9472         (ix86_gen_sub3_carry): Likewise.
9473         (ix86_gen_one_cmpl2): Likewise.
9474         (ix86_gen_monitor): Likewise.
9475         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
9476         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
9477         ix86_gen_one_cmpl2 and ix86_gen_monitor.
9478         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
9479         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
9480         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
9481         (ix86_expand_epilogue): Updated.
9482         (print_operand): Handle integer register operand for 'z'.
9483         (ix86_expand_strlensi_unroll_1): Likewise.
9484         (ix86_expand_strlen): Likewise.
9485         (ix86_expand_builtin): Likewise.
9486         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
9487         mov{q}/mov{l} and add{q}/add{l}.
9488
9489 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
9490
9491         * config/i386/i386.md (P): New mode iterator.
9492         (SFmode push_operand splitter): Macroize DImode and SImode pushes
9493         using P mode iterator.
9494         (DFmode push_operand splitter): Ditto.
9495         (XFmode push_operand splitter): Ditto.
9496         (DFmode float_extend SFmode push_operand splitter): Ditto.
9497         (XFmode float_extend SFmode push_operand splitter): Do not generate
9498         SImode pushes for 64bit target.  Macroize Dimode and SImode
9499         pushes using P mode iterator.
9500         (XFmode float_extend DFmode push_operand splitter): Ditto.
9501
9502 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
9503
9504         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
9505         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
9506         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
9507         return type to int.
9508         (ix86_call_abi_override): Remove check for call_used_regs.
9509
9510 2008-06-03  Richard Guenther  <rguenther@suse.de>
9511
9512         * tree-ssa-structalias.c (find_func_aliases): Add constraints
9513         for the lhs of calls if the return type contains pointers.
9514
9515 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
9516
9517         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
9518         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
9519         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
9520         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
9521         of cfun and DEFAULT_ABI to deceide abi mode.
9522         (DEFAULT_ABI): New.
9523         (REG_PARM_STACK_SPACE): Removed.
9524         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
9525         (STACK_BOUNDARY): Use default target to deceide stack boundary.
9526         * config/i386/i386-protos.h (ix86_cfun_abi): New.
9527         (ix86_function_abi): Likewise.
9528         (ix86_function_type_abi): Likewise.
9529         (ix86_call_abi_override): Likewise.
9530         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
9531         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
9532         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
9533         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
9534         specific defines.
9535         (X86_64_REGPARM_MAX): New.
9536         (X86_64_SSE_REGPARM_MAX): New.
9537         (X64_REGPARM_MAX): New.
9538         (X64_SSE_REGPARM_MAX): New.
9539         (X86_32_REGPARM_MAX): New.
9540         (X86_32_SSE_REGPARM_MAX): New.
9541         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
9542         (ix86_function_regparm): Handle user calling abi.
9543         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
9544         by DEFAULT_ABI versus SYSV_ABI check.
9545         (ix86_reg_parm_stack_space): New.
9546         (ix86_function_type_abi): New.
9547         (ix86_call_abi_override): New.
9548         (ix86_function_abi): New.
9549         (ix86_cfun_abi): New.
9550         (init_cumulative_args): Call abi specific initialization.
9551         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
9552         (function_arg_64): Extend SSE_REGPARM_MAX check.
9553         (function_arg (): Remove TARGET_64BIT_MS_ABI.
9554         (ix86_pass_by_reference): Likewise.
9555         (ix86_function_value_regno_p): Likewise.
9556         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
9557         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
9558         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
9559         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
9560         (setup_incoming_varargs_64): Adjust regparm for call abi.
9561         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
9562         (ix86_va_start): Likewise.
9563         (ix86_gimplify_va_arg): Likewise.
9564         (ix86_expand_prologue): Likewise.
9565         (output_pic_addr_const): Likewise.
9566         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
9567         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
9568         (x86_output_mi_thunk): Likewise.
9569         (x86_function_profiler): Likewise.
9570         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
9571         (SYSV_ABI, MS_ABI): New constants.
9572         (DEFAULT_ABI): New.
9573         (init_regs): Add prototype of function in regclass.c file.
9574         (OVERRIDE_ABI_FORMAT): New.
9575         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
9576         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
9577         (OUTGOING_REG_PARM_STACK_SPACE): New.
9578         (ix86_reg_parm_stack_space): New prototype.
9579         (CUMULATIVE_ARGS): Add call_abi member.
9580         (machine_function): Add call_abi member.
9581         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
9582         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
9583
9584 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
9585
9586         PR target/34879
9587         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
9588         (avr_builtin_setjmp_frame_value): New function.
9589         * config/avr/avr.md (nonlocal_goto_receiver): Define.
9590         (nonlocal_goto): Define.
9591
9592 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
9593
9594         * config/mips/mips.c (mips_emit_loadgp): Return early if
9595         there is nothing do to, otherwise emit a blockage if
9596         !TARGET_EXPLICIT_RELOCS || crtl->profile.
9597         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
9598
9599 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9600
9601         * configure.ac: Drop unneeded backslash ending up in config.in.
9602         * acinclude.m4: Likewise.
9603         * config.in: Regenerate.
9604
9605 2008-05-26  Jan Hubicka  <jh@suse.cz>
9606
9607         * predict.c (maybe_hot_frequency_p): Break out of...
9608         (maybe_hot_bb_p): ... here.
9609         (maybe_hot_edge_p): New.
9610         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
9611         * basic-block.h (maybe_hot_edge_p): Declare.
9612
9613 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
9614
9615         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
9616         (*cmpfp_<mode>_cc): Ditto.
9617         (*fp_jcc_8<mode>_387): Ditto.
9618         (*fop_<MODEF:mode>_2_i387): Ditto.
9619         (*fop_<MODEF:mode>_3_i387): Ditto.
9620         (*fop_xf_2_i387): Ditto.
9621         (*fop_xf_3_i387): Ditto.
9622
9623 2008-06-02  Tomas Bily  <tbily@suse.cz>
9624
9625         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
9626
9627 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
9628
9629         * config/mips/mips.c (mips_valid_offset_p): New function.
9630         (mips_valid_lo_sum_p): Likewise.
9631         (mips_classify_address): Use them.
9632         (mips_force_address): New function.
9633         (mips_legitimize_address): Use it.
9634         * config/mips/mips.md (MOVE128): New mode iterator.
9635         (movtf): Require TARGET_64BIT.  Remove empty strings.
9636         (*movtf_internal): Rename to...
9637         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
9638         of "R" and use {,fp}{load,store} attributes instead of "multi".
9639         Use a separate define_split.
9640         (*movtf_mips16): New pattern.
9641
9642 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
9643
9644         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
9645         * config/mips/mips.c (mips_expand_before_return): New function.
9646         (mips_expand_epilogue): Call it.
9647         * config/mips/mips.md (return): Turn into a define_expand.
9648         (*return): New insn.
9649
9650 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
9651
9652         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
9653         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
9654         functions.  Do not emit uses and clobbers of CONCATs; individually
9655         use and clobber their operands.
9656         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
9657         gen_clobber, emit_use and gen_use.
9658         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
9659         (expand_builtin_return): Likewise.
9660         * cfgbuild.c (count_basic_blocks): Likewise.
9661         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
9662         * explow.c (emit_stack_restore): Likewise.
9663         * expmed.c (extract_bit_field_1): Likewise.
9664         * expr.c (convert_move, emit_move_complex_parts): Likewise.
9665         (emit_move_multi_word, store_constructor): Likewise.
9666         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
9667         (thread_prologue_and_epilogue_insns): Likewise.
9668         * lower-subreg.c (resolve_simple_move): Likewise.
9669         * optabs.c (widen_operand, expand_binop): Likewise.
9670         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
9671         * reload.c (find_reloads): Likewise.
9672         * reload1.c (eliminate_regs_in_insn): Likewise.
9673         * stmt.c (expand_nl_goto_receiver): Likewise.
9674         * config/alpha/alpha.md (builtin_longjmp): Likewise.
9675         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
9676         * config/arm/arm.c (arm_load_pic_register): Likewise.
9677         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
9678         * config/arm/arm.md (untyped_return): Likewise.
9679         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
9680         * config/avr/avr.c (expand_prologue): Likewise.
9681         * config/bfin/bfin.c (do_unlink): Likewise.
9682         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
9683         * config/cris/cris.c (cris_expand_prologue): Likewise.
9684         * config/darwin.c (machopic_indirect_data_reference): Likewise.
9685         (machopic_legitimize_pic_address): Likewise.
9686         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
9687         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
9688         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
9689         (ix86_expand_convert_uns_didf_sse): Likewise.
9690         (ix86_expand_vector_init_general): Likewise.
9691         * config/ia64/ia64.md (eh_epilogue): Likewise.
9692         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
9693         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
9694         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
9695         (config/iq2000/iq2000.c): Likewise.
9696         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
9697         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
9698         (builtin_longjmp): Likewise.
9699         * config/mn10300/mn10300.md (call, call_value): Likewise.
9700         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
9701         * config/pdp11/pdp11.md (abshi2): Likewise.
9702         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
9703         * config/s390/s390.c (s390_emit_prologue): Likewise.
9704         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
9705         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
9706         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
9707         * config/sh/sh.c (prepare_move_operands): Likewise.
9708         (output_stack_adjust, sh_expand_epilogue): Likewise.
9709         (sh_set_return_address, sh_expand_t_scc): Likewise.
9710         * config/sparc/sparc.c (load_pic_register): Likewise.
9711         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
9712         * config/spu/spu.c (spu_expand_epilogue): Likewise.
9713         * config/v850/v850.c (expand_epilogue): Likewise.
9714
9715 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
9716
9717         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
9718         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
9719         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
9720         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
9721         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
9722         stack pointer register.
9723         (output_movhi): Remove code for interrupt specific writing to the
9724         stack pointer register.
9725
9726 2008-05-31  Richard Guenther  <rguenther@suse.de>
9727
9728         PR tree-optimization/34244
9729         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
9730         (tree_expr_nonzero_warnv_p): Likewise.
9731         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
9732         ssa_name_nonnegative_p.
9733         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
9734         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
9735         not tree_expr_nonzero_warnv_p.
9736
9737         PR tree-optimization/36262
9738         Revert
9739         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
9740
9741         PR tree-optimization/34244
9742         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
9743         (record_numbers_of_iterations): New function.
9744         (execute_vrp): Cache the numbers of iterations of loops.
9745         * tree-scalar-evolution.c (scev_reset_except_niters):
9746         New function.
9747         (scev_reset): Use scev_reset_except_niters.
9748         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
9749
9750 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9751
9752         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
9753         __WORKAROUND_RETS when appropriate.
9754
9755 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
9756
9757         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
9758         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
9759         mode iterator.
9760         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
9761         *fop_df_comm_sse insn patterns using MODEF mode iterator.
9762         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
9763         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
9764         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
9765         *fop_df_1_mixed insn patterns using MODEF mode iterator.
9766         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
9767         *fop_df_1_sse insn patterns using MODEF mode iterator.
9768         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
9769         *fop_df_1_i387 insn patterns using MODEF mode iterator.
9770         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
9771         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
9772         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
9773         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
9774         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
9775         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
9776         (*fop_xf_4_i387): Use <MODE> for mode attribute.
9777         (*fop_xf_5_i387): Ditto.
9778         (*fop_xf_6_i387): Ditto.
9779
9780 2008-05-30  Richard Guenther  <rguenther@suse.de>
9781
9782         * builtins.c (build_string_literal): Avoid generating
9783         a non-gimple_val result.
9784
9785 2008-05-30  DJ Delorie  <dj@redhat.com>
9786
9787         * exec-tool.in: Use an environment variable (private) instead of a
9788         file (shared) as a semaphore, so as to not break parallel builds.
9789
9790 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
9791
9792         * optabs.c (maybe_encapsulate_block): Remove.
9793         (emit_libcall_block): Adjust accordingly.
9794         * optabs.h (maybe_encapsulate_block): Remove prototype.
9795
9796         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
9797         Don't use maybe_encapsulate_block.
9798
9799 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
9800
9801         * config/rs6000/rs6000.c (rs6000_legitimize_address,
9802         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
9803         rtx is a SYMBOL_REF before calling get_pool_constant.
9804
9805 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
9806
9807         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
9808
9809 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
9810
9811         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
9812         rather than OS names to choose INO_T_EQ definition.
9813         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
9814         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
9815
9816 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
9817
9818         PR target/36348
9819         * config/darwin-f.c: New.
9820         * config/t-darwin: Added rule to build darwin-f.o.
9821         * config.gcc: Defined new variable, fortran_target_objs.
9822         (*-*-darwin*): Set fortran_target_objs.
9823         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
9824         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
9825         * configure: Regenerated.
9826
9827 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
9828
9829         PR target/35771
9830         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
9831         canonical type if needed.
9832
9833 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
9834
9835         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
9836
9837 2008-05-29  Richard Guenther  <rguenther@suse.de>
9838
9839         PR tree-optimization/36343
9840         PR tree-optimization/36346
9841         PR tree-optimization/36347
9842         * tree-flow.h (clobber_what_p_points_to): Declare.
9843         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
9844         pointed-to variable is dereferenced is irrelevant to whether
9845         the pointer can access the pointed-to variable.
9846         (clobber_what_p_points_to): New function.
9847         * tree-ssa-alias.c (set_initial_properties): Use it.
9848         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
9849         call clobber check for NMTs.
9850
9851 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
9852
9853         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
9854         for printing gcov_type.
9855
9856 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
9857
9858         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
9859         and the eh region information.
9860         * value-prof.c (gimple_move_stmt_histograms): New function.
9861         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
9862
9863 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
9864
9865         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
9866
9867 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
9868
9869         * value-prof.c (tree_ic_transform): Print counts.
9870         * tree-profile.c (tree_gen_ic_func_profiler):
9871         Clear __gcov_indreict_call_callee variable to avoid misattribution
9872         of the profile.
9873
9874 2008-05-28  Rafael Espindola  <espindola@google.com>
9875
9876         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
9877         invalid sharing.
9878
9879 2008-05-28  Richard Guenther  <rguenther@suse.de>
9880
9881         PR tree-optimization/36339
9882         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
9883         and clobbering code out of the loop.
9884
9885 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
9886
9887         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
9888         letters defined.
9889
9890         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
9891         s390_contiguous_bitmask_p, s390_symref_operand_p,
9892         s390_check_symref_alignment, s390_reload_larl_operand,
9893         s390_reload_symref_address): New functions.
9894         (s390_branch_condition_mnemonic): Support compare and branch
9895         instructions.
9896         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
9897         and 'W' constraints.
9898         (s390_secondary_reload): Add secondary reloads for unaligned
9899         symbol refs or symbol refs to floating point or QI/TI mode
9900         integer values.
9901         (legitimate_address_p): Accept symbol references as addresses.
9902         (s390_expand_insv): Use rotate and insert selected bits
9903         instruction for insv when building for z10.
9904         (print_operand_address): Handle symbol ref addresses.
9905         (print_operand): Output modifier 'c' added for signed byte values.
9906         (s390_encode_section_info): Mark symbol refs with
9907         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
9908
9909         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
9910         (length attribute): RRF, RRR have 4 byte length.
9911         (FPALL, INTALL): New mode iterators added.
9912         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
9913         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
9914         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
9915         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
9916         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
9917         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
9918         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
9919         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
9920         instructions.
9921         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
9922         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
9923         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
9924         reload<INTALL:mode><P:mode>_toreg_z10,
9925         reload<FPALL:mode><P:mode>_tomem_z10,
9926         reload<FPALL:mode><P:mode>_toreg_z10,
9927         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
9928         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
9929         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
9930         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
9931         definition.
9932         (movmem, clrmem, cmpmem): New splitters added.
9933
9934         * config/s390/predicates.md (larl_operand): Use
9935         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
9936         SYMBOL_REF_ALIGN1_P.
9937         (s390_signed_integer_comparison,
9938         s390_unsigned_integer_comparison): New predicates.
9939
9940         * config/s390/s390-protos.h (s390_check_symref_alignment,
9941         s390_contiguous_bitmask_p, s390_reload_larl_operand,
9942         s390_reload_symref_address,
9943         s390_compare_and_branch_condition_mask): Prototypes added.
9944
9945         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
9946         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
9947         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
9948
9949 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
9950
9951         * config/s390/s390.c (z10_cost): New cost function for z10.
9952         (s390_handle_arch_option, override_options): Support -march=z10 switch.
9953         (s390_issue_rate): Adjust issue rate for z10.
9954         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
9955         (processor_flags): Add PF_Z10.
9956         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
9957         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
9958         * gcc/config.gcc: Add z10.
9959
9960 2008-05-28  Richard Guenther  <rguenther@suse.de>
9961
9962         PR tree-optimization/36291
9963         * tree-flow. h (struct gimple_df): Remove var_anns member.
9964         * tree-flow-inline.h (gimple_var_anns): Remove.
9965         (var_ann): Simplify.
9966         * tree-dfa.c (create_var_ann): Simplify.
9967         (remove_referenced_var): Clear alias info from var_anns of globals.
9968         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
9969         (delete_tree_ssa): Clear alias info from var_anns of globals.
9970         Do not free var_anns.
9971         (var_ann_eq): Remove.
9972         (var_ann_hash): Likewise.
9973
9974 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
9975
9976         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
9977         and loongson2f entries.
9978         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
9979         * config/mips/mips.h (processor_type): Add Loongson-2E
9980         and Loongson-2F entries.
9981         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
9982         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
9983         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
9984         * doc/invoke.texi (MIPS Options): Document loongson2e
9985         and loongson2f processor names.
9986
9987 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
9988
9989         PR target/35767
9990         PR target/35771
9991         * config/i386/i386.c (ix86_function_arg_boundary): Use
9992         alignment of canonical type.
9993         (ix86_expand_vector_move): Check unaligned memory access for
9994         all SSE modes.
9995
9996 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
9997
9998         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
9999         Moved to the front of file.
10000
10001 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
10002             H.J. Lu  <hongjiu.lu@intel.com>
10003
10004         * dwarf2out.c (current_fde): New.
10005         (add_cfi): Use it.
10006         (lookup_cfa:): Likewise.
10007         (dwarf2out_end_epilogue): Likewise.
10008         (dwarf2out_note_section_used): Likewise.
10009
10010 2008-05-27  Michael Matz  <matz@suse.de>
10011
10012         PR c++/27975
10013         * c.opt (Wenum-compare): New warning option.
10014         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
10015
10016 2008-05-27  Michael Matz  <matz@suse.de>
10017
10018         PR middle-end/36326
10019         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
10020         non-BLKmode types.
10021         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
10022         into memory as tail calls.
10023
10024 2008-05-27  Richard Guenther  <rguenther@suse.de>
10025
10026         PR tree-optimization/36339
10027         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
10028         pointers cause all addressable variables to be call clobbered.
10029
10030 2008-05-27  Richard Guenther  <rguenther@suse.de>
10031
10032         PR tree-optimization/36245
10033         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
10034
10035 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10036
10037         * config/s390/s390.md: Replace all occurences of the 'm'
10038         constraint with 'RT'.
10039
10040 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10041
10042         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
10043         definitions added.
10044         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
10045         "*movdi_64".
10046         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
10047         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
10048         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
10049
10050 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10051
10052         * reload.c: (find_reloads): Skip alternatives according to the
10053         "enabled" attribute. Constify the constraint variable.
10054         * recog.c (get_attr_enabled): Add default implementation.
10055         (extract_insn): Set the alternative_enabled_p array
10056         in the recog_data struct.
10057         (preprocess_constraints, constrain_operands): Skip
10058         alternatives according to the "enabled" attribute
10059         * recog.h (struct recog_data): New field alternative_enabled_p.
10060         (skip_alternative): New inline function.
10061         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
10062         (record_reg_classes): Skip alternative according to the
10063         "enabled" attribute.
10064
10065         * doc/md.texi: Add documention for the "enabled" attribute.
10066
10067 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10068
10069         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
10070         * postreload.c (reload_cse_simplify_operands): Replace 'm'
10071         constraint with TARGET_MEM_CONSTRAINT.
10072         * recog.c (asm_operand_ok, preprocess_constraints,
10073         constrain_operands): Likewise.
10074         * regclass.c (record_reg_classes): Likewise.
10075         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
10076         * reload1.c (maybe_fix_stack_asms): Likewise.
10077         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
10078         * recog.h: Adjust comment.
10079         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
10080         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
10081         * doc/md.texi: Add a note to description of 'm' constraint.
10082         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
10083
10084 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
10085
10086         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
10087         that the bitfield is of integral type before testing its precision.
10088
10089 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10090             Sa Liu  <saliu@de.ibm.com>
10091
10092         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
10093         __modti3, __udivti3, __umodti3 and __udivmodti4.
10094         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
10095         that implement TImode mul and div functions.
10096         * config/spu/multi3.c: New. Implement __multi3.
10097         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
10098         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
10099         functions on SPU.
10100
10101 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
10102
10103         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
10104         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
10105         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
10106         tls_sysv_suffix): New mode and mode attribute iterators.
10107         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
10108         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
10109         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
10110         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
10111         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
10112         iterators.
10113
10114 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
10115
10116         PR tree-optimization/36329
10117         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
10118         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
10119         * cgraphbuild.c (initialize_inline_failed): Use the latter
10120         macro in lieu of the former.
10121         * ipa-inline.c (cgraph_mark_inline): Likewise.
10122         (cgraph_decide_inlining_of_small_function): Likewise.
10123         (cgraph_decide_inlining): Likewise.
10124         (cgraph_decide_inlining_incrementally): Likewise.
10125
10126 2008-05-26  Tristan Gingold  <gingold@adacore.com>
10127             Anatoly Sokolov  <aesok@post.ru>
10128
10129         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
10130         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
10131         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
10132         optimization for 'avr6' architecture.
10133
10134 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
10135
10136         PR target/34932
10137         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
10138
10139 2008-05-26  Richard Guenther  <rguenther@suse.de>
10140
10141         * tree-ssa-sccvn.c (expr_has_constants): Declare.
10142         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
10143
10144 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
10145
10146         PR middle-end/36253
10147         * caller-save.c (insert_restore): Verify alignment of spill space.
10148         (insert_save): Likewise.
10149         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
10150         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
10151         (STACK_SLOT_ALIGNMENT): Likewise.
10152         * function.c (LOCAL_ALIGNMENT): Removed.
10153         (get_stack_local_alignment): New.
10154         (assign_stack_local): Use it.  Set alignment on stack slot.
10155         (assign_stack_temp_for_type): Use get_stack_local_alignment.
10156         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
10157         (STACK_SLOT_ALIGNMENT): New.
10158         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
10159         stack slot in XFmode.
10160
10161         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
10162
10163 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
10164
10165         PR/36321
10166         * config/i386/i386.md (allocate_stack_worker_64): Make sure
10167         argument operand in rax isn't removed.
10168
10169 2008-05-26  Richard Guenther  <rguenther@suse.de>
10170
10171         PR middle-end/36300
10172         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
10173         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
10174
10175 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
10176
10177         PR bootstrap/36331
10178         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
10179
10180 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
10181
10182         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
10183         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
10184
10185 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
10186
10187         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
10188         build a trampoline if we don't want one.
10189         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
10190         return zero for nested functions if we don't want a trampoline.
10191
10192 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
10193
10194         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
10195
10196 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
10197
10198         PR fortran/18428
10199         * c.opt: Removed undocumented option '-lang-fortran'.
10200         * c-common.h: Removed global variable 'lang_fortran'.
10201         * c-opts.c (c_common_handle_option): Removed code to handle
10202         option '-lang-fortran'. Updated includes.
10203         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
10204         definition of '__GFORTRAN__'.
10205         (define__GNUC__): Reimplemented to use BASEVER and
10206         cpp_define_formatted.
10207         (builtin_define_with_value_n): Removed.
10208         * c-incpath.h: Renamed to ...
10209         * incpath.h: ... this.
10210         * c-incpath.c: Renamed to ...
10211         * incpath.c: ... this. Updated includes.
10212         * fix-header.c: Updated includes.
10213         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
10214         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
10215         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
10216
10217 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
10218
10219         * tree.h: Update the table of flags used on tree nodes.
10220         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
10221         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
10222         (FORCED_LABEL): Add access check.
10223         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
10224         (ASM_INPUT_P): Likewise.
10225         (ASM_VOLATILE_P): Likewise.
10226         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
10227         (OMP_SECTION_LAST): Access private_flag directly.
10228         (OMP_RETURN_NOWAIT): Likewise.
10229         (OMP_PARALLEL_COMBINED): Likewise.
10230         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
10231         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
10232         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
10233         deprecated_flag directly.
10234
10235 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10236
10237         * final.c (frame_pointer_needed): Removed.
10238         * flags.h (frame_pointer_needed): Likewise.
10239
10240         * function.h (rtl_data): Add frame_pointer_needed.
10241         (frame_pointer_needed): New.
10242
10243 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
10244
10245         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
10246
10247 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
10248
10249         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
10250         SRC is a REG.
10251
10252 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
10253
10254         * c-common.c (strip_array_types): Move function to..
10255         * tree.c: ..here.
10256         (get_inner_array_type): Delete.
10257         * c-common.h (strip_array_types): Move declaration to..
10258         * tree.h: ..here.
10259         (get_inner_array_type): Delete.
10260         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
10261         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
10262         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
10263         * config/pa/pa.c (emit_move_sequence): Likewise.
10264
10265 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10266
10267         * config/i386/i386.md (*sse_prologue_save_insn): Set length
10268         attribute to 34.
10269
10270 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
10271
10272         * function.c: Include target hook for nonlocal_goto frame value.
10273
10274 2008-05-24  Richard Guenther  <rguenther@suse.de>
10275
10276         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
10277         variable can be only accessed through a pointer or a union.
10278
10279 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10280
10281         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
10282         * doc/extend.texi: Likewise.
10283
10284 2008-05-23  DJ Delorie  <dj@redhat.com>
10285
10286         * config/m32c/jump.md (untyped_call): Add.
10287
10288         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
10289         for A24 to PSImode.
10290         (m32c_address_cost): Detail costs for indirect offsets.
10291
10292 2008-05-23  Rafael Espindola  <espindola@google.com>
10293
10294         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
10295         if a node is a SUBREG.
10296         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
10297         is a SUBREG.
10298
10299 2008-05-23  Paul Brook  <paul@codesourcery.com>
10300             Carlos O'Donell  <carlos@codesourcery.com>
10301
10302         * doc/extend.texi: Clarify use of __attribute__((naked)).
10303         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
10304         * target.h (gcc_target): Add allocate_stack_slots_for_args.
10305         * function.c (use_register_for_decl): Use
10306         targetm.calls.allocate_stack_slots_for_args.
10307         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
10308         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
10309         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
10310
10311 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
10312
10313         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
10314
10315 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
10316
10317         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
10318         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
10319         is only rounded once.
10320
10321 2008-05-23  Richard Guenther  <rguenther@suse.de>
10322
10323         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
10324
10325 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
10326             Jakub Jelinek  <jakub@redhat.com>
10327
10328         PR target/36079
10329         * configure.ac: Handle --enable-cld.
10330         * configure: Regenerated.
10331         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
10332         * config/i386/i386.h (struct machine_function): Add needs_cld field.
10333         (ix86_current_function_needs_cld): New define.
10334         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
10335         (cld): New isns pattern.
10336         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
10337         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
10338         * config/i386/i386.opt (mcld): New option.
10339         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
10340         TARGET_CLD and ix86_current_function_needs_cld.
10341         (override_options): Use -mcld by default for 32-bit code if
10342         USE_IX86_CLD.
10343
10344         * doc/install.texi (Options specification): Document --enable-cld.
10345         * doc/invoke.texi (Machine Dependent Options)
10346         [i386 and x86-64 Options]: Add -mcld option.
10347         (Intel 386 and AMD x86-64 Options): Document -mcld option.
10348
10349 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
10350         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
10351         (return_in_memory_64): Likewise.
10352         (return_in_memory_ms_64): Likewise.
10353
10354 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10355
10356         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
10357         * builtins.c (fold_builtin_fpclassify): New.
10358         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
10359         * builtins.def (BUILT_IN_FPCLASSIFY): New.
10360         * c-common.c (handle_type_generic_attribute): Adjust to accept
10361         fixed arguments before an elipsis.
10362         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
10363         * doc/extend.texi: Document __builtin_fpclassify.
10364
10365 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
10366
10367         * omp-low.c (gate_expand_omp_ssa): Remove.
10368         (pass_expand_omp_ssa): Remove.
10369         (gate_expand_omp): Do not check for flag_openmp_ssa.
10370         * common.opt (-fopenmp-ssa): Remove.
10371         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
10372
10373 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10374
10375         * config/sh/sh.opt (mfixed-range): New option.
10376         * config/sh/sh-protos.h (sh_fix_range): Declare.
10377         * config/sh/sh.c (sh_fix_range): New function.
10378         * config/sh/sh.h (sh_fixed_range_str): Declare.
10379         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
10380         is not empty.
10381         * doc/invoke.texi (SH Options): Document -mfixed-range.
10382
10383 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
10384
10385         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
10386         it before the redeclaration.
10387
10388 2008-05-22  Anatoly Sokolov <aesok@post.ru>
10389
10390         * config/avr/avr.c (get_sequence_length): Add new function.
10391         (expand_prologue, expand_epilogue): Remove duplicate code.
10392
10393 2008-05-22  Rafael Espindola  <espindola@google.com>
10394
10395         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
10396         sharing.
10397
10398 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
10399
10400         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
10401         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
10402
10403         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
10404         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
10405         (vect_update_misalignment_for_peel): Likewise.
10406         (vector_alignment_reachable_p): Likewise.
10407         * tree-vect-transform.c (vectorizable_load): Likewise.
10408         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
10409         (get_vectype_for_scalar_type): Pass mode of scalar_type
10410         to UNITS_PER_SIMD_WORD.
10411
10412         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
10413         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
10414         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
10415         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
10416         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
10417
10418 2008-05-22  Ira Rosen  <irar@il.ibm.com>
10419
10420         PR tree-optimization/36293
10421         * tree-vect-transform.c (vect_transform_strided_load): Don't check
10422         if the first load must be skipped because of a gap.
10423
10424 2008-05-22  Richard Guenther  <rguenther@suse.de>
10425
10426         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
10427         more cases of offset disambiguation that is possible if
10428         strict-aliasing rules apply.
10429         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
10430         for basic offset and type-based disambiguation.
10431
10432 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10433
10434         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
10435         ix86_expand_vector_set on V16QImode for SSE4.1.
10436
10437 2008-05-21  Tom Tromey  <tromey@redhat.com>
10438
10439         * c.opt (Wimport): Mark as undocumented.
10440         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
10441         -Wno-import.
10442         (Warning Options): Likewise.
10443         * doc/cppopts.texi: Don't mention -Wimport.
10444
10445 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
10446
10447         PR tree-optimization/36287
10448         PR tree-optimization/36286
10449         * lambda-code.c (build_access_matrix): Do not use the loop->num
10450         for computing the number of induction variables: use the loop depth
10451         instead.
10452
10453 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
10454
10455         PR/36280
10456         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
10457         option -f(no-)leading-underscore.
10458
10459 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10460
10461         * config/i386/i386.c (ix86_expand_vector_init_general): Use
10462         GET_MODE_NUNITS (mode).
10463
10464 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
10465
10466         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
10467         (-mmulhw): Add 464 to description.
10468         (-mdlmzb): Likewise.
10469         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
10470         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
10471         464fp entries.
10472         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
10473         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
10474         * config/rs6000/rs6000.md: Update comments for 464.
10475
10476 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
10477
10478         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
10479
10480 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10481
10482         * config/i386/sse.md (vec_extractv4sf): Removed.
10483         (vec_extractv2df): Likewise.
10484         (vec_extractv2di): Likewise.
10485         (vec_extractv4si): Likewise.
10486         (vec_extractv8hi): Likewise.
10487         (vec_extractv16qi): Likewise.
10488         (vec_extract<mode>): New.
10489
10490 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10491
10492         * config/i386/sse.md (vec_setv4sf): Removed.
10493         (vec_setv2df): Likewise.
10494         (vec_setv2di): Likewise.
10495         (vec_setv4si): Likewise.
10496         (vec_setv8hi): Likewise.
10497         (vec_setv16qi): Likewise.
10498         (vec_set<mode>): New.
10499
10500 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10501
10502         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
10503         goto for vec_concat and vec_interleave.
10504
10505 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10506
10507         * config/i386/sse.md (vec_initv4sf): Removed.
10508         (vec_initv2df): Likewise.
10509         (vec_initv2di): Likewise.
10510         (vec_initv4si): Likewise.
10511         (vec_initv8hi): Likewise.
10512         (vec_initv16qi): Likewise.
10513         (vec_init<mode>): New.
10514
10515 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
10516
10517         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
10518
10519 2008-05-21  Tom Tromey  <tromey@redhat.com>
10520
10521         * ggc-zone.c (lookup_page_table_if_allocated): New function.
10522         (zone_find_object_offset): Likewise.
10523         (gt_ggc_m_S): Likewise.
10524         (highest_bit): Likewise.
10525         * ggc-page.c (gt_ggc_m_S): New function.
10526         * stringpool.c (string_stack): Remove.
10527         (init_stringpool): Update.
10528         (ggc_alloc_string): Use ggc_alloc.
10529         (maybe_delete_ident): New function.
10530         (ggc_purge_stringpool): Likewise.
10531         (gt_ggc_m_S): Remove.
10532         * ggc-common.c (ggc_protect_identifiers): New global.
10533         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
10534         ggc_protect_identifiers.
10535         * ggc.h (ggc_protect_identifiers): Declare.
10536         (gt_ggc_m_S): Update.
10537         (ggc_purge_stringpool): Declare.
10538         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
10539         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
10540         special case.
10541         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
10542
10543 2008-05-21  David S. Miller  <davem@davemloft.net>
10544
10545         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
10546         tmake_file.
10547
10548 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
10549
10550         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
10551         once finished.
10552
10553 2008-05-20  David Daney  <ddaney@avtrex.com>
10554
10555         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
10556         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
10557         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
10558         UNSPEC_UPDATE_GOT_VERSION): Renumber.
10559         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
10560         (atomic_hiqi_op): New define_code_iterator.
10561         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
10562         mips_expand_compare_and_swap_12.
10563         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
10564         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
10565         (sync_<optab><mode>, sync_old_<optab><mode>,
10566         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
10567         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
10568         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
10569         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
10570         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
10571         (test_and_set_12): New insn.
10572         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
10573         sync_new_<optab><mode>, sync_old_nand<mode>,
10574         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
10575         clobber to operand 0 for SI and DI mode insns.
10576         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
10577         mips_gen_fn_4): New typedefs.
10578         (mips_gen_fn_ptrs): Define new union type.
10579         (mips_expand_compare_and_swap_12): Remove declaration.
10580         (mips_expand_atomic_qihi): Declare function.
10581         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
10582         (mips_expand_atomic_qihi): ... this.  Use new generator function
10583         parameter.
10584         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
10585         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
10586         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
10587         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
10588         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
10589         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
10590         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
10591         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
10592         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
10593         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
10594         New macros.
10595
10596 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
10597
10598         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
10599         the missing break.
10600
10601 2008-05-20  Anatoly Sokolov <aesok@post.ru>
10602
10603         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
10604         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
10605         (avr_attribute_table): Add 'OS_main' function attribute.
10606         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
10607         functions with 'OS_main' attribute.
10608
10609 2008-05-20  Richard Guenther  <rguenther@suse.de>
10610
10611         PR tree-optimization/35204
10612         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
10613         helper, split out from ...
10614         (DFS): ... here.  Make the DFS walk non-recursive.
10615
10616 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
10617             Jan Sjodin  <jan.sjodin@amd.com>
10618
10619         PR tree-optimization/36181
10620         * tree-parloops.c (loop_has_vector_phi_nodes): New.
10621         (parallelize_loops): Don't parallelize when the loop has vector
10622         phi nodes.
10623
10624 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
10625             Sebastian Pop  <sebastian.pop@amd.com>
10626
10627         * tree-loop-linear.c (gather_interchange_stats): Look in the access
10628         matrix, and never look at the tree representation of the memory
10629         accesses.
10630         (linear_transform_loops): Computes parameters and access matrices.
10631         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
10632         when fails.
10633         (access_matrix_get_index_for_parameter): New.
10634         * tree-data-ref.h (struct access_matrix): New.
10635         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
10636         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
10637         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
10638         am_vector_index_for_loop): New.
10639         (struct data_reference): Add field access_matrix.
10640         (DR_ACCESS_MATRIX): New.
10641         (compute_data_dependences_for_loop): Update declaration.
10642         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
10643         * lambda.h (lambda_vector_vec_p): Declared.
10644         * lambda-code.c: Depend on pointer-set.h.
10645         (lambda_collect_parameters_from_af, lambda_collect_parameters,
10646         av_for_af_base, av_for_af, build_access_matrix,
10647         lambda_compute_access_matrices): New.
10648         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
10649
10650 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
10651
10652         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
10653         $SOURCEDIR/include.
10654
10655 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
10656             Sebastian Pop  <sebastian.pop@amd.com>
10657
10658         PR tree-optimization/36206
10659         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
10660         FOLD_CONVERSIONS.
10661         (instantiate_scev_1): Rename flags to fold_conversions.
10662         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
10663         outeside instantiation_loop.
10664         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
10665         (evolution_function_is_affine_or_constant_p): Removed.
10666         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
10667         instantiate_scev.
10668         (analyze_siv_subscript): Pass in the loop nest number.
10669         Call evolution_function_is_affine_in_loop instead of
10670         evolution_function_is_affine_p.
10671         (analyze_overlapping_iterations): Pass in the loop nest number.
10672
10673 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
10674             Sebastian Pop  <sebastian.pop@amd.com>
10675
10676         PR tree-optimization/36206
10677         * tree-chrec.h (chrec_fold_op): New.
10678         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
10679         and other trees.
10680
10681 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
10682
10683         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
10684         (DIRS_EQ): New.
10685         (remove_duplicates): Do not set inode on non-inode systems.
10686         Use DIRS_EQ.
10687
10688 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
10689
10690         * config.gcc (tm_file): Update comments about relative pathnames.
10691
10692 2008-05-20  Richard Guenther  <rguenther@suse.de>
10693
10694         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
10695         * tree-ssa-sccvn.c (process_scc): Likewise.
10696         * tree-ssa-sink.c (execute_sink_code): Likewise.
10697         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
10698         * tree-vrp.c (process_assert_insertions): Likewise.
10699         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
10700         (perform_tree_ssa_dce): Likewise.
10701         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
10702         (dump_dominator_optimization_stats): Likewise.
10703         * tree-vectorizer.c (vectorize_loops): Likewise.
10704
10705 2008-05-20  Richard Guenther  <rguenther@suse.de>
10706
10707         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
10708
10709 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
10710
10711         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
10712         (ix86_i386elf_return_in_memory): Likewise.
10713         (ix86_i386interix_return_in_memory): Likewise.
10714         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
10715         (SUBTARGET_RETURN_IN_MEMORY): New.
10716         * config/i386/i386elf.h: Likewise.
10717         * config/i386/ptx4-i.h: Likewise.
10718         * config/i386/sol2-10.h: Likewise.
10719         * config/i386/sysv4.h: Likewise.
10720         * config/i386/vx-common.h: Likewise.
10721         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
10722         * config/i386/i386.c (ix86_return_in_memory): Made static and
10723         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
10724         (ix86_i386elf_return_in_memory): Removed.
10725         (ix86_i386interix_return_in_memory): Removed.
10726         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
10727         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
10728
10729 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
10730
10731         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
10732
10733 2008-05-19  Xinliang David Li  <davidxl@google.com>
10734
10735         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
10736         * opts.c: Ditto.
10737         * common.opt: Ditto.
10738         * doc/invoke.texi: Ditto.
10739
10740 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
10741
10742         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
10743         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
10744
10745 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
10746
10747         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
10748         sizes of operand array from 8/4 to 4/2.
10749         (ix86_expand_vector_init_general): Change size of operand array
10750         from 32 to 16.  Remove op0, op1 and half_mode.
10751
10752 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
10753
10754         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
10755         (ix86_expand_vector_init_interleave): Likewise.
10756         (ix86_expand_vector_init_general): Use them.  Assert
10757         word_mode == SImode when n_words == 4.
10758
10759 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
10760
10761         * config/i386/i386.c (ix86_secondary_reload): New static function.
10762         (TARGET_SECONDARY_RELOAD): New define.
10763         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
10764         * config/i386/i386.md (reload_outqi): Remove.
10765
10766 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10767
10768         PR middle-end/35509
10769         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
10770         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
10771         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
10772         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
10773         (fold_builtin_1): Likewise.
10774         * builtins.def (BUILT_IN_ISINF_SIGN): New.
10775         c-common.c (check_builtin_function_arguments): Handle
10776         BUILT_IN_ISINF_SIGN.
10777         * doc/extend.texi: Document __builtin_isinf_sign.
10778         * fold-const.c (operand_equal_p): Handle COND_EXPR.
10779
10780 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
10781
10782         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
10783         EH cleanup at the end of the pass, search for those that have been
10784         turned into forwarder blocks and do the cleanup on their successor.
10785
10786 2008-05-18  Richard Guenther  <rguenther@suse.de>
10787
10788         * tree-cfg.c (verify_gimple_expr): Allow conversions from
10789         pointers to sizetype and vice versa.
10790
10791 2008-05-18 Xinliang David Li   <davidxl@google.com>
10792
10793         * gcc/tree-ssa-dce.c: Coding style fix.
10794         (check_pow): Documentation comment.
10795         (check_log): Documenation comment. Coding style fix.
10796         (is_unnecessary_except_errno_call): Ditto.
10797         (gen_conditions_for_pow): Ditto.
10798         (gen_conditions_for_log): Ditto.
10799         (gen_shrink_wrap_conditions): Ditto.
10800         (shrink_wrap_one_built_in_calls): Ditto.
10801         * gcc/doc/invoke.texi: Better documentation string.
10802         * ChangeLog: Fix wrong change log entries from
10803         May 17 checkin on function call DCE.
10804
10805 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
10806
10807         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
10808
10809 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
10810
10811         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
10812         * df-problems.c (simulation routines): Fixed block comment to
10813         properly say how to add forwards scanning functions.
10814
10815 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
10816
10817         * tree-inline.c (setup_one_parameter): Remove dead code.
10818
10819 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
10820
10821         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
10822         a BIT_AND_EXPR only for an INTEGER_TYPE.
10823
10824 2008-05-17 Xinliang David Li   <davidxl@google.com>
10825
10826         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
10827         (check_pow, check_log, is_unnecessary_except_errno_call): New
10828         functions to check for eliminating math functions that are pure
10829         except for setting errno.
10830         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
10831         general condition expressions for shrink-wrapping pow/log calls.
10832         (gen_shrink_wrap_conditions): Ditto.
10833         (shrink_wrap_one_built_in_call): Ditto.
10834         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
10835         (mark_operand_necessary): If debugging, output if OP is necessary.
10836         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
10837         unnecessary.
10838         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
10839         opt level >= 2.
10840         * gcc/common.opt: New user flag -ftree-builtin-dce.
10841         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
10842
10843 2008-05-16  David S. Miller  <davem@davemloft.net>
10844
10845         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
10846         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
10847
10848 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
10849
10850         PR target/36246
10851         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
10852
10853 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
10854
10855         * ifcvt.c (dead_or_predicable): Rename
10856         df_simulate_one_insn_backwards to df_simulate_one_insn.
10857         * recog.c (peephole2_optimize): Ditto.
10858         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
10859         Ditto.
10860         * df.h: Rename df_simulate_one_insn_backwards to
10861         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
10862         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
10863         scanning of defs and uses.
10864         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
10865         (df_simulate_one_insn_forwards): Removed.
10866
10867 2008-05-16  Doug Kwan  <dougkwan@google.com>
10868
10869         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
10870         QNaN & SNaN.
10871         (real_from_string): Handle NaNs and Inf as approriate.
10872
10873 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
10874
10875         * doc/gty.texi (Source Files Containing Type Information): Note
10876         that headers should appear first in the gtfiles list.
10877
10878 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
10879
10880         * tree.def (COND_EXEC): Properly documented this code.
10881
10882 2008-05-16  Diego Novillo  <dnovillo@google.com>
10883
10884         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
10885         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
10886         the new field.
10887
10888 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
10889
10890         * tree-ssa-dse (max_stmt_uid): Removed.
10891         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
10892         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
10893         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
10894         * function.h (cfun.last_stmt_uid): New field.
10895         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
10896         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
10897         New functions.
10898         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
10899         (create_stmt_ann): Initialize the ann->uid field.
10900         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
10901         with new calls.
10902         * tree-flow.h (renumber_gimple_stmt_uids): New function.
10903
10904 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
10905
10906         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
10907         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
10908         (init_empty_tree_cfg): Call it.
10909
10910 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
10911
10912         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
10913         Update all users.
10914
10915 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
10916
10917         * doc/invoke.text (-fdump-tree-*-verbose): New option.
10918         * tree-dump.c (dump_options): New verbose option.
10919         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
10920         Add verbose dump.
10921         * tree-pass.h (TDF_VERBOSE): New dump flag.
10922         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
10923         (tree-flow.h): Added include.
10924         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
10925
10926 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
10927
10928         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
10929
10930         From Jie Zhang  <jie.zhang@analog.com>
10931         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
10932         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
10933         mcpu=bf561-none and mcpu=bf561-0.2.
10934         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
10935         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
10936         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
10937         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
10938         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
10939         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
10940         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
10941         option.
10942         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
10943         (cputype_selected): Remove.
10944         (bfin_handle_option): Don't use cputype_selected.
10945         (override_options): When no mcpu option, enable all workarounds.
10946         Don't use bfin_workarounds.
10947         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
10948         processor type.
10949         (DEFAULT_CPU_TYPE): Don't define.
10950
10951 2008-05-16  Richard Guenther  <rguenther@suse.de>
10952
10953         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
10954         on deletion of the last stmt.
10955
10956 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
10957
10958         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
10959         V8HImode for SSE2 and V16QImode for SSE4.1.
10960
10961 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
10962
10963         * cgraph.h (compute_inline_parameters): Made public.
10964         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
10965         variable_generate_summary, function_write_summary,
10966         variable_write_summary, variable_read_summary.  Added generate_summary,
10967         write_summary, read_summary.
10968         * cgraphunit.c (cgraph_process_new_functions): Changed call from
10969         pass_ipa_inline.function_generate_summary, to
10970         compute_inline_parameters.
10971         * ipa-inline.c (compute_inline_parameters): Made public and added
10972         node parameter.
10973         (compute_inline_parameters_for_current): New function.
10974         (pass_inline_param): Now calls compute_inline_parameters_for_current.
10975         (inline_generate_summary): Removed parameter and made to loop over
10976         all cgraph nodes.
10977         (pass_ipa_inline): Updated for new IPA_PASS structure.
10978         * passes.c (execute_ipa_summary_passes): Now is called once per
10979         pass rather than once per node*pass.
10980
10981 2008-05-15  Anatoly Sokolov <aesok@post.ru>
10982
10983         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
10984         avr_have_mul_p, avr_asm_only_p): Remove variables.
10985         (avr_override_options): Remove initialization of removed variables.
10986         (avr_file_start):  Convert removed variables to fields of
10987         'struct base_arch_s *avr_current_arch'.
10988         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
10989         (AVR_HAVE_MUL): (Ditto.).
10990         (AVR_HAVE_MOVW): (Ditto.).
10991         (AVR_HAVE_LPMX): (Ditto.).
10992         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
10993         avr_asm_only_p): Remove declaration.
10994
10995 2008-05-15  Diego Novillo  <dnovillo@google.com>
10996
10997         * config/arm/arm.c (arm_return_in_memory): Fix return type.
10998         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
10999
11000 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
11001
11002         PR middle-end/36194
11003         * combine.c (check_conversion): Rename back to check_promoted_subreg.
11004         Don't call record_truncated_value from here.
11005         (record_truncated_value): Turn it into a for_each_rtx callback.
11006         (record_truncated_values): New function.
11007         (combine_instructions): Call note_uses with record_truncated_values.
11008         Change name of check_conversion to check_promoted_subreg.
11009
11010 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
11011
11012         * doc/sourcebuild.texi: Document support for torture tests.
11013
11014 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
11015
11016         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
11017         to alternative 4 of operand 2.
11018
11019 2008-05-15  Richard Guenther  <rguenther@suse.de>
11020
11021         * tree-pass.h (current_pass): Declare.
11022         (get_pass_for_id): Likewise.
11023         * passes.c (passes_by_id, passes_by_id_size): New globals.
11024         (set_pass_for_id): New function.
11025         (get_pass_for_id): Likewise.
11026         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
11027         (execute_function_todo): Flush per function statistics.
11028         * toplev.c (compile_file): Init statistics.
11029         (general_init): Do early statistics initialization.
11030         (finalize): Finish statistics.
11031         * statistics.h (statistics_early_init): Declare.
11032         (statistics_init): Likewise.
11033         (statistics_fini): Likewise.
11034         (statistics_fini_pass): Likewise.
11035         (statistics_counter_event): Likewise.
11036         (statistics_histogram_event): Likewise.
11037         * statistics.c: New file.
11038         * Makefile.in (OBJS-common): Add statistics.o.
11039         (statistics.o): Add dependencies.
11040         * doc/invoke.texi (-fdump-statistics): Document.
11041
11042         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
11043         (insert): Likewise.
11044         (execute_pre): Use statistics_counter_event.
11045         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
11046         (substitute_and_fold): Increment it.  Use statistics_counter_event.
11047
11048 2008-05-15  Diego Novillo  <dnovillo@google.com>
11049
11050         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
11051
11052         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
11053         * tree-ssa-alias.c (new_type_alias): Remove references to
11054         sub-variables from comment.
11055         * tree-ssa-operands.c (swap_tree_operands): Likewise.
11056
11057 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
11058
11059         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
11060         attribute to 1 only for insertps alternative.
11061
11062 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
11063
11064         * config/bfin/bfin.md (loadbytes): New pattern.
11065         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
11066         (bfin_init_builtins): Initialize it.
11067         (bdesc_1arg): Add it.
11068
11069 2008-05-15  Sa Liu  <saliu@de.ibm.com>
11070
11071         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
11072         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
11073         * testsuite/lib/target-supports.exp: Add
11074         check_effective_target_fortran_integer_16.
11075
11076 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
11077
11078         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
11079         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
11080         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
11081         (TARGET_RETURN_IN_MEMORY): Define.
11082
11083 2008-05-15  Richard Guenther  <rguenther@suse.de>
11084
11085         PR middle-end/36244
11086         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
11087         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
11088         represent unmodifiable vars.
11089
11090 2008-05-15  Richard Guenther  <rguenther@suse.de>
11091
11092         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
11093         INDIRECT_REF and TARGET_MEM_REF.
11094         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
11095         TARGET_MEM_REF.
11096
11097 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
11098             H.J. Lu  <hongjiu.lu@intel.com>
11099
11100         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
11101         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
11102         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
11103         insn alternatives.  Add missing alternatives.
11104         (*vec_concatv2di_rex64_sse4_1): Likewise.
11105         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
11106         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
11107         Require TARGET_SSE.
11108
11109 2008-05-15  Richard Guenther  <rguenther@suse.de>
11110
11111         PR tree-optimization/36009
11112         PR tree-optimization/36204
11113         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
11114         (determine_invariantness_stmt): Record the loop a store is
11115         always executed in.
11116         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
11117         dependency.
11118
11119 2008-05-15  Richard Guenther  <rguenther@suse.de>
11120
11121         PR tree-optimization/34330
11122         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
11123         through the pointer will alias the SMT.
11124
11125 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
11126
11127         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
11128
11129 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
11130
11131         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
11132
11133 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
11134             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11135
11136         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
11137         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
11138         (vashl_optab): New optab for vector/vector shifts.
11139         (vashr_optab): Ditto.
11140         (vlshr_optab): Ditto.
11141         (vrotl_optab): Ditto.
11142         (vrotr_optab): Ditto.
11143         (optab_subtype): New enum for optab_for_tree_code call.
11144         (optab_for_tree_code): Add enum optab_subtype argument.
11145
11146         * optabs.c (optab_for_tree_code): Take an additional argument to
11147         distinguish between a vector shift by a scalar and vector shift by
11148         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
11149         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
11150         vector shift by a vector.
11151         (expand_widen_pattern_expr): Pass additional argument to
11152         optab_for_tree_code.
11153
11154         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
11155         vrotl_optab, vrotr_optab.
11156
11157         * expr.c (expand_expr_real_1): Update calls to
11158         optab_for_tree_code to distinguish between vector shifted by a
11159         scalar and vector shifted by a vector.
11160         * tree-vectorizer.c (supportable_widening_operation): Ditto.
11161         (supportable_narrowing_operation): Ditto.
11162         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
11163         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
11164         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
11165         (vect_create_epilog_for_reduction): Ditto.
11166         (vectorizable_reduction): Ditto.
11167         (vectorizable_operation): Ditto.
11168         (vect_strided_store_supported): Ditto.
11169         (vect_strided_load_supported): Ditto.
11170         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
11171         * expmed.c (expand_shift): Ditto.
11172
11173         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
11174         scalar type.
11175         (ashr@var{m}3): Ditto.
11176         (vashl@var{m}3): Document new vector/vector shift standard name.
11177         (vashr@var{m}3): Ditto.
11178         (vlshr@var{m}3): Ditto.
11179         (vrotl@var{m}3): Ditto.
11180         (vrotr@var{m}3): Ditto.
11181
11182         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
11183         (PPERM_INVERT): Ditto.
11184         (PPERM_REVERSE): Ditto.
11185         (PPERM_REV_INV): Ditto.
11186         (PPERM_ZERO): Ditto.
11187         (PPERM_ONES): Ditto.
11188         (PPERM_SIGN): Ditto.
11189         (PPERM_INV_SIGN): Ditto.
11190         (PPERM_SRC1): Ditto.
11191         (PPERM_SRC2): Ditto.
11192
11193         * config/i386/sse.md (mulv2di3): Add SSE5 support.
11194         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
11195         allows a memory operand to be the value being added, and split it
11196         to improve vectorization.
11197         (sse5_pmacsdqh_mem): Ditto.
11198         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
11199         (sse5_mulv2div2di3_high): Ditto.
11200         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
11201         (vec_pack_trunc_v4si): Ditto.
11202         (vec_pack_trunc_v2di): Ditto.
11203         (sse5_pcmov_<mode>): Remove code that tried to use use
11204         andps/andnps instead of pcmov.
11205         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
11206         pmacsdqh instructions.
11207         (vec_widen_smult_lo_v4si): Ditto.
11208
11209         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
11210         (PPERM_INVERT): Ditto.
11211         (PPERM_REVERSE): Ditto.
11212         (PPERM_REV_INV): Ditto.
11213         (PPERM_ZERO): Ditto.
11214         (PPERM_ONES): Ditto.
11215         (PPERM_SIGN): Ditto.
11216         (PPERM_INV_SIGN): Ditto.
11217         (PPERM_SRC1): Ditto.
11218         (PPERM_SRC2): Ditto.
11219         (ix86_expand_sse_movcc): Move the SSE5 test after the if
11220         true/false tests.
11221         (ix86_expand_int_vcond): If SSE5 generate all possible integer
11222         comparisons.
11223         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
11224         says ignore whether the last reference is a memory operand.
11225
11226 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
11227             Paolo Bonzini <bonzini at gnu dot org>
11228
11229         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
11230         shift patterns.
11231
11232         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
11233         (vlshr<mode>3): Rename from vlshr<mode>3.
11234         (vashr<mode>3): Rename from vashr<mode>3.
11235         (mulv4sf3): Change the names of vector shift patterns.
11236         (mulv4si3): Ditto.
11237         (negv4sf2): Ditt.
11238
11239         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
11240         shift insns.
11241
11242         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
11243         (SI_SHLHI): Ditto.
11244         (SI_SHL): Ditto.
11245         (SI_SHLI): Ditto.
11246         (SI_ROTH): Ditto.
11247         (SI_ROTHI): Ditto.
11248         (SI_ROT): Ditto.
11249         (SI_ROTI): Ditto.
11250         (SPU_RL_0): Ditto.
11251         (SPU_RL_1): Ditto.
11252         (SPU_RL_2): Ditto.
11253         (SPU_RL_3): Ditto.
11254         (SPU_RL_4): Ditto.
11255         (SPU_RL_5): Ditto.
11256         (SPU_RL_6): Ditto.
11257         (SPU_RL_7): Ditto.
11258         (SPU_SL_0): Ditto.
11259         (SPU_SL_1): Ditto.
11260         (SPU_SL_2): Ditto.
11261         (SPU_SL_3): Ditto.
11262         (SPU_SL_4): Ditto.
11263         (SPU_SL_5): Ditto.
11264         (SPU_SL_6): Ditto.
11265         (SPU_SL_7): Ditto.
11266
11267         * config/spu/spu.md (v): New iterator macro to add v for vector types.
11268         (floatunssidf2_internal): Change vector/vector shift names.
11269         (floatunsdidf2_internal): Ditto.
11270         (mulv8hi3): Ditto.
11271         (ashrdi3): Ditto.
11272         (ashrti3): Ditto.
11273         (cgt_df): Ditto.
11274         (cgt_v2df): Ditto.
11275         (dftsv): Ditto.
11276         (vashl<mode>3): Rename from ashl<mode>3.
11277         (vashr<mode>3): Rename from ashr<mode>3.
11278         (vlshr<mode>3): Rename from lshr<mode>3.
11279         (vrotl<mode>3): Rename from rotl<mode>3.
11280
11281 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
11282
11283         PR target/36224
11284         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
11285         multiply gives the wrong value when doing widening multiplies.
11286         (vec_widen_smult_lo_v4si): Ditto.
11287
11288 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
11289
11290         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
11291         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
11292         emit_library_call_value.
11293         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
11294         * tree.h (ECF_LIBCALL_BLOCK): Removed.
11295         * calls.c (initialize_argument_information, precompute_arguments,
11296         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
11297         (precompute_arguments): Removed flags parameter.
11298         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
11299
11300 2008-05-14  Richard Guenther  <rguenther@suse.de>
11301
11302         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
11303         Make sure to register the store if the use is a PHI_NODE.
11304
11305 2008-05-14  Olivier Hainque  <hainque@adacore.com>
11306
11307         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
11308         memory if the component is to be referenced in BLKmode according
11309         to get_inner_reference.
11310
11311 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
11312
11313         * calls.c (emit_library_call_value_1): Restore code clearing
11314         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
11315
11316 2008-05-14  Olivier Hainque  <hainque@adacore.com>
11317             Nicolas Roche  <roche@adacore.com>
11318
11319         * configure.ac: Add support for a "gcc_subdir" variable in
11320         config-lang.in, to denote a subdirectory where the language/GCC
11321         integration files are to be found.
11322         * configure: Regenerate.
11323
11324 2008-05-14  Ira Rosen  <irar@il.ibm.com>
11325
11326         PR tree-optimization/36098
11327         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
11328         value for the first load in the group in case of a gap.
11329         (vect_build_slp_tree): Check that there are no gaps in loads.
11330
11331 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
11332
11333         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
11334         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
11335         expand_copysign_bit, ): Change call to emit_no_conflict_block to
11336         emit_insn and remove unneeded code to construct extra args.
11337         (emit_no_conflict_block): Removed.
11338         * optabls.h: (emit_no_conflict_block): Removed.
11339         * cse.c (cse_extended_basic_block): Remove search for
11340         REG_NO_CONFLICT note.
11341         * global.c: Removed incorrect comment added in revision 117.
11342         * expr.c (convert_move): Change call to emit_no_conflict_block to
11343         emit_insn.
11344         * recog.c: Change comments so that they do not mention
11345         REG_NO_CONFLICT.
11346         * local_alloc.c (combine_regs): Removed last parameter.
11347         (no_conflict_p): Removed.
11348         (block_alloc): Removed note, no_conflict_combined_regno and set
11349         local vars. Removed all code to process REG_NO_CONFLICT blocks.
11350         (combine_regs): Removed already_dead and code to look for
11351         REG_NO_CONFLICT notes.
11352         * lower_subreg (remove_retval_note): Removed code to look for
11353         REG_NO_CONFLICT block.
11354         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
11355         (resolve_clobber): Remove code to process libcalls that have
11356         REG_NO_CONFLICT notes.
11357         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
11358         case.
11359         * combine.c (can_combine_p, distribute_notes):  Removed
11360         REG_NO_CONFLICT case.
11361         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
11362         to emit_insns.
11363         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
11364         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
11365         Ditto.
11366         * reg-notes.def (NO_CONFLICT): Removed.
11367
11368 2008-05-14  David S. Miller  <davem@davemloft.net>
11369
11370         * config/sparc/sparc.c (sparc_profile_hook): If
11371         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
11372         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
11373         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
11374
11375 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
11376
11377         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
11378
11379 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
11380
11381         PR target/36222
11382         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
11383         and op1 expansion before vector concat to have less live pseudos.
11384
11385 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
11386
11387         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
11388         ix86_expand_vector_set if supported.
11389
11390 2008-05-13  Diego Novillo  <dnovillo@google.com>
11391             Kenneth Zadeck  <zadeck@naturalbridge.com>
11392
11393         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
11394
11395         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
11396         phinodes_print_statistics, init_ssanames, fini_ssanames,
11397         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
11398         release_ssa_name, release_defs, replace_ssa_name_symbol,
11399         ssanames_print_statistics): Move ...
11400         * tree-flow.h: ... here.
11401         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
11402         Use FN instead of cfun.
11403         (make_ssa_name_fn): Rename from make_ssa_name.
11404         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
11405         * tree-flow-inline.h (make_ssa_name): Move from
11406         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
11407         * omp-low.c (expand_omp_parallel):
11408         * tree-flow-inline.h (redirect_edge_var_map_result):
11409         * tree-ssa.c (init_tree_ssa): Add argument FN.
11410         Use it instead of cfun.  Update all users.
11411
11412 2008-05-13  Tom Tromey  <tromey@redhat.com>
11413
11414         PR preprocessor/22168:
11415         * doc/cpp.texi (Top): Update menu.
11416         (Alternatives to Wrapper #ifndef): New node.
11417         (Other Directives): Document deprecation.
11418         (Obsolete Features): Remove menu.
11419         (Assertions): Merge node into Obsolete Features.
11420         (Obsolete once-only headers): Move earlier; rename to Alternatives
11421         to Wrapper #ifndef.
11422         * doc/cppopts.texi: Update.
11423         * c.opt (Wdeprecated): Enable for C and ObjC.
11424         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
11425         (C++ Dialect Options): Move -Wno-deprecated from here to...
11426         (Warning Options): ... here.
11427
11428 2008-05-13  Richard Guenther  <rguenther@suse.de>
11429
11430         PR middle-end/36227
11431         * fold-const.c (fold_sign_changed_comparison): Do not allow
11432         changes in pointer-ness.
11433
11434 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11435
11436         PR target/24713
11437         * config/sh/sh.c (sh_expand_prologue): Don't clear
11438         RTX_FRAME_RELATED_P for push insns.
11439
11440 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
11441
11442         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
11443
11444 2008-05-12  Anatoly Sokolov <aesok@post.ru>
11445
11446         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
11447         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
11448         Use 'machine->is_leaf' instead of 'leaf_func_p'.
11449
11450 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
11451
11452         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
11453         (*vec_concatv4sf_sse): This.
11454         (*sse2_concatv2si): Renamed to ...
11455         (*vec_concatv2si_sse2): This.
11456         (*sse1_concatv2si): Renamed to ...
11457         (*vec_concatv2si_sse): This.
11458         (*vec_concatv2di_rex): Renamed to ...
11459         (*vec_concatv2di_rex64): This.
11460         (*vec_concatv2si_sse4_1): New.
11461         (*vec_concatv2di_rex64_sse4_1): Likewise.
11462
11463 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
11464
11465         PR rtl-optimization/36111
11466         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
11467         that was created for swappable operands.
11468
11469 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
11470
11471         PR ada/36001
11472         * Makefile.in: Substitute GNATMAKE and GNATBIND.
11473         * configure.ac: Add call to ACX_PROG_GNAT.
11474
11475 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
11476
11477         * optc-gen.awk: Fix comment typo.
11478
11479 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
11480
11481         * pretty-print.c (pp_integer_with_precision): Use
11482         HOST_LONG_LONG_FORMAT.
11483
11484 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
11485
11486         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
11487
11488 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
11489
11490         * config/i386/i386.c (bdesc_ptest): Removed.
11491         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
11492         (bdesc_args): Add __builtin_ia32_ptestz128,
11493         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
11494         (ix86_init_mmx_sse_builtins): Updated.
11495         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
11496         (ix86_expand_builtin): Updated.
11497
11498 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
11499
11500         * tree-cfg.c (valid_fixed_convert_types_p): New function.
11501         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
11502
11503 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
11504
11505         * value-prof.c (interesting_stringop_to_profile): Do not
11506         return early for BUILT_IN_MEMPCPY.
11507
11508 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
11509
11510         * calls.c (expand_call): Don't use callgraph to increase
11511         preferred_stack_boundary.
11512
11513         * cgraph.h (cgraph_rtl_info): Use unsigned on
11514         preferred_incoming_stack_boundary.
11515
11516         * final.c (rest_of_clean_state): Use unsigned on
11517         preferred_stack_boundary.
11518
11519 2008-05-09  Tom Tromey  <tromey@redhat.com>
11520
11521         PR preprocessor/22231:
11522         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
11523         proceeding.
11524
11525 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
11526
11527         PR tree-optimization/36129
11528         * tree-ssa-ccp.c: Include value-prof.h.
11529         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
11530         built-in function was folded to a constant.
11531         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
11532
11533 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
11534             Sebastian Pop  <sebastian.pop@amd.com>
11535
11536         * tree-scalar-evolution.c: Document instantiate_scev.
11537         (instantiate_parameters_1): Renamed instantiate_scev_1.
11538         Don't use the same loop for instantiation_loop and evolution_loop.
11539         (instantiate_scev): New.
11540         (instantiate_parameters): Moved...
11541         (resolve_mixers): Update call to instantiate_scev_1 to pass the
11542         same loop twice.  Maintains the semantics for this function.
11543         * tree-scalar-evolution.h (instantiate_scev): Declare.
11544         (instantiate_parameters): ...here.  Now static inline.
11545         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
11546         instead of resolve_mixers.
11547
11548 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11549
11550         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
11551
11552 2008-05-09  Tomas Bily  <tbily@suse.cz>
11553
11554         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
11555         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
11556         * tree-ssa-structalias.c (get_constraint_for): Likewise.
11557         * c-common.c (c_common_truthvalue_conversion): Likewise.
11558         * tree-object-size.c (compute_object_offset): Likewise.
11559         * tree-inline.c (estimate_num_insns_1): Likewise.
11560         * varasm.c (const_hash_1, compare_constant, copy_constant)
11561         (compute_reloc_for_constant, output_addressed_constants)
11562         (initializer_constant_valid_p): Likewise.
11563         * c-omp.c (check_omp_for_incr_expr): Likewise.
11564         * gimplify.c (gimplify_expr): Likewise.
11565         * c-typeck.c (c_finish_return): Likewise.
11566         * tree-vectorizer.c (supportable_widening_operation)
11567         (supportable_narrowing_operation): Likewise.
11568         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
11569         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
11570         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
11571         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
11572         (descr_info_loc): Likewise.
11573         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
11574         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
11575         (fold_unary): Likewise.
11576         * builtins.c (get_pointer_alignment): Likewise.
11577         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
11578         (instantiate_parameters_1): Likewise.
11579         * tree.c (expr_align, stabilize_reference): Likewise.
11580         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
11581         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
11582         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
11583         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
11584         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
11585         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
11586         Likewise.
11587         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
11588         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
11589         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
11590         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
11591         (forward_propagate_comparison)
11592         (tree_ssa_forward_propagate_single_use_vars): Likewise.
11593         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
11594         * emit-rtl.c (component_ref_for_mem_expr)
11595         (set_mem_attributes_minus_bitpos): Likewise.
11596         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
11597         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
11598         Likewise.
11599         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
11600         (build_function_call, pointer_diff, build_compound_expr)
11601         (c_finish_return): Likewise.
11602         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
11603         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
11604         Likewise.
11605         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
11606         * expr.c (is_aligning_offset): Likewise.
11607         * tree-ssa-alias.c (is_escape_site): Likewise.
11608         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
11609         (check_all_va_list_escapes): Likewise.
11610         * tree-ssa-loop-ivopts.c (determine_base_object)
11611         (determine_common_wider_type): Likewise.
11612         * dojump.c (do_jump): Likewise.
11613         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
11614         * tree-gimple.c (is_gimple_cast): Likewise.
11615         * fold-const.c (decode_field_reference, )
11616         (fold_sign_changed_comparison, fold_unary, fold_comparison)
11617         (fold_binary): Likewise.
11618         * tree-ssa-alias-warnings.c (find_alias_site_helper)
11619         (already_warned_in_frontend_p): Likewise.
11620         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
11621         * tree.c (really_constant_p, get_unwidened): Likewise.
11622         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
11623         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
11624         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
11625         Likewise.
11626         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
11627         CONVERT_EXPR_P.
11628         (CONVERT_EXPR_P): Define.
11629         (CASE_CONVERT): Define.
11630
11631 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
11632
11633         PR middle-end/36117
11634         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
11635         (delete_unmarked_insns): When deleting a call, call
11636         delete_unreachable_blocks.
11637         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
11638         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
11639
11640 2008-05-08  Richard Guenther  <rguenther@suse.de>
11641
11642         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
11643         (-ftree-salias): Likewise.
11644         (salias-max-implicit-fields): Remove param documentation.
11645         (salias-max-array-elements): Likewise.
11646         * tree-pass.h (pass_create_structure_vars): Remove.
11647         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
11648         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
11649         * tree-ssa-alias.c (create_structure_vars): Remove.
11650         (gate_structure_vars): Likewise.
11651         (pass_create_structure_vars): Likewise.
11652         (gate_build_alias): Likewise.
11653         (pass_build_alias): Adjust to run always and dump the function.
11654         * common.opt (ftree-salias): Hide.
11655         * passes.c (init_optimization_passes): Remove
11656         pass_create_structure_vars, adjust comment.
11657         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
11658         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
11659         * opts.c (decode_options): Do not set flag_tree_salias.
11660         (common_handle_option): Add OPT_ftree_salias to the backward
11661         compatibility section.
11662
11663 2008-05-08  Richard Guenther  <rguenther@suse.de>
11664
11665         * tree-flow-inline.h (var_can_have_subvars): Move ...
11666         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
11667         * tree-flow.h (var_can_have_subvars): Remove.
11668         (push_fields_onto_fieldstack): Remove.
11669         (sort_fieldstack): Likewise.
11670         (struct fieldoff): Move ...
11671         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
11672         alias_set and base_for_components fields.
11673         (sort_fieldstack): Make static.
11674         (push_fields_onto_fieldstack): Likewise.  Remove code that
11675         handles anything but RECORD_TYPEs.  Remove alias_set and
11676         base_for_components handling.
11677         (create_variable_info_for): Adjust.
11678
11679 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
11680
11681         * common.opt (Wframe-larger-than=): Shorten the help message
11682         to one line.
11683         * doc/invoke.texi (Wframe-larger-than=): Add more description.
11684
11685 2008-05-08  Rafael Espindola  <espindola@google.com>
11686
11687         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
11688         trap.
11689         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
11690         trap and that both operands are gimple values.
11691         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
11692         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
11693         is a fp operation.
11694
11695 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
11696
11697         * read-rtl.c (join_c_conditions): Return the first string if the
11698         two strings are equal.
11699
11700 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
11701
11702         * gensupport.h (pred_data): Add a "num_codes" field.
11703         (add_predicate_code): Declare.
11704         * gensupport.c (add_predicate_code): New function.
11705         (std_pred_table): Add an "allows_const_p" field.
11706         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
11707         Remove the (incomplete) list of such codes from the codes field.
11708         (init_predicate_table): Use add_predicate_code.  Add all
11709         RTX_CONST_OBJs if allows_const_p is true.
11710         * genrecog.c (process_define_predicate): Use add_predicate_code.
11711
11712 2008-05-08  David Daney  <ddaney@avtrex.com>
11713             Richard Sandiford  <rsandifo@nildram.co.uk>
11714
11715         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
11716         special case of constant zero operands.
11717         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
11718         old and new values.  Special case constant zero values.
11719         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
11720         fails.
11721         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
11722         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
11723
11724 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
11725
11726         PR target/36090
11727         * simplify-rtx.c (simplify_plus_minus): Create CONST of
11728         similar RTX_CONST_OBJ before CONST_INT.
11729
11730 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
11731
11732         * stmt.c (expand_stack_restore): Change sa mode if needed.
11733
11734 2008-05-08  Richard Guenther  <rguenther@suse.de>
11735
11736         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
11737         return type to bool.
11738         (ix86_sol10_return_in_memory): Likewise.
11739         (ix86_i386elf_return_in_memory): Likewise.
11740         (ix86_i386interix_return_in_memory): Likewise.
11741         * config/i386/i386.c (ix86_return_in_memory): Likewise.
11742         (ix86_sol10_return_in_memory): Likewise.
11743         (ix86_i386elf_return_in_memory): Likewise.
11744         (ix86_i386interix_return_in_memory): Likewise.
11745
11746 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
11747
11748         PR bootstrap/36180
11749         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
11750         fndecl argument.
11751         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
11752         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
11753         declared in front.
11754
11755 2008-05-08  Richard Guenther  <rguenther@suse.de>
11756
11757         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
11758         * tree-data-ref.h (struct dr_alias): Remove subvars field.
11759         (DR_SUBVARS): Remove.
11760         * tree-dfa.c (dump_subvars_for): Remove.
11761         (debug_subvars_for): Likewise.
11762         (dump_variable): Do not dump subvars.
11763         (remove_referenced_var): Do not remove subvars.
11764         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
11765         (lookup_subvars_for_var): Remove.
11766         (get_subvars_for_var): Likewise.
11767         (get_subvars_at): Likewise.
11768         (get_first_overlapping_subvar): Likewise.
11769         (overlap_subvar): Likewise.
11770         * tree-flow.h (subvar_t): Remove.
11771         (struct var_ann_d): Remove subvars field.
11772         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
11773         argument.  Remove special handling of SFTs.
11774         (compute_tag_properties): Likewise.
11775         (set_initial_properties): Likewise.
11776         (compute_call_clobbered): Likewise.
11777         (count_mem_refs): Likewise.
11778         (compute_memory_partitions): Likewise.
11779         (compute_flow_insensitive_aliasing): Likewise.
11780         (setup_pointers_and_addressables): Likewise.
11781         (new_type_alias): Likewise.
11782         (struct used_part): Remove.
11783         (used_portions): Likewise.
11784         (struct used_part_map): Likewise.
11785         (used_part_map_eq): Likewise.
11786         (used_part_map_hash): Likewise.
11787         (free_used_part_map): Likewise.
11788         (up_lookup): Likewise.
11789         (up_insert): Likewise.
11790         (get_or_create_used_part_for): Likewise.
11791         (create_sft): Likewise.
11792         (create_overlap_variables_for): Likewise.
11793         (find_used_portions): Likewise.
11794         (create_structure_vars): Likewise.
11795         * tree.def (STRUCT_FIELD_TAG): Remove.
11796         * tree.h (MTAG_P): Adjust.
11797         (struct tree_memory_tag): Remove base_for_components and
11798         unpartitionable flags.
11799         (struct tree_struct_field_tag): Remove.
11800         (SFT_PARENT_VAR): Likewise.
11801         (SFT_OFFSET): Likewise.
11802         (SFT_SIZE): Likewise.
11803         (SFT_NONADDRESSABLE_P): Likewise.
11804         (SFT_ALIAS_SET): Likewise.
11805         (SFT_UNPARTITIONABLE_P): Likewise.
11806         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
11807         (union tree_node): Remove sft field.
11808         * alias.c (get_alias_set): Remove special handling of SFTs.
11809         * print-tree.c (print_node): Remove handling of SFTs.
11810         * tree-dump.c (dequeue_and_dump): Likewise.
11811         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
11812         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
11813         * tree-predcom.c (set_alias_info): Do not set subvars.
11814         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
11815         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
11816         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
11817         (add_vars_for_offset): Remove.
11818         (add_virtual_operand): Remove special handling of SFTs.
11819         (add_call_clobber_ops): Likewise.
11820         (add_call_read_ops): Likewise.
11821         (get_asm_expr_operands): Likewise.
11822         (get_modify_stmt_operands): Likewise.
11823         (get_expr_operands): Likewise.
11824         (add_to_addressable_set): Likewise.
11825         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
11826         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
11827         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
11828         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
11829         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
11830         (tree_node_structure): Likewise.
11831         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
11832         handling of SFTs.
11833         (find_what_p_points_to): Likewise.
11834
11835 2008-05-08  Sa Liu  <saliu@de.ibm.com>
11836
11837         * config/spu/spu.md: Fixed subti3 pattern.
11838
11839 2008-05-08  Richard Guenther  <rguenther@suse.de>
11840
11841         PR middle-end/36154
11842         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
11843         sure to create a representative for trailing arrays for PTA.
11844
11845 2008-05-08  Richard Guenther  <rguenther@suse.de>
11846
11847         PR middle-end/36172
11848         * fold-const.c (operand_equal_p): Two objects which types
11849         differ in pointerness are not equal.
11850
11851 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
11852
11853         * calls.c (compute_argument_block_size): Add argument tree fndecl.
11854         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
11855         (emit_library_call_value_1): Add new variable fndecl initialized by
11856         NULL_TREE. It should be the decl type of orgfun, but this information
11857         seems not to be available here, so it uses the default calling abi.
11858         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
11859         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
11860         by TARGET_RETURN_IN_MEMORY.
11861         * config/i386/i386-interix.h: Likewise.
11862         * config/i386/i386.h: Likewise.
11863         * config/i386/i386elf.h: Likewise.
11864         * config/i386/ptx4-i.h: Likewise.
11865         * config/i386/sol2-10.h: Likewise.
11866         * config/i386/sysv4.h: Likewise.
11867         * config/i386/vx-common.h: Likewise.
11868         * config/cris/cris.h: Removed #if 0 clause.
11869         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
11870         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
11871         argument.
11872         (ix86_sol10_return_in_memory): Likewise.
11873         (ix86_i386elf_return_in_memory): New.
11874         (ix86_i386interix_return_in_memory): New.
11875         * config/mt/mt-protos.h (mt_return_in_memory): New.
11876         * config/mt/mt.c: Likewise.
11877         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
11878         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
11879         * config/bfin/bfin.h: Likewise.
11880         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
11881         argument.
11882         * config/bfin/bfin.c: Likewise.
11883         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
11884         * config/alpha/unicosmk.h: Likewise.
11885         * config/i386/cygming.h: Likewise.
11886         * config/iq2000/iq2000.h: Likewise.
11887         * config/mips/mips.h: Likewise.
11888         * config/mn10300/mn10300.h: Likewise.
11889         * config/rs6000/rs6000.h: Likewise.
11890         * config/score/score.h: Likewise.
11891         * config/spu/spu.h: Likewise.
11892         * config/v850/v850.h: Likewise.
11893         * defaults.h: Likewise.
11894         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
11895         * expr.c (emit_block_move): Adjust use of
11896         OUTGOING_REG_PARM_STACK_SPACE.
11897         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
11898         OUTGOING_REG_PARM_STACK_SPACE.
11899         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
11900
11901 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
11902
11903         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
11904         on OMP_RETURN for OMP_FOR.
11905
11906         PR debug/35896
11907         * dwarf2out.c (dw_expand_expr, common_check): Removed.
11908         (fortran_common): New function.
11909         (gen_variable_die): Call fortran_common instead of common_check,
11910         adjust for it returning tree instead of rtx.  Formatting.
11911
11912 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
11913
11914         PR rtl/7335
11915         PR rtl/33826
11916         * see.c (see_copy_insn): Copy new pure const attributes for new call.
11917         * c-decl.c (merge_decls): Ditto.
11918         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
11919         to RTL_CONST_OR_PURE_CALL_P.
11920         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
11921         Initialized DECL_LOOPING_CONST_PURE.
11922         (process_call_operands): Set tree_side_effects properly.
11923         * tree.h (TREE_READONLY_DECL_P): Removed.
11924         (DECL_IS_PURE): Renamed to DECL_PURE_P.
11925         (DECL_LOOPING_OR_CONST_P): New macro.
11926         (struct tree_function_decl): Added looping_const_or_pure_p.
11927         (ECF_*) Renumbered.
11928         (ECF_LOOPING_OR_CONST_P): New macro.
11929         * rtlanal.c (pure_const_p): Removed.
11930         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
11931         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
11932         to RTL_CONST_CALL_P.
11933         * ipa-pure-const.c (pure_const_state_e): Added looping field.
11934         (check_decl, check_tree, check_call, scan_function): Initialize
11935         looping.
11936         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
11937         (static_execute): Set looping true for recursive functions.
11938         Undo setting state to IPA_NEITHER for recursive functions.
11939         * cse.c (cse_insn):
11940         * ifcvt.c (noce_can_store_speculate_p): Changed
11941         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
11942         RTL_CONST_OR_PURE_CALL_P.
11943         * dse.c (scan_insn): Ditto.
11944         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
11945         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
11946         RTL_CONST_OR_PURE_CALL_P.
11947         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
11948         pure_call_p to RTL_CONST_CALL_P.
11949         * gimplify.c (gimplify_call_expr): Clear side effects for
11950         non-looping pure and constant calls.
11951         * calls.c (emit_call_1): Set rtl flags from ecf flags.
11952         (flags_from_decl_or_type): Set ecf flags from decl flags.
11953         (initialize_argument_information): Turn off
11954         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
11955         Change const to pure if callee_copies is true rather than just
11956         turning off const.
11957         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
11958         way of marking pure calls.
11959         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
11960         Remove hack that was supposed to fix pr7335 and remove old
11961         way of marking pure calls.
11962         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
11963         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
11964         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
11965         RTL_CONST_OR_PURE_CALL_P.
11966         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
11967         * loop-invariant.c (find_exits, find_invariant_bb): Changed
11968         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
11969         * sched-deps.c (schedule_analyze): Ditto.
11970         * rtl.h (struct rtx_def): Use call field, unchanging field, and
11971         return_val field of calls to represent pure and const function info.
11972         (CONST_OR_PURE_CALL_P): Deleted macro.
11973         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
11974         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
11975         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
11976         TREE_READONLY.
11977         * tree-optimize.c (execute_fixup_cfg): Added test for
11978         ECF_LOOPING_CONST_OR_PURE.
11979         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
11980         DECL_PURE_P.
11981         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
11982         effects for looping pure or const calls.
11983         (verify_gimple_expr): Added verification code.
11984         * config/alpha/alpha.c (alpha_legitimize_address,
11985         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
11986         RTL_CONST_CALL_P.
11987         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
11988         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
11989         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
11990         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
11991         RTL_CONST_OR_PURE_CALL_P.
11992         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
11993         and const calls to be deleted.
11994
11995 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
11996
11997         PR target/35714
11998         * config/i386/mmx.md (mmx_subv2sf3): New expander.
11999         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
12000         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
12001         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12002         to handle nonimmediate operands.
12003         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
12004         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
12005         to handle nonimmediate operands.
12006         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
12007         (mmx_pmulhrwv4hi3): New expander.  Use
12008         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12009         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
12010         (sse2_umulv1siv1di3): New expander.  Use
12011         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12012         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
12013         (mmx_eq<mode>3): New expander.  Use
12014         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12015         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
12016         (mmx_uavgv8qi3): New expander.  Use
12017         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12018         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
12019         (mmx_uavgv4hi3): New expander.  Use
12020         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12021
12022         * config/i386/sse.md
12023         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
12024         to handle nonimmediate operands.
12025         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
12026         to handle nonimmediate operands.
12027         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
12028         to handle nonimmediate operands.
12029         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
12030         to handle nonimmediate operands.
12031         (sse2_unpckhpd_exp): New expander.  Use
12032         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12033         (sse2_unpcklpd_exp): New expander.  Use
12034         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12035         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
12036         to handle nonimmediate operands.
12037         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
12038         to handle nonimmediate operands.
12039         (*sse2_<plusminus_insn><mode>3): Rename from
12040         sse2_<plusminus_insn><mode>3 insn pattern.
12041         (sse2_<plusminus_insn><mode>3): New expander.  Use
12042         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12043         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
12044         (sse2_umulv2siv2di3): New expander.  Use
12045         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12046         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
12047         (sse4_1_mulv2siv2di3): New expander.  Use
12048         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12049         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
12050         (sse2_pmaddwd): New expander.  Use
12051         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12052         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
12053         (sse2_eq<mode>3): New expander.  Use
12054         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12055         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
12056         (sse4_1_eqv2di3): New expander.  Use
12057         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12058         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
12059         (sse2_uavgv16qi3): New expander.  Use
12060         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12061         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
12062         (sse2_uavgv16qi3): New expander.  Use
12063         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12064         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
12065         (sse2_uavgv8hi3): New expander.  Use
12066         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12067         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
12068         (ssse3_pmulhrswv8hi3): New expander.  Use
12069         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12070         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
12071         (ssse3_pmulhrswv4hi3): New expander.  Use
12072         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12073
12074         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
12075         (<sse>_vmmul<mode>3): Ditto.
12076         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
12077         (divv2df3): Ditto.
12078         (ssse3_pmaddubsw128): Use register_operand for operand 1.
12079         (ssse3_pmaddubsw): Ditto.
12080
12081         * config/i386/i386.c (struct_builtin_description)
12082         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
12083         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
12084         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
12085         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
12086         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
12087         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
12088         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
12089         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
12090         (ix86_fixup_binary_operands): Assert that src1
12091         and src2 must have the same mode when swapped.
12092         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
12093         and ix86_binary_operator_ok.  Do not force operands in registers
12094         when optimizing.
12095
12096 2008-05-07  Jan Hubicka  <jh@suse.cz>
12097
12098         * cgraph.c (dump_cgraph_node): Update.
12099         * cgraph.h (cgraph_local_info): Break out inline summary.
12100         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
12101         hook.
12102         * ipa-inline (inline_summary): New accestor function.
12103         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
12104         cgraph_decide_inlining, compute_inline_parameters): Update.
12105         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
12106
12107 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12108
12109         Cleanup ColdFire scheduling support and add V4 pipeline model.
12110
12111         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
12112         (define_attr cpu): Add cfv4 value.
12113         (define_attr type, define_attr type1): Merge into a single 'type'
12114         attribute.  Update all uses.
12115         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
12116         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
12117         Update all uses.
12118         (define_attr opx_mem, define_attr opy_mem): Remove.
12119         (define_attr op_mem): Clean up, update comment.
12120         (define_attr size): Use specific values instead of general int.
12121         (define_attr guess, define_attr split): Remove.  Update all uses.
12122         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
12123         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
12124         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
12125         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
12126         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
12127         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
12128         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
12129         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
12130         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
12131         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
12132         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
12133         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
12134         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
12135         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
12136         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
12137         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
12138         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
12139         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
12140         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
12141         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
12142         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
12143         Update or set attributes.
12144         (stack_tie): New fake instruction.
12145
12146         * config/m68k/m68k.h (TUNE_CFV4): New macro.
12147         (m68k_sched_attr_size): Update declaration.
12148         (m68k_sched_attr_type2): Remove.
12149         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
12150         Declare new bypass predicates.
12151
12152         * config/m68k/m68k.c (m68k_sched_issue_rate,
12153         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
12154         implementations.
12155         (TARGET_SCHED_ISSUE_RATE,
12156         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
12157         (override_options): Handle scheduling for ColdFire V4 core.
12158         (m68k_expand_prologue): Emit stack_tie.
12159         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
12160         'OP_TYPE_FPN'.  Update all uses.
12161         (sched_guess_p): Remove.
12162         (sched_address_type): Handle symbolic addresses.
12163         (sched_get_operand): New static function.
12164         (sched_operand_type): Merge into sched_attr_op_type.
12165         (sched_attr_op_type): Handle FP registers, handle quick constants,
12166         update.
12167         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
12168         (m68k_sched_attr_size): Update.  Move logic to ...
12169         (sched_get_attr_size_int): New static function.
12170         (sched_get_opxy_mem_type): New static function.
12171         (m68k_sched_attr_op_mem): Update.
12172         (m68k_sched_attr_type2): Remove.
12173         (sched_cfv4_bypass_data): New static variable.
12174         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
12175         (m68k_sched_issue_rate): Implement scheduler hook.
12176         (struct _sched_ib: enabled_p): New field.
12177         (m68k_sched_variable_issue): Update.  Handle V4.
12178         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
12179         sched_dump_class_func_t, sched_dump_split_class,
12180         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
12181         sched_dump_dfa_class, m68k_sched_dump): Remove.
12182         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
12183         hook.
12184         (m68k_sched_init_global): Remove statisctics dumping, introduce
12185         sanity check that all instructions have pipeline reservations.  Handle
12186         ColdFire V4 core.
12187         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
12188         Handle ColdFire V4 core.
12189         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
12190         New static functions.
12191         (m68k_sched_address_bypass_p): New bypass predicate.
12192         (sched_get_indexed_address_scale): New static function.
12193         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
12194
12195         * cf.md: Update comments.
12196         (define_attr type2): Remove.  Use 'type' attribute instead.
12197         Update all uses.
12198         (cf_ib): Rename to cfv123_ib.  Update all uses.
12199         (cf_oep): Rename to cfv123_oep.  Update all uses.
12200         (cf_chr): Rename to cfv123_chr.  Update all uses.
12201         (cf_mem): Rename to cfv123_mem.  Update all uses.
12202         (cf_mac): Move to more appropriate place.
12203         (cfv123_guess): New automaton and cpu_unit.
12204         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
12205         Update uses of 'size' attribute.  Handle before reload scheduling.
12206         (cfv123_guess): New dummy reservation for unhandled instructions.
12207         (cfv4_*): Pipeline description of ColdFire V4 core.
12208         (ignore): New reservation to handle 'ignore' type.
12209
12210 2008-05-07  Ian Lance Taylor  <iant@google.com>
12211
12212         PR middle-end/36013
12213         * gimplify.c (find_single_pointer_decl_1): Don't look through
12214         indirections.
12215         (find_single_pointer_decl): Adjust comments.
12216
12217 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
12218
12219         PR middle-end/36137
12220         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
12221         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
12222
12223         PR middle-end/36106
12224         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
12225         integral type rather than floating point, then VIEW_CONVERT_EXPR
12226         to the floating point type.
12227
12228 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
12229
12230         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
12231         TFmode op0 to register.
12232
12233 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
12234
12235         * c-decl.c (grokdeclarator): Comment typo.
12236
12237 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
12238
12239         * tree-flow.h: Remove prototype for computed_goto_p.
12240         * tree-cfg.c (computed_goto_p): Make static.
12241
12242 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
12243
12244         PR target/35657
12245         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
12246         (contains_aligned_value_p): This.  Handle _Decimal128.
12247         (ix86_function_arg_boundary): Only align _Decimal128 to its
12248         natural boundary and handle it properly.
12249
12250 2008-05-06  Martin Jambor  <mjambor@suse.cz>
12251
12252         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
12253         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
12254         (ipcp_method_set_orig_node): Removed.
12255         (ipcp_cval_get_cvalue_type): Removed.
12256         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
12257         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
12258         (ipcp_cval_set_cvalue_type): Removed.
12259         (ipcp_cval_get_cvalue): Removed.
12260         (ipcp_cval_set_cvalue): Removed.
12261         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
12262         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
12263         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
12264         (ipcp_cval_meet): Renamed to ipa_lattice_meet
12265         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
12266         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
12267         (ipcp_get_ith_lattice): Changed parameters.
12268         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
12269         (ipcp_lattice_from_jfunc): Changed parameters.
12270         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
12271         (ipcp_method_cval_print): Added temporary variable info.
12272         (ipcp_redirect): Removed already unused local variable caller.
12273         (ipcp_redirect): New temporary variable orig_callee_info
12274         (ipcp_redirect): Removed newly unused local variable callee.
12275         (ipcp_redirect): Removed (a bit confusing) local variable type.
12276         (ipcp_insert_stage): Added local variable info.
12277         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
12278         renamed too
12279         (ipcp_formal_create): Removed.
12280         (ipcp_method_cval_set): Removed.
12281         (ipcp_propagate_stage): Renamed lattice variables.
12282         (ipcp_method_cval_set_cvalue_type): Removed.
12283         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
12284         (ipcp_print_all_lattices): Changed printed strings to refer to
12285         lattices rather than cvals.
12286         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
12287         (ipcp_propagate_const): Changed formal parameters.
12288         (build_const_val): Changed formal parameters.
12289         (ipcp_insert_stage): Removed useless variable cvalue
12290         (build_const_val): Changed formal parameters.
12291         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
12292         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
12293         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
12294         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
12295         (ipcp_print_func_profile_counts): Changed string from "method" to
12296         "function"
12297         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
12298         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
12299         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
12300         (ipcp_structures_print): Renamed to ipcp_print_all_structures
12301         (ipcp_profile_print): Renamed to ipcp_print_profile_data
12302         (ipcp_lat_is_const): Changed parameters and made inline.
12303         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
12304         (ipcp_redirect): Renamed to ipcp_need_redirect_p
12305         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
12306         the predicate condition directly
12307         (ipcp_propagate_stage): Added local variable args. Removed local
12308         variable callee.  (Both are mere code simplifications.)
12309         (ipcp_method_dont_insert_const): Renamed to
12310         ipcp_node_not_modifiable_p.
12311         (ipcp_node_not_modifiable_p): Made inline.
12312         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
12313         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
12314         (ipcp_print_all_lattices): Removed variable cvalue
12315         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
12316         Updated comments.
12317
12318 2008-05-06  Olivier Hainque  <hainque@adacore.com>
12319
12320         * tree-sra.c (try_instantiate_multiple_fields): Early return
12321         if field has POINTER_TYPE.
12322
12323 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
12324
12325         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
12326         by using 'q' specifier for instruction.
12327         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
12328
12329 2008-05-06  Anatoly Sokolov <aesok@post.ru>
12330
12331         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
12332         Change mode of zero_extract from QImode to HImode.
12333         (sign bit tests peepholes): (Ditto.).
12334
12335 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
12336
12337         * config/i386/mmx.md: Remove double backslashes from asm templates.
12338         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
12339         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12340         to handle nonimmediate operands.
12341         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
12342         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12343         to handle nonimmediate operands.
12344         (*mmx_<code>v2sf3_finite): New insn pattern.
12345         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
12346         (mmx_<code>v2sf3): New expander.  Use
12347         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12348         (mmx_<plusminus_insn><mode>3): New expander.  Use
12349         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12350         (*mmx_<plusminus_insn><mode>3): New insn pattern.
12351         (mmx_add<mode>3): Removed.
12352         (mmx_ssadd<mode>3): Ditto.
12353         (mmx_usadd<mode>3): Ditto.
12354         (mmx_sub<mode>3): Ditto.
12355         (mmx_sssub<mode>3): Ditto.
12356         (mmx_ussub<mode>3): Ditto.
12357         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
12358         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
12359         to handle nonimmediate operands.
12360         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
12361         insn pattern.
12362         (mmx_smulv4hi3_highpart): New expander.  Use
12363         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12364         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
12365         insn pattern.
12366         (mmx_umulv4hi3_highpart): New expander.  Use
12367         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12368         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
12369         (mmx_<code>v4hi3): New expander.  Use
12370         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12371         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
12372         (mmx_<code>v8qi3): New expander.  Use
12373         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12374         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
12375         (mmx_<code><mode>3): New expander.  Use
12376         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12377
12378 2008-05-05  Jan Hubicka  <jh@suse.cz>
12379
12380         PR tree-optimization/36118
12381         * passes.c (pass_init_dump_file): Fix dump header.
12382
12383 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12384
12385         PR middle-end/36141
12386         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
12387         VCE for function decls.
12388
12389 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
12390
12391         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
12392
12393 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
12394
12395         * config/i386/i386.md (sat_plusminus): New.
12396         (plusminus_insn): Likewise.
12397         (plusminus_mnemonic): Likewise.
12398         (addsub): Removed.
12399         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
12400         (*<addsub><mode>3_cc_overflow): Renamed to ...
12401         (*<plusminus_insn><mode>3_cc_overflow): This.
12402         (*<addsub>si3_zext_cc_overflow): Renamed to ...
12403         (*<plusminus_insn>si3_zext_cc_overflow): This.
12404
12405         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
12406         (<plusminus_insn><mode>3): This.
12407         (*<addsub><mode>3): Renamed to ...
12408         (*<plusminus_insn><mode>3): This.
12409         (<sse>_vm<addsub><mode>3): Renamed to ...
12410         (<sse>_vm<plusminus_insn><mode>3): This.
12411         (sse3_h<addsub>v4sf3): Renamed to ...
12412         (sse3_h<plusminus_insn>v4sf3): This.
12413         (sse3_h<addsub>v2df3): Renamed to ...
12414         (sse3_h<plusminus_insn>v2df3): This.
12415         (<plusminus_insn><mode>3): New.
12416         (*<plusminus_insn><mode>3): Likewise.
12417         (sse2_<plusminus_insn><mode>3): Likewise.
12418         (add<mode>): Removed.
12419         (*add<mode>3): Likewise.
12420         (sse2_ssadd<mode>3): Likewise.
12421         (sse2_usadd<mode>3): Likewise.
12422         (sub<mode>3): Likewise.
12423         (*sub<mode>3): Likewise.
12424         (sse2_sssub<mode>3): Likewise.
12425         (sse2_ussub<mode>3): Likewise.
12426
12427 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
12428
12429         * gthr-single.h: Add in required interface elements as per gthr.h.
12430         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
12431         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
12432         Generalize UNUSED macro.
12433         (__gthread_once): Add.
12434         (__gthread_key_create): Add.
12435         (__gthread_key_delete): Add.
12436         (__gthread_getspecific): Add.
12437         (__gthread_setspecific): Add.
12438
12439 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
12440
12441         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
12442         the same size types for the indirect reference on the rhs, then
12443         create a VCE.
12444
12445 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
12446
12447         * config/i386/i386.md
12448         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
12449         one insn template instead of template series.
12450         (*xordi_1_rex64): Ditto.
12451         (*xordi_2_rex64): Ditto.
12452
12453 2008-05-05  Ira Rosen  <irar@il.ibm.com>
12454
12455         PR tree-optimization/36119
12456         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
12457         in case of SLP.
12458
12459 2008-06-04  Jan Hubicka  <jh@suse.cz>
12460
12461         tree-optimization/36100
12462         * tree-pass.h (pass_O0_always_inline): Declare.
12463         * ipa-inline.c (inline_transform): Remove dead code.
12464         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
12465         pass_O0_always_inline): New.
12466         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
12467
12468 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
12469
12470         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
12471         mnemonic in this_param move for TARGET_64BIT.
12472
12473 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
12474
12475         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
12476         (*strmovsi_rex_1): Ditto.
12477         (*strsetsi_1): Ditto.
12478         (*strsetsi_rex_1): Ditto.
12479
12480         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
12481         adddicc expanders using SWI mode iterator.
12482
12483 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
12484
12485         PR target/36121
12486         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
12487         argument handling.
12488
12489 2008-05-04  David S. Miller  <davem@davemloft.net>
12490
12491         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
12492         (sparc*-*-linux*): Use linux.h in tm_file.
12493         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
12494         compiler defaulting to 32-bit.
12495         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
12496         no longer needed.
12497         * config/sparc/linux.h: Remove definitions now obtained
12498         properly from linux.h
12499         * config/sparc/linux64.h: Likewise.
12500         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
12501         don't want this setting for 32-bit builds in a biarch compiler.
12502         * doc/install.texi: Add sparc-linux to list of targets
12503         supporting --enable-targets=all.
12504
12505 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
12506
12507         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
12508
12509 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
12510
12511         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
12512         after V4SI_FTYPE_V8HI.
12513         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
12514         case V4SI_FTYPE_V2DF.
12515
12516 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
12517
12518         * doc/invoke.texi (max-flow-memory-locations): Removed.
12519         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
12520
12521 2008-05-03  Richard Guenther  <rguenther@suse.de>
12522
12523         PR middle-end/34973
12524         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
12525
12526 2008-05-02  David S. Miller  <davem@davemloft.net>
12527
12528         * config.gcc (need_64bit_hwint): Document libcpp dependency.
12529
12530 2008-05-02  Simon Baldwin <simonb@google.com>
12531
12532         PR bootstrap/36108
12533         * c-common.h (warn_array_subscript_range): Removed.
12534         * c-common.c (warn_array_subscript_range): Ditto.
12535         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
12536         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
12537
12538 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
12539
12540         * config/i386/i386.c (ix86_special_builtin_type): New.
12541         (bdesc_special_args): Likewise.
12542         (ix86_expand_special_args_builtin): Likewise.
12543         (ix86_init_mmx_sse_builtins): Updated.
12544         (ix86_expand_builtin): Updated.
12545         (ix86_expand_store_builtin): Removed.
12546         (ix86_expand_unop_builtin): Likewise.
12547
12548         * config/i386/mm3dnow.h (__v2sf): Moved to ...
12549         * config/i386/mmintrin.h (__v2sf): Here.
12550
12551         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
12552         const __v2sf.
12553         (_mm_loadl_pi): Likewise.
12554         (_mm_storeh_pi): Replace __v2si with __v2sf.
12555         (_mm_storel_pi): Likewise.
12556
12557         * doc/extend.texi: Correct __builtin_ia32_loadhps,
12558         __builtin_ia32_loadlps, __builtin_ia32_storehps,
12559         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
12560         __builtin_ia32_loadlpd.
12561
12562 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
12563
12564         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
12565         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
12566         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
12567         (ix86_init_mmx_sse_builtins): Updated.
12568         (ix86_expand_args_builtin): Likewise.
12569         (ix86_expand_builtin): Likewise.
12570         (ix86_expand_unop1_builtin): Renamed to ...
12571         (ix86_expand_unop_vec_merge_builtin): This.
12572
12573 2008-05-01  Jan Hubicka  <jh@suse.cz>
12574
12575         PR bootstrap/36100
12576         * ipa-inline.c (inline_generate_summary): Make static.
12577         (inline_transform): Do not call inlining at -O0; make static.
12578         * passes.c (execute_todo): Add sanity check.
12579         (execute_one_ipa_transform_pass): Execute proper flags.
12580
12581 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
12582
12583         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
12584         (DECL_NONADDRESSABLE_P): Likewise.
12585         * alias.c (record_component_aliases): Fix comment.
12586
12587 2008-05-01  Simon Baldwin <simonb@google.com>
12588
12589         * c-common.h (warn_array_subscript_range): New function.
12590         * c-common.c (warn_array_subscript_range): Ditto.
12591         * tree-vrp.c (check_array_ref): Corrected code to agree with
12592         comment, ignoring only arrays of size 0 or size 1.
12593         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
12594
12595 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12596
12597         * config/i386/i386.c (ix86_builtin_type): Replace
12598         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
12599         (bdesc_args): Updated.
12600         (ix86_init_mmx_sse_builtins): Likewise.
12601         (ix86_expand_args_builtin): Likewise.
12602
12603         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
12604         with __v1di.
12605
12606         * doc/extend.texi: Correct __builtin_ia32_palignr.
12607
12608 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12609
12610         PR target/36095
12611         * config/i386/i386.c (bdesc_crc32): Removed.
12612         (ix86_expand_crc32): Likewise.
12613         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
12614         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
12615         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
12616         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
12617         UINT_FTYPE_UINT_UCHAR.
12618         (bdesc_args): Updated. Add crc32 builtins.
12619         (ix86_init_mmx_sse_builtins): Updated.
12620         (ix86_expand_args_builtin): Updated to support subreg.
12621
12622         * doc/extend.texi: Correct __builtin_ia32_crc32di.
12623
12624 2008-05-01  Jan Hubicka  <jh@suse.cz>
12625
12626         * tree-pass.h (opt_pass): Add IPA_PASS.
12627         (varpool_node, cgraph_node): Forward declare.
12628         (ipa_opt_pass): Define.
12629         (pass_ipa_inline): Turn into ipa_opt_pass.
12630         (pass_apply_inline): Remove.
12631         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
12632         (apply_inline): Turn into ....
12633         (inline_transform): ... this one.
12634         (inline_generate_summary): New function.
12635         (pass_apply_inline): Remove.
12636         * function.h (ipa_opt_pass): Forward declare structure; typedef;
12637         vector.
12638         (struct function): Add ipa_transforms_to_apply.
12639         * passes.c (register_one_dump_file): Work on IPA_PASS.
12640         (init_optimization_passes): Remove pass_inline_parameters and
12641         pass_apply_inline.
12642         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
12643         (execute_one_pass) ... here; apply transforms when possible.
12644         (add_ipa_transform_pass, execute_ipa_summary_asses,
12645         execute_one_ipa_transform_pass): New.
12646         (execute_ipa_pass_list): Update for IPA_PASS type.
12647
12648 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12649
12650         * config/i386/i386.c (ix86_builtin_type): Add
12651         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
12652         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
12653         (bdesc_args): Add SSE4a builtins.
12654         (ix86_init_mmx_sse_builtins): Updated.
12655         (ix86_expand_args_builtin): Likewise.
12656         (ix86_expand_builtin): Likewise.
12657
12658 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12659
12660         * config/i386/i386.c (ix86_builtin_type): Add
12661         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
12662         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
12663         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
12664         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
12665         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
12666         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
12667         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
12668         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
12669         and DI_FTYPE_DI_DI_INT.
12670         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
12671         (ix86_init_mmx_sse_builtins): Updated.
12672         (ix86_expand_args_builtin): Likewise.
12673         (ix86_expand_builtin): Likewise.
12674         (ix86_expand_binop_imm_builtin): Removed.
12675
12676         * doc/extend.texi: Correct __builtin_ia32_palignr128.
12677
12678 2008-04-30  Richard Guenther  <rguenther@suse.de>
12679
12680         PR tree-optimization/32921
12681         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
12682
12683 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
12684
12685         * config/arm/arm.c (arm_unwind_emit): Use
12686         crtl->all_throwers_are_sibcalls instead of
12687         cfun->all_throwers_are_sibcalls.
12688         (arm_output_fn_unwind): Likewise.
12689         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
12690         instead of cfun->uses_pic_offset_table.
12691         (frv_expand_prologue): Likewise.
12692         (frv_frame_pointer_required): Likewise.
12693         (frv_expand_fdpic_call): Likewise.
12694         (frv_emit_movsi): Likewise.
12695         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
12696         cfun->returns_pcc_struct instead of
12697         current_function_returns_pcc_struct.
12698         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
12699         instead of cfun->calls_eh_return.
12700         (m32c_pushm_popm): Likewise.
12701         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
12702         "extern" declaration.
12703
12704 2008-04-30  Richard Guenther  <rguenther@suse.de>
12705
12706         PR tree-optimization/21636
12707         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
12708         constant address.
12709         (evaluate_stmt): Print the likely value.
12710         (ccp_visit_stmt): Avoid excessive vertical spacing.
12711
12712 2008-04-30  Rafael Espindola  <espindola@google.com>
12713
12714         * builtins.c (fold_call_expr): Return realret.
12715         * tree-ssa-threadedge.c
12716         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
12717         __builtin_object_size.
12718
12719 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
12720
12721         * gcc.c (wrapper_string): New variable.
12722         (insert_wrapper): New function.
12723         (execute): New option -wrapper.
12724         * doc/invoke.texi (Overall Options): New driver option -wrapper.
12725
12726 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
12727
12728         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
12729         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
12730         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
12731         from...
12732         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
12733         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
12734         config/rs6000/e500crtres64gprctr.asm,
12735         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
12736         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
12737         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
12738         config/rs6000/e500crtsav64gprctr.asm,
12739         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
12740         config/rs6000/e500crtsavg64gprctr.asm: New files.
12741         * config/rs6000/t-ppccomm: Add build rules for new files.
12742         (LIB2FUNCS_STATIC_EXTRA): Add new files.
12743         * config/rs6000/t-netbsd: Add build rules for new files.
12744         (LIB2FUNCS_STATIC_EXTRA): New variable.
12745         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
12746         (CRTSAVRES_DEFAULT_SPEC): Likewise.
12747         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
12748
12749 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
12750
12751         * config/i386/i386.c (ix86_builtin_type): Add
12752         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
12753         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
12754         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
12755         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
12756         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
12757         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
12758         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
12759         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
12760         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
12761         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
12762         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
12763         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
12764         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
12765         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
12766         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
12767         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
12768         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
12769         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
12770         V1DI_FTYPE_V2SI_V2SI.
12771         (bdesc_2arg): Moved to ...
12772         (bdesc_args): Here.
12773         (ix86_init_mmx_sse_builtins): Updated.
12774         (ix86_expand_args_builtin): Updated.  Take a pointer
12775         to const struct builtin_description.  Handle comparison
12776         builtin functions.
12777         (ix86_expand_sse_compare): Take a new argument for swapping operands.
12778         (ix86_expand_builtin): Updated.
12779
12780         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
12781         (ssse3_pmaddubsw128): This.
12782         (ssse3_pmaddubswv4hi3): Renamed to ...
12783         (ssse3_pmaddubsw): This.
12784
12785         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
12786         (__builtin_ia32_packssdw128): Likewise.
12787         (__builtin_ia32_packuswb128): Likewise.
12788         (__builtin_ia32_pmaddubsw): Likewise.
12789         (__builtin_ia32_pmaddubsw128): Likewise.
12790
12791 2008-04-30  Richard Guenther  <rguenther@suse.de>
12792
12793         PR tree-optimization/14847
12794         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
12795         (recognize_bits_test): Use it.
12796         (recognize_single_bit_test): Likewise.
12797
12798 2008-04-30  Martin Jambor  <mjambor@suse.cz>
12799
12800         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
12801         instead of setting number of formal parameters to zero.
12802         (ipcp_init_stage): Do not set the number of actual parameters to zero
12803         either.
12804         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
12805         which are called with variable number of arguments.
12806         (ipcp_insert_stage): Explicitely skipping all nodes which are
12807         called with variable number of arguments.
12808         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
12809         number of parameters.
12810
12811         * ipa-prop.h (struct ipa_node_params): Added flag
12812         called_with_var_arguments
12813         (ipa_set_param_count): Added.  Changed sole setter to use it.
12814         (ipa_get_param_count): Added.  All readers of param_count
12815         converted to use it instead.
12816         (ipa_set_called_with_variable_arg): Added.
12817         (ipa_is_called_with_var_arguments): Added.
12818         (ipa_get_ith_param): Added.  All readers of param_decls converted
12819         to use it instead.
12820         (ipa_set_cs_argument_count): Added, sole writer to argument_count
12821         changed to use it.
12822         (ipa_get_cs_argument_count): Added, all readers of argument_count
12823         changed to cal it.
12824         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
12825         to use it.
12826
12827         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
12828         (struct ipcp_lattice): Renamed cval_type to type
12829         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
12830
12831         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
12832         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
12833         (ipcp_insert_stage): Changed the type of variable cvalue to tree
12834         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
12835         (build_const_val): Changed the type of parameter cvalue to tree
12836         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
12837         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
12838
12839         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
12840         constant
12841
12842         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
12843         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
12844         (ipa_add_method): Renamed to ipa_push_func_to_list
12845         (ipa_remove_method): Renamed to ipa_pop_func_from_list
12846         (ipa_callsite_param_count): Removed.
12847         (ipa_callsite_param_count_set): Removed.
12848         (ipa_callsite_param): Removed.
12849         (ipa_callsite_callee): Removed.
12850         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
12851         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
12852         (ipa_method_formal_count): Removed.
12853         (ipa_method_formal_count_set): Removed.
12854         (ipa_method_get_tree): Removed.
12855         (ipa_method_tree_map_create): Removed.
12856         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
12857         (ipa_create_param_decls_array): Creates the array itself
12858         (ipa_create_param_decls_array): Temporary variable info instead of
12859         a few dereferences.
12860         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
12861         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
12862         (get_type): Removed.
12863         (ipa_jf_get_info_type): Removed.
12864         (ipa_node_create): Renamed to ipa_create_node_params
12865         (ipa_free): Renamed to ipa_free_all_node_params
12866         (ipa_nodes_create): Renamed to ipa_create_all_node_params
12867         (ipa_edges_create): Renamed to ipa_create_all_edge_args
12868         (ipa_edges_free): Renamed to ipa_free_all_edge_args
12869         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
12870         (ipa_free_all_node_params): Deallocation to jump_functions moved to
12871         ipa_free_all_edge_args
12872         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
12873         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
12874         (ipa_create_methodlist_node): Removed.
12875         (ipa_methodlist_method): Removed.
12876         (ipa_methodlist_method_set): Removed.
12877         (ipa_methodlist_next_method): Removed.
12878         (ipa_methodlist_next_method_set): Removed.
12879         (ipa_method_is_modified): Removed.
12880         (ipa_method_modify_create): Removed.
12881         (ipa_method_modify_init): Temporary variable info instead of a few
12882         dereferences.
12883         (ipa_detect_param_modifications): Temporary variable info instead of
12884         a few dereferences.
12885         (ipa_compute_jump_functions): Temporary variable info instead of
12886         a few dereferences.
12887         (ipa_method_modify_set): Removed.
12888         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
12889         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
12890         than craph_node as the first parameter.
12891         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
12892         (ipa_method_modify_init): Removed.
12893         (ipa_compute_jump_functions): Added a temp variable instead of
12894         repeatadly dereferencing the cgraph_edge.aux pointer
12895         (ipa_callsite_param_set_type): Removed.
12896         (ipa_compute_jump_functions): i renamed to index and moved to
12897         an inner block
12898         (ipa_callsite_param_set_info_type_formal): Removed.
12899         (ipa_callsite_param_set_info_type): Removed.
12900         (ipa_callsite_param_map_create): Removed.
12901         (ipa_callsite_tree): Removed.
12902         (ipa_callsite_caller): Removed.
12903         (ipa_pop_func_from_list): return_method removed to return_func
12904
12905         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
12906         prefixed all values with IPA_. Changed all users.
12907         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
12908         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
12909         and FORMAL_IPATYPE IPA_PASS_THROUGH.
12910         (union parameter_info): Renamed to jump_func_value.
12911         (union jump_func_value): Renamed value to constant
12912         (struct ipa_jump_func): Renamed info_type to value
12913         (struct ipa_node): Renamed to ipa_node_params
12914         (struct ipa_node_params): Renamed ipa_arg_num to param_count
12915         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
12916         (struct ipa_node_params): Renamed ipa_mod to modified_flags
12917         (struct ipa_edge): Renamed to ipa_edge_args
12918         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
12919         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
12920         (struct ipa_methodlist): Renamed to ipa_func_list
12921         (struct ipa_func_list): method_p renamed to node, next_method
12922         renamed to next
12923         (ipa_methodlist_p): Removed, switched all users to struct pointer
12924         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
12925
12926 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
12927
12928         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
12929         (rs6000_emit_epilogue): Use backchain to restore only when we
12930         have a large frame.  Make use of frame pointer to restore if we
12931         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
12932
12933 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
12934
12935         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
12936         Add mode to zero_extract.
12937         (sign bit tests peepholes): (Ditto.).
12938
12939 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
12940
12941         * config/i386/i386.c (ix86_builtins): Replace Prescott New
12942         Instructions in comments with SSE3.
12943         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
12944         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
12945         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
12946         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
12947         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
12948         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
12949         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
12950         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
12951         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
12952         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
12953         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
12954         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
12955         (bdesc_sse_args): Renamed to ...
12956         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
12957         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
12958         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
12959         IX86_BUILTIN_FABSQ.
12960         (bdesc_1arg): Moved to ...
12961         (bdesc_args): Here.
12962         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
12963         Instructions in comments with SSE3.
12964         (ix86_expand_sse_operands_builtin): Renamed to ...
12965         (ix86_expand_args_builtin): This.  Updated.
12966         (ix86_expand_unop1_builtin): Update comments.
12967         (ix86_expand_builtin): Updated.
12968
12969 2008-04-29  Richard Guenther  <rguenther@suse.de>
12970
12971         PR tree-optimization/36078
12972         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
12973         Update virtual SSA form after cleaning up the CFG.
12974
12975 2008-04-29  Richard Guenther  <rguenther@suse.de>
12976
12977         PR middle-end/15255
12978         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
12979
12980 2008-04-29  Richard Guenther  <rguenther@suse.de>
12981
12982         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
12983         (compute_may_aliases): Do not call finalize_ref_all_pointers.
12984         (compute_flow_insensitive_aliasing): Do not treat
12985         PTR_IS_REF_ALL pointers special.
12986         (get_smt_for): Likewise.
12987         (may_alias_p): Re-structure.
12988         (is_escape_site): A ref-all pointer conversion is not an escape site.
12989         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
12990         PTR_IS_REF_ALL pointers special.
12991         * tree-ssa-structalias.h (struct alias_info): Remove
12992         ref_all_symbol_mem_tag field.
12993         (PTR_IS_REF_ALL): Remove.
12994
12995 2008-04-29  Richard Guenther  <rguenther@suse.de>
12996
12997         PR middle-end/36077
12998         * fold-const.c (extract_muldiv_1): In combining division constants
12999         make sure to never overflow.
13000
13001 2008-04-29  Nick Clifton  <nickc@redhat.com>
13002
13003         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
13004
13005 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13006
13007         PR bootstrap/35169
13008         * optc-gen.awk: Work around HP-UX/IA awk bug.
13009
13010 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
13011
13012         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
13013         2008-04-25 commit.
13014
13015 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
13016
13017         PR target/36073
13018         * config/i386/i386.md
13019         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
13020         Change operand 1 predicate to nonimmediate_operand.
13021
13022 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
13023
13024         PR debug/36060
13025         * dwarf2out.c (struct die_struct): Mark as chain_circular through
13026         die_sub field.
13027         * gengtype.c (walk_type, write_func_for_structure): Handle
13028         chain_circular.
13029         * doc/gty.texi: Document chain_circular.
13030
13031 2008-04-28  Richard Guenther  <rguenther@suse.de>
13032
13033         PR tree-optimization/36066
13034         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
13035         SCEV and loop.
13036
13037 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
13038
13039         PR target/36064
13040         * config/i386/i386.md
13041         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
13042         Use match_scratch instead of match_operand for operands 3 and 4.
13043
13044 2008-04-27  Richard Guenther  <rguenther@suse.de>
13045
13046         PR tree-optimization/18754
13047         PR tree-optimization/34223
13048         * tree-pass.h (pass_complete_unrolli): Declare.
13049         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
13050         loop size before and after unconditionally of UL_NO_GROWTH in effect.
13051         Rewrite loop into loop closed SSA form if it is not already.
13052         (tree_unroll_loops_completely): Re-structure to iterate over
13053         innermost loops with intermediate CFG cleanups.
13054         Unroll outermost loops only if requested or the code does not grow
13055         doing so.
13056         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
13057         loops are available.
13058         (tree_vectorize): Instead do so here.
13059         (tree_complete_unroll): Also unroll outermost loops.
13060         (tree_complete_unroll_inner): New function.
13061         (gate_tree_complete_unroll_inner): Likewise.
13062         (pass_complete_unrolli): New pass.
13063         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
13064         uses outside of the loop.
13065         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
13066         form if it is available.
13067         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
13068         * passes.c (init_optimization_passes): Schedule complete inner
13069         loop unrolling pass before the first CCP pass after final inlining.
13070
13071 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
13072
13073         * targhooks.h (default_emutls_var_fields,
13074         default_emutls_var_init): Declare.
13075         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
13076         * target.h (struct gcc_target): Add struct emutls member.
13077         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
13078         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
13079         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
13080         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
13081         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
13082         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
13083         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
13084         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
13085         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
13086         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
13087         emit debug information.
13088         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
13089         * varasm.c: Include targhooks.h.
13090         (emutls_object_section, emutls_tmpl_section): New.
13091         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
13092         (EMUTLS_SEPARATOR): New.
13093         (prefix_name): New.
13094         (get_emutls_object_name): New.
13095         (default_emutls_var_fields): New, broken out of ...
13096         (get_emutls_object_type): ... here.  Adjust to use target hooks.
13097         (get_emutls_init_templ_addr): Adjust to use target hooks.
13098         (emutls_decl): Adjust to use target hooks.
13099         (emutls_finish): Likewise.
13100         (default_emutls_var_init): New, broken out of ...
13101         (assemble_variable): ... here.  Adjust to use target hooks.
13102         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
13103         SECCAT_EMUTLS_TMPL.
13104         * c-common.c (handle_section_attribute): Prevent overriding
13105         sections for emulated tls with special sections.
13106         * config/i386/i386.c (x86_64_elf_select_section): Add
13107         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
13108         (x86_64_elf_unique_section): Likewise.
13109         * config/vxworks.c: Include tree.h.
13110         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
13111         (vxworks_override_options): Set TLS scheme.
13112         * doc/tm.texi (Emulated TLS): New node.
13113
13114 2008-04-26  Simon Baldwin <simonb@google.com>
13115
13116         PR c/35652
13117         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
13118         with propagated string constants.
13119
13120 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
13121
13122         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
13123         constraint for operand 2 when operand 0 is memory operand.
13124         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
13125         operand 0 is memory operand.
13126         (fix_trunc<mode>_i387_with_temp): Ditto.
13127         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
13128         operand 2 when operand 1 is memory operand.
13129         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
13130         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
13131         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
13132         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
13133         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
13134         operands 2,3 and 4 when operand 1 is memory operand.
13135         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
13136         is memory operand.
13137         (fistdi2_floor_with_temp): Ditto.
13138         (fist<mode>2_floor_with_temp): Ditto.
13139         (fistdi2_ceil_with_temp): Ditto.
13140         (fist<mode>2_ceil_with_temp): Ditto.
13141         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
13142
13143 2008-04-26  David Daney  <ddaney@avtrex.com>
13144
13145         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
13146         unspec_volitile.
13147         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
13148         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
13149         UNSPEC_UPDATE_GOT_VERSION): Renumber.
13150         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
13151         (compare_and_swap_12): New insn.
13152         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
13153         * config/mips/mips.c (mips_force_binary): New function.
13154         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
13155         (mips_expand_compare_and_swap_12): New function.
13156         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
13157
13158 2008-04-25  Jan Hubicka  <jh@suse.cz>
13159
13160         PR testsuite/35843
13161         * cfgexpand.c (pass_expand): Turn into RTL pass.
13162         * passes.c (execute_one_pass): Do pass typechecking after execution.
13163         * tree-pass.h (pass_expand): Turn into RTL pass.
13164
13165         * function.h (struct rtl_data): Move here fields
13166         accesses_prior_frames, calls_eh_return, saves_all_registers,
13167         has_nonlocal_goto, has_asm_statement, is_thunk,
13168         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
13169         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
13170         arg_pointer_save_area_init from struct function; turn into bool.
13171         (struct function): Move
13172         calls_eh_return, saves_all_registers, has_nonlocal_goto,
13173         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
13174         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
13175         tail_call_emit, arg_pointer_save_area_init
13176         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
13177         (current_function_returns_struct, current_function_returns_pcc_struct,
13178         current_function_calls_setjmp, current_function_calls_alloca,
13179         current_function_accesses_prior_frames,
13180         current_function_calls_eh_return, current_function_is_thunk,
13181         current_function_stdarg, current_function_profile,
13182         current_function_limit_stack, current_function_uses_pic_offset_table,
13183         current_function_uses_const_pool, current_function_has_nonlocal_label,
13184         current_function_saves_all_registers,
13185         current_function_has_nonlocal_goto,
13186         current_function_has_asm_statement): Remove accesor macros.
13187         * ra-conflict.c (global_conflicts): Update.
13188         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
13189         (suitable_for_tail_call_opt_p): Update.
13190         * builtins.c (expand_builtin_return_addr): Update.
13191         (expand_builtin_setjmp_setup): Update.
13192         (expand_builtin_nonlocal_goto): Update.
13193         * final.c (final_start_function): Update.
13194         (profile_function): Update.
13195         (leaf_function_p): Update.
13196         (only_leaf_regs_used): Update.
13197         * df-scan.c (df_get_exit_block_use_set): Update.
13198         * dojump.c (clear_pending_stack_adjust): Update.
13199         * tree-stdarg.c (gate_optimize_stdarg): Update.
13200         * gimple-low.c (lower_function_body): Update.
13201         * global.c (compute_regsets): Update.
13202         (global_alloc): Update.
13203         * dwarf2out.c (dwarf2out_begin_prologue): Update.
13204         * expr.c (expand_assignment): Update.
13205         * dse.c (dse_step0): Update.
13206         (dse_step1): Update.
13207         * c-decl.c (store_parm_decls): Update.
13208         * local-alloc.c (combine_regs): Update.
13209         (find_free_reg): Update.
13210         * function.c (assign_parms_augmented_arg_list): Update.
13211         (assign_parm_find_data_types): Update.
13212         (assign_parms): Update.
13213         (allocate_struct_function): Update.
13214         (expand_function_start): Update.
13215         (expand_function_end): Update.
13216         (get_arg_pointer_save_area): Update.
13217         (thread_prologue_and_epilogue_insns): Update.
13218         (rest_of_match_asm_constraints): Update.
13219         * stor-layout.c (variable_size): Update.
13220         * gcse.c (gcse_main): Update.
13221         (bypass_jumps): Update.
13222         * gimplify.c (gimplify_function_tree): Update.
13223         * calls.c (emit_call_1): Update.
13224         (expand_call): Update.
13225         * bt-load.c (compute_defs_uses_and_gen): Update.
13226         * except.c (sjlj_assign_call_site_values): Update.
13227         (sjlj_emit_function_enter): Update.
13228         (can_throw_external): Update.
13229         (set_nothrow_function_flags): Update.
13230         (expand_builtin_unwind_init): Update.
13231         (expand_eh_return): Update.
13232         (convert_to_eh_region_ranges): Update.
13233         (output_function_exception_table): Update.
13234         * emit-rtl.c (gen_tmp_stack_mem): Update.
13235         * cfgexpand.c (expand_used_vars): Update.
13236         (tree_expand_cfg): Update.
13237         * cfgcleanup.c (rest_of_handle_jump): Update.
13238         * explow.c (allocate_dynamic_stack_space): Update.
13239         * varasm.c (assemble_start_function): Update.
13240         (force_const_mem): Update.
13241         (mark_constant_pool): Update.
13242         * tree-optimize.c (tree_rest_of_compilation): Update.
13243         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
13244         * tree-cfg.c (notice_special_calls): Update.
13245         (is_ctrl_altering_stmt): Update.
13246         (tree_can_make_abnormal_goto): Update.
13247         (tree_purge_dead_abnormal_call_edges): Update.
13248         * config/alpha/predicates.md: Update.
13249         * config/alpha/alpha.c (alpha_sa_mask): Update.
13250         (alpha_sa_size): Update.
13251         (alpha_does_function_need_gp): Update.
13252         (alpha_expand_prologue): Update.
13253         (alpha_start_function): Update.
13254         (alpha_output_function_end_prologue): Update.
13255         (alpha_expand_epilogue): Update.
13256         * config/frv/frv.c (frv_stack_info): Update.
13257         (frv_expand_epilogue): Update.
13258         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
13259         (s390_register_info): Update.
13260         (s390_frame_info): Update.
13261         (s390_init_frame_layout): Update.
13262         (s390_can_eliminate): Update.
13263         (save_gprs): Update.
13264         * config/spu/spu.c (spu_split_immediate): Update.
13265         (need_to_save_reg): Update.
13266         (spu_expand_prologue): Update.
13267         (spu_expand_epilogue): Update.
13268         * config/sparc/sparc.md: Update.
13269         * config/sparc/sparc.c (eligible_for_return_delay): Update.
13270         (sparc_tls_got): Update.
13271         (legitimize_pic_address): Update.
13272         (sparc_emit_call_insn): Update.
13273         (sparc_expand_prologue): Update.
13274         (output_return): Update.
13275         (print_operand): Update.
13276         (sparc_function_ok_for_sibcall): Update.
13277         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
13278         * config/m32r/m32r.md: Update.
13279         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
13280         (m32r_compute_frame_size): Update.
13281         (m32r_expand_prologue): Update.
13282         (m32r_expand_epilogue): Update.
13283         (m32r_legitimize_pic_address): Update.
13284         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
13285         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
13286         * config/i386/i386.c (ix86_frame_pointer_required): Update.
13287         (gen_push): Update.
13288         (ix86_save_reg): Update.
13289         (ix86_compute_frame_layout): Update.
13290         (ix86_expand_prologue): Update.
13291         (ix86_expand_epilogue): Update.
13292         * config/sh/sh.c (output_stack_adjust): Update.
13293         (calc_live_regs): Update.
13294         (sh5_schedule_saves): Update.
13295         (sh_expand_prologue): Update.
13296         (sh_expand_epilogue): Update.
13297         (sh_setup_incoming_varargs): Update.
13298         (sh_allocate_initial_value): Update.
13299         (sh_get_pr_initial_val): Update.
13300         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
13301         * config/sh/sh.md (label:): Update.
13302         * config/avr/avr.c (out_movhi_mr_r): Update.
13303         * config/crx/crx.h (enum): Update.
13304         * config/xtensa/xtensa.h (along): Update.
13305         * config/stormy16/stormy16.c Update.
13306         (xstormy16_compute_stack_layout): Update.
13307         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
13308         (fr30_expand_prologue): Update.
13309         * config/cris/cris.c (cris_conditional_register_usage): Update.
13310         (cris_reg_saved_in_regsave_area): Update.
13311         (cris_initial_frame_pointer_offset): Update.
13312         (cris_simple_epilogue): Update.
13313         (cris_expand_prologue): Update.
13314         (cris_expand_epilogue): Update.
13315         (cris_expand_pic_call_address): Update.
13316         (cris_asm_output_symbol_ref): Update.
13317         (cris_asm_output_label_ref): Update.
13318         * config/cris/cris.md Update.
13319         * config/iq2000/iq2000.c (compute_frame_size): Update.
13320         (iq2000_expand_epilogue): Update.
13321         * config/mt/mt.h (save_direction): Update.
13322         * config/mn10300/mn10300.c (mn10300_function_value): Update.
13323         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
13324         (ia64_secondary_reload_class): Update.
13325         * config/m68k/m68k.c (m68k_save_reg): Update.
13326         (m68k_expand_prologue): Update.
13327         (m68k_expand_epilogue): Update.
13328         (legitimize_pic_address): Update.
13329         * config/rs6000/rs6000.c (rs6000_got_register): Update.
13330         (first_reg_to_save): Update.
13331         (first_altivec_reg_to_save): Update.
13332         (compute_vrsave_mask): Update.
13333         (compute_save_world_info): Update.
13334         (rs6000_stack_info): Update.
13335         (spe_func_has_64bit_regs_p): Update.
13336         (rs6000_ra_ever_killed): Update.
13337         (rs6000_emit_eh_reg_restore): Update.
13338         (rs6000_emit_allocate_stack): Update.
13339         (rs6000_emit_prologue): Update.
13340         (rs6000_emit_epilogue): Update.
13341         (rs6000_output_function_epilogue): Update.
13342         (output_profile_hook): Update.
13343         (rs6000_elf_declare_function_name): Update.
13344         * config/rs6000/rs6000.h (rs6000_args): Update.
13345         * config/rs6000/rs6000.md: Update.
13346         * config/mcore/mcore.c (mcore_expand_prolog): Update.
13347         * config/arc/arc.c (arc_output_function_epilogue): Update.
13348         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
13349         * config/darwin.c (machopic_function_base_name): Update.
13350         * config/score/score3.c (score3_compute_frame_size): Update.
13351         (rpush): Update.
13352         (rpop): Update.
13353         (score3_epilogue): Update.
13354         * config/score/score7.c (score7_compute_frame_size): Update.
13355         (score7_prologue): Update.
13356         (score7_epilogue): Update.
13357         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
13358         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
13359         * config/arm/arm.c (use_return_insn): Update.
13360         (require_pic_register): Update.
13361         (arm_load_pic_register): Update.
13362         (arm_compute_save_reg0_reg12_mask): Update.
13363         (arm_compute_save_reg_mask): Update.
13364         (thumb1_compute_save_reg_mask): Update.
13365         (output_return_instruction): Update.
13366         (arm_output_function_prologue): Update.
13367         (arm_output_epilogue): Update.
13368         (arm_get_frame_offsets): Update.
13369         (arm_expand_prologue): Update.
13370         (thumb_pushpop): Update.
13371         (thumb_exit): Update.
13372         (thumb1_expand_prologue): Update.
13373         (thumb1_expand_epilogue): Update.
13374         (arm_unwind_emit): Update.
13375         (arm_output_fn_unwind): Update.
13376         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
13377         * config/arm/arm.md: Update.
13378         * config/pa/pa.md: Update.
13379         * config/pa/pa.c (legitimize_pic_address): Update.
13380         (compute_frame_size): Update.
13381         (hppa_expand_prologue): Update.
13382         (hppa_expand_epilogue): Update.
13383         (borx_reg_operand): Update.
13384         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
13385         (HARD_REGNO_RENAME_OK): Update.
13386         * config/mips/mips.c (mips_global_pointer): Update.
13387         (mips_save_reg_p): Update.
13388         (mips_compute_frame_info): Update.
13389         (mips_frame_pointer_required): Update.
13390         (mips_expand_prologue): Update.
13391         (mips_expand_epilogue): Update.
13392         (mips_can_use_return_insn): Update.
13393         (mips_reorg_process_insns): Update.
13394         * config/v850/v850.c (compute_register_save_size): Update.
13395         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
13396         * config/mmix/mmix.c (along): Update.
13397         (mmix_expand_epilogue): Update.
13398         * config/bfin/bfin.c (legitimize_pic_address): Update.
13399         (must_save_p): Update.
13400         (stack_frame_needed_p): Update.
13401         (add_to_reg): Update.
13402         (bfin_expand_prologue): Update.
13403         * stmt.c (expand_asm_operands): Update.
13404         * reload1.c (reload): Update.
13405         (init_elim_table): Update.
13406
13407 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
13408
13409         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
13410
13411 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
13412
13413         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
13414         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
13415         (mov<mode>): Removed.
13416         (*movv4sf_internal): Likewise.
13417         (*movv2df_internal): Likewise.
13418
13419 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
13420
13421         * config.gcc (crx-*-elf): Remove deprecation.
13422
13423 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
13424
13425         * config/i386/cygming-crtend.c (register_frame_ctor): Register
13426         __gcc_deregister_frame with atexit.
13427         (deregister_frame_dtor): Remove.
13428
13429 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
13430             Nathan Sidwell  <nathan@codesourcery.com>
13431
13432         * config/rs6000/rs6000.opt (mspe): Remove Var property.
13433         (misel): Likewise.
13434         * config/rs6000/rs6000.h (rs6000_spe): Declare.
13435         (rs6000_isel): Likewise.
13436         * config/rs6000/rs6000.c (rs6000_spe): New variable.
13437         (rs6000_isel): New variable.
13438         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
13439
13440 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
13441
13442         PR c++/35758
13443         * c-common.c (handle_vector_size_attribute): Call
13444         lang_hooks.types.reconstruct_complex_type instead of
13445         reconstruct_complex_type.
13446         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
13447         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
13448         * langhooks.h (struct lang_hooks_for_types): Add
13449         reconstruct_complex_type hook.
13450         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
13451         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
13452
13453 2008-04-24  Richard Guenther  <rguenther@suse.de>
13454
13455         * c-common.h (check_builtin_function_arguments): Declare.
13456         * c-common.c (validate_nargs): New function.
13457         (check_builtin_function_arguments): Likewise.
13458         * c-typeck.c (build_function_call): Call
13459         check_builtin_function_arguments.
13460         * builtins.c (fold_builtin_classify): Remove error reporting code.
13461         (fold_builtin_unordered_cmp): Likewise.
13462         (fold_builtin_1): Likewise.
13463         (fold_builtin_n): Likewise.
13464
13465 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
13466
13467         PR tree-optimization/36008
13468         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
13469         the original op1, rather than delta by step.
13470
13471 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
13472             Sebastian Pop  <sebastian.pop@amd.com>
13473
13474         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
13475         eliminate_local_variables_stmt, eliminate_local_variables,
13476         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
13477         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
13478         of code delimited by two edges in the CFG.
13479         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
13480         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
13481         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
13482         the case of parallelisation of reductions.
13483         (expr_invariant_in_region_p): New.
13484
13485         * tree-flow.h (gather_blocks_in_sese_region): Declared.
13486         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
13487
13488 2008-04-24  Ira Rosen  <irar@il.ibm.com>
13489             Richard Guenther  <rguenther@suse.de>
13490
13491         PR tree-optimization/36034
13492         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
13493         incapable of dealing with loads with gaps.
13494
13495 2008-04-24  Rafael Espindola  <espindola@google.com>
13496
13497         * tree-flow.h (vrp_evaluate_conditional): Change signature.
13498         * tree-ssa-propagate.c (fold_predicate_in): Update call to
13499         vrp_evaluate_conditional.
13500         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
13501         (vrp_evaluate_conditional): Split the cond argument.
13502         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
13503         (simplify_stmt_for_jump_threading): Update call to
13504         vrp_evaluate_conditional.
13505
13506 2008-04-24  Ira Rosen  <irar@il.ibm.com>
13507
13508         PR tree-optimization/35982
13509         * tree-vect-analyze.c (vect_check_interleaving): Check that the
13510         interleaved data-refs are of the same type.
13511
13512 2008-04-24  Danny Smith  <dannysmith@users.net>
13513
13514         * c-format.c (check_format_info_main): Use strncmp rather than a
13515         magic prefix to handle multichar length specs.
13516         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
13517         Don't prefix "I64" and "I32" with '\0'.
13518
13519 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
13520
13521         PR target/36015
13522         * config/i386/i386.c (init_cumulative_args): Don't pass anything
13523         in registers for -m32 only if stdarg_p (fntype).
13524
13525 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
13526
13527         PR rtl-optimization/36006
13528         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
13529         temp to op0 in order to avoid invalid rtx sharing.
13530
13531 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
13532
13533         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
13534         check TREE_INVARIANT.
13535         * tree-gimple.c (is_gimple_address): New.
13536         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
13537         * tree-gimple.h (is_gimple_address): New.
13538         * tree.h (decl_address_invariant_p): New.
13539         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
13540         (build_string): Likewise.
13541         (decl_address_invariant_p): New, from is_gimple_invariant_address.
13542         (tree_invariant_p_1): Likewise.
13543         (save_expr): Use it.
13544         (tree_invariant_p): New.
13545         (skip_simple_arithmetic): Use it.
13546         (stabilize_reference_1): Use it.
13547         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
13548         simplify.
13549         (build1_stat): Drop code to compute TREE_INVARIANT.
13550         (build2_stat): Drop code to compute TREE_INVARIANT.
13551         (build3_stat): Drop code to compute TREE_INVARIANT.
13552         (build4_stat): Drop code to compute TREE_INVARIANT.
13553         (build5_stat): Drop code to compute TREE_INVARIANT.
13554         (build7_stat): Drop code to compute TREE_INVARIANT.
13555         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
13556         * tree.h (struct tree_base): Remove invariant_flag.
13557         (TREE_INVARIANT): Remove.
13558         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
13559         (fold_builtin_expect): Check TREE_CONSTANT.
13560         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
13561         * c-tree.h (c_expr_to_decl): Drop third parameter.
13562         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
13563         (build_c_cast): Don't set TREE_INVARIANT.
13564         (pop_init_level): Don't set TREE_INVARIANT.
13565         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
13566         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
13567         TREE_CONSTANT.
13568         (gimplify_init_constructor): Don't set TREE_INVARIANT.
13569         (gimplify_addr_expr): Adjust comment.
13570         * tree-mudflap.c (mf_build_string):
13571         * print-tree.c (print_node): Don't print TREE_INVARIANT.
13572         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
13573         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
13574         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
13575         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
13576         * langhooks.h (struct lang_hooks): Drop third parameter from
13577         expr_to_decl.
13578
13579 2008-04-23  Richard Guenther  <rguenther@suse.de>
13580
13581         PR tree-optimization/27799
13582         PR tree-optimization/32921
13583         PR tree-optimization/32624
13584         * tree-ssa-structalias.c (merge_smts_into): Only merge the
13585         SMTs aliases and the tag itself into the solution.
13586         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
13587         merge the points-to solution back into the SMT aliases.
13588         (may_alias_p): Use alias_set_subset_of instead of
13589         aliases_conflict_p.  A pointer which points to
13590         memory with alias set zero may access any variable.
13591
13592 2008-04-23  Richard Guenther  <rguenther@suse.de>
13593
13594         * alias.c (alias_set_subset_of): Correctly handle asking
13595         if zero is a subset of an alias set with zero child.
13596         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
13597         (compute_flow_insensitive_aliasing): Correctly walk all
13598         pointers.  Do not unnecessarily union sets.
13599
13600 2008-04-23  Richard Guenther  <rguenther@suse.de>
13601
13602         PR middle-end/36021
13603         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
13604
13605 2008-04-22  Tomas Bily  <tbily@suse.cz>
13606
13607         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
13608         unreachable case.
13609         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
13610         NON_LVALUE_EXPR.
13611         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
13612         * tree-ssa-structalias.c (get_constraint_for): Likewise.
13613         * tree-inline.c (estimate_num_insns_1): Likewise.
13614         * varasm.c (const_hash_1, compare_constant, copy_constant)
13615         (compute_reloc_for_constant, output_addressed_constants): Likewise.
13616         * emit-rtl.c (component_ref_for_mem_expr)
13617         (set_mem_attributes_minus_bitpos): Likewise.
13618         * expr.c (highest_pow2_factor, expand_expr_real_1, )
13619         (is_aligning_offset): Likewise.
13620         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
13621         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
13622         * dojump.c (do_jump): Likewise.
13623         * builtins.c (get_pointer_alignment, get_memory_rtx)
13624         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
13625         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
13626
13627 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
13628
13629         PR rtl-optimization/36017
13630         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
13631         expanding the library call.
13632
13633 2008-04-22  Ian Lance Taylor  <iant@google.com>
13634
13635         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
13636         than size_in_bytes.
13637
13638 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
13639
13640         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
13641         of LR/CTR moves for Power6.
13642
13643 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
13644
13645         PR middle-end/36003
13646         * passes.c (init_optimization_passes): Remove
13647         pass_fast_rtl_byte_dce.
13648
13649 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
13650
13651         PR target/29096
13652         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
13653         builtin functions to generate faster code.
13654         (_mm_cvtpu16_ps): Ditto.
13655         (_mm_cvtpi32x2_ps): Ditto.
13656
13657 2008-04-22  Nick Clifton  <nickc@redhat.com>
13658
13659         * common.opt (ftree-loop-distribution): Add Optimization
13660         attribute.
13661
13662         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
13663         (frv_expand_builtin_va_start): Likewise.
13664
13665         * config/arm/arm.c (thumb_find_work_register): Fix location of
13666         argument register count.
13667
13668 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
13669
13670         Support scheduling for ColdFire V1 and V3 microarchitecture.
13671         Improve scheduling of multiplication instructions.
13672
13673         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
13674         (mac): New instruction attribute.
13675         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
13676         (m68k_sched_mac): New variable.
13677         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
13678         Handle cfv1 and cfv3.
13679         (max_insn_size): New static variable.
13680         (struct _sched_ib): New type.
13681         (sched_ib): New static variable.
13682         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
13683         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
13684         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
13685         Update.
13686         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
13687         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
13688         new variables.  Update.
13689         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
13690         Add modeling of cfv3 instruction buffer.  Update.
13691         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
13692         * config/m68k/m68k.h (TUNE_CFV3): New macro.
13693         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
13694         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
13695         a particular reservation applies to.
13696         (type2): Reorganize attribute values.  Rename alu to alu_reg,
13697         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
13698         to mul_l and mul_w.
13699         (cf_ib_*): Simplify description of instruction buffer.
13700         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
13701         (cf_mem): Split into cf_mem1 and cf_mem2.
13702         (cf_v2_move_??): Rename to cfv12_alu_??.
13703         (cf_v2_move_l_??): Rename to cfv12_omove_??.
13704         (cf_v2_mul_??): Remove reservations.
13705         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
13706         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
13707         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
13708         appropriate place.
13709         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
13710         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
13711         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
13712         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
13713         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
13714         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
13715         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
13716         expansions of the above reservations for instructions of sizes
13717         1, 2 and 3 words.
13718
13719 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
13720
13721         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
13722
13723 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
13724
13725         * coverage.c: Include tree-pass.h.
13726         (coverage_counter_alloc): Print da_file_name to the dump file.
13727
13728 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
13729
13730         * sbitmap.c (sbitmap_range_empty_p): New function.
13731         * sbitmap.h (sbitmap_range_empty_p): New function.
13732         * bitmap.h: Now includes obstack.h.
13733
13734 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
13735             Kenneth Zadeck  <zadeck@naturalbridge.com>
13736
13737         * dbgcnt.def (ra_byte_scan): Added.
13738         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
13739         when the last hit happens for a counter.
13740         * timevar.def (TV_DF_BYTE_LR): New variable.
13741         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
13742         * passes.c (pass_fast_rtl_byte_dce): New pass.
13743         * fwprop.c (update_df): Added mode to call df_ref_create.
13744         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
13745         DF_REF_EXTRACT_OFFSET.
13746         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
13747         DF_BYTE_LR_OUT, df_byte_lr): New macro.
13748         (df_mm): New enum.
13749         (df_ref_extract): Added mode field.
13750         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
13751         DF_REF_EXTRACT_OFFSET.
13752         (DF_REF_EXTRACT_MODE): New macro.
13753         (df_byte_lr_bb_info): New structure.
13754         (df_print_byte_regset, df_compute_accessed_bytes,
13755         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
13756         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
13757         df_byte_lr_simulate_uses,
13758         df_byte_lr_simulate_artificial_refs_at_top,
13759         df_byte_lr_simulate_artificial_refs_at_end,
13760         df_compute_accessed_bytes): New function.
13761         (df_ref_create): Add parameter.
13762         (df_byte_lr_get_bb_info): New inline function.
13763         * df-scan.c (df_ref_record, df_uses_record,
13764         df_ref_create_structure): Added mode parameter.
13765         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
13766         df_defs_record, df_uses_record, df_get_conditional_uses,
13767         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
13768         df_entry_block_defs_collect, df_exit_block_uses_collect):
13769         Added mode parameter to calls to df_ref_record, df_uses_record,
13770         df_ref_create_structure.
13771         (df_ref_equal_p, df_ref_compare): Added test for modes.
13772         (df_ref_create_structure): Added code to set mode.  Renamed
13773         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
13774         DF_REF_EXTRACT_OFFSET.
13775         * df-core.c (df_print_byte_regset): New function.
13776         * df-byte-scan.c: New file.
13777         * df-problems.c (df_rd_transfer_function): Removed unnecessary
13778         calls to BITMAP_FREE.
13779         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
13780         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
13781         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
13782         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
13783         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
13784         df_byte_lr_local_compute, df_byte_lr_init,
13785         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
13786         df_byte_lr_transfer_function, df_byte_lr_free,
13787         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
13788         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
13789         df_byte_lr_simulate_uses,
13790         df_byte_lr_simulate_artificial_refs_at_top,
13791         df_byte_lr_simulate_artificial_refs_at_end): New function.
13792         * dce.c (byte_dce_process_block): New function.
13793         (dce_process_block): au is now passed in rather than computed
13794         locally.  Changed loops that look at artificial defs to not look
13795         for conditional or partial ones, because there never are any.
13796         (fast_dce): Now is able to drive byte_dce_process_block or
13797         dce_process_block depending on the kind of dce being done.
13798         (rest_of_handle_fast_dce): Add parameter to fast_dce.
13799         (rest_of_handle_fast_byte_dce): New function.
13800         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
13801         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
13802
13803 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
13804
13805         PR fortran/35019
13806         * gcc.h: Added fortran options that take arguments to
13807         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
13808         macros.
13809
13810 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
13811
13812         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
13813         scalarization if on the LHS and not a full access.
13814
13815 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13816
13817         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
13818
13819 2008-04-18  Rafael Espindola  <espindola@google.com>
13820
13821         * tree-vrp.c (find_case_label_index): Fix the binary search.
13822         (find_case_label_range): New.
13823         (vrp_visit_switch_stmt): Use find_case_label_range.
13824         (simplify_switch_using_ranges): Use find_case_label_range.
13825
13826 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
13827
13828         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
13829         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
13830
13831 2008-04-18  Tom Tromey  <tromey@redhat.com>
13832
13833         PR libcpp/15500:
13834         * doc/cpp.texi (Implementation-defined behavior): Mention
13835         -finput-charset.
13836
13837 2008-04-18  Ian Lance Taylor  <iant@google.com>
13838
13839         * fold-const.c (pointer_may_wrap_p): New static function.
13840         (fold_comparison): Add another test for pointer overflow.  Use
13841         pointer_may_wrap_p to disable some false positives.
13842
13843 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
13844
13845         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
13846         (fname_as_string): Match updated cpp_interpret_string prototype.
13847         (fix_string_type): Support char16_t* and char32_t*.
13848         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
13849         derivative) nodes.  Register as builtin if C++0x.
13850         (c_parse_error): Support CPP_CHAR{16,32}.
13851         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
13852         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
13853         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
13854         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
13855         CTI_CHAR32_ARRAY_TYPE>: New elements.
13856         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
13857         char32_type_node, signed_char32_type_node, char16_array_type_node,
13858         char32_array_type_node): New defines.
13859         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
13860         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
13861         (lex_string): Support CPP_STRING{16,32}, match updated
13862         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
13863         (lex_charconst): Support CPP_CHAR{16,32}.
13864         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
13865         and CPP_STRING{16,32}.
13866
13867 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
13868
13869         PR bootstrap/35457
13870         * aclocal.m4: Regenerate.
13871         * configure: Regenerate.
13872
13873 2008-04-18  Jan Hubicka  <jh@suse.cz>
13874
13875         * except.c (dw2_size_of_call_site_table,
13876         sjlj_size_of_call_site_table): Use vector API for call_site_record.
13877
13878         * cgraphbuild.c (build_cgraph_edges): Update.
13879         * tree-pass.h: Update comment.
13880         * final.c (leaf_function_p): Update.
13881         (leaf_renumber_regs): Update.
13882         (rest_of_clean_state): Update.
13883         * omp-low.c (expand_omp_parallel): Update.
13884         * ipa-reference.c (analyze_function): Update.
13885         * reorg.c (find_end_label): Update.
13886         (optimize_skip): Update.
13887         (fill_simple_delay_slots): Update.
13888         (fill_simple_delay_slots): Update.
13889         (make_return_insns): Update.
13890         (dbr_schedule): Update.
13891         * gimple-low.c (record_vars_into): Update.
13892         * cfgbuild.c (make_edges): Update.
13893         * function.c (assign_stack_local): Update.
13894         (assign_parm_adjust_stack_rtl): Update.
13895         (locate_and_pad_parm): Update.
13896         (allocate_struct_function): Do not initialize stack_alignment_needed
13897         and preferred_stack_boundary here.
13898         (stack_protect_prologue): Update.
13899         (stack_protect_epilogue): Update.
13900         (expand_function_start): Initialize stack_alignment_needed,
13901         preferred_stack_boundary and max_jumptable_ents.
13902         (expand_function_end): Update.
13903         (free_after_compilation): Do not NULLify epilogue_delay_list.
13904         * function.h (struct rtl_data): Add stack_protect_guard,
13905         stack_alignment_needed,
13906         preferred_stack_boundary, epilogue_delay_list.
13907         (struct function): Remove value_histograms, stack_alignment_needed,
13908         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
13909         last_label_uid,
13910         unexpanded_var_list, stack_protect_guard.
13911         (current_function_epilogue_delay_list): Remove.
13912         * ipa-type-escape.c (analyze_function): Update.
13913         * gimplify.c (pop_gimplify_context): Update comment.
13914         * calls.c (expand_call): Update.
13915         (emit_library_call_value_1): Update.
13916         * except.c (set_nothrow_function_flags): Update.
13917         * cfgexpand.c (get_decl_align_unit): Update.
13918         (create_stack_guard): Update.
13919         (estimated_stack_frame_size): Update.
13920         (expand_used_vars): Update.
13921         (tree_expand_cfg): Free histogram earliers, init expansion variables.
13922         * explow.c (allocate_dynamic_stack_space): Update.
13923         * tree-ssa-live.c (remove_unused_locals): Update.
13924         * varasm.c (mark_constant_pool): Update.
13925         * tree-inline.c (remap_decls): Update.
13926         (initialize_cfun): Update.
13927         (declare_return_variable): Update.
13928         (inline_forbidden_p): Update.
13929         (expand_call_inline): Update.
13930         (declare_inline_vars): Update.
13931         (tree_function_versioning): Update.
13932         * tree-flow.h (value_histograms): New.
13933         (VALUE_HISTOGRAMS): New macro.
13934         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
13935         last_label_uid.
13936         * tree-cfg.c (set_bb_for_stmt): Update.
13937         (replace_by_duplicate_decl): Update.
13938         (move_block_to_fn): Update.
13939         (new_label_mapper): Update.
13940         (dump_function_to_file): Update.
13941         * ipa-struct-reorg.c (build_data_structure): Update.
13942         * cfgrtl.c (print_rtl_with_bb): Update.
13943         * reload1.c (reload): Update.
13944         (reload): Update.
13945         * config/i386/i386.c (setup_incoming_varargs_64,
13946         ix86_compute_frame_layout): Update.
13947         * config/arc/arc.c (arc_output_function_epilogue): Update.
13948
13949 2008-04-18  Marius Strobl <marius@FreeBSD.org>
13950
13951         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
13952         for FreeBSD as well.
13953         * gthr-posix95.h: Likewise.
13954
13955 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
13956
13957         PR rtl-optimization/35838
13958         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
13959         out the byte offset of the first subreg.
13960
13961 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
13962
13963         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
13964         to split_ti instead of three separate calls with single member arrays.
13965         (subti3 splitter): Ditto.
13966         (adddi3 splitter): Ditto with split_di.
13967         (subdi3 splitter): Ditto.
13968         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
13969         two separate calls with single member arrays.  Swap match_dup
13970         operands 1 and 2 to better fit into the array.
13971         (negdi2 splitter): Ditto with split_di.
13972         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
13973         two separate calls with single member arrays.  Swap match_dup operands
13974         6 and 7 to better fit into the array.
13975
13976 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
13977
13978         * config/i386/i386.c (sse_builtin_type): New.
13979         (bdesc_sse_args): Likewise.
13980         (bdesc_sse_3arg): Removed.
13981         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
13982         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
13983         IX86_BUILTIN_ROUNDPS.
13984         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
13985         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
13986         IX86_BUILTIN_ROUNDPS.
13987         (ix86_expand_sse_4_operands_builtin): Removed.
13988         (ix86_expand_sse_operands_builtin): New.
13989         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
13990         and CODE_FOR_sse4_1_roundps.
13991         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
13992         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
13993
13994 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
13995
13996         PR target/35907
13997         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
13998         regs before frame pop when needed.  If use_backchain_to_restore_sp
13999         then load backchain into a temp reg to restore vr and vrsave.  Add
14000         code to restore vr after frame pop if possible.
14001
14002 2008-04-17  Richard Guenther  <rguenther@suse.de>
14003
14004         * tree-vn.c (expressions_equal_p): Do not check type
14005         equality or compatibility before calling operand_equal_p.
14006         * fold-const.c (operand_equal_p): Check equivalence of
14007         integer constants before bailing out due to signedness or
14008         precision differences.
14009         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
14010         spurious differences in type qualification.  Ignore types
14011         for COMPONENT_REFs at all.
14012
14013 2008-04-17  Christian Bruel  <christian.bruel@st.com>
14014
14015         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
14016         msw_skip comparison.
14017
14018 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
14019
14020         PR c/35739
14021         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
14022         reg type.
14023
14024         PR tree-optimization/35899
14025         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
14026         rather than TREE_OPERAND.
14027
14028 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
14029
14030         PR target/35944
14031         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
14032         temporary registers.  Change operand predicate to general_operand.
14033         (remainderxf3): Ditto.
14034
14035 2008-04-16  Richard Guenther  <rguenther@suse.de>
14036
14037         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
14038         * tree-affine.c (aff_combination_expand): Look through some
14039         conversions.
14040
14041 2008-04-15  Doug Kwan  <dougkwan@google.com>
14042
14043         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
14044         for hex printing.
14045         * tree-pretty-print.c (dump_generic_node): Ditto.
14046         * final.c (output_addr_const): Ditto.
14047         * dwarf2out.c (output_cfi): Ditto.
14048         * c-pretty-print.c (pp_c_integer_constant): Ditto.
14049         * print-rtl.c (print_rtx): Ditto.
14050         * print-tree.c (print_node_brief, print_node): Ditto.
14051         * c-common.c (match_case_to_enum_1): Ditto.
14052         * sched-vis.c (print_value): Ditto.
14053         * config/i386/i386.c (print_operand): Cast to long unsigned int
14054         for hex printing.
14055
14056 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
14057         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
14058         MS Windows VirtualProtect function.
14059
14060 2008-04-15  Jan Hubicka  <jh@suse.cz>
14061
14062         * gengtype.c (write_root): Param_is argument is OK.
14063         * expr.c (expand_expr_real_1): Update call of get_exception_*.
14064         * function.h: Include varray.h
14065         (rtl_eh): New stucture based on except.c one.
14066         (call_site_record): New forward declaration and vector type.
14067         * calls.c (emit_call_1): Do not call
14068         note_current_region_may_contain_throw.
14069         * except.c (eh_status): Remove cur_region, try_region since they are
14070         unused.
14071         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
14072         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
14073         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
14074         Remove call_site_data_used, call_site_data_size.
14075         Turn call_site_record into vector in function.h.
14076         (note_current_region_may_contain_throw): Remove.
14077         (get_exception_pointer, get_exception_filter): Do not take struct
14078         function argument; update.
14079         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
14080         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
14081         build_post_landing_pads, dw2_build_landing_pads,
14082         sjlj_assign_call_site_values, sjlj_mark_call_sites,
14083         sjlj_emit_function_enter, sjlj_emit_function_enter,
14084         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
14085         sjlj_build_landing_pads, finish_eh_generation,
14086         remove_exception_handler_label, remove_eh_handler,
14087         maybe_remove_eh_handler, add_reachable_handler,
14088         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
14089         add_action_record, collect_one_action_chain, add_call_site,
14090         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
14091         sjlj_output_call_site_table, output_function_exception_table,
14092         * except.h (note_current_region_may_contain_throw): Remove
14093         (get_exception_pointer, get_exception_filter): Do not take struct
14094         function argument.
14095         * Makefile.in (GTFILES): Put varargs before struct function.
14096
14097 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
14098
14099         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
14100         punt for STRING_CST.
14101         (get_constraint_for): Deal with STRING_CST here instead.
14102
14103 2008-04-15  Richard Guenther  <rguenther@suse.de>
14104
14105         * tree-ssa-propagate.c (substitute_and_fold): Substitute
14106         statements in a basic-block with a backward walk.  Do not
14107         substitute into dead statements but instead remove those.
14108
14109 2008-04-15  Richard Guenther  <rguenther@suse.de>
14110
14111         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
14112         to zero, thus disable creation of SFTs.
14113
14114 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
14115
14116         * tree-predcom.c (suitable_reference_p): Return false if the
14117         reference can throw.
14118
14119 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
14120
14121         PR c/35751
14122         * c-decl.c (finish_decl): If extern or static var has variable
14123         size, set TREE_TYPE (decl) to error_mark_node.
14124
14125 2008-04-15  Rafael Espindola  <espindola@google.com>
14126
14127         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
14128         variable arg1.
14129
14130 2008-04-15  Richard Guenther  <rguenther@suse.de>
14131
14132         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
14133         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
14134         (visit_reference_op_load): Do walk vuse-vdef chains on
14135         vn_reference_lookup.
14136         (visit_reference_op_store): But do not here.
14137         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
14138         vn_reference_lookup.
14139         (vn_lookup_with_vuses): But do so here.
14140
14141 2008-04-14  Ian Lance Taylor  <iant@google.com>
14142
14143         * fold-const.c (fold_overflow_warning): Remove assertion.
14144
14145 2008-04-15  Ben Elliston  <bje@au.ibm.com>
14146
14147         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
14148         temp1 local variables.
14149
14150 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
14151
14152         PR target/35661
14153         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
14154         ".text.unlikely" section as executable.
14155
14156 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
14157
14158         * config/ia64/ia64.c (rtx_needs_barrier): Handle
14159         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
14160         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
14161         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
14162         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
14163         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
14164         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
14165
14166 2008-04-14  Ian Lance Taylor  <iant@google.com>
14167
14168         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
14169         * fold-const.c (fold_comparison): If appropriate, test
14170         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
14171         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
14172         reassociating a pointer type.
14173         * doc/invoke.texi (Optimize Options): Document that
14174         -fstrict-overflow applies to pointer wraparound.
14175
14176 2008-04-13  Jan Hubicka  <jh@suse.cz>
14177
14178         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
14179
14180 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
14181
14182         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
14183         we are going to "save the world".
14184
14185 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
14186
14187         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
14188         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
14189         operand 0 constraint, not "=".
14190
14191 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
14192
14193         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
14194
14195 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
14196
14197         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
14198         of size of positions_needed * CHAR_BIT.
14199
14200 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
14201
14202         PR middle-end/35897
14203         * dse.c (store_info): Change positions_needed to unsigned
14204         HOST_WIDE_INT.
14205         (lowpart_bitmask): New.
14206         (record_store): Cast to unsigned HOST_WIDE_INT for
14207         positions_needed.  Assert width <= size of positions_needed *
14208         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
14209         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
14210         lowpart_bitmask to set mask.
14211
14212 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14213
14214         * config/bfin/constraints.md: New file.
14215         * config/bfin/bfin.md: Include it.
14216         (adddi3): Use satisfies_constraint functions instead of the old macros.
14217         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
14218         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
14219         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
14220         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
14221         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
14222         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
14223         EXTRA_CONSTRAINT): Delete.
14224         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
14225         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
14226         of the old macros.
14227         * config/bfin/bfin.c: Include "tm-constrs.h".
14228         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
14229         Use satisfies_constraint functions instead of the old macros.
14230         * doc/md.texi (Blackfin Constraints): Update file name reference.
14231
14232 2008-04-11  Richard Guenther  <rguenther@suse.de>
14233
14234         PR tree-optimization/35869
14235         * tree-vrp.c (execute_vrp): Move switch statement update after
14236         jump threading.  Schedule another cfg cleanup run.
14237
14238 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
14239
14240         PR c/35744
14241         * attribs.c (decl_attributes): Return early on errorneous node.
14242
14243 2008-04-10  Oleg Ryjkov  <olegr@google.com>
14244
14245         * tree.h (struct tree_base): Added a new flag default_def_flag.
14246         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
14247
14248 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
14249
14250         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
14251
14252 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14253
14254         PR target/35768
14255         * pa.md: Define mode iterator P.  Define mode attribute dwc.
14256         (dcacheflush): Update pattern to use iterator P and attribute dwc.
14257         (icacheflush): Likewise.
14258         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
14259         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
14260
14261 2008-04-11  Ben Elliston  <bje@au.ibm.com>
14262
14263         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
14264
14265 2008-04-10  Rafael Espindola  <espindola@google.com>
14266
14267         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
14268         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
14269         (extract_range_from_expr): The same.
14270
14271 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
14272
14273         * config/mips/mips.md (GPR2): New mode iterator.
14274         (seq): Add comment.
14275         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
14276         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
14277         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
14278         Rewrite these to take two modes, the mode of comparison and the
14279         mode of the destination.
14280         * config/mips/mips.c (mips_expand_scc): Instead of having
14281         paradoxical subreg as destination, expand "narrowing" scc if mode
14282         of comparison is SI and target is requested in DI mode.
14283         (mips_emit_int_order_test): Update comment.  Make mode of
14284         comparison match CMP0 rather than TARGET.  When creating inverse
14285         target use mode of TARGET.
14286
14287 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
14288
14289         * gcov-dump.c (tag_summary): Only print summaries for the first
14290         GCOV_COUNTERS_SUMMABLE counters.
14291
14292 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
14293
14294         * config/i386/i386.md (absneg): New code iterator.
14295         (absnegprefix): New code attribute.
14296         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
14297         patterns using absneg code iterator.
14298         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
14299         using absneg code iterator.
14300         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
14301         *neg<mode>2 patterns using absneg code iterator.
14302         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
14303         *negextendsfdf2 patterns using absneg code iterator.
14304         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
14305         *negextendsfxf2 patterns using absneg code iterator.
14306         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
14307         *negextendsfdf2 patterns using absneg code iterator.
14308         * config/i386/sse.md (<code><mode>2): Macroize expander from
14309         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
14310
14311 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
14312
14313         * config/s390/s390.h: Remove the remains of the recent search
14314         & replace action of current_function_outgoing_args_size.
14315
14316 2008-04-10  Ira Rosen  <irar@il.ibm.com>
14317
14318         PR tree-optimization/35821
14319         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
14320         NEW_STMT_LIST is not NULL.
14321
14322 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
14323
14324         PR libstdc++/35597
14325         * toplev.c (process_options): Remove -ffunction-sections debugging
14326         warning.
14327
14328 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
14329
14330         PR middle-end/PR28690
14331         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
14332         than gen_rtx_fmt_ee to perform more canonicalizations.
14333
14334 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14335
14336         PR driver/35665
14337         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
14338
14339 2008-04-09  Richard Guenther  <rguenther@suse.de>
14340
14341         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
14342         (dump_function_to_file): Dump function arguments with types.
14343
14344 2008-04-08  Richard Guenther  <rguenther@suse.de>
14345
14346         * fold-const.c (fold_widened_comparison): Do not allow
14347         sign-changes that change the result.
14348
14349 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
14350
14351         PR target/35839
14352         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
14353         kinds of indirect references.
14354
14355 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
14356
14357         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
14358         GNU Fortran language string.
14359
14360 2008-04-08  Rafael Espindola  <espindola@google.com>
14361
14362         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
14363         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
14364         * tree.h (tree_call_nonnegative_warnv_p): New.
14365
14366 2008-04-08  Jan Hubicka  <jh@suse.cz>
14367
14368         * function.c (free_after_compilation): Clear out regno_reg_rtx
14369         pointer.
14370
14371 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
14372
14373         Revert
14374         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
14375
14376         PR middle-end/PR28690
14377         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
14378         same precedence as REG_POINTER and MEM_POINTER operands.
14379
14380 2008-04-08  Richard Guenther  <rguenther@suse.de>
14381
14382         PR middle-end/35834
14383         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
14384         for adding index to base.
14385
14386 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
14387
14388         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
14389         (MINGW_ENABLE_EXECUTE_STACK): New.
14390         (IN_LIBGCC2): For libgcc include windows.h file for
14391         function declarations.
14392
14393 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
14394
14395         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
14396         and tem2 if tem1 is not a REG or MULT.
14397
14398 2008-04-08  Jan Hubicka  <jh@suse.cz>
14399
14400         * function.h (incomming_args): Break out of struct function.
14401         (function_subsections): Break out of struct function.
14402         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
14403         return_rtx and hard_reg_initial_vals from struct function.
14404         Kill inl_max_label_num.
14405         (current_function_pops_args, current_function_args_info,
14406         current_function_args_size, current_function_args_size,
14407         current_function_pretend_args_size,
14408         current_function_outgoing_args_size,
14409         current_function_internal_arg_pointer, current_function_return_rtx):
14410         Kill compatibility accestor macros.
14411         * builtins.c (expand_builtin_apply_args_1): Update.
14412         (expand_builtin_next_arg): Update.
14413         * df-scan.c (df_get_call_refs): Update.
14414         * dbxout.c (dbxout_function_end): Update.
14415         * dwarf2out.c (dwarf2out_switch_text_section): Update.
14416         (output_line_info): Update.
14417         (secname_for_decl): Update.
14418         (dwarf2out_var_location): Update.
14419         * function.c (free_after_compilation): Update.
14420         (assign_parm_find_stack_rtl): Update.
14421         (assign_parms): Update.
14422         (expand_dummy_function_end): Update.
14423         (expand_function_end): Update.
14424         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
14425         (expand_call): Update.
14426         (emit_library_call_value_1): Update.
14427         (store_one_arg): Update.
14428         * varasm.c (initialize_cold_section_name): Update.
14429         (unlikely_text_section): Update.
14430         (unlikely_text_section_p): Update.
14431         (assemble_start_function): Update.
14432         (assemble_end_function): Update.
14433         (default_section_type_flags): Update.
14434         (switch_to_section): Update.
14435         * integrate.c (set_decl_abstract_flags): Update.
14436         (get_hard_reg_initial_val): Update.
14437         (has_hard_reg_initial_val): Update.
14438         (allocate_initial_values): Update.
14439         * resource.c (init_resource_info): Update.
14440         * config/alpha/alpha.c (NUM_ARGS): Update.
14441         (direct_return): Update.
14442         (alpha_va_start): Update.
14443         (alpha_sa_size): Update.
14444         (alpha_initial_elimination_offset): Update.
14445         (alpha_expand_prologue): Update.
14446         (alpha_start_function): Update.
14447         (alpha_expand_epilogue): Update.
14448         (unicosmk_initial_elimination_offset):
14449         * config/alpha/alpha.md (call expander): Update.
14450         * config/s390/s390.c (s390_register_info): Update.
14451         (s390_register_info): Update.
14452         (s390_frame_info): Update.
14453         (s390_initial_elimination_offset): Update.
14454         (s390_build_builtin_va_list): Update.
14455         (s390_va_start): Update.
14456         * config/spu/spu.c (direct_return): Update.
14457         (spu_expand_prologue): Update.
14458         (spu_initial_elimination_offset): Update.
14459         (spu_build_builtin_va_list): Update.
14460         (spu_va_start): Update.
14461         * config/sparc/sparc.c (sparc_init_modes): Update.
14462         (sparc_compute_frame_size): Update.
14463         (function_value): Update.
14464         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
14465         * config/i386/i386.md (return expander): Update.
14466         * config/i386/i386.c (ix86_va_start): Update.
14467         (ix86_can_use_return_insn_p): Update.
14468         (ix86_compute_frame_layout): Update.
14469         (ix86_expand_epilogue): Update.
14470         * config/sh/sh.c (output_stack_adjust): Update.
14471         (calc_live_regs): Update.
14472         (sh_expand_prologue): Update.
14473         (sh_builtin_saveregs): Update.
14474         (sh_va_start): Update.
14475         (initial_elimination_offset): Update.
14476         (sh_allocate_initial_value): Update.
14477         (sh_function_ok_for_sibcall): Update.
14478         (sh_get_pr_initial_val): Update.
14479         * config/sh/sh.md (return expander): Update.
14480         * config/avr/avr.c (frame_pointer_required_p): UPdate.
14481         * config/crx/crx.c (crx_compute_frame): UPdate.
14482         (crx_initial_elimination_offset): UPdate.
14483         * config/xtensa/xtensa.c (compute_frame_size): Update
14484         (xtensa_builtin_saveregs): Update.
14485         (xtensa_va_start): Update.
14486         (order_regs_for_local_alloc): Update.
14487         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
14488         (xstormy16_expand_builtin_va_start): Update.
14489         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
14490         * config/m68hc11/m68hc11.md (return expanders): Update.
14491         * config/m68hc11/m68hc11.c (expand_prologue): Update.
14492         (expand_epilogue): Update.
14493         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
14494         (cris_simple_epilogue): Update.
14495         (cris_expand_prologue): Update.
14496         (cris_expand_epilogue): Update.
14497         * config/iq2000/iq2000.c (iq2000_va_start): Update.
14498         (compute_frame_size): Update.
14499         * config/mt/mt.c (mt_compute_frame_size): Update.
14500         * config/mn10300/mn10300.c (expand_prologue): Update.
14501         (expand_epilogue): Update.
14502         (initial_offset): Update.
14503         (mn10300_builtin_saveregs):
14504         * config/mn10300/mn10300.md (return expander): Update.
14505         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
14506         (ia64_initial_elimination_offset): Update.
14507         (ia64_initial_elimination_offset): Update.
14508         (ia64_expand_prologue): Update.
14509         * config/m68k/m68k.md (return expander): Update.
14510         * config/rs6000/rs6000.c (rs6000_va_start): Update.
14511         (rs6000_stack_info): Update.
14512         * config/mcore/mcore.c (layout_mcore_frame): Update.
14513         (mcore_expand_prolog): Update.
14514         * config/arc/arc.c (arc_compute_frame_size): Update.
14515         * config/score/score3.c (score3_compute_frame_size): Update.
14516         * config/score/score7.c (score7_compute_frame_size): Update.
14517         * config/arm/arm.c (use_return_insn): Update.
14518         (thumb_find_work_register): Update.
14519         (arm_compute_save_reg_mask): Update.
14520         (arm_output_function_prologue): Update.
14521         (arm_output_epilogue): Update.
14522         (arm_size_return_regs): Update.
14523         (arm_get_frame_offsets): Update.
14524         (arm_expand_prologue): Update.
14525         (thumb_exit): Update.
14526         (thumb_unexpanded_epilogue): Update.
14527         (thumb1_output_function_prologue): Update.
14528         * config/pa/pa.md (return expander): Update.
14529         * config/pa/pa.c (compute_frame_size): Update.
14530         (hppa_builtin_saveregs): Update.
14531         * config/mips/mips.c (mips_va_start): Update.
14532         (mips16_build_function_stub): Update.
14533         (mips_compute_frame_info): Update.
14534         (mips_restore_gp): Update.
14535         (mips_output_function_prologue): Update.
14536         (mips_expand_prologue): Update.
14537         * config/v850/v850.c (compute_frame_size): Update.
14538         (expand_prologue): * config/mmix/mmix.c (along): update.
14539         (mmix_initial_elimination_offset): update.
14540         (mmix_reorg): update.
14541         (mmix_use_simple_return): update.
14542         (mmix_expand_prologue): update.
14543         (mmix_expand_epilogue): Update.
14544         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
14545         (emit_link_insn): Update.
14546
14547 2008-04-08  Anatoly Sokolov <aesok@post.ru>
14548
14549         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
14550         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
14551         instructions.
14552         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
14553         atmega103 device.
14554
14555 2008-04-07  Jan Hubicka  <jh@suse.cz>
14556
14557         * function.h (rtl): Rename to x_rtl.
14558         (crtl): New define.
14559         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
14560         frame_offset, stack_check_probe_note, arg_pointer_save_area,
14561         used_temp_slots avail_temp_slots, temp_slot_level,
14562         nonlocal_goto_handler_labels): Update accesstors.
14563         (rtl): New global variable.
14564         (struct function): Move some fileds to rtl_data.
14565         (get_arg_pointer_save_area): Update prototype.
14566         * builtins.c (expand_builtin_setjmp_receiver): Update call of
14567         get_arg_pointer_save_area.
14568         * expr.c (init_expr): Update
14569         * function.c (get_frame_size): Update
14570         (assign_stack_local): Update
14571         (expand_function_end): Update.
14572         (get_art_pointer_save_area): Update
14573         * function.h
14574         * emit-rtl.c (rtl): Declare.
14575         (regno_reg_rtx): Declare.
14576         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
14577         Update.
14578         (gen_reg_rtx): Update.
14579         * varasm.c (n_deferred_constatns): Update accestor.
14580         (init_varasm_status): Do not allocate varasm_status.
14581         (force_const_mem, get_pool_size, output_constant_pool): Update.
14582         * stmt.c (force_label_rtx): Do not use x_ prefixes.
14583         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
14584         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
14585         * sparc/sparc.h (INIT_EXPANDERS): Update.
14586         * ia64/ia64.h (INIT_EXPANDERS): Update.
14587
14588 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
14589
14590         * reload.c (push_secondary_reload): Add missing break to for loop.
14591
14592 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
14593
14594         PR middle-end/PR28690
14595         * rtlanal.c: Update copyright years.
14596         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
14597         as REG_POINTER and MEM_POINTER operands.
14598         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
14599         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
14600         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
14601         * gcse.c: Update copyright years.
14602         (pre_delete): Call gen_reg_rtx_and_attrs.
14603         (hoist_code): Likewise.
14604         (build_store_vectors): Likewise.
14605         (delete_store): Likewise.
14606         * loop-invariant.c (move_invariant_reg): Likewise.
14607         Update copyright years.
14608
14609 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
14610
14611         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
14612         control string instead of quoted.
14613
14614 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
14615
14616         * doc/rtl.texi: Rewrite of subreg section.
14617
14618 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
14619
14620         PR/35842
14621         * config/i386/i386.c (legitimize_pic_address): Add treating
14622         of dllimport SYM_REF's.
14623         (legitimize_dllimport_symbol): Add prototype.
14624
14625 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
14626
14627         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
14628         reference in constructor with non self-referential type.
14629
14630 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
14631
14632         Removal of Return with Depressed Stack Pointer support
14633         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
14634         (ECF_SP_DEPRESSED): Likewise.
14635         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
14636         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
14637         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
14638         (expand_call): Do not test ECF_SP_DEPRESSED.
14639         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
14640         * function.c (keep_stack_depressed): Delete.
14641         (handle_epilogue_set): Likewise.
14642         (update_epilogue_consts): Likewise.
14643         (emit_equiv_load): Likewise.
14644         (thread_prologue_and_epilogue_insns): Remove support for Return with
14645         Depressed Stack Pointer.
14646         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
14647
14648 2008-04-06  Richard Guenther  <rguenther@suse.de>
14649
14650         PR tree-optimization/35400
14651         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
14652         information from SSA_NAMEs.
14653
14654 2008-04-06  Anatoly Sokolov <aesok@post.ru>
14655
14656         * config/avr/avr.h (avr_mega_p): Remove declaration.
14657         (AVR_MEGA): Remove macro.
14658         * config/avr/avr.c (avr_mega_p): Remove variable.
14659         (avr_override_options): Remove inicializion of avr_mega_p.
14660         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
14661         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
14662         (avr_jump_mode): (Ditto.).
14663         (avr_output_progmem_section_asm_op): (Ditto.).
14664         (avr_asm_init_sections): (Ditto.).
14665         (avr_asm_init_sections): (Ditto.).
14666         (avr_rtx_costs): (Ditto.).
14667         * config/avr/avr.md: (Ditto.).
14668         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
14669         '__AVR_MEGA__'.
14670
14671 2008-04-06  Richard Guenther  <rguenther@suse.de>
14672
14673         PR tree-optimization/35842
14674         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
14675         is_gimple_invariant_address.
14676
14677 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
14678
14679         * gcc.c (default_compilers): Sync Fortran extensions list with
14680         that in fortran/lang-specs.h.
14681         * doc/invoke.texi: Likewise.
14682         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
14683         * dwarf2out.c (gen_compile_unit_die): Likewise.
14684
14685 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
14686
14687         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
14688
14689 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
14690
14691         PR target/12329
14692         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
14693         attribute is used for nested functions.
14694
14695 2008-04-05  Jan Hubicka  <jh@suse.cz>
14696
14697         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
14698
14699         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
14700         letter argument.
14701         (dump_files): Update.
14702         (enable_rtl_dump_file): Do not accept letter argument.
14703         * tree-pass.h (dump_file_info): Remove letter argument.
14704         * toplev.c (decode_d_option): Update -da handling.
14705         * toplev.h (enable_rtl_dump_file): Update prototype.
14706         * passes.c (register_one_dump_file): Do not accept IPA argument; work
14707         it out based on pass type.
14708         (register_dump_files_1): Likewise.
14709         (init_optimization_passes): Update register_one_dump_file calls.
14710         (execute_one_pass): Sanity check that IPA passes are called at IPA
14711         level and RTL passes at RTL level.
14712         (execute_pass_list): IPA pass can not be after or subpass of
14713         GIMPLE/RTL pass.
14714         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
14715         disallov RTL subpasses of IPA subpasses.
14716
14717 2008-04-05  Ben Elliston  <bje@au.ibm.com>
14718
14719         * tree-cfg.c (need_fake_edge_p): Return false for calls to
14720         builtins that return exactly once and do not throw. Cache call to
14721         call_expr_flags.
14722
14723 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
14724
14725         PR rtl-optimization/34916
14726         PR middle-end/35519
14727         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
14728         between instruction pairs.
14729
14730 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
14731
14732         * doc/invoke.texi: Document -mbitops for SH.
14733         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
14734         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
14735         * config/sh/sh.c (print_operand): Add %t operand code.
14736         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
14737         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
14738         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
14739         (extendqihi2): Likewise.
14740         (movqi_i): Likewise.
14741         (insv): Use bset, bclr and bst instructions for SH2A if possible.
14742         (extv): Use bld instruction for SH2A if possible.
14743         (extzv): Likewise.
14744         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
14745         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
14746         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
14747         (bset.b, bclr.b): Define peepholes.
14748         * config/sh/sh.opt (mbitops): New option.
14749
14750 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
14751
14752         PR target/35620
14753         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
14754         and view convert expression.
14755
14756 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
14757
14758         PR target/35364
14759         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
14760
14761 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
14762
14763         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
14764
14765         * config/i386/cpuid.h (bit_AES): New.
14766         (bit_PCLMUL): Likewise.
14767
14768         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
14769         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
14770         SSE2 if AES or PCLMUL is enabled.
14771         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
14772         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
14773         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
14774         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
14775         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
14776         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
14777         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
14778         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
14779         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
14780         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
14781         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
14782         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
14783         __builtin_ia32_aeskeygenassist128 and
14784         __builtin_ia32_pclmulqdq128.
14785         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
14786         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
14787         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
14788
14789         * config/i386/i386.h (TARGET_AES): New.
14790         (TARGET_PCLMUL): Likewise.
14791         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
14792
14793         * config/i386/i386.md (UNSPEC_AESENC): New.
14794         (UNSPEC_AESENCLAST): Likewise.
14795         (UNSPEC_AESDEC): Likewise.
14796         (UNSPEC_AESDECLAST): Likewise.
14797         (UNSPEC_AESIMC): Likewise.
14798         (UNSPEC_AESKEYGENASSIST): Likewise.
14799         (UNSPEC_PCLMUL): Likewise.
14800
14801         * config/i386/i386.opt (maes): New.
14802         (mpclmul): Likewise.
14803
14804         * config/i386/sse.md (aesenc): New pattern.
14805         (aesenclast): Likewise.
14806         (aesdec): Likewise.
14807         (aesdeclast): Likewise.
14808         (aesimc): Likewise.
14809         (aeskeygenassist): Likewise.
14810         (pclmulqdq): Likewise.
14811
14812         * config/i386/wmmintrin.h: New.
14813
14814         * doc/extend.texi: Document AES and PCLMUL built-in function.
14815
14816         * doc/invoke.texi: Document -maes and -mpclmul.
14817
14818 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
14819
14820         * function.c (free_after_parsing): Replace with
14821         cxx_push_function_context from C++ front-end.
14822         (allocate_struct_function): Don't call langhook.
14823         * langhooks.h (struct lang_hooks_for_functions): Delete.
14824         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
14825         member "function".
14826         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
14827         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
14828         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
14829         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
14830         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
14831         remove LANG_HOOKS_FUNCTION_INITIALIZER.
14832         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
14833
14834         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
14835         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
14836
14837 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
14838
14839         PR c/35440
14840         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
14841         for all types.
14842
14843 2008-04-04  Richard Guenther  <rguenther@suse.de>
14844
14845         PR middle-end/35823
14846         * fold-const.c (optimize_minmax_comparison): Use the correct
14847         type for the constant in the simplified comparison.
14848
14849 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
14850
14851         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
14852         Pass L2 size as "--param l2-cache-size" to the compiler.
14853         (decode_l2_cache): New function to decode L2 cache parameters using
14854         0x8000006 extended cpuid function.
14855         (detect_caches_amd): Determine parameters of L2 cache using
14856         decode_l2_caches function.
14857         (decode_caches_intel): Decode L2 cache parameters.
14858         (detect_caches_intel): Determine L2 cache parameters using
14859         decode_caches_intel and decode_l2_caches functions.
14860
14861 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
14862
14863         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
14864         secondary input reload for subword loads from the constant pool.
14865
14866 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
14867
14868         PR target/35713
14869         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
14870           constants of the appropriate size for runtime calculations.
14871
14872         PR c/35712
14873         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
14874           decimal-float literal constant zero.
14875
14876 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
14877
14878         PR c/35738
14879         * c-parser.c (c_parser_omp_atomic): Call
14880         default_function_array_conversion on the RHS.
14881
14882         PR middle-end/35818
14883         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
14884         call is_variable_sized if decl has incomplete type.
14885
14886 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
14887
14888         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
14889
14890 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
14891
14892         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
14893         iterators.
14894         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
14895         (sgt<u>): Merge sgt and sgtu into new expander.
14896         (sgt, sgtu): Remove expanders.
14897         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
14898         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
14899         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
14900         *sgtu_<mode>_mips16 into new pattern.
14901         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
14902         (sge<u>): Merge sge and sgeu into new expander.
14903         (sge, sgeu): Remove expanders.
14904         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
14905         new pattern.
14906         (*sge_<mode>, second *sge_<mode>): Remove patterns.
14907         (slt<u>): Merge slt and sltu into new expander.
14908         (slt, sltu): Remove expanders.
14909         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
14910         (*slt_<mode>, *sltu_<mode>): Remove patterns.
14911         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
14912         *sltu_<mode>_mips16 into new pattern.
14913         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
14914         (sle<u>): Merge sle and sleu into new expander.
14915         (sle, sleu): Remove expanders.
14916         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
14917         (*sle_<mode>, *sleu_<mode>): Remove patterns.
14918         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
14919         *sleu_<mode>_mips16 into new pattern.
14920         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
14921
14922 2008-04-03  Jan Hubicka  <jh@suse.cz>
14923
14924         PR tree-optimization/35795
14925         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
14926         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
14927         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
14928         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
14929         * score/score3.c (score3_output_mi_thunk): Likewise.
14930         * score/score7.c (score7_output_mi_thunk): Likewise.
14931         * mips/mips.c (mips_output_mi_thunk): Likewise.
14932
14933 2008-04-03  Richard Guenther  <rguenther@suse.de>
14934
14935         * tree-vrp.c (extract_range_from_unary_expr): Handle all
14936         conversions.  Simplify code.
14937
14938 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14939
14940         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
14941
14942 2008-04-03  Tom Tromey  <tromey@redhat.com>
14943             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14944
14945         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
14946         * config/bfin/t-bfin-linux (generated_files): Add
14947         linux-sysroot-suffix.h.
14948         * doc/install.texi (Prerequisites): Require make 3.80.
14949         * doc/sourcebuild.texi (Front End Directory): Document new
14950         variable.
14951         * Makefile.in (generated_files): New variable.
14952         (ALL_HOST_OBJS): New variable.
14953         ($(ALL_HOST_OBJS)): New target.
14954
14955 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
14956
14957         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
14958         (remap_block): Call id->transform_lang_insert_block instead
14959         of langhook.
14960         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
14961         Set id.transform_lang_insert_block to NULL.
14962         (clone_body): Move to cp/optimize.c
14963         * tree-inline.h (struct copy_body_data): Change
14964         transform_lang_insert_block to function pointer.
14965         (copy_generic_body, copy_decl_no_change): Export.
14966         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
14967         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
14968         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
14969
14970         * c-tree.h (insert_block): Kill.
14971         * c-decl.c (insert_block): Kill.
14972
14973 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
14974
14975         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
14976         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
14977         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
14978         argument.
14979         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
14980         argument, call {push,pop}_function_context from here.
14981         * c-parser.c: Use c_{push,pop}_function_context.
14982
14983         * function.c (push_function_context_to): Move meat ...
14984         (push_function_context): ... here.  Simplify.
14985         * function.c (pop_function_context_from): Move meat ...
14986         (pop_function_context): ... here.  Simplify.
14987         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
14988         leave_nested).
14989         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
14990         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
14991         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
14992         * tree.h (push_function_context_to, pop_function_context_from): Remove.
14993
14994 2008-04-03  Ben Elliston  <bje@au.ibm.com>
14995
14996         * expmed.c (extract_force_align_mem_bit_field): Remove.
14997
14998 2008-04-03  Richard Guenther  <rguenther@suse.de>
14999
15000         PR middle-end/35800
15001         * expr.h (try_casesi): Adjust prototype.
15002         * expr.c (try_casesi): Take fallback label as extra parameter.
15003         Use that for gen_casesi if default_label is NULL.
15004         * stmt.c (expand_case): Pass fallback label to try_casesi,
15005         make sure to fill gaps with a fallback label if default_label
15006         is not present.
15007
15008 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
15009
15010         PR target/35801
15011         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
15012
15013 2008-04-03  Ben Elliston  <bje@au.ibm.com>
15014
15015         * expmed.c (extract_split_bit_field): Remove if (0) code.
15016         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
15017         (do_ds_constraint): Likewise.
15018
15019 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
15020
15021         * doc/cppopts.texi (-dU): Document.
15022         * c-common.h (flag_dump_macros): Update comment.
15023         * c-opts.c (handle_OPT_d): Handle -dU.
15024         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
15025         dump_queued_macros, cb_used_define, cb_used_undef): New.
15026         (init_pp_output): Handle -dU.
15027         (cb_line_change): Call dump_queued_macros.
15028         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
15029
15030 2008-04-02  Anatoly Sokolov <aesok@post.ru>
15031
15032         * config/avr/predicates.md (io_address_operand): New predicate.
15033         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
15034         * config/avr/avr.c (avr_io_address_p): Remove function.
15035         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
15036         'avr_io_address_p' function.
15037         (out_movhi_r_mr): (Ditto.).
15038         (out_movqi_mr_r): (Ditto.).
15039         (out_movhi_mr_r): (Ditto.).
15040         (avr_address_cost): (Ditto.).
15041
15042 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
15043
15044         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
15045         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
15046         in 32bit mode when XMM registers are available to avoid store
15047         forwarding stalls.
15048         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
15049         corresponding post-reload splitters.
15050
15051 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15052
15053         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
15054         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
15055         __builtin_ia32_roundss.
15056         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
15057         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
15058         __builtin_ia32_roundss.
15059         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
15060         IX86_BUILTIN_SHUFPD here.
15061
15062 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15063
15064         * config/i386/i386.md (plogic): New.
15065         (plogicprefix): Likewise.
15066
15067         * config/i386/mmx.md (mmx_<code><mode>3): New.
15068         (mmx_and<mode>3): Removed.
15069         (mmx_ior<mode>3): Likewise.
15070         (mmx_xor<mode>3): Likewise.
15071
15072         * config/i386/sse.md (<code><mode>3): New.
15073         (*<code><mode>3): Likewise.
15074         (*<code><mode>3): Likewise.
15075         (<code><mode>3): Likewise.
15076         (*sse_<code><mode>3): Likewise.
15077         (*sse2_<code><mode>3): Likewise.
15078         (<code>tf3): Likewise.
15079         (*<code>tf3): Likewise.
15080         (and<mode>3): Likewise.
15081         (*and<mode>3): Likewise.
15082         (ior<mode>3): Removed.
15083         (*ior<mode>3): Likewise.
15084         (xor<mode>3): Likewise.
15085         (*xor<mode>3): Likewise.
15086         (*and<mode>3): Likewise.
15087         (*ior<mode>3): Likewise.
15088         (*xor<mode>3): Likewise.
15089         (and<mode>3): Likewise.
15090         (*sse_and<mode>3): Likewise.
15091         (*sse2_and<mode>3): Likewise.
15092         (andtf3): Likewise.
15093         (*andtf3): Likewise.
15094         (ior<mode>3): Likewise.
15095         (*sse_ior<mode>3): Likewise.
15096         (*sse2_ior<mode>3): Likewise.
15097         (iortf3): Likewise.
15098         (*iortf3): Likewise.
15099         (xor<mode>3): Likewise.
15100         (*sse_xor<mode>3): Likewise.
15101         (*sse2_xor<mode>3): Likewise.
15102         (xortf3): Likewise.
15103         (*xortf3): Likewise.
15104
15105 2008-04-02  Richard Guenther  <rguenther@suse.de>
15106
15107         PR tree-optimization/14495
15108         PR tree-optimization/34793
15109         * tree-vrp.c (struct switch_update): New structure.
15110         (to_remove_edges, to_update_switch_stmts): New VECs.
15111         (simplify_switch_using_ranges): New function.  Remove not taken
15112         case labels and edges.
15113         (simplify_stmt_using_ranges): Call it.
15114         (identify_jump_threads): Mark edges we have queued for removal
15115         so we don't thread them.
15116         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
15117         case label vector.
15118         * tree-cfg.c (group_case_labels): Deal with missing default label.
15119         (tree_verify_flow_info): Allow missing default label.
15120         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
15121         (emit_case_nodes): Likewise.
15122         (expand_case): Do not rely on the default label to be present.
15123         * expr.c (try_casesi): Deal with NULL default_label.
15124         (do_tablejump): Likewise.
15125
15126 2008-04-02  Richard Guenther  <rguenther@suse.de>
15127
15128         PR tree-optimization/14495
15129         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
15130         SWITCH_EXPR here ...
15131         (vrp_visit_switch_stmt): ... but here (new function).
15132         (find_case_label_index): New helper function.
15133         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
15134
15135 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15136
15137         * fwprop.c: Fix ISO-C99ism.
15138
15139 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15140
15141         PR bootstrap/35752
15142         * Makefile.in (objdir): Set it here.
15143         * configure.ac: Not here.  Find dynamic linker characteristics.
15144         * exec-tool.in: Use them.
15145         * aclocal.m4: Regenerate.
15146         * configure: Regenerate.
15147
15148 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15149
15150         * expr.c (expand_var): Delete it.
15151         * expr.h (expand_var): Delete prototype.
15152         * function.c (expand_function_start): Use expand_decl instead.
15153         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
15154         langhook.
15155
15156 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
15157
15158         PR rtl-optimization/35542
15159         * fwprop.c (forward_propagate_and_simplify): Replace
15160         loc_reg_mentioned_in_p with reg_mentioned_p.
15161
15162 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15163
15164         PR rtl-optimization/35281
15165         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
15166         (propagate_rtx_1): Handle PR_HANDLE_MEM.
15167         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
15168         (varying_mem_p): Move above propagate_rtx.
15169         (all_uses_available_at): Do not check MEMs.
15170
15171 2008-04-02  Rafael Espindola  <espindola@google.com>
15172
15173         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
15174         (register_edge_assert_for_2): Split the cond argument.
15175         (register_edge_assert_for_1): Adjust for the change in
15176         register_edge_assert_for_2.
15177         (register_edge_assert_for): Split the cond argument.
15178         (find_switch_asserts): Adjust for the change in
15179         register_edge_assert_for.
15180
15181 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
15182
15183         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
15184         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
15185         offsets for 64-bit mingw.
15186         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
15187         abi for x86_64-pc-mingw.
15188
15189 2008-04-02  Richard Guenther  <rguenther@suse.de>
15190
15191         * tree-vrp.c (extract_range_from_assert): Make sure to not
15192         produce range min/max with TREE_OVERFOW set.
15193         If merging a anti-range and a range keep the anti-range if
15194         the range covers all values of the type.
15195         (register_edge_assert_for_2): Only allow sign-changing
15196         conversions in detecting canonical range checks.  Also
15197         register an assert for the unsigned name if useful.
15198
15199         PR tree-optimization/35787
15200         * tree-vrp.c (vrp_val_max): New function.
15201         (vrp_val_min): Likewise.
15202         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
15203         (vrp_val_is_min): Likewise.
15204         (supports_overflow_infinity): Use vrp_val_{min,max}.
15205         (negative_overflow_infinity): Likewise.
15206         (positive_overflow_infinity): Likewise.
15207         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
15208         (is_positive_overflow_infinity): Likewise.
15209         (is_overflow_infinity): Likewise.
15210         (avoid_overflow_infinity): Use vrp_val_{min,max} and
15211         vrp_val_is_{min,max}.
15212         (set_and_canonicalize_value_range): Canonicalize anti-ranges
15213         to ranges if possible.  Avoid empty ranges.
15214
15215 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15216
15217         PR middle-end/35705
15218         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
15219         the expression is a function address.
15220
15221 2008-04-01  George Helffrich  <george@gcc.gnu.org>
15222
15223         PR fortran/35154, fortran/23057
15224         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
15225         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
15226         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
15227         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
15228         in common.
15229         (dbxout_syms): Check for COMMON-based symbol and wrap in
15230         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
15231         in bracket for efficiency.
15232
15233         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
15234         using DW_TAG_common_block + member offset.
15235         (add_pubname_string): New function.
15236         (dw_expand_expr): New function to find block name and offset for
15237         COMMON var.
15238         (common_check): New function to check whether symbol in Fortran COMMON.
15239         (gen_variable_die): If COMMON, use DW_TAG_common_block.
15240
15241 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
15242
15243         PR c/35436
15244         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
15245
15246 2008-04-02  Ben Elliston  <bje@au.ibm.com>
15247
15248         * config/v850/v850.md (casesi): Remove if (0) code.
15249         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
15250         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
15251
15252 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
15253
15254         * config/i386/i386.md (rex64suffix): New mode attribute.
15255         (floathi<mode>2): Disable expander for SSE math.
15256         (*floathi<mode>2_1): New insn insn_and_split pattern.
15257         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
15258         corresponding post-reload splitters.
15259         (*floathi<mode>2_i387): New macroized insn pattern.
15260         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
15261         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
15262         insn_and_split pattern.
15263         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
15264         New macroized instruction patterns and corresponding post-reload
15265         splitters.
15266         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
15267         and corresponding post-reload splitters.
15268         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
15269         New macroized instruction patterns.
15270         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
15271         macroized instruction patterns and corresponding post-reload splitters.
15272         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
15273         corresponding post-reload splitters.
15274         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
15275         New macroized instruction patterns.
15276         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
15277         corresponding post-reload splitters.
15278         (*floatsi<mode>2_i387): New macroized instruction patterns.
15279
15280 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
15281
15282         * config/i386/i386.md (smaxmin): New.
15283         (umaxmin): Likewise.
15284         (maxminiprefix): Likewise.
15285         (maxminfprefix): Likewise.
15286         (<code><mode>3): Likewise.
15287         (smin<mode>3): Removed.
15288         (smax<mode>3): Likewise.
15289
15290         * config/i386/mmx.md (mmx_<code>v2sf3): New.
15291         (mmx_<code>v4hi3): Likewise.
15292         (mmx_<code>v8qi3): Likewise.
15293         (mmx_smaxv2sf3): Removed.
15294         (mmx_sminv2sf3): Likewise.
15295         (mmx_umaxv8qi3): Likewise.
15296         (mmx_smaxv4hi3): Likewise.
15297         (mmx_uminv8qi3): Likewise.
15298         (mmx_sminv4hi3): Likewise.
15299
15300         * config/i386/sse.md (<addsub><mode>3): New.
15301         (*<addsub><mode>3): Likewise.
15302         (<sse>_vm<addsub><mode>3): Likewise.
15303         (<maxmin><mode>3): Likewise.
15304         (*<maxmin><mode>3_finite): Likewise.
15305         (*<maxmin><mode>3): Likewise.
15306         (<sse>_vm<maxmin><mode>3): Likewise.
15307         (sse3_h<addsub>v4sf3): Likewise.
15308         (sse3_h<addsub>v2df3): Likewise.
15309         (<maxmin>v16qi3): Likewise.
15310         (*<maxmin>v16qi3): Likewise.
15311         (<maxmin>v8hi3): Likewise.
15312         (*<maxmin>v8hi3): Likewise.
15313         (*sse4_1_<maxmin><mode>3): Likewise.
15314         (*sse4_1_<maxmin><mode>3): Likewise.
15315         (add<mode>3): Removed.
15316         (*add<mode>3): Likewise.
15317         (<sse>_vmadd<mode>3): Likewise.
15318         (sub<mode>3): Likewise.
15319         (*sub<mode>3): Likewise.
15320         (<sse>_vmsub<mode>3): Likewise.
15321         (smin<mode>3): Likewise.
15322         (*smin<mode>3_finite): Likewise.
15323         (*smin<mode>3): Likewise.
15324         (<sse>_vmsmin<mode>3): Likewise.
15325         (smax<mode>3): Likewise.
15326         (*smax<mode>3_finite): Likewise.
15327         (*smax<mode>3): Likewise.
15328         (<sse>_vmsmax<mode>3): Likewise.
15329         (sse3_haddv4sf3): Likewise.
15330         (sse3_haddv2df3): Likewise.
15331         (sse3_hsubv4sf3): Likewise.
15332         (sse3_hsubv2df3): Likewise.
15333         (umaxv16qi3): Likewise.
15334         (*umaxv16qi3): Likewise.
15335         (smaxv8hi3): Likewise.
15336         (*smaxv8hi3): Likewise.
15337         (*sse4_1_smax<mode>3): Likewise.
15338         (*sse4_1_umax<mode>3): Likewise.
15339         (uminv16qi3): Likewise.
15340         (*uminv16qi3): Likewise.
15341         (sminv8hi3): Likewise.
15342         (*sminv8hi3): Likewise.
15343         (*sse4_1_smin<mode>3): Likewise.
15344         (*sse4_1_umin<mode>3): Likewise.
15345
15346 2008-04-01  Rafael Espindola  <espindola@google.com>
15347
15348         * tree-cfg.c (verify_expr): remove in_phi.
15349         (verify_stmt): Don't call walk_tree with verify_expr. Use
15350         is_gimple_min_invariant instead of is_gimple_val.
15351
15352 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
15353
15354         * doc/include/gpl_v3.texi: Update for manpage generation.
15355         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
15356         gpl.texi.
15357         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
15358         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
15359         gpl_v3.texi instead of gpl.texi.
15360         (gpl.pod): New.
15361
15362 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
15363
15364         PR pch/13675
15365         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
15366
15367 2008-04-01  Rafael Espindola  <espindola@google.com>
15368
15369         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
15370         (extract_code_and_val_from_cond): Use
15371         extract_code_and_val_from_cond_with_ops.
15372
15373 2008-04-01  Jan Hubicka  <jh@suse.cz>
15374
15375         * function.c (free_after_compilation): Free epilogue_delay_list.
15376         (prepare_function_start): Assert that previous compilation was freed.
15377
15378 2008-04-01  Jan Hubicka  <jh@suse.cz>
15379             Jim Wilson  <wilson@tuliptree.org>
15380             Andreas Tobler <andreast@gcc.gnu.org>
15381
15382         PR middle-end/35781
15383         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
15384         rtl.emit instead cfun->emit.
15385         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
15386         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
15387
15388 2008-04-01  Ben Elliston  <bje@au.ibm.com>
15389
15390         * doc/c-tree.texi (Function Basics): Fix grammatical error.
15391
15392 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
15393
15394         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
15395         New options
15396         (fprofile-use): Add var flag_profile_use
15397         * coverage.c (coverage_begin_output): Do not open a gcno file for
15398         output only if -ftest-coverage is set.
15399         Do not add getpwd() to gcda file path.
15400         (build_gcov_info): Check the new flag
15401         flag_profile_datafile_relative_path.
15402         (coverage_init): Use profile_data_prefix.
15403         Read profile counter only if flag_profile_use is set.
15404         * opts.c (common_handle_option): New option fprofile-use=,
15405         fprofile-dir=, fprofile-generate=.
15406         * toplev.c (profile_data_prefix): New variable definition.
15407         * toplev.h (profile_data_prefix): New declaration.
15408         * doc/invoke.tex (Option Summary, Optimization Options):
15409         Add new options.
15410
15411 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
15412
15413         * varasm.c (output_constant_pool_1): In LABEL_REF check,
15414         use tmp consistently.
15415
15416         PR target/35695
15417         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
15418         * config/ia64/ia64.c (rtx_needs_barrier): Handle
15419         UNSPEC_FR_RECIP_APPROX_RES.
15420         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
15421
15422 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
15423
15424         PR c/35750
15425         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
15426
15427 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15428
15429         PR middle-end/30186
15430         * fold-const.c (fold_indirect_ref_1): Support accessing non first
15431         element of the vector via a pointer.
15432
15433 2008-03-31  Ian Lance Taylor  <iant@google.com>
15434
15435         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
15436
15437 2008-03-31  Jan Hubicka  <jh@suse.cz>
15438
15439         * builtins.c (expand_builtin_setjmp_receiver): Update call of
15440         get_arg_pointer_save_area.
15441         * expr.c (init_expr): Just clear out rtl.expr.
15442         * function.c (free_after_compilation): Clear out whole RTL structure.
15443         (get_func_frame_size): Merge into ...
15444         (get_frame_size): ... this one.
15445         (assign_stack_local_1): Merge into ...
15446         (assign_stack_local): ... this one.
15447         (expand_function_end): Update call of get_arg_pointer_save_area.
15448         (get_art_pointer_save_area): Remove cfun argument.
15449         * function.h (emit_status): regno_pointer_align does not need length
15450         attribute. Move x_regno_reg_rtx to ...
15451         (regno_reg_rtx): ... new global array.
15452         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
15453         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
15454         apply_args_value, forced_labels, stack_pointer_delta):
15455         Update accestors.
15456         (struct varasm_status): Move here from varasm.c
15457         (struct rtl_data): New. Move here some fields from struct function.
15458         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
15459         frame_offset, stack_check_probe_note, arg_pointer_save_area,
15460         used_temp_slots avail_temp_slots, temp_slot_level,
15461         nonlocal_goto_handler_labels): Update accesstors.
15462         (rtl): New global variable.
15463         (struct function): Move some fileds to rtl_data.
15464         (get_arg_pointer_save_area): Update prototype.
15465         * emit-rtl.c (rtl): Declare.
15466         (regno_reg_rtx): Declare.
15467         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
15468         Update.
15469         (gen_reg_rtx): Update.
15470         (init_virtual_regs): Do not tate emit_status argument.
15471         (init_emit): Do not allocate emit.
15472         * varasm.c (varasm_statuc): Move to function.h.
15473         (n_deferred_constatns): Update accestor.
15474         (init_varasm_status): Do not allocate varasm_status.
15475         (force_const_mem, get_pool_size, output_constant_pool): Update.
15476         * stmt.c (force_label_rtx): Do not use x_ prefixes.
15477         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
15478
15479 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
15480
15481         PR rtl-optimization/35729
15482         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
15483         references.
15484
15485 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
15486
15487         PR target/32000
15488         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
15489         load/store if memory is unaligned.
15490         (*movti_rex64): Likewise.
15491
15492         * config/i386/predicates.md (misaligned_operand): New.
15493
15494 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
15495
15496         PR tree-opt/35431
15497         * tree-ssa-phiopt.c (conditional_replacement): Return early for
15498         complex types.
15499
15500 2008-03-31  Jan Beulich  <jbeulich@novell.com>
15501
15502         * config/ia64/constraints.md: Add 'j' constraint.
15503         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
15504         (movdi_internal): Likewise.
15505
15506 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
15507
15508         PR c/35748
15509         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
15510
15511 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
15512
15513         PR target/35757
15514         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
15515         proper error message for the third argument on blendpd and
15516         blendps.
15517
15518         * config/i386/sse.md (blendbits): New.
15519         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
15520
15521 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
15522
15523         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
15524
15525 2008-03-30  Richard Guenther  <rguenther@suse.de>
15526
15527         PR middle-end/31023
15528         * fold-const.c (fold_sign_changed_comparison): Do leave
15529         conversions to base-types alone.
15530
15531 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15532
15533         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
15534         the link register if one altivec register is be saved.
15535
15536 2008-03-30  Ben Elliston  <bje@au.ibm.com>
15537
15538         * final.c (final_scan_insn): Remove if (0) code.
15539
15540 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
15541
15542         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
15543
15544 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
15545
15546         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
15547         of V4SFmode to ix86_binary_operator_ok.
15548
15549 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
15550
15551         * config/i386/i386.c (override_options): Initialize
15552         ix86_veclib_handler to ix86_veclibabi_svml when
15553         -mveclibabi=svml is used.
15554         (ix86_veclibabi_svml): New function for SVML ABI style
15555         vectorization support.
15556         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
15557
15558 2008-03-28  Rafael Espindola  <espindola@google.com>
15559
15560         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
15561         (tree_binary_nonnegative_warnv_p): Make it public.
15562         (tree_single_nonnegative_warnv_p): Make it public.
15563         (tree_invalid_nonnegative_warnv_p): Make it public.
15564         (tree_unary_nonzero_warnv_p): Make it public.
15565         (tree_binary_nonzero_warnv_p): Make it public
15566         (tree_single_nonzero_warnv_p): Make it public.
15567         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
15568         (extract_range_from_binary_expr): Split the expr argument.
15569         (extract_range_from_unary_expr): Split the expr argument.
15570         (extract_range_from_comparison): Split the expr argument.
15571         (extract_range_from_expr): Use the new aux functions.
15572         (vrp_evaluate_conditional_warnv): Use
15573         vrp_evaluate_conditional_warnv_with_ops.
15574         * tree.h (tree_unary_nonzero_warnv_p): Declare.
15575         (tree_binary_nonzero_warnv_p): Declare.
15576         (tree_single_nonzero_warnv_p): Declare.
15577         (tree_expr_nonzero_warnv_p): Declare.
15578         (tree_unary_nonnegative_warnv_p): Declare.
15579         (tree_binary_nonnegative_warnv_p): Declare.
15580         (tree_single_nonnegative_warnv_p): Declare.
15581         (tree_invalid_nonnegative_warnv_p): Declare.
15582
15583 2008-03-28  Richard Guenther  <rguenther@suse.de>
15584
15585         PR tree-optimization/30317
15586         PR tree-optimization/30911
15587         PR tree-optimization/34793
15588         * tree-vrp.c (set_and_canonicalize_value_range): New function.
15589         (struct assert_locus_d): New member EXPR.
15590         (register_new_assert_for): Add EXPR parameter to support
15591         ASSERT_EXPR <name, expr OP limit>.
15592         (register_edge_assert_for_1): Adjust callers.
15593         (find_assert_locations): Likewise.
15594         (process_assert_insertions_for): Build condition from expression.
15595         (extract_range_from_assert): Handle ASSERT_EXPRs
15596         of the form ASSERT_EXPR <name, expr OP limit>.
15597         (register_edge_assert_for_2): New helper registering
15598         asserts for comparisons.  Recognize range tests of the form
15599         (unsigned)i - CST1 OP CST2.
15600         (register_edge_assert_for_1): Use it.
15601         (register_edge_assert_for): Likewise.
15602         (needs_overflow_infinity): Integer sub-types
15603         do not need overflow infinities.
15604         (vrp_val_is_max): The extreme values of integer sub-types
15605         are those of the base type.
15606         (vrp_val_is_min): Likewise.
15607         * tree.def (ASSERT_EXPR): Document extra allowed conditional
15608         expressions.
15609
15610 2008-03-28  Nick Clifton  <nickc@redhat.com>
15611
15612         PR target/31110
15613         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
15614         Return GENERAL_REGS for stack adjustment reloads.
15615
15616 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15617
15618         PR target/31334
15619         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
15620         const_vector when all the vectors are constant.
15621
15622 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
15623
15624         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
15625         comparisons.
15626         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
15627         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
15628         (scc_sf): New.
15629         (s<code>_sf): Use new scc_sf attribute for opcode names.
15630
15631 2008-03-27  Tom Tromey  <tromey@redhat.com>
15632
15633         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
15634         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
15635         config/spu/t-spu-elf, config/i386/t-interix,
15636         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
15637         config/i386/x-darwin, config/i386/x-mingw32,
15638         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
15639         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
15640         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
15641         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
15642         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
15643         config/rs6000/x-darwin, config/rs6000/t-rs6000,
15644         config/score/t-score-elf, config/arm/t-strongarm-pe,
15645         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
15646         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
15647         Revert automatic dependency patch.
15648
15649 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15650
15651         PR target/35657
15652         * config/i386/i386.c (ix86_function_arg_boundary): Align
15653         decimal floating point to its natural boundary.
15654
15655 2008-03-27  Richard Guenther  <rguenther@suse.de>
15656
15657         PR middle-end/35716
15658         * fold-const.c (fold_comparison): Restrict distinct decl
15659         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
15660         solely rely on operand_equal_p.
15661
15662 2008-03-27  Richard Guenther  <rguenther@suse.de>
15663
15664         PR c/32511
15665         * c-common.c (handle_weak_attribute): Reject combination of
15666         weak and inline.
15667
15668 2008-03-27  Richard Guenther  <rguenther@suse.de>
15669
15670         PR tree-optimization/32810
15671         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
15672         conversions from DECL_INITIAL.
15673         (fold_const_aggregate_ref): Likewise from constructor elements.
15674
15675 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
15676
15677         * tree-affine.h (aff_combination_expand): Declare.
15678         (get_inner_reference_aff): Likewise.
15679         * tree-affine.c (aff_combination_expand): Split out from
15680         tree_to_aff_combination_expand.
15681         (get_inner_reference_aff): New function.
15682         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
15683         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
15684         (struct lim_aux_data): sm_done field removed.
15685         (mem_ref_loc_p, mem_ref_locs_p): New types.
15686         (struct mem_ref): Added id, stored, accesses_in_loop,
15687         indep_loop, dep_loop, indep_ref, dep_ref fields.
15688         Removed is_stored, locs and next fields.
15689         (memory_accesses): New variable.
15690         (movement_possibility): Do not allow moving statements
15691         that store to memory.
15692         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
15693         New functions.
15694         (determine_max_movement): For statements with memory references,
15695         find the outermost loop in that the reference is independent.
15696         (move_computations_stmt): Mark the virtual operands for renaming.
15697         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
15698         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
15699         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
15700         add_vop_ref_mapping, create_vop_ref_mapping_loop,
15701         create_vop_ref_mapping, analyze_memory_references,
15702         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
15703         get_all_locs_in_loop, ref_always_accessed_p,
15704         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
15705         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
15706         store_motion_loop, store_motion): New functions.
15707         (struct vop_to_refs_elt): New type.
15708         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
15709         memref_hash, memref_eq, hoist_memory_references): Rewritten.
15710         (schedule_sm): Replaced by...
15711         (execute_sm): ... this.
15712         (determine_lsm_ref, hoist_memory_references,
15713         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
15714         find_more_ref_vops, free_mem_ref, free_mem_refs,
15715         determine_lsm_loop, determine_lsm): Removed.
15716         (tree_ssa_lim_finalize): Free data structures used by store motion.
15717         (tree_ssa_lim): Call analyze_memory_references.  Use
15718         store_motion instead of determine_lsm.
15719
15720 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
15721
15722         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
15723         rename tmake_file to m68hc11/t-m68hc11.
15724         (mcore): Set inhibit_libc to true.
15725         * config.host (alpha*-dec-*vms*): Set extra_programs.
15726         (interix3*): Don't use host_xmake_file.
15727         * configure.ac: Let config.gcc override inhibit_libc.
15728         * configure: Regenerate.
15729
15730         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
15731         * config/t-openbsd-thread: Remove commented out lines.
15732
15733         * config/x-interix: Remove.
15734
15735         * config/m68hc11/t-m68hc11-gas: Rename to...
15736         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
15737
15738         * config/mcore/t-mcore: Remove T_CFLAGS.
15739         * config/mcore/t-mcore-pe: Likewise.
15740
15741 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
15742
15743         * configure.ac: Replace custom __GNU_SOURCE test with
15744         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
15745         * aclocal.m4: Regenerate.
15746         * configure: Regenerate.
15747         * config.in: Regenerate.
15748
15749 2008-03-27  Richard Guenther  <rguenther@suse.de>
15750
15751         * fold-const.c (target.h): Include.
15752         (fold_comparison): Fold comparison of addresses of decls
15753         that bind locally or of constants.  Consolidate address folding code.
15754         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
15755         results from fold_binary_to_constant.
15756         (compare_values_warnv): Likewise.
15757
15758 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
15759
15760         PR middle-end/35429
15761         * fold-const.c (fold_truthop): Check for integeral types when folding
15762         a == 0 && b == 0 and a != 0 || b != 0 .
15763
15764 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
15765
15766         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
15767
15768 2008-03-26  Andreas Schwab  <schwab@suse.de>
15769
15770         * doc/invoke.texi: Fix use of @item vs. @itemx.
15771
15772 2008-03-26  Tom Tromey  <tromey@redhat.com>
15773
15774         * Makefile.in (build/gensupport.o, build/print-rtl.o,
15775         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
15776         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
15777         build/gencodes.o, build/genconditions.o, build/genconfig.o,
15778         build/genconstants.o, build/genemit.o, build/genextract.o,
15779         build/genflags.o, build/genmddeps.o, build/genopinit.o,
15780         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
15781         options.h.
15782
15783 2008-03-26  Richard Guenther  <rguenther@suse.de>
15784
15785         Revert
15786         2008-03-26  Richard Guenther  <rguenther@suse.de>
15787
15788         * fold-const.c (target.h): Include.
15789         (fold_comparison): Fold comparison of addresses of two decls
15790         that bind locally.  Consolidate address folding code.
15791
15792 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15793
15794         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
15795         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
15796         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
15797         dconstsqrt2, dconstthird, dconste and/or dconst10.
15798         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
15799         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
15800         dconstsqrt2, dconste): Delete.
15801         (init_emit_once): Likewise.  Simplify initializing dconstm1.
15802         Constify variable.
15803         * real.c (get_real_const): New.
15804         * real.h (dconst3, dconst10, dconstm2, dconstthird,
15805         dconstsqrt2, dconste): Delete.
15806         (real_value_const, get_real_const): New.
15807
15808 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
15809
15810         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
15811
15812         * config/i386/i386.c (ix86_function_arg_boundary): Check
15813         BIGGEST_ALIGNMENT instead of 128.
15814         (setup_incoming_varargs_64): Likewise.
15815
15816 2008-03-26  Tom Tromey  <tromey@redhat.com>
15817
15818         * Makefile.in (DEPFILES): Add missing '/'.
15819
15820 2008-03-26  Richard Guenther  <rguenther@suse.de>
15821
15822         * fold-const.c (target.h): Include.
15823         (fold_comparison): Fold comparison of addresses of two decls
15824         that bind locally.  Consolidate address folding code.
15825
15826 2008-03-26  Nick Clifton  <nickc@redhat.com>
15827
15828         PR target/31232
15829         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
15830         not allow INT+INT as a legitimate addressing mode.
15831
15832 2008-03-26  Richard Guenther  <rguenther@suse.de>
15833
15834         * tree-flow.h (widen_bitfield): Remove declaration.
15835         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
15836         (widen_bitfield): Remove function.
15837         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
15838         code.
15839
15840 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15841
15842         PR target/31558
15843         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
15844         error_mark_node's.
15845
15846 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
15847
15848         PR rtl-optimization/35232
15849         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
15850         (forget_old_reloads_1, forget_marked_reloads): Don't clear
15851         reg_reloaded_call_part_clobbered here.
15852         (reload_regs_reach_end_p): New function.
15853         (reload_reg_rtx_for_input): New variable.
15854         (reload_reg_rtx_for_output): Likewise.
15855         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
15856         when reassigning a pseudo register.  Load reloadreg from
15857         reload_reg_rtx_for_input, moving the mode and register
15858         calculation to...
15859         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
15860         instead of the original when deciding whether an input reload
15861         would be a no-op or whether an output reload can be deleted.
15862         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
15863         when setting up new_spill_reg_store.  Load it from
15864         reload_reg_rtx_for_output, moving the mode and register
15865         calculation to...
15866         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
15867         instead of the original when deciding whether an output reload
15868         would be a no-op.  Do the same when modifying insn notes.
15869         Use rtx_equal_p instead of == to compare the registers.
15870         (inherit_piecemeal_p): Take a mode and two register numbers
15871         as argument.
15872         (emit_reload_insns): Clear new_spill_reg_store for every hard
15873         register in the reload register.  Remove spill registers
15874         from reg_reloaded_valid before considering whether to record
15875         inheritance information for them.  Use reload_reg_rtx_for_output
15876         instead of reg_rtx when recording output reloads.  Use
15877         reload_reg_rtx_for_input instead of reg_rtx when recording
15878         input reloads.  Set or clear reg_reloaded_call_part_clobbered
15879         at the same time as setting reg_reloaded_valid.
15880         (delete_output_reload): Add a new_reload_reg parameter and use it
15881         instead of rld[j].reg_rtx.
15882         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
15883         calls accordingly.
15884
15885 2008-03-25  Tom Tromey  <tromey@redhat.com>
15886
15887         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
15888         (build/genattr.o): Likewise.
15889         (build/genattrtab.o): Likewise.
15890         (build/gencodes.o): Likewise.
15891         (build/genconfig.o): Likewise.
15892         (build/genconstants.o): Likewise.
15893         (build/genemit.o): Likewise.
15894         (build/genextract.o): Likewise.
15895         (build/genflags.o): Likewise.
15896
15897 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
15898
15899         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
15900         instead of size_int for integer types.
15901         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
15902         to match type of MINUS_EXPR.
15903
15904 2008-03-25  Tom Tromey  <tromey@redhat.com>
15905
15906         * configure: Rebuilt.
15907         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
15908         Makefile.
15909
15910 2008-03-25  Tom Tromey  <tromey@redhat.com>
15911
15912         * config/x-solaris (host-solaris.o): Update.
15913         * config/x-linux (host-linux.o): Update.
15914         * config/x-hpux (host-hpux.o): Update.
15915         * config/x-darwin (host-darwin.o): Update.
15916         * config/v850/t-v850e (v850-c.o): Update.
15917         * config/v850/t-v850 (v850-c.o): Update.
15918         * config/t-vxworks (vxworks.o): Update.
15919         * config/t-sol2 (sol2-c.o, sol2.o): Update.
15920         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
15921         * config/spu/t-spu-elf (spu-c.o): Update.
15922         (spu.o): Remove.
15923         * config/sh/t-symbian (sh-c.o): Update.
15924         (symbian.o): Update.
15925         * config/sh/t-sh (sh-c.o): Update.
15926         * config/score/t-score-elf (score7.o, score3.o): Update.
15927         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
15928         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
15929         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
15930         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
15931         (rs6000.o): Remove.
15932         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
15933         * config/m32c/t-m32c (m32c-pragma.o): Update.
15934         * config/ia64/t-ia64 (ia64-c.o): Update.
15935         * config/i386/x-mingw32 (host-mingw32.o): Update.
15936         * config/i386/x-i386 (driver-i386.o): Update.
15937         * config/i386/x-darwin (host-i386-darwin.o): Update.
15938         * config/i386/x-cygwin (host-cygwin.o): Update.
15939         * config/i386/t-nwld (nwld.o): Update.
15940         * config/i386/t-netware (netware.o): Update.
15941         * config/i386/t-interix (winnt.o): Update.
15942         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
15943         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
15944         msformat-c.o): Update.
15945         * config/bfin/t-bfin-linux (generated_files): Add
15946         linux-sysroot-suffix.h.
15947         * config/arm/t-wince-pe (pe.o): Update.
15948         * config/arm/t-strongarm-pe (pe.o): Update.
15949         * config/arm/t-pe (pe.o): Update.
15950         * config/arm/t-arm (arm-c.o): Update.
15951         * doc/install.texi (Prerequisites): Require make 3.80.
15952         * Makefile.in: Remove .o targets.
15953         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
15954         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
15955         (simple_generated_h, simple_generated_c): Move earlier.
15956         (generated_files): New variable.
15957         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
15958         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
15959         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
15960         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
15961         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
15962         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
15963         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
15964         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
15965         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
15966         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
15967         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
15968         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
15969         (.c.o): Remove.
15970         (COMPILE.base, COMPILE): New variables.
15971         (%.o): New pattern rule.
15972         (ALL_HOST_OBJS): New variable.
15973         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
15974         (dummy-checksum.o, cc1-checksum.o): Remove.
15975         (DRIVER_SHLIB): New variable.
15976         (DRIVER_DEFINES): Use it.
15977         (gencondmd.c): Move out of build/.
15978         (s-conditions): Update.
15979         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
15980         (ALL_BUILD_OBJS): Likewise.
15981         (build/%.o): Use BUILDCOMPILE.
15982         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
15983         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
15984         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
15985         build/gencheck.o, build/gencodes.o, build/genconditions.o,
15986         build/genconfig.o, build/genconstants.o, build/genemit.o,
15987         build/genextract.o, build/genflags.o, build/genmddeps.o,
15988         build/genopinit.o, build/genoutput.o, build/genpeep.o,
15989         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
15990         build/gen-protos.o, build/scan.o, build/fix-header.o,
15991         build/scan-decls.o): Simplify.
15992         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
15993         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
15994         prefix.o, toplev.o): Reduce to variable setting.
15995         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
15996         ($(out_object_file), gcc-options.o): New targets.
15997         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
15998         * configure: Rebuilt.
15999         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
16000         * doc/sourcebuild.texi (Front End Directory): Document new variable.
16001
16002 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
16003
16004         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
16005         complain when we hit an error, return ERROR_MARK_NODE.
16006
16007 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16008
16009         * config/sh/constraints.md (Pso, Psz): New constraints.
16010         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
16011         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
16012
16013 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16014
16015         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
16016         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
16017
16018 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16019
16020         * config/sh/sh.md (prefetch): Add condition for SH2A target.
16021         (prefetch_sh2a): New.
16022
16023 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
16024             Naveen.H.S  <naveen.hs@kpitcummins.com>
16025
16026         * config/sh/constraints.md (I28): New constraint.
16027         * config/sh/sh.c (broken_move): Add support for movi20s.
16028         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
16029
16030 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
16031             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
16032             Naveen.H.S  <naveen.hs@kpitcummins.com>
16033
16034         * config/sh/sh.c (SH_ATTRIBUTES): Define.
16035         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
16036         (print_operand): Handle resbank in %@ operand code.
16037         (sh_encode_section_info): New.
16038         (push_regs): Add conditions for resbank.
16039         (sh_expand_epilogue): Likewise.
16040         (sh_insert_attributes): Likewise.
16041         (sh_attribute_table): Likewise.
16042         (sh_handle_resbank_handler_attribute): New.
16043         (sh2a_handle_function_vector_handler_attribute): New.
16044         (sh2a_is_function_vector_call): New.
16045         (sh2a_get_function_vector_number): New.
16046         (sh2a_function_vector_p): New.
16047         (sh_cfun_resbank_handler_p): New.
16048         * config/sh/sh.md (calli): Emit jsr/n if possible.
16049         (calli_tbr_rel): New.
16050         (calli_pcrel): Emit jsr/n if possible.
16051         (return_i): Emit rts/n if possible.
16052         (call_valuei_tbr_rel): New.
16053         (call_valuei_pcrel): Add condition for SH2A target.
16054         (call_value): Likewise.
16055         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
16056         (sh2a_get_function_vector_number): Likewise.
16057         (sh2a_is_function_vector_call): Likewise.
16058         * doc/extend.texi: Document TBR relative addressing of SH2A.
16059         (resbank): Add description for SH2A.
16060
16061 2008-03-24  Richard Guenther  <rguenther@suse.de>
16062
16063         PR c/22371
16064         * gimplify.c (gimplify_modify_expr): For frontend type-correct
16065         pointer assignments change conversions according to middle-end rules.
16066         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
16067         * configure.ac: Include type checking in yes.
16068         * configure: Regenerate.
16069
16070 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16071
16072         * diagnostic.c (diagnostic_count_diagnostic): Delete.
16073         (diagnostic_report_diagnostic): Update. Handle ICEs here.
16074
16075 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
16076
16077         * gthr-vxworks.h (UNUSED): Define.
16078
16079 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
16080
16081         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
16082
16083 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
16084
16085         * doc/extend.texi (Function Attributes): Add missing comma in the
16086         example of the "alloc_size" attribute.
16087
16088 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
16089
16090         Revert:
16091         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
16092
16093         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
16094         32bit host.
16095
16096         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
16097
16098         PR target/35496
16099         * stor-layout.c (update_alignment_for_field): Set minimum alignment
16100         of the underlying type of a MS bitfield layout to the natural
16101         alignment of the type.
16102
16103         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
16104
16105         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
16106         to their natural alignment to avoid store forwarding stalls.
16107
16108 2008-03-22  Richard Guenther  <rguenther@suse.de>
16109
16110         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
16111         For PHI nodes verify the address is invariant.
16112         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
16113         (get_symbol_constant_value): Use is_gimple_min_invariant.
16114         (maybe_fold_stmt_indirect): Likewise.
16115
16116 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
16117
16118         PR rtl-optimization/33927
16119         * Makefile.in (dse.o): Depend on $(TM_P_H).
16120         * expr.h (extract_low_bits): Declare.
16121         * expmed.c (extract_low_bits): New function.
16122         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
16123         * dse.c: Include tm_p.h.
16124         (find_shift_sequence): Remove the read_reg argument and return the
16125         read value.  Emit the instructions instead of returning them.
16126         Iterate on new_mode rather than calculating it each time.
16127         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
16128         source to NEW_MODE and extract_low_bits to convert the shifted
16129         value to READ_MODE.
16130         (replace_read): Allow the load and store to have different mode
16131         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
16132         or extraction instructions before trying the replacement.  Update
16133         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
16134
16135 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
16136
16137         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
16138         to their natural alignment to avoid store forwarding stalls.
16139
16140 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16141
16142         PR target/27946
16143         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
16144         encouraging but not allowing gprs for input;
16145         change the input constraint to !f#r.
16146         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
16147         gprs for output;
16148         change the output constraint to !f#r.
16149
16150 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
16151
16152         PR target/13958
16153         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
16154         corresponding post-reload splitters.
16155         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
16156         when x87 FP math is selected.
16157         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
16158         New function prototype.
16159         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
16160         unreachable function to ease macroization of insn patterns.
16161
16162 2008-03-21  Martin Jambor  <mjambor@suse.cz>
16163
16164         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
16165         reference dumps if ddr is NULL or dependence is unknown.
16166
16167 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
16168
16169         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
16170         unsigned extension into account.
16171         (ATOMIC_COMPARE_AND_SWAP): Likewise.
16172         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
16173         Do computations on a scratch register.
16174
16175 2008-03-21  Richard Guenther  <rguenther@suse.de>
16176
16177         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
16178         Use is_gimple_min_invariant instead of TREE_INVARIANT.
16179         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
16180         * tree-ssa-dom.c (record_equality): Likewise.
16181         * tree-inline.c (copy_body_r): Likewise.
16182         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
16183         TREE_INVARIANT.
16184
16185 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
16186
16187         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
16188         as 'delete_unused' argument.
16189
16190 2008-03-20  Richard Guenther  <rguenther@suse.de>
16191
16192         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
16193         special casing of constant qualifiers.
16194         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
16195         care about them in general.
16196         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
16197         regardless of their type.
16198         (fold_stmt_r): Forcefully fold *& if we end up with that.
16199
16200 2008-03-20  Paul Brook  <paul@codesourcery.com>
16201
16202         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
16203         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
16204         linker flags.
16205         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
16206         definition.
16207         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
16208         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
16209
16210 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
16211
16212         * common.opt (Wmudflap): New option.
16213         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
16214         (mx_register_decls): Likewise.
16215         (mudflap_finish_file): Likewise.
16216         * doc/invoke.texi: Document -Wno-mudflap.
16217
16218 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
16219
16220         * c-format.c (replace_format_name_to_system_name): New.
16221         (cmp_attribs): New.
16222         (convert_format_name_to_system_name): New.
16223         (decode_format_attr): Add use of convert_format_name_to_system_name.
16224         (format_types_orig): Add gnu_ prefix to names.
16225         (check_format_info_main): Special treating of \0 escaped names for
16226         supporting multi-character format specifiers as I32, I64.
16227         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
16228         (gnu_target_overrides_format_attributes): New.
16229         * c-format.h: Add structure target_ovr_attr to hold
16230         system specific formatter names.
16231         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
16232         msformat-c.o file to c_target_objs and cxx_target_objs.
16233         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
16234         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
16235         (TARGET_N_FORMAT_TYPES): New.
16236         * config/i386/msformat-c.c: New.
16237         * config/i386/t-cygming: Add build rule for msformat-c.o.
16238         * doc/extend.texi: Add new format names gnu_* and ms_* and
16239         further details.
16240         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
16241
16242 2008-03-20  Ira Rosen  <irar@il.ibm.com>
16243
16244         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
16245         optimizations turned on under -O3.
16246         (ftree-vectorize): Add that the flag is turned on with -O3.
16247
16248 2008-03-20  Ben Elliston  <bje@au.ibm.com>
16249
16250         * regmove.c (try_auto_increment): Fix spelling error in comment.
16251         * final.c (final_scan_insn): Likewise.
16252
16253 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
16254
16255         PR target/14552
16256         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
16257         allocator preferences for "y" and "r" class registers.
16258         ("*mov<mode>_internal"): Ditto.
16259         ("*movv2sf_internal_rex64"): Ditto.
16260         ("*movv2sf_internal"): Ditto.
16261
16262 2008-03-19  Michael Matz  <matz@suse.de>
16263
16264         PR middle-end/35616
16265         * calls.c (expand_call): Check overlap of arguments with call
16266         address for sibcalls.
16267
16268 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
16269
16270         PR target/35496
16271         * stor-layout.c (update_alignment_for_field): Set minimum alignment
16272         of the underlying type of a MS bitfield layout to the natural
16273         alignment of the type.
16274
16275 2008-03-19  Jan Hubicka  <jh@suse.cz>
16276
16277         PR other/35094
16278         * toplev.c (decode_d_option): Handle all CPP flags.
16279         * tree-vrp.c: Update tree_pass descriptors.
16280         * regrename.c: Update tree_pass descriptors.
16281         * fwprop.c: Update tree_pass descriptors.
16282         * doc/invoke.texi: Remove documentation of dropped -d? flags.
16283         * tree-into-ssa.c: Update tree_pass descriptors.
16284         * tree-dump.c: Update tree_pass descriptors.
16285         * tree-complex.c: Update tree_pass descriptors.
16286         * tree-dump.h: Update tree_pass descriptors.
16287         * see.c: Update tree_pass descriptors.
16288         * cgraphbuild.c: Update tree_pass descriptors.
16289         * tracer.c: Update tree_pass descriptors.
16290         * tree-loop-distribution.c: Update tree_pass descriptors.
16291         * cgraph.c: Update tree_pass descriptors.
16292         * postreload-gcse.c: Update tree_pass descriptors.
16293         * postreload.c: Update tree_pass descriptors.
16294         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
16295         * tree-tailcall.c: Update tree_pass descriptors.
16296         * tree-pass.h (tree_opt_pass): Rename to ...
16297         (opt_pass) ... this one; add "type" field and remove letter field.
16298         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
16299         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
16300         all_lowering_passes): Update declaration.
16301         * ipa-cp.c: Update tree_pass descriptors.
16302         * final.c: Update tree_pass descriptors.
16303         * omp-low.c: Update tree_pass descriptors.
16304         * tree-ssa-dse.c: Update tree_pass descriptors.
16305         * ipa-reference.c: Update tree_pass descriptors.
16306         * tree-ssa-uncprop.c: Update tree_pass descriptors.
16307         * auto-inc-dec.c: Update tree_pass descriptors.
16308         * reorg.c: Update tree_pass descriptors.
16309         * cgraphunit.c: Update tree_pass descriptors.
16310         * tree-ssa-copyrename.c: Update tree_pass descriptors.
16311         * tree-ssa-ccp.c: Update tree_pass descriptors.
16312         * df-core.c: Update tree_pass descriptors.
16313         * mode-switching.c: Update tree_pass descriptors.
16314         * tree-nomudflap.c: Update tree_pass descriptors.
16315         * modulo-sched.c: Update tree_pass descriptors.
16316         * ipa-pure-const.c: Update tree_pass descriptors.
16317         * cse.c: Update tree_pass descriptors.
16318         * web.c: Update tree_pass descriptors.
16319         * tree-stdarg.c: Update tree_pass descriptors.
16320         * tree-ssa-math-opts.c: Update tree_pass descriptors.
16321         * tree-ssa-dom.c: Update tree_pass descriptors.
16322         * tree-nrv.c: Update tree_pass descriptors.
16323         * tree-ssa-alias.c: Update tree_pass descriptors.
16324         * loop-init.c: Update tree_pass descriptors.
16325         * gimple-low.c: Update tree_pass descriptors.
16326         * ipa-inline.c: Update tree_pass descriptors.
16327         * tree-ssa-sink.c: Update tree_pass descriptors.
16328         * global.c: Update tree_pass descriptors.
16329         * ifcvt.c: Update tree_pass descriptors.
16330         * jump.c: Update tree_pass descriptors.
16331         * predict.c: Update tree_pass descriptors.
16332         * tree-ssa-loop.c: Update tree_pass descriptors.
16333         * recog.c: Update tree_pass descriptors.
16334         * dse.c: Update tree_pass descriptors.
16335         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
16336         * tree-eh.c: Update tree_pass descriptors.
16337         * regmove.c: Update tree_pass descriptors.
16338         * local-alloc.c
16339         * function.c: Update tree_pass descriptors.
16340         * tree-vectorizer.c: Update tree_pass descriptors.
16341         * gcse.c: Update tree_pass descriptors.
16342         * ipa-type-escape.c: Update tree_pass descriptors.
16343         * tree-if-conv.c: Update tree_pass descriptors.
16344         * init-regs.c: Update tree_pass descriptors.
16345         * ipa.c: Update tree_pass descriptors.
16346         * tree-ssa-phiopt.c: Update tree_pass descriptors.
16347         * rtl-factoring.c: Update tree_pass descriptors.
16348         * lower-subreg.c: Update tree_pass descriptors.
16349         * bt-load.c: Update tree_pass descriptors.
16350         * tree-dfa.c: Update tree_pass descriptors.
16351         * except.c: Update tree_pass descriptors.
16352         * emit-rtl.c: Update tree_pass descriptors.
16353         * cfgexpand.c: Update tree_pass descriptors.
16354         * tree-cfgcleanup.c: Update tree_pass descriptors.
16355         * cfgcleanup.c: Update tree_pass descriptors.
16356         * tree-ssa-pre.c: Update tree_pass descriptors.
16357         * tree-sra.c: Update tree_pass descriptors.
16358         * tree-mudflap.c: Update tree_pass descriptors.
16359         * tree-ssa-copy.c: Update tree_pass descriptors.
16360         * cfglayout.c: Update tree_pass descriptors.
16361         * tree-ssa-forwprop.c: Update tree_pass descriptors.
16362         * tree-ssa-dce.c: Update tree_pass descriptors.
16363         * tree-ssa.c: Update tree_pass descriptors.
16364         * regclass.c: Update tree_pass descriptors.
16365         * integrate.c: Update tree_pass descriptors.
16366         * tree-optimize.c: Update tree_pass descriptors.
16367         * tree-ssa-phiprop.c: Update tree_pass descriptors.
16368         * tree-object-size.c: Update tree_pass descriptors.
16369         * combine.c: Update tree_pass descriptors.
16370         * tree-outof-ssa.c: Update tree_pass descriptors.
16371         * bb-reorder.c: Update tree_pass descriptors.
16372         * stack-ptr-mod.c: Update tree_pass descriptors.
16373         * var-tracking.c: Update tree_pass descriptors.
16374         * tree-profile.c: Update tree_pass descriptors.
16375         * tree-vect-generic.c: Update tree_pass descriptors.
16376         * reg-stack.c: Update tree_pass descriptors.
16377         * sched-rgn.c: Update tree_pass descriptors.
16378         * tree-ssa-structalias.c: Update tree_pass descriptors.
16379         * tree-cfg.c: Update tree_pass descriptors.
16380         * passes.c (current_pass): Update declaration.
16381         (finish_optimization_passes): Update.
16382         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
16383         (register_one_dump_file, register_dump_files_1, next_pass_1):
16384         Update arguments.
16385         (init_optimization_passes): Update handling of new types.
16386         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
16387         * ipa-struct-reorg.c: Update tree_pass descriptors.
16388         * tree-ssa-reassoc.c: Update tree_pass descriptors.
16389         * combine-stack-adj.c: Update tree_pass descriptors.
16390         * cfgrtl.c: Update tree_pass descriptors.
16391         * dce.c: Update tree_pass descriptors.
16392         * tree-ssanames.c: Update tree_pass descriptors.
16393
16394 2008-03-19  Richard Guenther  <rguenther@suse.de>
16395
16396         PR middle-end/35609
16397         * tree-ssa.c (walk_data): New structure.
16398         (warn_uninitialized_var): If not always_executed warn with "maybe"
16399         instead of "is".
16400         (execute_early_warn_uninitialized): Compute post-dominators.
16401         Initialize always_executed before processing each basic block.
16402
16403 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
16404
16405         PR target/35504
16406         * config/i386/i386.c (x86_this_parameter): Calculate correct location
16407         of "this" pointer when "regparm = N" or "fastcall" is in effect.
16408
16409 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16410
16411         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
16412
16413 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
16414
16415         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
16416         is true.
16417         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
16418         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
16419         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
16420         target after ignore has been set, and move there also the commputation
16421         of subtarget and original_target.
16422         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
16423         (LANG_HOOKS_INITIALIZER): Remove it.
16424         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
16425
16426 2008-03-18  Richard Guenther  <rguenther@suse.de>
16427
16428         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
16429         found an expression with constants, note that in the VN for the lhs.
16430         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
16431         fold them to constants if possible.  Run cleanup_cfg if done so.
16432         (execute_pre): Return todo.
16433         (do_pre): Likewise.
16434         (execute_fre): Likewise.
16435         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
16436         of constants.
16437         (get_prop_source_stmt): Look through pointer conversions.
16438
16439 2008-03-18  Jan Hubicka  <jh@suse.cz>
16440
16441         * tree-pretty-print.c: Include predict.h.
16442         (dump_generic_node): Dump predictor.
16443         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
16444         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
16445         * gimple-low.c (lower_stmt): Likewise.
16446         * expr.c (expand_expr_real): Likewise.
16447         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
16448         them.
16449         (build_predict_expr, build_predict_expr): New.
16450         * predict.h (predictor_name, build_predict_expr): Update.
16451         * c-typeck.c (c_finish_bc_stmt): Add prediction.
16452         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
16453         * predict.def (PRED_CONTINUE): Update hitrate.
16454         * tree.def (PREDICT_EXPR): Define.
16455         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
16456         do not handle BIND_EXPR.
16457         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
16458         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
16459         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
16460         operands.
16461
16462 2008-03-18  Michael Matz  <matz@suse.de>
16463
16464         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
16465
16466 2008-03-18  Richard Guenther  <rguenther@suse.de>
16467
16468         * tree-gimple.h (is_gimple_invariant_address): Declare.
16469         (is_gimple_constant): Likewise.
16470         * tree-gimple.c (is_gimple_constant): New function.
16471         (is_gimple_invariant_address): Likewise.
16472         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
16473         and is_gimple_invariant_address.
16474         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
16475         previous change.
16476         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
16477         an addressable base.
16478
16479 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
16480
16481         PR middle-end/35611
16482         * gimplify.c (gimplify_expr): Gimplify second operand of
16483         OMP_ATOMIC_LOAD.
16484
16485 2008-03-17  Richard Guenther  <rguenther@suse.de>
16486
16487         PR tree-optimization/19637
16488         * fold-const.c (fold_unary): Remove restrictions of removing
16489         intermediate pointer-conversions (P2)(P1)P0.
16490         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
16491         conversion to void pointer.
16492         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
16493
16494 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
16495
16496         PR debug/31510
16497         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
16498         emulated thread local variables.
16499
16500 2008-03-16  Richard Guenther  <rguenther@suse.de>
16501
16502         PR middle-end/35607
16503         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
16504         expand TREE_INVARIANT operations that are not gimple invariant.
16505
16506 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
16507
16508         * doc/extend.texi (Alignment): Say that the ABI controls
16509         the __alignof__ for non-strict-alignment targets rather
16510         than being a recommendation.
16511
16512 2008-03-15  Paul Brook  <paul@codesourcery.com>
16513
16514         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
16515         annotations.
16516         (arm_output_fn_unwind): Mark functions that can not be unwound.
16517
16518 2008-03-15  Paul Brook  <paul@codesourcery.com>
16519
16520         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
16521         extension instructions.
16522
16523 2008-03-15  Richard Guenther  <rguenther@suse.de>
16524
16525         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
16526         and fold constant aggregate refs.
16527         (fold_const_aggregate_ref): Handle string constants
16528         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
16529         (evaluate_stmt): Simplify now that ccp_fold folds constant
16530         aggregate refs.
16531
16532 2008-03-15  Paul Brook  <paul@codesourcery.com>
16533
16534         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
16535         (extzv): Use gen_extzv_t2.
16536         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
16537
16538 2008-03-15  Richard Guenther  <rguenther@suse.de>
16539
16540         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
16541         (fold_const_aggregate_ref): Likewise.
16542         (get_value): Return NULL if we don't have any values.
16543         (ccp_finalize): Set const_val to NULL after freeing it.
16544         * tree-flow.h (get_symbol_constant_value): Declare.
16545         (fold_const_aggregate_ref): Likewise.
16546         * tree-ssa-sccvn.c (try_to_simplify): Use them.
16547
16548 2008-03-15  Richard Guenther  <rguenther@suse.de>
16549
16550         PR middle-end/35593
16551         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
16552         to not produce negative array indices if not allowed.  Add
16553         parameter to indicate that.
16554         (maybe_fold_offset_to_component_ref): Allow negative array
16555         indices only for the first member of a structure.
16556         (maybe_fold_offset_to_reference): Allow negative array indices.
16557         (maybe_fold_stmt_addition): Likewise.
16558
16559 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
16560             Anatoly Sokolov <aesok@post.ru>
16561
16562         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
16563         (avr_arch): Add ARCH_AVR6.
16564         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
16565         (initial_elimination_offset): Initialize and use 'avr_pc_size'
16566         instead of fixed value 2.
16567         (print_operand_address): Use gs() asm specifier instead of pm().
16568         (avr_assemble_integer): (Ditto.).
16569         (avr_output_addr_vec_elt): (Ditto.).
16570         (print_operand): Handle "!" code.
16571         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
16572         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
16573         (AVR_HAVE_EIJMP_EICALL): Define.
16574         (AVR_3_BYTE_PC): Redefine.
16575         (AVR_2_BYTE_PC): (Ditto.).
16576         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
16577         (LINK_SPEC): Add atmega2560 and atmega2561.
16578         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
16579         (crtm2561.o).
16580         * config/avr/avr.md (call_insn): Use eicall instead of icall
16581         for 3 byte PC devices.
16582         (call_value_insn): (Ditto.).
16583         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
16584         (indirect_jump): Use only for for 2 byte PC devices.
16585         (*tablejump): (Ditto.).
16586         (*indirect_jump_avr6): Add insn.
16587         (*tablejump_rjmp): Don't use for 3 byte PC devices.
16588         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
16589         instead of ijmp for 3 byte PC devices.
16590         (__tablejump2__): (Ditto.).
16591         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
16592         (MULITLIB_DIRNAMES): (Ditto.).
16593         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
16594
16595 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
16596
16597         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
16598         "sse2_umulsidi3".  Use V1DI mode for operand 0.
16599         ("mmx_psadbw"): Use V1DI mode for operand 0.
16600         * config/i386/i386-modes.def (V1SI): New vector mode.
16601         * config/i386/i386.c (struct builtin_description)
16602         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
16603         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
16604         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
16605         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
16606         v1di_ftype_v8qi_v8qi type.
16607         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
16608
16609         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
16610         __builtin_ia32_pmuludq]: Fix the mode of return value.
16611
16612 2008-03-15  Richard Guenther  <rguenther@suse.de>
16613
16614         PR middle-end/35595
16615         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
16616         being a PHI_NODE.
16617
16618 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
16619
16620         * doc/invoke.texi (Option Summary, Xtensa Options): Document
16621         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
16622         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
16623         unless TARGET_SERIALIZE_VOLATILE is enabled.
16624         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
16625         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
16626         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
16627
16628 2008-03-14  Richard Guenther  <rguenther@suse.de>
16629
16630         PR tree-optimization/34172
16631         * tree-flow.h (refs_may_alias_p): Declare.
16632         (get_single_def_stmt): Likewise.
16633         (get_single_def_stmt_from_phi): Likewise.
16634         (get_single_def_stmt_with_phi): Likewise.
16635         * tree-dfa.c (refs_may_alias_p): New function.
16636         (get_single_def_stmt): Likewise.
16637         (get_single_def_stmt_from_phi): Likewise.
16638         (get_single_def_stmt_with_phi): Likewise.
16639         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
16640         (vn_reference_lookup_1): New helper function.
16641         (vn_reference_lookup): Walk the virtual use-def chain to
16642         continue searching for a match if the def does not alias the
16643         reference we are looking for.
16644
16645 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
16646
16647         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
16648         archive and Perzl.  Update The Written Word listing.
16649
16650 2008-03-14  Richard Guenther  <rguenther@suse.de>
16651
16652         PR tree-optimization/34043
16653         PR tree-optimization/33989
16654         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
16655         when doing FRE.
16656         (bitmap_find_leader): Use extra argument to verify dominance
16657         relationship inside a basic-block.
16658         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
16659         (find_leader_in_sets): Adjust.
16660         (create_component_ref_by_pieces): Take extra argument for
16661         dominance check, handle lookup failures.
16662         (find_or_generate_expression): Likewise.
16663         (create_expression_by_pieces): Likewise.
16664         (insert_into_preds_of_block): Adjust.
16665         (create_value_expr_from): If asked for, verify all operands
16666         are in the blocks AVAIL_OUT set.
16667         (make_values_for_stmt): Check for SSA_NAMEs that are life
16668         over an abnormal edge.
16669         (compute_avail): Remove such check.
16670         (do_SCCVN_insertion): New function.
16671         (eliminate): If we do not find a leader suitable for replacement
16672         insert a replacement expression from SCCVN if available.
16673         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
16674         (struct vn_ssa_aux): Add needs_insertion flag.
16675         * tree-ssa-sccvn.c (may_insert): New global flag.
16676         (copy_reference_ops_from_ref): Value-number union member access
16677         based on its size, not type and member if insertion is allowed.
16678         (visit_reference_op_load): For a weak match from union type
16679         punning lookup a view-converted value and insert a SSA_NAME
16680         for that value if that is not found.
16681         (visit_use): Make dumps shorter.  Do not disallow value numbering
16682         SSA_NAMEs that are life over an abnormal edge to constants.
16683         (free_scc_vn): Release inserted SSA_NAMEs.
16684         (run_scc_vn): New flag to specify whether insertion is allowed.
16685         Process SSA_NAMEs in forward order.
16686         * tree-ssa-loop-im.c (for_each_index): Handle invariant
16687         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
16688         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
16689         pointer type to/from integral types that do not change the
16690         precision to regular conversions.
16691
16692 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
16693
16694         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
16695         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
16696         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
16697         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
16698         input arguments and the mode of return value.  Built-in functions
16699         that operate on whole 64-bit MMX register now use V1DI mode.
16700
16701 2008-03-13  Alon Dayan  <alond@il.ibm.com>
16702             Olga Golovanevsky  <olga@il.ibm.com>
16703
16704         PR tree-optimization/35041
16705         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
16706         to locate the right position in a statement.
16707
16708 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
16709
16710         PR target/34000
16711         PR target/35553
16712         * config/i386/xmmintrin.h:  Change all static inline functions to
16713         extern inline and add __gnu_inline__ attribute.
16714         * config/i386/bmintrin.h: Ditto.
16715         * config/i386/smmintrin.h: Ditto.
16716         * config/i386/tmmintrin.h: Ditto.
16717         * config/i386/mmintrin-common.h: Ditto.
16718         * config/i386/ammintrin.h: Ditto.
16719         * config/i386/emmintrin.h: Ditto.
16720         * config/i386/pmmintrin.h: Ditto.
16721         * config/i386/mmintrin.h: Ditto.
16722         * config/i386/mm3dnow.h: Ditto.
16723
16724 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
16725
16726         PR middle-end/35185
16727         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
16728         (lower_omp_2): New function.
16729         (lower_omp_1, lower_omp): Rewritten.
16730
16731 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
16732
16733         PR 35054
16734         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
16735         with the phrase "Microsoft Windows compilers".
16736         (Push/Pop Macro Pragmas): New subsection. Document
16737         #pragma push_macro and pragma pop_macro.
16738
16739 2008-03-12  Paul Brook  <paul@codesourcery.com>
16740
16741         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
16742
16743 2008-03-12  Paul Brook  <paul@codesourcery.com>
16744
16745         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
16746         (thumb2_alusi3_short): Exclude PLUS and MINUS.
16747         (thumb2_addsi_shortim): Rename ...
16748         (thumb2_addsi_short): ... to this.  Allow register operands.
16749         (thumb2_subsi_short): New pattern.
16750         (thumb2_one_cmplsi2_short,
16751         thumb2_negsi2_short): New patterns and peepholes.
16752
16753 2008-03-12  Paul Brook  <paul@codesourcery.com>
16754
16755         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
16756
16757 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
16758
16759         * config/i386/i386.md (int_cond): New code iterator.
16760         (fp_cond): Ditto.
16761         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
16762         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
16763         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
16764         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
16765         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
16766         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
16767         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
16768         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
16769
16770 2008-03-12  Paul Brook  <paul@codesourcery.com>
16771
16772         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
16773         instead of {arm,thumb}_compute_save_reg_mask.
16774         (output_return_instruction): Ditto.
16775         (thumb_unexpanded_epilogue): Ditto.
16776         (thumb1_expand_prologue): Ditto.
16777         (thumb1_output_function_prologue): Ditto.
16778         (arm_set_return_address): Ditto.
16779         (thumb_set_return_address): Ditto.
16780         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
16781         regs to achieve stack alignment.
16782         (thumb1_compute_save_reg_mask): Fix compiler warning.
16783         (arm_output_epilogue): Use offsets->saved_regs_mask.
16784         Adjust stack pointer by poping call clobered registers.
16785         (arm_expand_prologue): Use offsets->saved_regs_mask.
16786         Adjust stack pointer by pushing extra registers.
16787         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
16788
16789 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
16790
16791         PR tree-opt/35422
16792         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
16793         conversion to the operands of a multiplication.
16794
16795 2008-03-12  Richard Guenther  <rguenther@suse.de>
16796
16797         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
16798         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
16799         * timevar.def (TV_TREE_PHIPROP): Add.
16800         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
16801         pass description.  Use TV_TREE_PHIPROP.
16802         * tree-ssa-forwprop.c: Remove phiprop code.
16803
16804 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
16805
16806         PR middle-end/35549
16807         * omp-low.c (maybe_lookup_decl): Constify first argument.
16808         (use_pointer_for_field): Change last argument from bool to
16809         omp_context *.  Disallow shared copy-in/out in nested
16810         parallel if decl is shared in outer parallel too.
16811         (build_outer_var_ref, scan_sharing_clauses,
16812         lower_rec_input_clauses, lower_copyprivate_clauses,
16813         lower_send_clauses, lower_send_shared_vars): Adjust callers.
16814
16815 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
16816             Ira Rosen  <irar@il.ibm.com>
16817
16818         * tree-vectorizer.c (free_stmt_vec_info): New function.
16819         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
16820         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
16821         * tree-vectorizer.h (free_stmt_vec_info): Declare.
16822         * tree-vect-transform.c (vectorizable_conversion): Free
16823         vec_oprnds0 if it was allocated.
16824         (vect_permute_store_chain): Remove unused VECs.
16825         (vectorizable_store): Free VECs that are allocated in the..
16826         function.
16827         (vect_transform_strided_load, vectorizable_load): Likewise.
16828         (vect_remove_stores): Simplify the code.
16829         (vect_transform_loop): Move code to vect_remove_stores().
16830         Call vect_remove_stores() and free_stmt_vec_info().
16831
16832 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16833
16834         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
16835         TARGET_HPUX.  Revise comment.
16836         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
16837         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
16838         Use sr4 variant of `be' instruction when not generating PIC code.
16839         (attr_length_call): Adjust for above change.
16840
16841 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16842
16843         * ipa-reference.c (static_execute): Remove module_statics_const and
16844         associated setting code.
16845
16846 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
16847
16848         PR target/35540
16849         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
16850         predicate for operand 1.
16851         (paritysi2_cmp): Use register_operand predicate for operand 2.
16852         Use earlyclobber modifier for operand 1.  Remove support for
16853         memory operands.
16854         (paritydi2_cmp): Use register_operand predicate for operand 3.
16855         Use earlyclobber modifier for operand 1.  Remove support for
16856         memory operands.
16857
16858 2008-03-11  Paul Brook  <paul@codesourcery.com>
16859             Vladimir Prus  <vladimir@codesourcery.com>
16860
16861         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
16862         (arm_compute_save_reg0_reg12_mask): Always
16863         check if register 11 must be saved.  Always safe hard frame pointer
16864         when frame_pointer_needeed.
16865         (arm_compute_save_reg_mask): Save IP and PC
16866         only with apcs frames.
16867         (arm_output_epilogue): Adjust Thumb2 codepath to
16868         be also invoked and work for ARM non-apcs frames.
16869         (arm_expand_prologue): Don't bother saving IP
16870         for non-apcs frame, since it's not clobbered by
16871         prologue code.  Implement non-apcs frame
16872         layout.
16873
16874 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
16875
16876         PR rtl-optimization/35281
16877         * expr.c (convert_move): Use a new pseudo for the intermediate
16878         from_mode->word_mode result.
16879
16880 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
16881
16882         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
16883         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
16884         * toplev.c (compile_file): Don't call it.
16885
16886 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
16887
16888         PR middle-end/35526
16889         * expr.c (store_expr): Call emit_block_move if the mode
16890         of "temp" RTX is BLKmode.
16891
16892 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16893             Richard Guenther  <rguenther@suse.de>
16894
16895         PR tree-optimization/31358
16896         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
16897         the step with a NULL_TREE.
16898         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
16899         to sizetype if type is a pointer type.
16900         (add_candidate_1): Don't convert the base and step to
16901         the generic type if the orginal type is a pointer type.
16902         (add_iv_value_candidates): Use sizetype for the step
16903         if type is a pointer type.
16904         (cand_value_at): Likewise.
16905         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
16906         for pointer types.
16907         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
16908         Don't convert the tem affine to the type.
16909         (add_elt_to_tree): Use sizetype for the step if a pointer.
16910         Use POINTER_PLUS_EXPR for pointers.
16911         (aff_combination_to_tree): Use sizetype for the step if a
16912         pointer.
16913
16914 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
16915
16916         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
16917         Remove commutativity hint.
16918
16919 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
16920
16921         PR c/35438
16922         PR c/35439
16923         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
16924         errorneous type.  Check that v is a VAR_DECL.
16925
16926         PR middle-end/35099
16927         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
16928
16929 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
16930
16931         PR tree-optimization/35494
16932         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
16933         may be overriden at link and run time.
16934
16935 2008-03-10  Richard Guenther  <rguenther@suse.de>
16936
16937         PR tree-optimization/34677
16938         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
16939         (poolify_tree): Likewise.
16940         (modify_expr_template): Likewise.
16941         (poolify_modify_stmt): Likewise.
16942         (insert_fake_stores): Handle all component-ref style stores
16943         in addition to INDIRECT_REF.  Also handle complex types.
16944         Do not poolify the inserted load.
16945         (realify_fake_stores): Do not rebuild the tree but only
16946         make it a SSA_NAME copy.
16947         (init_pre): Remove initialzation of modify_expr_template.
16948         Do not allocate modify_expr_node_pool.
16949         (fini_pre): Do not free modify_expr_node_pool.
16950
16951 2008-03-10  Paul Brook  <paul@codesourcery.com>
16952
16953         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
16954         to avoid conflicts.
16955
16956 2008-03-10  Paul Brook  <paul@codesourcery.com>
16957             Mark Shinwell  <shinwell@codesourcery.com>
16958
16959         * config/arm/cortex-r4.md: New.
16960         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
16961         insn attributes.
16962         * config/arm/arm.md: Include cortex-r4.md.
16963         (insn): Add smmls, sdiv and udiv values.
16964         (generic_sched): Don't use generic scheduling for Cortex-R4.
16965         (arm_issue_rate): New function.
16966         (TARGET_SCHED_ISSUE_RATE): Define.
16967
16968 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
16969
16970         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
16971
16972 2008-03-10  Richard Guenther  <rguenther@suse.de>
16973
16974         * tree-ssa-pre.c (get_sccvn_value): Simplify.
16975         (compute_avail): Do not add stmt uses to AVAIL_OUT.
16976
16977 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
16978
16979         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
16980         Set default to true.
16981
16982 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16983
16984         * c.opt (Wsynth): Deprecate.
16985         * doc/invoke.texi (Option Summary, Warning Options): Document
16986         -Wno-format-contains-nul.
16987
16988 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
16989
16990         PR target/35496
16991         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
16992         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
16993
16994 2008-03-09  Ira Rosen  <irar@il.ibm.com>
16995
16996         * config/rs6000/rs6000.c (builtin_description): Rename vector
16997         left shift operations.
16998         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
16999         (altivec_vsl<VI_char>): Rename to ...
17000         (ashl<mode>3): ... new name.
17001         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
17002         gen_ashlv4si3.
17003         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
17004
17005 2008-03-08  Richard Guenther  <rguenther@suse.de>
17006
17007         * coverage.h (tree_coverage_counter_addr): Declare.
17008         * coverage.c (tree_coverage_counter_addr): New function.
17009         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
17010         before using again.
17011         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
17012         (tree_gen_one_value_profiler): Likewise.
17013         (tree_gen_ic_profiler): Likewise.
17014         (tree_gen_average_profiler): Likewise.
17015         (tree_gen_ior_profiler): Likewise.
17016
17017 2008-03-08  Richard Guenther  <rguenther@suse.de>
17018
17019         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
17020         (vn_binary_op_insert): Likewise.
17021         (vn_unary_op_lookup): Likewise.
17022         (vn_unary_op_insert): Likewise.
17023         (vn_nary_op_lookup): Declare.
17024         (vn_nary_op_insert): Likewise.
17025         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
17026         and binary hashes, use a single obstack for unary_op_pool
17027         and binary_op_pool.
17028         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
17029         a single struct vn_nary_op_s.  Store tree code length and
17030         a variable number of operands.
17031         (struct vn_reference_op_struct): Remove unused op2.
17032         (vn_reference_op_eq): Do not compare op2.
17033         (vn_reference_op_compute_hash): Do not compute hash of op2.
17034         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
17035         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
17036         with vn_nary_op_compute_hash.
17037         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
17038         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
17039         vn_nary_op_lookup.
17040         (vn_unary_op_insert, vn_binary_op_insert): Replace with
17041         vn_nary_op_insert.
17042         (visit_unary_op): Call nary functions.
17043         (visit_binary_op): Likewise.
17044         (process_scc): Adjust for struct vn_tables_s changes.
17045         (allocate_vn_table): Likewise.
17046         (free_vn_table): Likewise.
17047         * tree-vn.c (vn_add): Call nary functions.
17048         (vn_lookup): Likewise.
17049
17050 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
17051
17052         PR target/35498
17053         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
17054         wdst back after sync_compare_and_swapqhi_internal.
17055
17056 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
17057
17058         PR target/22152
17059         * config/i386/i386-modes.def (V1DI): New vector mode.
17060         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
17061         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
17062         (MMXMODE248): Ditto.
17063         (MMXMODE): Add V1DI mode.
17064         (mmxvecsize): Change DI mode to V1DI mode.
17065         ("mov<mode>): Use MMXMODEI8 mode iterator.
17066         ("*mov<mode>_internal_rex64"): Ditto.
17067         ("*mov<mode>_internal"): Ditto.
17068         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
17069         ("mmx_sub<mode>3"): Ditto.
17070         ("mmx_adddi3"): Remove insn pattern.
17071         ("mmx_subdi3"): Ditto.
17072         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
17073         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
17074         ("mmx_ashl<mode>3"): Ditto.
17075         ("mmx_lshrdi3"): Remove insn pattern.
17076         ("mmx_ashldi3"): Ditto.
17077         * config/i386/i386.c (classify_argument): Handle V1DImode.
17078         (function_arg_advance_32): Ditto.
17079         (function_arg_32): Ditto.
17080         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
17081         mmx_addv1di3 insn pattern.
17082         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
17083         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
17084         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
17085         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
17086         Remove definitions of built-in functions.
17087         (V1DI_type_node): New node.
17088         (v1di_ftype_v1di_int): Ditto.
17089         (v1di_ftype_v1di_v1di): Ditto.
17090         (v2si_ftype_v2si_si): Ditto.
17091         (v4hi_ftype_v4hi_di): Remove node.
17092         (v2si_ftype_v2si_di): Ditto.
17093         (ix86_init_mmx_sse_builtins): Handle V1DImode.
17094         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
17095         Redefine builtins using def_builtin_const with *_ftype_*_int node.
17096         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
17097         Add new builtins using def_builtin_const.
17098         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
17099         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
17100         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
17101         * config/i386/mmintrin.h (__v1di): New typedef.
17102         (_mm_add_si64): Cast arguments to __v1di type.
17103         (_mm_sub_si64): Ditto.
17104         (_mm_sll_pi16): Cast __count to __v4hi type.
17105         (_mm_sll_pi32): Cast __count to __v2si type.
17106         (_mm_sll_si64): Cast arguments to __v1di type.
17107         (_mm_srl_pi16): Cast __count to __v4hi type.
17108         (_mm_srl_pi32): Cast __count to __v2si type.
17109         (_mm_srl_si64): Cast arguments to __v1di type.
17110         (_mm_sra_pi16): Cast __count to __v4hi type.
17111         (_mm_sra_pi32): Cast __count to __v2si type.
17112         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
17113         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
17114         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
17115         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
17116         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
17117         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
17118         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
17119         (_mm_srai_pi32): Use __builtin_ia32_psradi.
17120         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
17121         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
17122         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
17123         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
17124
17125 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
17126
17127         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
17128
17129 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
17130
17131         PR target/35373
17132         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
17133         reg+const addressing for Altivec modes.  Don't generate reg+reg
17134         addressing for TFmode or TDmode quantities.
17135
17136 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
17137
17138         * c-common.c (vector_types_convertible_p): Call langhook
17139         instead of comptypes.
17140
17141 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17142
17143         PR tree-opt/35402
17144         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
17145         integral and scalar float variables which have a
17146         NULL DECL_INITIAL.
17147
17148 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
17149
17150         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
17151         dwarf_register_span hook when emitting unwind information for
17152         register-to-memory saves.
17153         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
17154         (rs6000_frame_related): Remove call to spe_synthesize_frame.
17155
17156 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
17157
17158         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
17159         for the same VAR_DECL.
17160
17161 2008-03-06  Tom Tromey  <tromey@redhat.com>
17162
17163         * treelang: Delete.
17164         * doc/standards.texi (Standards): Don't mention treelang.
17165         * doc/invoke.texi (Overall Options): Don't mention treelang.
17166         * doc/install.texi (Prerequisites): Don't mention bison or
17167         treelang.
17168         (Configuration): Don't mention treelang.
17169         (Building): Likewise.
17170         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
17171
17172 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
17173
17174         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
17175         word-extractions out of a multi-word object.
17176
17177 2008-03-06  Richard Guenther  <rguenther@suse.de>
17178
17179         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
17180         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
17181         result type and precision.
17182         * expr.c (get_inner_reference): Set unsignedp based on the result
17183         type of BIT_FIELD_REF.
17184         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
17185         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
17186         (try_instantiate_multiple_fields): Likewise.  Use the correct type
17187         for BIT_FIELD_REF.
17188         (sra_build_assignment): Likewise.
17189         (sra_build_elt_assignment): Likewise.
17190         (sra_explode_bitfield_assignment): Likewise.
17191         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
17192         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
17193         set BIT_FIELD_REF_UNSIGNED.
17194         (vectorizable_load): Likewise.
17195
17196 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
17197
17198         * cse.c (cse_extended_basic_block): Invalidate artificial defs
17199         at bb start.
17200
17201 2008-03-06  Richard Guenther  <rguenther@suse.de>
17202
17203         * alias.c (struct alias_set_entry): Move has_zero_child field
17204         to pack with alias_set.
17205
17206 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
17207
17208         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
17209         32bit host.
17210
17211 2008-03-05  Ian Lance Taylor  <iant@google.com>
17212
17213         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
17214
17215 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
17216
17217         * fwprop.c (update_df): Support width and offset parameters of
17218         df_ref_create.
17219         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
17220         global_conflicts): Change DF_REF_EXTRACT to either
17221         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
17222         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
17223         * df-scan.c (df_ref_record, df_defs_record,
17224         df_ref_create_structure, df_def_record_1, df_uses_record,
17225         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
17226         df_bb_refs_collect, df_entry_block_defs_collect,
17227         df_exit_block_uses_collect): Support new width and offset fields.
17228         (ref_extract_pool): New storage pool.
17229         (df_free_ref): New function.
17230         (df_reg_chain_unlink, df_free_collection_rec,
17231         df_sort_and_compress_refs): Call df_free_ref.
17232         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
17233         of df_ref_extract.
17234         (df_ref_create_structure): Allocate df_ref_extract if offset and
17235         width fields are used.
17236         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
17237         (df_uses_record): Get offset and width from ZERO_EXTRACT
17238         and SIGN_EXTRACT.
17239         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
17240         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
17241         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
17242         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
17243         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
17244         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
17245         (df_ref_extract): New structure.
17246         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
17247         (df_ref_create): Add width and offset parameters.
17248
17249 2008-03-05  Richard Guenther  <rguenther@suse.de>
17250
17251         * tree-ssa-structalias.c (get_constraint_for_component_ref):
17252         Use ranges_overlap_p.
17253         (offset_overlaps_with_access): Rename
17254         to ranges_overlap_p and move ...
17255         * tree-flow-inline.h (ranges_overlap_p): ... here.
17256
17257         * tree.h (get_inner_reference, handled_component_p): Update
17258         comments.
17259
17260         * tree.h (record_component_aliases, get_alias_set,
17261         alias_sets_conflict_p, alias_sets_must_conflict_p,
17262         objects_must_conflict_p): Move declarations ...
17263         * alias.h (record_component_aliases, get_alias_set,
17264         alias_sets_conflict_p, alias_sets_must_conflict_p,
17265         objects_must_conflict_p): ... here.
17266         Include coretypes.h.
17267         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
17268
17269 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
17270
17271         * cfg.c: Include tree-flow.h.
17272         (remove_edge_raw): Call redirect_edge_var_map_clear.
17273         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
17274         * tree-flow-inline.h (redirect_edge_var_map_def): New.
17275         (redirect_edge_var_map_result): New.
17276         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
17277         PENDING_STMT use with redirect_edge_var_map_*.
17278         * tree-ssa.c (edge_var_maps): New definition.
17279         (redirect_edge_var_map_add): New.
17280         (redirect_edge_var_map_clear): New.
17281         (redirect_edge_var_map_dup): New.
17282         (redirect_edge_var_map_vector): New.
17283         (redirect_edge_var_map_destroy): New.
17284         (ssa_redirect_edge): Replace PENDING_STMT use with
17285         redirect_edge_var_map_*.
17286         (flush_pending_stmts): Same.
17287         (delete_tree_ssa): Destroy edge var map.
17288         * tree-flow.h (struct _edge_var_map): New.
17289         Define edge_var_map vector type.
17290         Declare redirect_edge_var_map_* prototypes.
17291         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
17292         * tree-cfg.c (reinstall_phi_args): Replace
17293         PENDING_STMT use with redirect_edge_var_map_*.
17294
17295 2008-03-05  Richard Guenther  <rguenther@suse.de>
17296
17297         PR tree-optimization/35472
17298         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
17299         whose single use_stmt has a overlapping set of loaded and
17300         stored symbols as that use_stmt might be a noop assignment then.
17301
17302 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
17303
17304         * gthr-rtems.h: Implement __gthread_mutex_destroy.
17305
17306 2008-03-05  Richard Guenther  <rguenther@suse.de>
17307
17308         PR c++/35336
17309         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
17310         should be constants.
17311         * tree-cfg.c (verify_expr): Verify it.
17312         * fold-const.c (fold_truthop): Remove code generating
17313         BIT_FIELD_REFs of structure bases.
17314         (fold_binary): Likewise.
17315         (fold_ternary): Position and size of BIT_FIELD_REFs are
17316         always host integers.
17317         (make_bit_field_ref): Remove.
17318         (optimize_bit_field_compare): Remove.
17319         (all_ones_mask_p): Remove.
17320
17321 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
17322
17323         PR gcc/33009
17324         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
17325         (split_block_and_df_analyze): New. Split basic block and rebuild
17326         dataflow.
17327         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
17328         SPLIT_BLOCK.
17329         (split_pattern_seq): Likewise.
17330         (erase_matching_seqs): Likewise.
17331         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
17332
17333 2008-03-04  Geoff Keating  <geoffk@apple.com>
17334
17335         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
17336         declaration and code.
17337         (tree_invalid_nonnegative_warnv_p): Likewise.
17338
17339 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
17340
17341         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
17342         examples.  Truncate option-names then causing overfull hbox.
17343
17344 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17345
17346         PR target/35222
17347         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
17348         on hpux10.
17349         * configure: Rebuilt.
17350
17351 2008-03-04  Rafael Espindola  <espindola@google.com>
17352
17353         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
17354         (tree_unary_nonnegative_warnv_p): New.
17355         (tree_binary_nonnegative_warnv_p): New.
17356         (tree_single_nonnegative_warnv_p): New.
17357         (tree_invalid_nonnegative_warnv_p): New.
17358         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
17359
17360 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17361
17362         PR 28322
17363         * opts.c (handle_option): Postpone 'unknown option' errors only for
17364         warning options.
17365
17366 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
17367
17368         PR target/35453
17369         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
17370         (_SIDD_XXX): This.
17371
17372 2008-03-04  Rafael Espindola  <espindola@google.com>
17373
17374         * fold-const.c (tree_unary_nonzero_warnv_p): New.
17375         (tree_binary_nonzero_warnv_p): New.
17376         (tree_single_nonzero_warnv_p): New.
17377         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
17378
17379 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
17380
17381         PR middle-end/35456
17382         * fold-const.c (fold_cond_expr_with_comparison): Prevent
17383         transformations for modes that have signed zeros.
17384         * ifcvt.c (noce_try_abs): Ditto.
17385
17386 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
17387
17388         * config/i386/i386.c (override_options): Force
17389         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
17390
17391 2008-03-04  Jan Hubicka  <jh@suse.cz>
17392
17393         PR c++/35262
17394         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
17395         in last commit.
17396
17397 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
17398
17399         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
17400         label to probe the stack.
17401
17402 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
17403
17404         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
17405         (__gthr_win32_mutex_destroy): Declare.
17406         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
17407         __gthr_win32_mutex_destroy.
17408         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
17409
17410 2008-03-03  Jan Hubicka  <jh@suse.cz>
17411
17412         PR c++/35262
17413         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
17414         aggressive on inlining cold calls.
17415
17416 2008-03-03  Richard Guenther  <rguenther@suse.de>
17417
17418         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
17419         struct copies into the expression table.
17420         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
17421         (try_to_simplify): Likewise.
17422         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
17423         integral and pointer arguments which do not change the
17424         precision to NOP_EXPRs.
17425         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
17426         VIEW_CONVERT_EXPR case.
17427
17428 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
17429
17430         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
17431         defined in a loop at depth 0 is invariant.
17432         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
17433         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
17434         be called at loop depth 0.
17435
17436 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
17437
17438         PR driver/35420
17439         * gcc.c (process_command): Update copyright notice dates.
17440         * gcov.c (print_version): Likewise.
17441         * gcov-dump.c (print_version): Likewise.
17442         * mips-tfile.c (main): Likewise.
17443         * mips-tdump.c (main): Likewise.
17444
17445 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17446
17447         PR 24924
17448         * c-common.c (flag_permissive): Delete.
17449         (constant_expression_warnings): Check flags first.
17450         (constant_expression_error): New.
17451         * c-common.h (flag_permissive): Delete.
17452         (constant_expression_error): Declare.
17453         * flags.h (flag_permissive): Declare. Update description.
17454         * diagnostic.c (pedwarn): Update.
17455         (permerror): New.
17456         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
17457         (permissive_error_kind): New.
17458         * toplev.c (flag_permissive): Define. Update description.
17459         * toplev.h (permissive_error_kind): Declare.
17460         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
17461         (pedwarn_c90): Use pedantic_warning_kind.
17462         * c-opts.c (c_common_post_options): flag_permissive does not affect
17463         flag_pedantic_errors.
17464
17465 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
17466
17467         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
17468         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
17469         __absvsi2, __absvDI2): Use unsigned arithmetic.
17470
17471 2008-03-02  Andi Kleen  <ak@suse.de>
17472             Richard Guenther  <rguenther@suse.de>
17473
17474         * struct-equiv.c: Remove file.
17475         * cfg_cleanup.c (condjump_equiv_p): Remove.
17476         * Makefile.in (OBJS-common): Remove struct-equiv.o.
17477         (struct-equiv.o): Remove rule.
17478         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
17479         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
17480         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
17481
17482 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17483
17484         * ifcvt.c (noce_process_if_block): Try to handle only the then
17485         block if the else block exists but isn't suitable.
17486
17487 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
17488
17489         PR gcc/35063
17490         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
17491         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
17492         regression from previous patch.
17493
17494 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
17495
17496         PR gcc/35063
17497         * gthr.h: Add __gthread_mutex_destroy as a function that must be
17498         implemented.
17499         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
17500         * gthr-single.h (__gthread_mutex_destroy): Likewise.
17501         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
17502         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
17503         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
17504         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
17505         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
17506         (__gthread_mutex_destroy_function): Rename to
17507         __gthread_mutex_destroy.
17508         * gthr-dce.h (__gthread_mutex_destroy): Call
17509         pthread_mutex_destroy.
17510         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
17511         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
17512         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
17513
17514 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17515
17516         * df-scan.c (df_ref_chain_change_bb): Simplify.
17517         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
17518         set_block_for_insn if there's any change.
17519         * df.h ((df_insn_change_bb): Fix prototype.
17520         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
17521         df_insn_change_bb, don't call set_block_for_insn.
17522         * emit-rtl.c (reorder_insns): Likewise.
17523         * haifa-sched.c (move_insn): Likewise.
17524
17525 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17526
17527         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
17528
17529 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17530
17531         * tree-flow-inline.h (next_readonly_imm_use): Return
17532         NULL_USE_OPERAND_P after the end.
17533
17534 2008-03-01  Richard Guenther  <rguenther@suse.de>
17535
17536         PR tree-optimization/35411
17537         * tree-sra.c (sra_build_assignment): Split conversion to
17538         final type to a separate statement if we are not assigning
17539         to a register.
17540
17541 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17542
17543         * fold-const.c (fold_convertible_p): Correct the logic to follow
17544         that in fold_convert().
17545
17546 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
17547
17548         PR c++/35315
17549         * tree-inline.c (build_duplicate_type): When we make a
17550         duplicate type, make it unique in the canonical types system.
17551
17552 2008-02-29  Tom Tromey  <tromey@redhat.com>
17553
17554         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
17555         input_file_stack_history, input_file_stack_restored): Remove.
17556         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
17557         * input.h (struct file_stack): Remove.
17558         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
17559         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
17560         Likewise.
17561         * diagnostic.h (struct diagnostic_context) <last_module>: Change
17562         type.
17563         (diagnostic_last_module_changed): Add 'map' argument.
17564         (diagnostic_set_last_function): Likewise.
17565         * diagnostic.c (undiagnostic_report_current_module): Iterate using
17566         line map, not input_file_stack.
17567         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
17568
17569 2008-02-29  Paul Brook  <paul@codesourcery.com>
17570
17571         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
17572
17573 2008-02-29  Paul Brook  <paul@codesourcery.com>
17574
17575         * config/arm/ieee754-df.S (muldf3): Use RET macros.
17576
17577 2008-02-29  Richard Guenther  <rguenther@suse.de>
17578
17579         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
17580         vn_lookup_or_add.
17581         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
17582         value for comparing for a store match.
17583         (simplify_unary_expression): Do nothing for SSA_NAMEs.
17584         (try_to_simplify): Do not do a full-blown reference lookup.
17585
17586 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
17587
17588         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
17589         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
17590
17591         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
17592
17593 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
17594
17595         * tree-loop-linear.c (try_interchange_loops): Compare memory access
17596         strides against cache sizes.
17597
17598 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
17599
17600         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
17601         constant to fpul.
17602
17603 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
17604
17605         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
17606         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
17607         is smaller than the original promoted value.
17608         (simplify_subreg): If OP is a SUBREG, try to preserve its
17609         SUBREG_PROMOTED_VAR_P information.
17610
17611 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
17612
17613         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
17614         (VN_INFO_GET): Allocate new objects on the obstack.
17615         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
17616         for rpo_numbers_temp, for consistency.
17617         (free_scc_vn): Free the obstack.
17618
17619 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
17620
17621         * doc/invoke.texi: Document -ftree-loop-distribution.
17622         * tree-loop-distribution.c: New.
17623         * tree-pass.h (pass_loop_distribution): New.
17624         * graphds.h (struct graph): Add htab_t indices.
17625         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
17626         * tree-vectorizer.c (rename_variables_in_loop): Extern.
17627         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
17628         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
17629         * tree-data-ref.c (debug_data_dependence_relations): New.
17630         (dump_data_dependence_relation): Also print data references.
17631         (free_data_ref): Extern.
17632         (same_access_functions): Moved...
17633         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
17634         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
17635         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
17636         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
17637         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
17638         (stmts_from_loop): Skip LABEL_EXPR.
17639         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
17640         New.
17641         (build_rdg): Initialize rdg->indices htab.
17642         (free_rdg, stores_from_loop, ref_base_address,
17643         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
17644         have_similar_memory_accesses_1, ref_base_address_1,
17645         remove_similar_memory_refs): New.
17646         * tree-data-ref.h: Depend on tree-chrec.h.
17647         (debug_data_dependence_relations, free_data_ref): Declared.
17648         (same_access_functions): ... here.
17649         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
17650         New.
17651         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
17652         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
17653         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
17654         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
17655         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
17656         rdg_vertex_for_stmt): Declared.
17657         (struct rdg_edge): Add level.
17658         (RDGE_LEVEL): New.
17659         (free_rdg, stores_from_loop, remove_similar_memory_refs,
17660         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
17661         Declared.
17662         (rdg_has_similar_memory_accesses): New.
17663         * tree-vect-analyze.c: Remove unused static decls.
17664         * lambda.h (dependence_level): New.
17665         * common.opt (ftree-loop-distribution): New.
17666         * tree-flow.h (mark_virtual_ops_in_bb,
17667         slpeel_tree_duplicate_loop_to_edge_cfg,
17668         rename_variables_in_loop): Declared.
17669         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
17670         (OBJS-common): Add tree-loop-distribution.o.
17671         (tree-loop-distribution.o): New rule.
17672         * tree-cfg.c (mark_virtual_ops_in_bb): New.
17673         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
17674         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
17675
17676 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
17677
17678         PR target/33963
17679         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
17680         other than structures and unions.
17681
17682 2008-02-28  Richard Guenther  <rguenther@suse.de>
17683
17684         Revert:
17685         2008-02-26  Richard Guenther  <rguenther@suse.de>
17686
17687         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
17688         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
17689         (lookup_decl_from_uid): Declare.
17690         (remove_decl_from_map): Likewise.
17691         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
17692         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
17693         (decl_for_uid_map): New global hashtable mapping DECL_UID
17694         to the decl tree.
17695         (init_ttree): Allocate it.
17696         (insert_decl_to_uid_decl_map): New helper function.
17697         (make_node_stat): Insert new decls into the map.
17698         (copy_node_stat): Likewise.
17699         (lookup_decl_from_uid): New function.
17700         (remove_decl_from_map): Likewise.
17701         (print_decl_for_uid_map_statistics): New helper.
17702         (dump_tree_statistics): Call it.
17703
17704         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
17705         (referenced_var_iterator): Adjust.
17706         (FOR_EACH_REFERENCED_VAR): Adjust.
17707         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
17708         (num_referenced_vars): Adjust.
17709         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
17710         (first_referenced_var): Remove.
17711         (end_referenced_vars_p): Likewise.
17712         (next_referenced_var): Likewise.
17713         (referenced_var_iterator_set): New helper function.
17714         * tree-dfa.c (referenced_var_lookup): Adjust.
17715         (referenced_var_check_and_insert): Likewise.
17716         (remove_referenced_var): Likewise.
17717         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
17718         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
17719         (verify_call_clobbering): Likewise.
17720         (verify_memory_partitions): Likewise.
17721         (init_tree_ssa): Allocate bitmap instead of hashtable for
17722         referenced_vars.
17723         (delete_tree_ssa): Adjust.
17724         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
17725         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
17726         (compute_tag_properties): Likewise.
17727         (set_initial_properties): Likewise.
17728         (find_partition_for): Likewise.
17729         (update_reference_counts): Likewise.
17730         (dump_may_aliases_for): Likewise.
17731         * tree-ssa-operands.c (add_virtual_operand): Likewise.
17732         (add_call_clobber_ops): Likewise.
17733         (add_call_read_ops): Likewise.
17734         (get_asm_expr_operands): Likewise.
17735         * tree-into-ssa.c (dump_decl_set): Likewise.
17736         (update_ssa): Likewise.
17737         * tree-sra.c (scan_function): Likewise.
17738         (decide_instantiations): Likewise.
17739         (scalarize_parms): Likewise.
17740         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
17741         (dsa_named_for): Likewise.
17742         * tree-ssa-structalias.c (update_alias_info): Likewise.
17743         (merge_smts_into): Likewise.
17744
17745 2008-02-27  David Daney  <ddaney@avtrex.com>
17746
17747         PR target/34409
17748         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
17749         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
17750         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
17751         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
17752         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
17753
17754 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
17755
17756         PR target/25477
17757         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
17758         (BUILT_IN_NEXTTOWARD): Remove.
17759         (BUILT_IN_NEXTTOWARDF): Ditto.
17760         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
17761         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
17762
17763 2008-02-27  Tom Tromey  <tromey@redhat.com>
17764
17765         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
17766         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
17767
17768 2008-02-27  Jan Beulich  <jbeulich@novell.com>
17769
17770         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
17771         update the respective field on newdecl.
17772
17773 2008-02-27  Revital Eres  <eres@il.ibm.com>
17774
17775         PR rtl-optimization/34999
17776         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
17777         crossing edges that ends with a call insn.
17778         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
17779         call insn and clear the EDGE_CROSSING flag of the crossing edge
17780         when fixing fallthru edges.
17781
17782 2008-02-27  Richard Guenther  <rguenther@suse.de>
17783
17784         PR middle-end/35390
17785         * fold-const.c (fold_unary): Return the correct argument,
17786         converted to the result type.
17787
17788 2008-02-27  Richard Guenther  <rguenther@suse.de>
17789
17790         PR middle-end/34971
17791         * expr.c (expand_expr_real_1): Assert on rotates that operate
17792         on partial modes.
17793         * fold-const.c (fold_binary): Use the types precision, not the
17794         bitsize of the mode if folding rotate expressions.  Build rotates
17795         only for full modes.
17796
17797 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
17798
17799         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
17800         and CPP_PRAGMA_EOL.
17801         * c-pragma.c (pragma_ns_name): New typedef.
17802         (registered_pp_pragmas): New variable.
17803         (c_pp_lookup_pragma): New function.
17804         (c_register_pragma_1): If flag_preprocess_only, do nothing
17805         for non-expanded pragmas, for expanded ones push pragma's
17806         namespace and name into registered_pp_pragmas vector.
17807         (c_invoke_pragma_handler): Register OpenMP pragmas even when
17808         flag_preprocess_only, don't register GCC pch_preprocess
17809         pragma if flag_preprocess_only.
17810         * c-opts.c (c_common_init): Call init_pragma even if
17811         flag_preprocess_only.
17812         * c-pragma.c (c_pp_lookup_pragma): New prototype.
17813         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
17814         cpp_register_pragma if flag_preprocess_only.
17815
17816 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17817
17818         PR c/28800
17819         * c-parser.c (c_parser_translation_unit): Warn for empty
17820         translation unit, not empty source file.
17821
17822 2008-02-26  Paul Brook  <paul@codesourcery.com>
17823
17824         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
17825         operand for Thumb-2.
17826         * config/arm/arm.h (reg_class): Add CORE_REGS.
17827         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
17828         (BASE_REG_CLASS): Use CORE_REGS.
17829         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
17830         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
17831         (REGNO_OK_FOR_INDEX_P): Exclude SP.
17832         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
17833         ARM_REGNO_OK_FOR_INDEX_P.
17834         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
17835         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
17836         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
17837         (ldm/stm peepholes): Ditto.
17838         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
17839         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
17840         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
17841         * config/arm/constraints.md: Enable "k" constraint on ARM.
17842
17843 2008-02-27  Ben Elliston  <bje@au.ibm.com>
17844
17845         * config/rs6000/rs6000.c: Annotate cache line size field in all
17846         instances of struct processor_costs.
17847
17848 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
17849
17850         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
17851         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
17852         jump_bypass): New counters.
17853         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
17854         * dce.c (gate_ud_dce): Same.
17855         (gate_fast_dce): Same.
17856         * dse.c (gate_dse1): New function.
17857         (gate_dse2): New function.
17858         (gate_dse): Merge results of new gate functions.
17859         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
17860         (gate_handle_jump_bypass): Add dbg_cnt.
17861         (gate_handle_gcse): Add dbg_cnt.
17862         * ifcvt.c (gate_handle_if_conversion): Same.
17863         (gate_handle_if_after_combine): Same.
17864         (gate_handle_if_after_reload): Same.
17865         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
17866
17867 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
17868
17869         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
17870         line sizes.
17871         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
17872
17873 2008-02-26  Jason Merrill  <jason@redhat.com>
17874
17875         PR c++/35315
17876         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
17877         alone if it's the naming decl for the type's main variant.
17878
17879 2008-02-26  Tom Tromey  <tromey@redhat.com>
17880
17881         * system.h (USE_MAPPED_LOCATION): Poison.
17882         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
17883         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
17884         (make_goto_expr_edges): Likewise.
17885         (remove_bb): Likewise.
17886         (execute_warn_function_return): Likewise.
17887         * basic-block.h (struct edge_def) <goto_locus>: Change type to
17888         location_t.
17889         * c-common.c (fname_decl): Remove old location code.
17890         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
17891         location code.
17892         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
17893         variant.
17894         (ASM_INPUT_SOURCE_LOCATION): Likewise.
17895         (gen_rtx_ASM_INPUT): Likewise.
17896         (gen_rtx_ASM_INPUT_loc): Likewise.
17897         (get_rtx_asm_OPERANDS): Remove.
17898         * cfglayout.c (insn_locators_alloc): Remove old location code.
17899         (set_curr_insn_source_location): Likewise.
17900         (curr_insn_locator): Likewise.
17901         * print-tree.c (print_node): Remove old location code.
17902         * tree-mudflap.c (mf_varname_tree): Remove old location code.
17903         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
17904         * cfgexpand.c (expand_gimple_cond_expr): Don't use
17905         location_from_locus.
17906         (construct_exit_block): Remove old location code.
17907         * emit-rtl.c (force_next_line_note): Remove old location code.
17908         * profile.c (branch_prob): Remove old location code.
17909         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
17910         LOC_LINE): Remove old-location variants.
17911         * langhooks.c (lhd_print_error_function): Remove old location
17912         code.
17913         * configure, config.in: Rebuilt.
17914         * configure.ac (--enable-mapped-location): Remove.
17915         * c-decl.c (c_init_decl_processing): Remove old location code.
17916         (finish_function): Likewise.
17917         * recog.c (decode_asm_operands): Remove old location code.
17918         * c-pch.c (c_common_read_pch): Remove old location code.
17919         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
17920         variants.
17921         * gimple-low.c (lower_function_body): Remove old location code.
17922         * toplev.c (unknown_location): Remove.
17923         (push_srcloc): Remove old-location variant.
17924         (process_options): Remove old location code.
17925         (lang_dependent_init): Likewise.
17926         * input.h (UNKNOWN_LOCATION): Move definition.
17927         (location_t): Undeprecate.
17928         (source_locus): Remove.
17929         (location_from_locus): Remove.
17930         (struct location_s): Remove.
17931         Remove all old-location code.
17932         (input_line, input_filename): Remove.
17933         * final.c (final_scan_insn): Remove old location code.
17934         * diagnostic.c (diagnostic_build_prefix): Remove
17935         USE_MAPPED_LOCATION test.
17936         * tree.h (gimple_stmt) <locus>: Now a location_t.
17937         (tree_exp) <locus>: Likewise.
17938         (DECL_IS_BUILTIN): Remove old-location variant.
17939         (annotate_with_file_line, annotate_with_locus): Likewise.
17940         (expr_locus, set_expr_locus): Update.
17941         * tree.c (build1_stat): Remove old location code.
17942         (last_annotated_node): Remove.
17943         (annotate_with_file_line): Remove old-location variant.
17944         (annotate_with_locus): Likewise.
17945         (expr_location): Remove old location code.
17946         (set_expr_location): Likewise.
17947         (expr_has_location): Likewise.
17948         (expr_locus): Likewise.
17949         (set_expr_locus): Likewise.
17950         (expr_filename): Don't use location_from_locus.
17951         (expr_lineno): Likewise.
17952         * rtl-error.c (location_for_asm): Remove old location code.
17953         * c-lex.c (cb_line_change): Remove old location code.
17954         (fe_file_change): Likewise.
17955         (cb_def_pragma): Likewise.
17956         (c_lex_with_flags): Likewise.
17957         * gengtype.c (do_typedef): Don't special-case location types.
17958         (define_location_structures): Remove.
17959         (main): Don't call define_location_structures.
17960         * tree-pretty-print.c (dump_implicit_edges): Remove old location
17961         code.
17962
17963 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17964
17965         PR 26264
17966         * builtins.def (BUILT_IN_STDARG_START): Remove.
17967         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
17968         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
17969         * tree-inline.c (inline_forbidden_p_1): Likewise.
17970
17971 2008-02-26  Richard Guenther  <rguenther@suse.de>
17972
17973         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
17974         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
17975         (lookup_decl_from_uid): Declare.
17976         (remove_decl_from_map): Likewise.
17977         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
17978         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
17979         (decl_for_uid_map): New global hashtable mapping DECL_UID
17980         to the decl tree.
17981         (init_ttree): Allocate it.
17982         (insert_decl_to_uid_decl_map): New helper function.
17983         (make_node_stat): Insert new decls into the map.
17984         (copy_node_stat): Likewise.
17985         (lookup_decl_from_uid): New function.
17986         (remove_decl_from_map): Likewise.
17987         (print_decl_for_uid_map_statistics): New helper.
17988         (dump_tree_statistics): Call it.
17989
17990         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
17991         (referenced_var_iterator): Adjust.
17992         (FOR_EACH_REFERENCED_VAR): Adjust.
17993         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
17994         (num_referenced_vars): Adjust.
17995         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
17996         (first_referenced_var): Remove.
17997         (end_referenced_vars_p): Likewise.
17998         (next_referenced_var): Likewise.
17999         (referenced_var_iterator_set): New helper function.
18000         * tree-dfa.c (referenced_var_lookup): Adjust.
18001         (referenced_var_check_and_insert): Likewise.
18002         (remove_referenced_var): Likewise.
18003         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18004         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18005         (verify_call_clobbering): Likewise.
18006         (verify_memory_partitions): Likewise.
18007         (init_tree_ssa): Allocate bitmap instead of hashtable for
18008         referenced_vars.
18009         (delete_tree_ssa): Adjust.
18010         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18011         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18012         (compute_tag_properties): Likewise.
18013         (set_initial_properties): Likewise.
18014         (find_partition_for): Likewise.
18015         (update_reference_counts): Likewise.
18016         (dump_may_aliases_for): Likewise.
18017         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18018         (add_call_clobber_ops): Likewise.
18019         (add_call_read_ops): Likewise.
18020         (get_asm_expr_operands): Likewise.
18021         * tree-into-ssa.c (dump_decl_set): Likewise.
18022         (update_ssa): Likewise.
18023         * tree-sra.c (scan_function): Likewise.
18024         (decide_instantiations): Likewise.
18025         (scalarize_parms): Likewise.
18026         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18027         (dsa_named_for): Likewise.
18028         * tree-ssa-structalias.c (update_alias_info): Likewise.
18029         (merge_smts_into): Likewise.
18030
18031 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18032
18033         PR 34351
18034         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
18035         * c-opts.c (c_common_handle_option): Wall enables
18036         Wvolatile-register-var.
18037         * common.opt: Move Wvolatile-register-var to...
18038         * c.opt: ...here.
18039
18040 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18041
18042         * common.opt (Wlarger-than=): New.
18043         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
18044         -Wlarger-than=.
18045         * opts.c (common_handle_option): Handle -Wlarger-than=.
18046         * optc-gen.awk: Likewise.
18047         * opth-gen.awk: Likewise.
18048         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
18049         * tree-optimize.c (tree_rest_of_compilation): Likewise.
18050
18051 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18052
18053         * c-common.c (match_case_to_enum_1): Add appropriate
18054         OPT_W* parameter to warning.
18055         (c_do_switch_warnings): Likewise.
18056         * c-typeck.c (warning_init): Add one more parameter following
18057         'warning' function.
18058         (push_init_level): Update call to warning_init.
18059         (pop_init_level): Likewise.
18060         (add_pending_init): Likewise.
18061         (output_init_element: Likewise.
18062
18063 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18064
18065         PR 28322
18066         * toplev.c (toplev_main): If there are warnings or error, print
18067         errors for ignored options.
18068         * opts.c (ignored_options): New static variable.
18069         (postpone_unknown_option_error): New.
18070         (print_ignored_options): New.
18071         (handle_option): Postpone errors for unknown -Wno-* options.
18072         * opts.h (print_ignored_options): Declare.
18073
18074 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
18075
18076         * config/mips/mips.md (loadgp_blockage, blockage): Change type
18077         to "ghost".
18078
18079 2008-02-25  Richard Guenther  <rguenther@suse.de>
18080
18081         Revert:
18082         2008-02-25  Richard Guenther  <rguenther@suse.de>
18083
18084         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18085         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18086         (lookup_decl_from_uid): Declare.
18087         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18088         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18089         (decl_for_uid_map): New global hashtable mapping DECL_UID
18090         to the decl tree.
18091         (init_ttree): Allocate it.
18092         (insert_decl_to_uid_decl_map): New helper function.
18093         (make_node_stat): Insert new decls into the map.
18094         (copy_node_stat): Likewise.
18095         (lookup_decl_from_uid): New function.
18096         (print_decl_for_uid_map_statistics): New helper.
18097         (dump_tree_statistics): Call it.
18098
18099         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18100         (referenced_var_iterator): Adjust.
18101         (FOR_EACH_REFERENCED_VAR): Adjust.
18102         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18103         (num_referenced_vars): Adjust.
18104         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18105         (first_referenced_var): Remove.
18106         (end_referenced_vars_p): Likewise.
18107         (next_referenced_var): Likewise.
18108         (referenced_var_iterator_set): New helper function.
18109         * tree-dfa.c (referenced_var_lookup): Adjust.
18110         (referenced_var_check_and_insert): Likewise.
18111         (remove_referenced_var): Likewise.
18112         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18113         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18114         (verify_call_clobbering): Likewise.
18115         (verify_memory_partitions): Likewise.
18116         (init_tree_ssa): Allocate bitmap instead of hashtable for
18117         referenced_vars.
18118         (delete_tree_ssa): Adjust.
18119         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18120         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18121         (compute_tag_properties): Likewise.
18122         (set_initial_properties): Likewise.
18123         (find_partition_for): Likewise.
18124         (update_reference_counts): Likewise.
18125         (dump_may_aliases_for): Likewise.
18126         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18127         (add_call_clobber_ops): Likewise.
18128         (add_call_read_ops): Likewise.
18129         (get_asm_expr_operands): Likewise.
18130         * tree-into-ssa.c (dump_decl_set): Likewise.
18131         (update_ssa): Likewise.
18132         * tree-sra.c (scan_function): Likewise.
18133         (decide_instantiations): Likewise.
18134         (scalarize_parms): Likewise.
18135         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18136         (dsa_named_for): Likewise.
18137         * tree-ssa-structalias.c (update_alias_info): Likewise.
18138         (merge_smts_into): Likewise.
18139
18140 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
18141
18142         PR fortran/29549
18143         * doc/invoke.texi (-fcx-limited-range): Document new option.
18144         * toplev.c (process_options): Handle -fcx-fortran-rules.
18145         * common.opt: Add documentation for -fcx-fortran-rules.
18146
18147 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
18148
18149         PR c/35162
18150         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
18151         actual behaviour and C99.
18152
18153 2008-02-26  Ben Elliston  <bje@au.ibm.com>
18154
18155         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
18156         (ASM_CPU_POWER6_SPEC): Likewise.
18157         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
18158         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
18159         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
18160
18161 2008-02-25  Richard Guenther  <rguenther@suse.de>
18162
18163         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18164         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18165         (lookup_decl_from_uid): Declare.
18166         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18167         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18168         (decl_for_uid_map): New global hashtable mapping DECL_UID
18169         to the decl tree.
18170         (init_ttree): Allocate it.
18171         (insert_decl_to_uid_decl_map): New helper function.
18172         (make_node_stat): Insert new decls into the map.
18173         (copy_node_stat): Likewise.
18174         (lookup_decl_from_uid): New function.
18175         (print_decl_for_uid_map_statistics): New helper.
18176         (dump_tree_statistics): Call it.
18177
18178         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18179         (referenced_var_iterator): Adjust.
18180         (FOR_EACH_REFERENCED_VAR): Adjust.
18181         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18182         (num_referenced_vars): Adjust.
18183         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18184         (first_referenced_var): Remove.
18185         (end_referenced_vars_p): Likewise.
18186         (next_referenced_var): Likewise.
18187         (referenced_var_iterator_set): New helper function.
18188         * tree-dfa.c (referenced_var_lookup): Adjust.
18189         (referenced_var_check_and_insert): Likewise.
18190         (remove_referenced_var): Likewise.
18191         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18192         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18193         (verify_call_clobbering): Likewise.
18194         (verify_memory_partitions): Likewise.
18195         (init_tree_ssa): Allocate bitmap instead of hashtable for
18196         referenced_vars.
18197         (delete_tree_ssa): Adjust.
18198         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18199         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18200         (compute_tag_properties): Likewise.
18201         (set_initial_properties): Likewise.
18202         (find_partition_for): Likewise.
18203         (update_reference_counts): Likewise.
18204         (dump_may_aliases_for): Likewise.
18205         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18206         (add_call_clobber_ops): Likewise.
18207         (add_call_read_ops): Likewise.
18208         (get_asm_expr_operands): Likewise.
18209         * tree-into-ssa.c (dump_decl_set): Likewise.
18210         (update_ssa): Likewise.
18211         * tree-sra.c (scan_function): Likewise.
18212         (decide_instantiations): Likewise.
18213         (scalarize_parms): Likewise.
18214         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18215         (dsa_named_for): Likewise.
18216         * tree-ssa-structalias.c (update_alias_info): Likewise.
18217         (merge_smts_into): Likewise.
18218
18219 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
18220
18221         PR target/35258
18222         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
18223         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
18224         * alias.h (nonoverlapping_memrefs_p): Likewise.
18225
18226 2008-02-25  Jan Beulich  <jbeulich@novell.com>
18227
18228         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
18229         * config/i386/netware-libgcc.exp: Add __bswap?i2,
18230         __emultls_get_address, __emultls_register_common,
18231         __floatundi?f, and _Unwind_GetIPInfo.
18232         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
18233         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
18234         (gen_regparm_prefix): Likewise.
18235         (i386_nlm_encode_section_info): Sync with
18236         config/i386/winnt.c:i386_pe_encode_section_info().
18237         (i386_nlm_maybe_mangle_decl_assembler_name): New.
18238         i386_nlm_mangle_decl_assembler_name): New.
18239         (netware_override_options): New.
18240         * config/i386/netware.h (netware_override_options): Declare.
18241         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
18242         (i386_nlm_mangle_decl_assembler_name): Declare.
18243         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
18244
18245 2008-02-25  Ben Elliston  <bje@au.ibm.com>
18246
18247         PR other/32948
18248         * c-decl.c (grokdeclarator): Remove unused local variables
18249         `typedef_type' and `type_as_written'.
18250         * bb-reorder.c
18251         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
18252         unused local variable `has_hot_blocks'.
18253         (fix_crossing_conditional_branches): Remove unused local variable
18254         `prev_bb'.
18255
18256 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
18257
18258         PR middle-end/19984
18259         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
18260         using DEF_C99_BUILTIN.
18261         (BUILT_IN_NANF): Ditto.
18262         (BUILT_IN_NANL): Ditto.
18263
18264 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
18265             Revital Eres  <eres@il.ibm.com>
18266
18267         * modulo-sched.c (calculate_must_precede_follow): Address TODO
18268         regarding the order of two dependent insns in the same row.
18269
18270 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
18271
18272         * stor-layout.c (layout_decl): Do not bump the alignment of a
18273         bit-field to more than byte alignment if it is packed.
18274
18275 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
18276
18277         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
18278         e300c2 and e300c3.
18279
18280 2008-02-24  Diego Novillo  <dnovillo@google.com>
18281
18282         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
18283
18284         PR 33738
18285         * tree-vrp.c (vrp_evaluate_conditional): With
18286         -Wtype-limits, emit a warning when comparing against a
18287         constant outside the natural range of OP0's type.
18288         * c.opt (Wtype-limits): Move ...
18289         * common.opt (Wtype-limits): ... here.
18290
18291 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
18292
18293         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
18294         * config/rs6000/e300c2c3.md: New file.
18295         * config/rs6000/rs6000.c (processor_costs): Add new costs for
18296         e300c2 and e300c3.
18297         (rs6000_override_options): Add e300c2 and e300c3 cases to
18298         processor_target_table. Do not allow usage of Altivec or Spe
18299         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
18300         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
18301         * config/rs6000/rs6000.h (processor_type): Add
18302         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
18303         (ASM_CPU_SPEC): Add e300c2 and e300c3.
18304         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
18305         and ppce300c3. Include e300c2c3.md.
18306
18307 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
18308
18309         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
18310         instead of TARGET_STRICT_ALIGN.
18311
18312 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
18313
18314         * explow.c (memory_address): Assert that the generated address is
18315         valid.
18316
18317 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
18318
18319         PR target/25477
18320         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
18321         * config/darwin-ppc-ldouble-patch.def: New file.
18322         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
18323         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
18324         SUBTARGET_INIT_BUILTINS if defined.
18325         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
18326         New functions.
18327
18328 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18329
18330         PR rtl-opt/33512
18331         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
18332         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
18333
18334 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18335
18336         PR pch/35027
18337         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
18338         file" warning condtional on -Winvalid-PCH.
18339
18340 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
18341
18342         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
18343
18344 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
18345
18346         PR target/22076
18347         PR target/34256
18348         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
18349         prevent reload from using MMX registers.
18350         (*mov<mode>_internal): Ditto.
18351         (*movv2sf_internal_rex64): Ditto.
18352         (*movv2sf_internal): Ditto.
18353
18354 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18355
18356         PR documentation/31569
18357         * doc/install.texi2html: Use makeinfo --no-number-sections.
18358
18359 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
18360
18361         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
18362         ensure that we can address an entire entity > 8 bytes.  Don't
18363         generate reg+reg addressing for such data.
18364
18365 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
18366
18367         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
18368         strings when optimizing for size, unless the target cares about
18369         alignment.
18370
18371 2008-02-22  Tom Tromey  <tromey@redhat.com>
18372
18373         * regclass.c (current_pass): Remove declaration.
18374
18375 2008-02-22  Anatoly Sokolov <aesok@post.ru>
18376
18377         * config/avr/libgcc.S (__RAMPZ__): Define.
18378         (__do_copy_data): Add for devices with 128KB code memory.
18379
18380 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
18381
18382         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
18383         Use spe_abi.
18384         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
18385
18386 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
18387
18388         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
18389         GENNONACR_REGS.
18390
18391 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18392
18393         PR c/19999
18394         * c-typeck.c (build_binary_op): Warn about floating point
18395         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
18396
18397 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
18398
18399         PR target/34526
18400         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
18401         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
18402         add vrsave.
18403         (rs6000_override_options): Set altivec_abi as default, not override,
18404         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
18405         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
18406         is used; use new member spe_abi.
18407         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
18408         spe_abi and altivec_abi.
18409
18410 2008-02-22  Tomas Bily  <tbily@suse.cz>
18411
18412         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
18413
18414 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18415
18416         PR bootstrap/35273
18417         * config.build (build_file_translate): Set to `CMD //c' only if
18418         it works.
18419         * Makefile.in (build_file_translate): Improve comment.
18420
18421 2008-02-21  Jan Hubicka  <jh@suse.cz>
18422
18423         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
18424         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
18425         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
18426
18427 2008-02-21  Michael Matz  <matz@suse.de>
18428
18429         PR target/35264
18430         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
18431
18432 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
18433
18434         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
18435         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
18436         as insn constraint.
18437         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
18438         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
18439         SSE_VEC_FLOAT_MODE_P as insn constraint.
18440         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
18441         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
18442         sse4a_movntdf using MODEF mode iterator.
18443         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
18444         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
18445         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
18446         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
18447         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
18448         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
18449         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
18450
18451 2008-02-21  Richard Guenther  <rguenther@suse.de>
18452
18453         * tree.def (PAREN_EXPR): New tree code.
18454         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
18455         and PAREN_EXPR.
18456         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
18457         * expr.c (expand_expr_real_1): Likewise.
18458         * tree-inline.c (estimate_num_insns_1): Likewise.
18459         * tree-complex.c (expand_complex_move): Likewise.
18460         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
18461         as plain x.
18462
18463 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
18464
18465         PR target/35225
18466         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
18467
18468 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
18469
18470         PR target/35190
18471         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
18472
18473         * config/sh/sh.c (find_barrier): Don't go past
18474         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
18475
18476 2008-02-20  DJ Delorie  <dj@redhat.com>
18477
18478         * config/h8300/h8300.md (insv): Force source operand to be a register.
18479
18480         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
18481         as a jump, not as a plain insn.
18482
18483 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
18484
18485         * doc/invoke.texi (Warning Options): Add new option
18486         -Wframe-larger-than=.
18487         (-Wframe-larger-than): Document.
18488
18489         * flags.h (warn_frame_larger_than, frame_larger_than_size):
18490         Add declarations for new option variables.
18491
18492         * final.c (final_start_function): Check the frame size
18493         before emission and issue a Wframe-larger-than warning.
18494
18495         * opts.c (warn_frame_larger_than, frame_larger_than_size):
18496         Add definitions for new option variables.
18497         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
18498
18499         * common.opt (Wframe-larger-than=): New option.
18500
18501 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
18502
18503         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
18504         (<sse>_div<mode>3): Ditto.
18505         (<sse>_vmdiv<mode>3): Ditto.
18506         (<sse>_vmsqrt<mode>2): Ditto.
18507         (*smax<mode>3): Ditto.
18508         (sse5_frcz<mode>2): Ditto.
18509         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
18510         as insn constraint.
18511
18512 2008-02-20  Richard Guenther  <rguenther@suse.de>
18513
18514         PR middle-end/35265
18515         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
18516         be happy with INTEGRAL_TYPE_P.
18517
18518 2008-02-20  Richard Guenther  <rguenther@suse.de>
18519
18520         * fold-const.c (split_tree): Associate floatig-point expressions
18521         if flag_associative_math is set.
18522
18523 2008-02-20  Richard Guenther  <rguenther@suse.de>
18524
18525         * tree.h (fold_real_zero_addition_p): Declare.
18526         * fold-const.c (fold_real_zero_addition_p): Export.
18527         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
18528         floating-point operations with zero and one.
18529
18530 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
18531
18532         * doc/install.texi: Correct references to CFLAGS, replacing them
18533         with BOOT_CFLAGS.  Document flags used during bootstrap for
18534         target libraries.
18535
18536 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
18537
18538         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
18539         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
18540         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
18541         insn constraint.
18542         (smin<mode>3): Ditto from similar patterns.
18543         (smax<mode>3): Ditto.
18544         (*ieee_smin<mode>3): Ditto.
18545         (*ieee_smax<mode>3): Ditto.
18546         * config/i386/sse.md (sse): New mode attribute.
18547         (mov<mode>): Macroize expander from movv4sf and movv2df using
18548         SSEMODEF2P mode iterator.
18549         (<sse>_movnt<mode>): Ditto from similar patterns. Use
18550         SSE_VEC_FLOAT_MODE_P as insn constraint.
18551         (storent<mode>): Ditto.
18552         (storent<mode>): Macroize expander from storentsf and storentdf using
18553         MODEF mode iterator.
18554         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
18555         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
18556         (abs<mode>2): Ditto from similar patterns.
18557         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
18558         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
18559         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
18560         (<sse>_vmsqrt<mode>2): Ditto.
18561         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
18562         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
18563         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
18564         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
18565         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
18566         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
18567         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
18568         insn constraint.
18569         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
18570         iterator and SSE_FLOAT_MODE_P as insn constraint.
18571         (<sse>_ucomi): Ditto from similar patterns.
18572         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
18573         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
18574         SSE_VEC_FLOAT_MODE_P as insn constraint.
18575         (vcond<mode>): Ditto from similar patterns.
18576         (and<mode>3, *and<mode>3): Ditto.
18577         (<sse>_nand<mode>3): Ditto.
18578         (ior<mode>3, *ior<mode>3): Ditto.
18579         (xor<mode>3, *xor<mode>3): Ditto.
18580         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
18581         iterator and SSE_FLOAT_MODE_P as insn constraint.
18582         (*nand<mode>3): Ditto from similar patterns.
18583         (*ior<mode>3): Ditto.
18584         (*xor<mode>3): Ditto.
18585
18586 2008-02-20  Ira Rosen  <irar@il.ibm.com>
18587
18588         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
18589         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
18590         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
18591
18592 2008-02-19  Jan Hubicka  <jh@suse.cz>
18593
18594         * predict.c (tree_bb_level_predictions): Remove variable next
18595         mistakely introduced by previous commit.
18596
18597 2008-02-19  Jan Hubicka  <jh@suse.cz>
18598
18599         * predict.c (predict_paths_leading_to): Rewrite.
18600         (predict_paths_for_bb): New.
18601         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
18602
18603 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18604
18605         PR bootstrap/35218
18606         * Makefile.in (build_file_translate): New.
18607         (gcc-vers.texi): Use it for translating $(abs_srcdir).
18608         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
18609         * configure.ac (build_file_translate): Substitute it.
18610         * configure: Regenerate.
18611
18612 2008-02-19  Jan Hubicka  <jh@suse.cz>
18613
18614         PR rtl-optimization/34408
18615         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
18616         invalid sharing.
18617
18618 2008-02-19  Jan Hubicka  <jh@suse.cz>
18619
18620         PR middle-end/28779
18621         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
18622         call_expr.
18623
18624 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
18625
18626         PR Ada/35186
18627         * config/i386/i386-modes.def: Revert the last DI alignment
18628         change until Ada people can look into it.
18629
18630 2008-02-19  Nick Clifton  <nickc@redhat.com>
18631
18632         * opts.c (print_specific_help): Fix typo in --help text.
18633
18634 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
18635
18636         PR target/35239
18637         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
18638         32-bit inline asm without asm alternatives for host GCC < 3.0.
18639
18640 2008-02-19  Richard Guenther  <rguenther@suse.de>
18641
18642         PR tree-optimization/34989
18643         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
18644         Allow propagation to INDIRECT_REF if we can simplify only.
18645
18646 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18647
18648         * c-common.c (warn_for_collisions_1): Use appropriate option when
18649         warning.
18650
18651 2008-02-19  Nick Clifton  <nickc@redhat.com>
18652
18653         PR other/31349
18654         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
18655         (handle_options): Fix indentation.
18656         (print_filtered_help): If no language-specific options were
18657         displayed tell the user how to list all the options supported by
18658         the language's front-end.
18659         (print_specific_help): Fix indentation and remove duplicate line.
18660         (common_handle_option): Handle the -v option.
18661         For --help enable the display of undocumented options if the -v
18662         switch has been included on the command line.
18663         For --help= check for overlaps in the arguments between the option
18664         classes and the language names and issue a warning when they
18665         cannot be disambiguated.
18666         * c.opt (v): Pass on to the common option handler.
18667
18668 2008-02-19  Revital Eres  <eres@il.ibm.com>
18669
18670         * modulo-sched.c (sms_schedule): Change dump message when
18671         create_ddg function fails.
18672         (try_scheduling_node_in_cycle): Rename row to cycle.
18673         (print_partial_schedule): Rename CYCLE to ROW.
18674
18675 2008-02-19  Christian Bruel  <christian.bruel@st.com>
18676             Zdenek Dvorak  <ook@ucw.cz>
18677
18678         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
18679
18680 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
18681
18682         PR target/33555
18683         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
18684         (*x86_movdicc_0_m1_se): Ditto.
18685
18686 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
18687
18688         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
18689         (CMPtype): Define as __gcc_CMPtype.
18690         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
18691         (CMPtype): Define as __gcc_CMPtype.
18692
18693 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
18694
18695         Support valgrind 3.3 for --enable-checking=valgrind.
18696         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
18697         here.
18698         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
18699         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
18700         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
18701         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
18702         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
18703         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
18704         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
18705         respectively.
18706         * ggc-zone.c: Similar.
18707         * ggc-page.c: Similar.
18708
18709 2008-02-19  Paul Brook  <paul@codesourcery.com>
18710
18711         PR target/35071
18712         * config/arm/ieee754-df.S: Fix do_it typo.
18713         * config/arm/ieee754-sf.S: Fix do_it typo.
18714
18715 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
18716
18717         PR target/35189
18718         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
18719         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
18720         (OPTION_MASK_ISA_SSE_SET): Likewise.
18721         (OPTION_MASK_ISA_SSE2_SET): Likewise.
18722         (OPTION_MASK_ISA_SSE3_SET): Likewise.
18723         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
18724         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
18725         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
18726         (OPTION_MASK_ISA_SSE4_SET): Likewise.
18727         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
18728         (OPTION_MASK_ISA_SSE5_SET): Likewise.
18729         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
18730         (OPTION_MASK_ISA_MMX_UNSET): Updated.
18731         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
18732         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
18733         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
18734         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
18735         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
18736         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
18737         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
18738         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
18739         (OPTION_MASK_ISA_SSE4): Removed.
18740         (ix86_handle_option): Turn on bits in ix86_isa_flags and
18741         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
18742         (override_options): Don't turn on implied SSE/MMX bits in
18743         ix86_isa_flags.
18744
18745 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
18746
18747         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
18748         32bit host.
18749
18750 2008-02-18  Joey Ye  <joey.ye@intel.com>
18751
18752         PR middle-end/34921
18753         * tree-nested.c (insert_field_into_struct): Set type alignment
18754         to field alignment if the former is less than the latter.
18755
18756 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
18757
18758         * BASE-VER: Set to 4.4.0.
18759
18760 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
18761
18762         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
18763         * doc/cfg.texi: Likewise.
18764         * doc/extend.texi: Likewise.
18765         * doc/gty.texi: Likewise.
18766         * doc/invoke.texi: Likewise.
18767         * doc/loop.texi: Likewise.
18768         * doc/md.texi: Likewise.
18769         * doc/passes.texi: Likewise.
18770         * doc/rtl.texi: Likewise.
18771         * doc/sourcebuild.texi: Likewise.
18772         * doc/tm.texi: Likewise.
18773         * doc/tree-ssa.texi: Likewise.
18774
18775 2008-02-17  Richard Guenther  <rguenther@suse.de>
18776
18777         PR middle-end/35227
18778         * tree-complex.c (init_parameter_lattice_values): Handle parameters
18779         without default definition.
18780
18781 2008-02-17  Richard Guenther  <rguenther@suse.de>
18782
18783         PR tree-optimization/35231
18784         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
18785         if A | B != 1.
18786
18787 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
18788
18789         Revert:
18790         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
18791         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
18792         libgcc_cmp_return mode.
18793
18794 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18795
18796         PR c/28368
18797         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
18798
18799 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
18800
18801         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
18802         multilibs.
18803
18804 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18805
18806         * doc/c-tree.texi: Use `@.' where appropriate.
18807         * doc/extend.texi: Likewise.
18808         * doc/install.texi: Likewise.
18809         * doc/invoke.texi: Likewise.
18810         * doc/loop.texi: Likewise.
18811         * doc/makefile.texi: Likewise.
18812         * doc/md.texi: Likewise.
18813         * doc/passes.texi: Likewise.
18814         * doc/standards.texi: Likewise.
18815         * doc/tm.texi: Likewise.
18816
18817 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
18818
18819         PR middle-end/35196
18820         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
18821         in entry_bb.
18822         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
18823         rather than in entry_bb.
18824
18825 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
18826
18827         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
18828         libgcc_cmp_return mode.
18829
18830 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
18831
18832         PR middle-end/35130
18833         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
18834         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
18835
18836 2008-02-15  Richard Guenther  <rguenther@suse.de>
18837             Zdenek Dvorak  <ook@ucw.cz>
18838
18839         PR tree-optimization/35164
18840         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
18841         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
18842         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
18843         Only propagate addresses which do not have abnormal SSA_NAMEs
18844         in their operands.
18845
18846 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
18847
18848         PR target/35088
18849         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
18850
18851 2008-02-15  Jan Hubicka  <jh@suse.cz>
18852
18853         PR middle-end/35149
18854         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
18855
18856 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
18857
18858         PR middle-end/34621
18859         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
18860         when calculating alignment_pad.
18861
18862 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
18863
18864         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
18865         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
18866         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
18867         and STACK_BOUNDARY define.
18868
18869 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
18870
18871         PR preprocessor/35061
18872         * c-pragma.c (handle_pragma_pop_macro): Check that
18873         pushed_macro_table has been allocated.
18874
18875 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
18876
18877         PR middle-end/35136
18878         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
18879         (force_gimple_operand): Likewise.
18880         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
18881         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
18882         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
18883         (find_interesting_uses_address): Check addressability and alignment
18884         of the base expression only after substituting bases of IVs into it.
18885
18886 2008-02-14  Michael Matz  <matz@suse.de>
18887
18888         PR target/34930
18889         * function.c (instantiate_virtual_regs_in_insn): Reload address
18890         before falling back to reloading the whole operand.
18891
18892 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
18893
18894         * config/s390/s390.c (s390_mainpool_start): Emit the pool
18895         before the first section switch note.
18896
18897 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
18898
18899         * doc/bugreport.texi: Update copyright years.
18900         * doc/c-tree.texi: Likewise.
18901         * doc/cfg.texi: Likewise.
18902         * doc/cpp.texi: Likewise.
18903         * doc/cppinternals.texi: Likewise.
18904         * doc/fragments.texi: Likewise.
18905         * doc/frontends.texi: Likewise.
18906         * doc/gcc.texi: Likewise.
18907         * doc/gty.texi: Likewise.
18908         * doc/hostconfig.texi: Likewise.
18909         * doc/implement-c.texi: Likewise.
18910         * doc/libgcc.texi: Likewise.
18911         * doc/loop.texi: Likewise.
18912         * doc/makefile.texi: Likewise.
18913         * doc/options.texi: Likewise.
18914         * doc/passes.texi: Likewise.
18915         * doc/rtl.texi: Likewise.
18916         * doc/sourcebuild.texi: Likewise.
18917         * doc/standards.texi: Likewise.
18918         * doc/tree-ssa.texi: Likewise.
18919         * doc/trouble.texi: Likewise.
18920
18921         * doc/extend.texi: Use @: or add comma where appropriate.
18922         * doc/invoke.texi: Likewise.
18923         * doc/tm.texi: Likewise.
18924
18925 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
18926
18927         PR target/34393
18928         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
18929         to a reg.
18930
18931 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
18932
18933         * doc/md.texi (clz, ctz): Add reference.
18934         * doc/rtl.texi (clz, ctz): Likewise.
18935
18936 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18937
18938         PR other/35148
18939         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
18940         srcdir.
18941
18942 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
18943
18944         * config/s390/s390.c (struct constant_pool): New field
18945         emit_pool_after added.
18946         (s390_mainpool_start): Set the emit_pool_after flag according
18947         to the section switch notes.
18948         (s390_mainpool_finish): Consider emit_pool_after when emitting
18949         the literal pool at the end of the function.
18950         (s390_chunkify_start): Force literal pool splits at section
18951         switch notes.
18952
18953 2008-02-13  Michael Matz  <matz@suse.de>
18954
18955         PR debug/35065
18956         * var-tracking.c (clobber_variable_part): Correctly traverse the
18957         list.
18958
18959 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18960
18961         PR 29673
18962         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
18963         Add -fdump-ipa-inline.
18964         * tree-dump.c (dump_files): Remove tree-inlined dump.
18965         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
18966
18967 2008-02-12  Richard Guenther  <rguenther@suse.de>
18968
18969         PR tree-optimization/35171
18970         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
18971         default defs.
18972
18973 2008-02-12  Richard Guenther  <rguenther@suse.de>
18974
18975         PR middle-end/35163
18976         * fold-const.c (fold_widened_comparison): Use get_unwidened in
18977         value-preserving mode.  Disallow final truncation.
18978
18979 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
18980
18981         PR middle-end/35136
18982         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
18983         code from here to...
18984         (force_gimple_operand): ...here.
18985
18986 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
18987
18988         PR c++/35144
18989         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
18990         non-compatible pointers.
18991         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
18992         different FIELD_DECLs, try harder by comparing field offsets, sizes
18993         and types.
18994
18995         PR inline-asm/35160
18996         * function.c (match_asm_constraints_1): Don't replace the same input
18997         multiple times.
18998
18999 2008-02-12  Anatoly Sokolov <aesok@post.ru>
19000
19001         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
19002         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
19003         (expand_epilogue): Restore RAMPZ register.
19004         * config/avr/avr.md (RAMPZ_ADDR): New constant.
19005
19006 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
19007
19008         * config/i386/cygwin.asm: (__alloca): Correct calling
19009         convention and alignment.
19010         (__chkstk): Force 8 byte stack alignment.
19011
19012 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
19013             Richard Guenther  <rguenther@suse.de>
19014
19015         PR tree-optimization/33992
19016         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
19017         the zero we compare against.
19018
19019 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
19020
19021         PR libfortran/35063
19022         * gthr-win32.h (__gthread_mutex_destroy_function): New function
19023         to CloseHandle after unlocking to prevent accumulation of handle
19024         count.
19025
19026 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19027
19028         PR middle_end/34150
19029         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
19030         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
19031         and update LABEL_NUSES during and after reload.
19032
19033 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
19034
19035         PR middle-end/34627
19036         * combine.c (simplify_if_then_else): Make sure the comparison is
19037         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
19038
19039 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19040
19041         PR bootstrap/35051
19042         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
19043         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
19044         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
19045         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
19046         * tree.h (get_type_static_bounds): Likewise.
19047
19048 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19049
19050         * doc/invoke.texi (Option Summary, C++ Dialect Options)
19051         (Objective-C and Objective-C++ Dialect Options, Warning Options):
19052         Make -Wfoo language annotations match what the compiler outputs.
19053
19054 2008-02-08  Sa Liu  <saliu@de.ibm.com>
19055
19056         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
19057         intrinsics spu_convts, spu_convtu, spu_convtf.
19058
19059 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
19060
19061         * doc/extend.texi (Function Attributes) <noinline>: Mention
19062         asm ("") as method to keep calls.
19063
19064 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19065
19066         PR other/32754
19067         * doc/options.texi (Options): Replace references to opts.sh with
19068         optc-gen.awk.
19069         * opts-common.c: Likewise.
19070         * optc-gen.awk: Likewise.
19071
19072 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
19073
19074         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
19075
19076 2008-02-07  Richard Henderson  <rth@redhat.com>
19077
19078         PR rtl-opt/33410
19079         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
19080         EXPR_LIST for the REG_EQUAL instead of a comparison with a
19081         funny mode.
19082
19083 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
19084
19085         PR tree-optimization/35085
19086         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
19087         for operand entry oe2 in addition to operand entry oe3 in order to
19088         expose more opportunities for vectorizer sum reduction.
19089
19090 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19091
19092         PR other/35107
19093         * Makefile.in (LIBS): Remove $(GMPLIBS).
19094         (cc1-dummy, cc1): Add $(GMPLIBS).
19095
19096 2008-02-06  Jan Hubicka  <jh@suse.cz>
19097
19098         PR target/23322
19099         * i386.md (moddf_integer): Do not produce partial memory stalls for
19100         targets where it hurts.
19101
19102 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
19103
19104         PR target/35083
19105         * optabs.c (expand_float): Do not check for decimal modes when
19106         expanding unsigned integer through signed conversion.
19107
19108 2008-02-06  Nick Clifton  <nickc@redhat.com>
19109
19110         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
19111         inside the clobber with a match_operand and duplicated operand
19112         number in the constraint.
19113         (ineqbranchsi): Delete redundant comment.
19114
19115 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
19116
19117         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
19118         builtin_define ("__USE_INIT_FINI__").
19119         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
19120         -msx multilibs.
19121         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
19122
19123 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19124
19125         PR documentation/30330
19126         * doc/invoke.texi (C++ Dialect Options)
19127         (Objective-C and Objective-C++ Dialect Options, Warning Options):
19128         For each warning option -Wfoo that allows -Wno-foo, ensure both
19129         -Wfoo and -Wno-foo are listed in the option index.  Fix index
19130         entry of -Wswitch-default, index -Wnormalized= including the
19131         `=', and -Wlarger-than-@var{len} including @var{len}.
19132
19133 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
19134
19135         * config/i386/i386.md (floatunssisf2): Use
19136         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
19137         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
19138         Macroize expander using MODEF mode iterator.
19139
19140 2008-02-05  Diego Novillo  <dnovillo@google.com>
19141
19142         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
19143
19144         PR 33738
19145         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
19146
19147 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19148
19149         PR other/35070
19150         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
19151
19152 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
19153
19154         PR target/35084
19155         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
19156         to indicate if a message should be generated.
19157         (init_cumulative_args): Updated.
19158         (function_value_32): Likewise.
19159
19160 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
19161
19162         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
19163
19164 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
19165
19166         PR target/35083
19167         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
19168         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
19169
19170 2008-02-04  Diego Novillo  <dnovillo@google.com>
19171
19172         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
19173
19174         PR 33738
19175         * tree-vrp.c (vrp_evaluate_conditional): With
19176         -Wtype-limits, emit a warning when comparing against a
19177         constant outside the natural range of OP0's type.
19178
19179 2008-02-04  Richard Guenther  <rguenther@suse.de>
19180
19181         PR middle-end/33631
19182         * expr.c (count_type_elements): Give for unions instead of
19183         guessing.
19184
19185 2008-02-04  Richard Guenther  <rguenther@suse.de>
19186
19187         PR middle-end/35043
19188         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
19189         to TYPE_DOMAINs base type instead of using bitsizetype here.
19190
19191 2008-02-03  Jason Merrill  <jason@redhat.com>
19192
19193         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
19194
19195 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19196
19197         PR other/29972
19198         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
19199         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
19200         (RS/6000 and PowerPC Options): Fix typos and markup.
19201         * doc/passes.texi (Tree-SSA passes): Likewise.
19202
19203 2008-02-02  Michael Matz  <matz@suse.de>
19204
19205         PR target/35045
19206         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
19207         from record_last_reg_set_info.
19208         (record_last_reg_set_info): Take an RTX argument, iterate over all
19209         constituent hardregs.
19210         (record_last_set_info, record_opr_changes): Change calls to
19211         new signature or to record_last_reg_set_info_regno.
19212
19213 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
19214
19215         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
19216
19217 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
19218
19219         PR rtl-optimization/34773
19220         * reg-notes.def (EQUAL): Mention significance of combination of
19221         REG_EQUAL and REG_RETVAL.
19222         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
19223         insn that has a REG_RETVAL.
19224
19225 2008-02-01  Roger Sayle  <roger@eyesopen.com>
19226
19227         PR bootstrap/33781
19228         * configure.ac (--enable-fixed-point): Disable unless explicitly
19229         requested on IRIX.
19230         * configure: Regenerate.
19231
19232 2008-02-01  Richard Guenther  <rguenther@suse.de>
19233
19234         PR other/35042
19235         * invoke.texi (-finline-limit): Remove no longer true parts
19236         of the documentation.  Note that there is no default value.
19237
19238 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
19239             Mark Mitchell  <mark@codesourcery.com>
19240             Ben Elliston  <bje@au.ibm.com>
19241
19242         PR c/29326
19243         * doc/extend.texi (Other Builtins): Document.
19244
19245 2008-01-31  Tom Browder <tom.browder@gmail.com>
19246
19247         * doc/c-tree.texi (Types): Fix grammar.
19248         (Expression trees): Ditto.
19249         * doc/passes.texi (Tree-SSA passes): Ditto.
19250
19251         * doc/configterms.texi (Configure Terms): Fix typo.
19252         * doc/cpp.texi (Common Predefined Macros): Ditto.
19253         * doc/md.texi (Machine Constraints): Ditto.
19254
19255         * doc/makefile.texi (Makefile): Add comma.
19256
19257 2008-01-31  Tom Browder  <tom.browder@gmail.com>
19258             Gerald Pfeifer  <gerald@pfeifer.com>
19259
19260         * doc/sourcebuild.texi (Front End): Remove references to CVS
19261         and CVSROOT/modules.
19262         (Texinfo Manuals): Replace reference to CVS by one to SVN.
19263         (Back End): Remove reference to CVS.
19264
19265 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
19266
19267         PR target/34900
19268         * config/mips/mips.c (gen_load_const_gp): New function, taking a
19269         comment from...
19270         (mips16_gp_pseudo_reg): ...here.
19271         * config/mips/mips.md (load_const_gp): Replace with...
19272         (load_const_gp_<mode>): ...this :P-based insn.
19273
19274 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19275
19276         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
19277         options. Minor fixes.
19278         (-std): Move reference to standards closer to where language
19279         standards are first mentioned.
19280
19281 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
19282
19283         PR rtl-optimization/34995
19284         * reload.c (alternative_allows_const_pool_ref): Take an rtx
19285         parameter and return a bool.  If the rtx parameter is nonnull,
19286         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
19287         (find_reloads): Update call accordingly.  Pass the new operand
19288         if it needed no address reloads, otherwise pass null.
19289
19290 2008-01-30  Richard Henderson  <rth@redhat.com>
19291
19292         PR c/34993
19293         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
19294         for unbounded arrays.
19295
19296 2008-01-30  Silvius Rus  <rus@google.com>
19297
19298         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
19299
19300 2008-01-30  Jan Hubicka  <jh@suse.cz>
19301
19302         PR target/34982
19303         * i386.c (init_cumulative_args): Use real function declaration when
19304         calling locally.
19305
19306 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
19307
19308         PR rtl-optimization/34998
19309         * global.c (build_insn_chain): Treat non-subreg_lowpart
19310         SUBREGs of pseudos as clobbering all the words covered by the
19311         SUBREG, not just all the bytes.
19312         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
19313         original df_ref rather than an extract parameter.
19314         (global_conflicts): Update call accordingly.
19315
19316 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
19317
19318         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
19319         the overflow check to make it easier to read.
19320         (__fixtfdi): Change the type of the ll member in union
19321         long_double to UDItype_x.
19322
19323 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
19324
19325         PR middle-end/34969
19326         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
19327         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
19328         * tree-inline.c (fold_marked_statements): Call
19329         cgraph_update_edges_for_call_stmt if folding a call statement.
19330         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
19331         debug_generic_stmt calls, reset it back afterwards.
19332
19333         PR c/35017
19334         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
19335         static decls.
19336         * c-typeck.c (build_external_ref): Don't pedwarn about
19337         static vars in current function's scope.
19338
19339 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
19340
19341         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
19342
19343 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
19344
19345         PR c/35002
19346         * ipa-struct-reorg.c: Fix spelling.
19347         * params.def: Ditto.
19348
19349 2008-01-29  Richard Guenther  <rguenther@suse.de>
19350
19351         PR middle-end/35006
19352         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
19353         field.
19354         * tree-inline.c (remap_type): Increment remapping_type_depth
19355         around remapping types.
19356         (copy_body_r): Only add referenced variables if they are referenced
19357         from code, not types.
19358
19359 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
19360
19361         PR c++/34055
19362         PR c++/34103
19363         PR c++/34219
19364         PR c++/34606
19365         PR c++/34753
19366         PR c++/34754
19367         PR c++/34755
19368         PR c++/34919
19369         PR c++/34961
19370         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
19371         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
19372
19373 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
19374
19375         PR target/34412
19376         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
19377         pointer for tiny stack.
19378
19379 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
19380
19381         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
19382
19383 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
19384
19385         * config/vx-common.h: Fix typo in comment.
19386
19387 2008-01-28  Ian Lance Taylor  <iant@google.com>
19388
19389         PR c++/34862
19390         PR c++/33407
19391         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
19392         coalesce pointers if they have different DECL_NO_TBAA_P values.
19393         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
19394         between variables with different DECL_NO_TBAA_P values.
19395
19396 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
19397
19398         PR 31535
19399         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
19400         are not legitimate small data references on SPE targets.
19401
19402 2008-01-28  David Daney  <ddaney@avtrex.com>
19403
19404         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
19405
19406 2008-01-28  David Daney  <ddaney@avtrex.com>
19407
19408         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
19409
19410 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
19411
19412         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
19413         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
19414         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
19415         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
19416         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
19417         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
19418         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
19419         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
19420
19421 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
19422
19423         * basic-block.h (condjump_equiv_p): Fix comment.
19424
19425 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
19426
19427         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
19428         print_generic_stmt_indented): Fix comment.
19429
19430 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
19431
19432         * configure.ac (__stack_chk_fail): Add detecion for availability
19433         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
19434         * configure: Regenerate.
19435
19436 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
19437
19438         PR middle-end/34688
19439         * final.c (output_addr_const): Handle TRUNCATE.
19440
19441 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
19442
19443         PR target/34711
19444         * tree-ssa-loop-ivopts.c (comp_cost): New type.
19445         (zero_cost, infinite_cost): New constants.
19446         (struct cost_pair): Change type of cost to comp_cost.
19447         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
19448         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
19449         New functions.
19450         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
19451         split_address_cost, ptr_difference_cost, difference_cost,
19452         get_computation_cost_at, get_computation_cost,
19453         determine_use_iv_cost_generic, determine_use_iv_cost_address,
19454         determine_use_iv_cost_condition, determine_use_iv_costs,
19455         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
19456         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
19457         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
19458         Change type of cost to comp_cost.
19459         (determine_iv_cost): Increase cost of non-original ivs, instead
19460         of decreasing the cost of original ones.
19461         (get_address_cost): Indicate the complexity of the addressing mode
19462         in comp_cost.
19463         (try_add_cand_for): Prefer using ivs not specific to some object.
19464         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
19465
19466 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
19467             Janis Johnson  <janis187@us.ibm.com>
19468
19469         PR target/34814
19470         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
19471         (TARGET_INSTANTIATE_DECLS): Likewise.
19472         * target.h (expand_to_rtl_hook): New target hook.
19473         (instantiate_decls): Likewise.
19474         * function.c (instantiate_decl): Make non-static.  Rename to...
19475         (instantiate_decl_rtl): ... this.
19476         (instantiate_expr): Use instantiate_decl_rtl.
19477         (instantiate_decls_1): Likewise.
19478         (instantiate_decls): Likewise.
19479         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
19480         * function.h (instantiate_decl_rtl): Add prototype.
19481         * cfgexpand.c (target.h): New include.
19482         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
19483         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
19484         (TARGET_INSTANTIATE_DECLS): Likewise.
19485         (TARGET_INITIALIZER): New target hooks added.
19486         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
19487         New prototype.
19488         * config/rs6000/rs6000.c (tree-flow.h): New include.
19489         (machine_function): Add sdmode_stack_slot field.
19490         (rs6000_alloc_sdmode_stack_slot): New function.
19491         (rs6000_instantiate_decls): Likewise.
19492         (rs6000_secondary_memory_needed_rtx): Likewise.
19493         (rs6000_check_sdmode): Likewise.
19494         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
19495         (TARGET_INSTANTIATE_DECLS): Likewise.
19496         (rs6000_hard_regno_mode_ok): Allow SDmode.
19497         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
19498         (rs6000_emit_move): Handle SDmode.
19499         (function_arg_advance): Likewise.
19500         (function_arg): Likewise.
19501         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
19502         SDmode var args for 32-bit compiles.
19503         (rs6000_secondary_reload_class): Handle SDmode.
19504         (rs6000_output_function_epilogue): Likewise.
19505         (rs6000_function_value): Simplify if statement.
19506         (rs6000_libcall_value): Likewise.
19507         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
19508         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
19509         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
19510         (movsd_hardfloat): New define_insn.
19511         (movsd_softfloat): Likewise.
19512         (movsd_store): Likewise.
19513         (movsd_load): Likewise.
19514         (extendsddd2): Likewise.
19515         (extendsdtd2): Likewise.
19516         (truncddsd2): Likewise.
19517         (movdd_hardfloat64): Fixup comment.
19518         (UNSPEC_MOVSD_LOAD): New constant.
19519         (UNSPEC_MOVSD_STORE): Likewise.
19520
19521 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
19522
19523         PR c++/34965
19524         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
19525         TRUTH_XOR_EXPR.
19526         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
19527         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
19528         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
19529         and TRUTH_XOR_EXPR.
19530
19531 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
19532
19533         PR target/34794
19534         * config.gcc: Separate AIX 5.3 from AIX 6.1.
19535         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
19536         __LONGDOUBLE128 too.
19537         * config/rs6000/aix61.h: New file.
19538
19539 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
19540
19541         PR rtl-optimization/34959
19542         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
19543         popcount and parity rtxes the same mode as their operand.
19544         Truncate or extend the result to the return value's mode
19545         if necessary.
19546
19547 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
19548
19549         PR target/34981
19550         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
19551         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
19552         to GOT_VERSION_REGNUM.
19553         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
19554         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
19555         * config/mips/mips.c (mips_emit_call_insn): New function.
19556         (mips_call_tls_get_addr): Call mips_expand_call directly.
19557         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
19558         emit_call_insn.
19559         (mips16_build_call_stub): Likewise.  Return the call insn or null.
19560         (mips_expand_call): Update the call to mips16_build_call_stub
19561         accordingly and a remove redundant condition.  Assert that MIPS16
19562         stubs do not use lazy binding.  Use mips_emit_call_insn and return
19563         the call insn.
19564         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
19565         TARGET_USE_GOT.
19566         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
19567         (mips_avoid_hazard): Remove hazard_set handling.
19568         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
19569         (UNSPEC_RESTORE_GP): ...this.
19570         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
19571         (FAKE_CALL_REGNO): Rename to...
19572         (GOT_VERSION_REGNUM): ...this.
19573         (type): Add "ghost" value.  Add an associated insn reservation.
19574         (hazard_set): Remove.
19575         (exception_receiver): Rename to...
19576         (restore_gp): ...this and update the unspec identifier accordingly.
19577         (exception_receiver, nonlocal_got_receiver): New expanders.
19578         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
19579         FAKE_CALL_REGNO.  Remove hazard_set attribute.
19580         (set_got_version, update_got_version): New patterns.
19581
19582 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
19583
19584         PR target/34970
19585         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
19586
19587 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
19588
19589         PR other/31955
19590         * doc/install.texi2html: Generate gcc-vers.texi.
19591
19592 2008-01-25  DJ Delorie  <dj@redhat.com>
19593
19594         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
19595
19596 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
19597
19598         * config/c4x: Remove directory.
19599         * config.gcc (crx-*, mt-*): Mark obsolete.
19600         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
19601         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
19602         sh-*-rtemscoff*): Remove cases.
19603         * defaults.h (C4X_FLOAT_FORMAT): Remove.
19604         * real.c (encode_c4x_single, decode_c4x_single,
19605         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
19606         c4x_extended_format): Remove.
19607         * real.h (c4x_single_format, c4x_extended_format): Remove.
19608         * doc/extend.texi (interrupt, naked): Remove mention of attributes
19609         on C4x.
19610         (Pragmas): Remove comment about c4x pragmas.
19611         * doc/install.texi (c4x): Remove target-specific instructions.
19612         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
19613         * doc/md.texi (Machine Constraints): Remove C4x documentation.
19614         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
19615         refer to C4x source files as examples.
19616         (C4X_FLOAT_FORMAT): Remove documentation.
19617
19618 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
19619
19620         * config/bfin/bfin.c (override_options): Reorder tests so that
19621         flag_pic gets enabled for -msep-data.
19622
19623 2008-01-25  Richard Guenther  <rguenther@suse.de>
19624
19625         PR middle-end/32244
19626         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
19627         to its bitfield precision if required.
19628
19629 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
19630
19631         PR middle-end/33880
19632         * tree-nested.c (walk_omp_for): New function.
19633         (convert_nonlocal_reference, convert_local_reference): Call
19634         walk_omp_for on OMP_FOR.
19635         (convert_call_expr): Call walk_body on OMP_FOR's
19636         OMP_FOR_PRE_INIT_BODY.
19637
19638 2008-01-25  Richard Guenther  <rguenther@suse.de>
19639
19640         PR tree-optimization/34966
19641         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
19642         default defs and PHI_NODEs we have to insert after the
19643         defining statement.
19644
19645 2008-01-24  Nick Clifton  <nickc@redhat.com>
19646
19647         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
19648         Provide a default definition.
19649         (LIBGCC2_UNITS_PER_WORD): Likewise.
19650
19651         * config/stormy16/stormy16.c: Include df.h for the prototype
19652         for df_regs_ever_live_p.
19653         (xstormy16_expand_builtin_va_start): Convert the stack offset
19654         into a component_ref and then use POINTER_PLUS_EXPR to add it
19655         to the incoming_virtual_args_rtx.
19656         (xstormy16_gimplify_va_arg_expr): Rename to
19657         xstormy16_gimplify_va_arg_expr.
19658         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
19659         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
19660         xstormy16_gimplify_va_arg_expr.
19661         Fix up some formatting issues.
19662
19663         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
19664         Move to predicates.md.
19665         (xs_hi_general_operand): Likewise.
19666         (xs_hi_nonmemory_operand): Likewise.
19667         * config/stormy16/predicates.md:
19668         (xstormy16_carry_plus_operand): New predicate.
19669         (xs_hi_general_operand): New predicate.
19670         (xs_hi_nonmemory_operand): New predicate.
19671         * config/stormy16/stormy16-protos.h:
19672         (xstormy16_carry_plus_operand): Delete prototype.
19673         (xs_hi_general_operand): Likewise.
19674         (xs_hi_nonmemory_operand): Likewise.
19675
19676         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
19677         modifiers as they are no longer needed and they can trigger
19678         reload spill failures.
19679
19680         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
19681         with a match_operand in order to help reload.
19682
19683         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
19684         constraint with 'e' for the 8th alternative as this version of
19685         the mov.w instruction only accepts the lower 8 registers.
19686
19687 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
19688
19689         PR target/34856
19690         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
19691         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
19692         vector elements.
19693
19694 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
19695
19696         PR middle-end/33333
19697         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
19698
19699 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
19700
19701         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
19702         New functions.
19703         (remove_structure): Update allocations list before removing structure.
19704
19705 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
19706
19707         * ipa-struct-reorg.c (is_safe_cond_expr,
19708         create_new_stmts_for_cond_expr): Use integer_zerop function,
19709         that recognize not only zero-pointer, but zero-integer too.
19710
19711 2008-01-25  Ben Elliston  <bje@au.ibm.com>
19712
19713         PR other/22232
19714         * fixproto: Escape "." in sed expression that strips leading "./".
19715
19716 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
19717
19718         PR driver/34904
19719         * gcc.c (SWITCH_OK): Removed.
19720         (SWITCH_LIVE): Changed to bit.
19721         (SWITCH_FALSE): Likewise.
19722         (SWITCH_IGNORE): Likewise.
19723         (switchstr): Change live_cond to unsigned int.
19724         (process_command): Replace SWITCH_OK with 0.
19725         (do_self_spec): Likewise.
19726         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
19727         (give_switch): Likewise.
19728         (used_arg): Likewise.
19729         (do_spec_1): Set the SWITCH_IGNORE bit.
19730         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
19731         bits.  Set the SWITCH_LIVE bit.
19732
19733 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19734
19735         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
19736
19737 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
19738
19739         PR tree-optimization/34472
19740         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
19741         parameter to a "bool *" and set *DATA to false if there is
19742         an unsafe access.  Do not delete the structure here.
19743         (check_cond_exprs): Delete it here instead.
19744         (check_cond_exprs, exclude_cold_structs): Do not increase
19745         I when removing a structure.
19746
19747 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
19748
19749         PR target/34856
19750         * config/i386/i386.c (ix86_expand_vector_init): Consider only
19751         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
19752
19753 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
19754
19755         PR middle-end/34934
19756         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
19757         a fixed vector for stack.
19758
19759 2008-01-24  Ben Elliston  <bje@au.ibm.com>
19760
19761         PR c++/25701
19762         * doc/gcc.texi (Software development): Add a direntry for g++.
19763
19764 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
19765
19766         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
19767         stale and straggling -fforce-addr comments above.
19768
19769         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
19770         define.
19771         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
19772         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
19773
19774 2008-01-23  Michael Matz  <matz@suse.de>
19775
19776         PR debug/34895
19777         * dwarf2out.c (force_type_die): Use modified_type_die instead of
19778         gen_type_die.
19779
19780 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
19781
19782         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
19783         malloc result type.
19784
19785 2008-01-23 Anatoly Sokolov <aesok@post.ru>
19786
19787         * config/avr/avr.c (avr_current_arch): New variable.
19788         (avr_arch_types): Add 'avr31' and 'avr51' entries.
19789         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
19790         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
19791         (avr_override_options): Init 'avr_current_arch'.
19792         (base_arch_s): Move from here...
19793         * config/avr/avr.h (base_arch_s): ... here. Add new members
19794         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
19795         'mega' to 'have_jmp_call'.
19796         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
19797         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
19798         macros.
19799         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
19800         architectures.
19801         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
19802         MULTILIB_MATCHES): Ditto.
19803
19804 2008-01-23  Richard Guenther  <rguenther@suse.de>
19805
19806         PR middle-end/31529
19807         * cgraphunit.c (cgraph_reset_node): Always mark the node
19808         not reachable if it is not queued already.
19809
19810 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
19811
19812         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
19813         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
19814         (cputype_selected): New static variable.
19815         (bfin_handle_option): Set it if -mcpu is used.
19816         (override_option): Select default set of workarounds if no cpu type
19817         selected on the command line.
19818         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
19819
19820         From  Michael Frysinger  <michael.frysinger@analog.com>
19821         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
19822         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
19823
19824         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
19825         for bf547, bf523, bf524, and bf526.
19826         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
19827         bf526.
19828         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
19829         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
19830         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
19831         __ADSPBF547__ and __ADSPBF54x__ for bf547.
19832         * doc/invoke.texi (Blackfin Options): Document that
19833         -mcpu now accept bf547, bf523, bf524, and bf526.
19834
19835 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
19836
19837         PR rtl-optimization/34628
19838         * combine.c (try_combine): Stop and undo after the first combination
19839         if an autoincrement side-effect on the first insn has effectively
19840         been lost.
19841
19842 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
19843
19844         PR target/34529
19845         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
19846         Offset addresses are not valid for Altivec or paired float modes.
19847
19848 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
19849
19850         PR c++/34607
19851         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
19852         if DECL_INITIAL (decl) is error_mark_node.
19853
19854         PR c++/34914
19855         * c-common.c (handle_vector_size_attribute): Only allow
19856         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
19857         the same way as pointer, array etc. types.
19858         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
19859
19860         PR c++/34917
19861         * tree.c (build_type_attribute_qual_variant): Call
19862         build_qualified_type if attributes are equal, but quals are not.
19863
19864 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19865
19866         PR 32102
19867         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
19868         * flags.h (warn_strict_aliasing): Remove.
19869         (warn_strict_overflow): Remove.
19870         * opts.c (warn_strict_aliasing): Remove.
19871         (warn_strict_overflow): Remove.
19872         * c-opts.c (c_common_handle_option): -Wall only sets
19873         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
19874         (c_common_post_options): Give default values to -Wstrict-aliasing
19875         and -Wstrict-overflow if they are uninitialized.
19876         * common.opt (Wstrict-aliasing): Specify Var and Init.
19877         (Wstrict-overflow): Likewise.
19878
19879 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
19880
19881         PR rtl-optimization/26854
19882         PR rtl-optimization/34400
19883         PR rtl-optimization/34884
19884         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
19885         DF_RD->gen.
19886         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
19887         (df_rd_bb_info.expanded_lr_out): Deleted
19888         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
19889         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
19890         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
19891         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
19892         Removed code to allocate, initialize or free expanded_lr_out.
19893         (df_rd_bb_local_compute_process_def): Restructured to make more
19894         understandable.
19895         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
19896         sets if the sets are being trimmed.
19897
19898 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
19899
19900         PR bootstrap/32287
19901         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
19902         (as_vers): Likewise.
19903         * configure: Regenerated.
19904
19905 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19906
19907         PR middle-end/33092
19908         * tree-pass.h (pass_build_alias): New pass.
19909         * tree-ssa-alias.c (gate_build_alias): New.
19910         (pass_build_alias): New.
19911         * passes.c (init_optimization_passes): Add pass_build_alias after
19912         pass_create_structure_vars.
19913
19914 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
19915
19916         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
19917         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
19918         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
19919         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
19920         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
19921         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
19922         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
19923         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
19924         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
19925         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
19926         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
19927         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
19928         * config/s390/s390.md (FP_ALL): New mode iterator.
19929         (_d): New mode attribute.
19930         ("*signbit<mode>2>"): Changed mode of first operand.
19931         ("isinf<mode>2"): Changed mode of first operand.
19932         ("*TDC_insn"): Adaptation for DFP modes.
19933
19934 2008-01-22  Ben Elliston  <bje@au.ibm.com>
19935
19936         * tree.c (check_qualified_type): Improve function description.
19937
19938 2008-01-21  Jason Merrill  <jason@redhat.com>
19939
19940         PR c++/34196
19941         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
19942         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
19943         if it is set.
19944
19945 2008-01-21  DJ Delorie  <dj@redhat.com>
19946
19947         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
19948         return zero.
19949
19950 2008-01-21  Richard Guenther  <rguenther@suse.de>
19951
19952         PR middle-end/34856
19953         * tree-cfg.c (verify_expr): Allow all invariant expressions
19954         instead of just constant class ones as reference argument.
19955         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
19956         like any other constant.
19957         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
19958
19959 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
19960
19961         * regmove.c (fixup_match_1): Update call crossed frequencies.
19962
19963 2008-01-21  Richard Guenther  <rguenther@suse.de>
19964
19965         PR c/34885
19966         * tree-inline.c (setup_one_parameter): Deal with mismatched
19967         types using a VIEW_CONVERT_EXPR.
19968
19969 2008-01-21  Alon Dayan  <alond@il.ibm.com>
19970             Olga Golovanevsky  <olga@il.ibm.com>
19971
19972         PR tree-optimization/34701
19973         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
19974         when the structure size is not a power of 2.
19975
19976 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
19977
19978         * doc/install.texi: Add doc for --enable-checking=df.
19979
19980 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19981
19982         PR rtl-optimization/34808
19983         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
19984
19985 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
19986
19987         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
19988         input.
19989
19990 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
19991
19992         PR rtl-optimization/26854
19993         PR rtl-optimization/34400
19994         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
19995         DF_RD->gen.
19996         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
19997         (df_rd_bb_info.expanded_lr_out): New.
19998         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
19999         * loop_iv.c (iv_analysis_loop_init): Ditto.
20000         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
20001         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
20002         Added code to allocate, initialize or free expanded_lr_out.
20003         (df_rd_bb_local_compute_process_def): Restructured to make
20004         more understandable.
20005         (df_rd_confluence_n): Add code to do nothing with fake edges and
20006         code to no apply invalidate_by_call sets if the sets are being trimmed.
20007         (df_lr_local_finalize): Renamed to df_lr_finalize.
20008         (df_live_local_finalize): Renamed to df_live_finalize.
20009
20010 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
20011
20012         PR target/34831
20013         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
20014         deciding whether to use reciprocal instructions.
20015
20016 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
20017
20018         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
20019         dwarf2out_note_section_used if cold_text_section is NULL.
20020
20021 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
20022
20023         PR gcov-profile/34610
20024         * tree-cfg.c (make_edges): Mark both outgoing edges from
20025         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
20026         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
20027         from OMP_FOR and OMP_CONTINUE outgoing edges.
20028
20029         * tree-profile.c (tree_profiling): Return early if
20030         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
20031         at the end.
20032         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
20033         from cfun to child_cfun.
20034         * function.h (struct function): Add after_tree_profile bit.
20035
20036 2008-01-19 Anatoly Sokolov <aesok@post.ru>
20037
20038         * config/avr/avr.S (_exit): Disable interrupt.
20039
20040 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
20041             Steven Bosscher  <stevenb.gcc@gmail.com>
20042
20043         PR rtl-optimization/26854
20044         PR rtl-optimization/34400
20045         * df-problems.c (df_live_scratch): New scratch bitmap.
20046         (df_live_alloc): Allocate df_live_scratch when doing df_live.
20047         (df_live_reset): Clear the proper bitmaps.
20048         (df_live_bb_local_compute): Only process the artificial defs once
20049         since the order is not important.
20050         (df_live_init): Init the df_live sets only with the variables
20051         found live by df_lr.
20052         (df_live_transfer_function): Use the df_lr sets to prune the
20053         df_live sets as they are being computed.
20054         (df_live_free): Free df_live_scratch.
20055
20056 2008-01-18  Ian Lance Taylor  <iant@google.com>
20057
20058         * common.opt: Add fmerge-debug-strings.
20059         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
20060         flag_merge_debug_strings rather than flag_merge_constants.
20061         * doc/invoke.texi (Option Summary): Mention
20062         -fmerge-debug-strings.
20063         (Debugging Options): Document -fmerge-debug-strings.
20064
20065 2008-01-18  Ian Lance Taylor  <iant@google.com>
20066
20067         PR c++/33407
20068         * tree.h (DECL_IS_OPERATOR_NEW): Define.
20069         (struct tree_function_decl): Add new field operator_new_flag.
20070         * tree-inline.c (expand_call_inline): When inlining a call to
20071         operator new, force the return value to go into a variable, and
20072         set DECL_NO_TBAA_P on that variable.
20073         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
20074
20075 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
20076
20077         PR debug/34484
20078         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
20079         DWARF2_DEBUGGING_INFO.
20080         (dwarf2out_note_section_used): Ditto.  Add prototype.
20081         (have_multiple_function_sections, text_section_used,
20082         cold_text_section_used, *cold_text_sections): Move declarations
20083         before their uses.
20084
20085 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
20086
20087         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
20088         field and add signal_ra.
20089         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
20090         assignments to frame state pc.  Move end of stack check after
20091         MD_FALLBACK_FRAME_STATE_FOR.
20092         (uw_update_context_1): Use frame state signal_regs if set, instead
20093         of checking signal_frame flag.
20094         (uw_update_context): Use frame state signal_ra if set.
20095         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
20096         * config/xtensa/linux-unwind.h: New file.
20097
20098 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
20099
20100         * modulo-sched.c (get_sched_window): Fix comment typo.
20101
20102 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
20103
20104         PR tree-optimization/34648
20105         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
20106
20107 2008-01-17  Anatoly Sokolov <aesok@post.ru>
20108
20109         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
20110         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
20111
20112 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
20113
20114         PR rtl-optimization/34400
20115         * df-core.c (df_worklist_dataflow_overeager,
20116         df_worklist_dataflow_doublequeue): New functions.
20117         (df_worklist_dataflow): Two different worklist solvers.
20118         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
20119         New param.
20120
20121 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20122
20123         PR testsuite/34821
20124         * doc/invoke.texi: Document the dependence on pthread for fopenmp
20125         and ftree-parallelize-loops.
20126
20127 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
20128
20129         PR rtl-optimization/34826
20130         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
20131
20132 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
20133
20134         * global.c (find_reg): Mark the eh regs as used if necessary.
20135         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
20136         * ra.h (struct allocno): no_eh_reg field added.  Changed
20137         no_stack_reg type to bitfield.
20138
20139 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
20140
20141         * tree.c (substitute_in_expr): Add missing 'break'.
20142
20143 2008-01-17  Richard Guenther  <rguenther@suse.de>
20144
20145         PR tree-optimization/34825
20146         * tree-ssa-math-opts.c (is_division_by): Do not recognize
20147         x / x as division to handle.
20148
20149 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20150
20151         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
20152         "-pthread" is specified.
20153         * pa-hpux11.h (LIB_SPEC): Likewise.
20154
20155 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
20156             Peter Bergner  <bergner@vnet.ibm.com>
20157
20158         PR rtl-optimization/33796
20159         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
20160
20161 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20162
20163         PR libgfortran/34699
20164         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
20165         static links.
20166         * pa-hpux10.h (LINK_SPEC): Likewise.
20167         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
20168
20169 2008-01-16  Richard Guenther  <rguenther@suse.de>
20170
20171         PR middle-end/32628
20172         * fold-const.c (fold_convert_const_int_from_int): Do not
20173         set overflow if that occured only because of a sign extension
20174         change when converting from/to a sizetype with the same
20175         precision and signedness.
20176
20177 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
20178
20179         PR debug/34249
20180         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
20181         location address to the correct place.  Update copyright year.
20182
20183 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20184
20185         * lambda-code.c (lambda_transform_legal_p): Handle the case of
20186         no dependences in the dependence_relations vector.
20187
20188 2008-01-16  Jan Hubicka  <jh@suse.cz>
20189
20190         PR rtl-optimization/31396
20191         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
20192         * cfg.c (dump_reg_info): Print it.
20193         * regs.h (struct reg_info_t): add freq_calls_crossed.
20194         (REG_FREQ_CALLS_CROSSED): New macro.
20195         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
20196         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
20197         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
20198         regmove_optimize): Update call crossed frequencies.
20199         * local-alloc.c (struct qty): Add freq_calls_crossed.
20200         (alloc_qty): Copute freq_calls_crossed.
20201         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
20202         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
20203         * ra.h (struct allocno): Add freq_calls_crossed.
20204
20205 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20206
20207         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
20208         libgomp when compiling with ftree-parallelize-loops.
20209         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
20210
20211 2008-01-16  Richard Guenther  <rguenther@suse.de>
20212
20213         PR tree-optimization/34769
20214         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
20215         * tree.c (int_cst_value): Instead make this function more
20216         permissive in what it accepts as valid input.  Document this
20217         function always sign-extends the value.
20218
20219 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
20220             Richard Guenther  <rguenther@suse.de>
20221
20222         PR c/34668
20223         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
20224         (gimple_fold_indirect_ref_rhs): ... this.
20225         (gimple_fold_indirect_ref): New function with foldings
20226         that preserve lvalueness.
20227         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
20228         * tree-flow.h (gimple_fold_indirect_ref): Declare.
20229         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
20230         to fold an INDIRECT_REF, fall back to the old use of
20231         fold_indirect_ref_1.
20232
20233 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20234
20235         * tree-data-ref.c (subscript_dependence_tester_1): Call
20236         free_conflict_function.
20237         (compute_self_dependence): Same.
20238
20239 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
20240
20241         PR debug/34249
20242         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
20243         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
20244         function global.
20245         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
20246         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
20247         for DWARF2_UNWIND_INFO targets.
20248
20249 2008-01-16  Richard Guenther  <rguenther@suse.de>
20250
20251         PR c/34768
20252         * c-typeck.c (common_pointer_type): Do not merge inconsistent
20253         type qualifiers for function types.
20254
20255 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
20256
20257         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
20258         loop_iterator li from previous commit.
20259
20260 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
20261
20262         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
20263
20264 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
20265
20266         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
20267         (parallelize_loops): Don't parallelize irreducible components.
20268
20269 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20270
20271         PR c++/24924
20272         * c-opts (c_common_post_options): Do not enable CPP
20273         flag_pedantic_errors by default.
20274
20275 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
20276
20277         PR rtl-optimization/31944
20278         * cse.c (remove_pseudo_from_table): New function.
20279         (merge_equiv_classes): Use above function to remove pseudo-registers.
20280         (invalidate): Likewise.
20281
20282 2008-01-13  Richard Guenther  <rguenther@suse.de>
20283
20284         PR middle-end/34601
20285         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
20286         instead of TYPE_MODE to deal with calls from expand_one_error_var.
20287
20288 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
20289
20290         * gcse.c (cprop_jump): Call validate_unshare_change instead of
20291         validate_change to unshare the source of the PC set.
20292
20293 2008-01-12  Jan Hubicka  <jh@suse.cz>
20294
20295         PR middle-end/32135
20296         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
20297         references above array bounds.  This might trigger bounds checks for
20298         pointers to arrays.
20299
20300 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
20301
20302         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
20303         new_replaceable_dependencies.
20304
20305 2008-01-12  Doug Kwan  <dougkwan@google.com>
20306
20307         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
20308         instead of OPT_Wreturn_type in warning due to ignored return type
20309         qualifiers.
20310         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
20311         options included in -Wextra.
20312         * c.opt: New option -Wignored_qualifiers.
20313         * doc/invoke.texi (Warning Options, -Wextra): Add new option
20314         -Wignore_qualifiers.
20315         (-Wignored-qualifiers): Document.
20316         (-Wreturn-type): Remove description of functionality now handled
20317         by -Wignored-qualifiers.
20318
20319 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
20320
20321         PR ada/33788
20322         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
20323         NOP_EXPR if it is between integral types with the same precision.
20324
20325 2008-01-12  Jan Hubicka  <jh@suse.cz>
20326
20327         PR other/28023
20328         * invoke.texi (max-inline-recursive-depth): Fix default value.
20329
20330 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
20331
20332         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
20333         correct type.
20334
20335 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
20336
20337         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
20338
20339 2008-01-11  James E. Wilson  <wilson@specifix.com>
20340
20341         PR target/26015
20342         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
20343
20344 2008-01-11  Anatoly Sokolov <aesok@post.ru>
20345
20346         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
20347         save/restore frame pointer register and don't use 'call-prologues'
20348         optimization in function with "OS_task" attribute.
20349
20350 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
20351
20352         PR middle-end/31309
20353         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
20354         when copying to memory.
20355
20356 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
20357
20358         PR rtl-optimization/30905
20359         * cfgcleanup.c: Include dce.h
20360         (crossjumps_occured): New global variable.
20361         (try_crossjump_bb): Exit loop after finding a fallthru edge.
20362         If something changed, set crossjumps_occured to true.
20363         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
20364         Don't add/remove fake edges to exit here...
20365         (cleanup_cfg): ...but do it here, when crossjumping.
20366         Run a fast DCE when successful crossjumps occured in the latest
20367         iteration of try_optimize_cfg.
20368
20369 2008-01-11  Richard Guenther  <rguenther@suse.de>
20370
20371         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
20372         (struct vn_unary_op_s): Likewise.
20373         (vn_reference_insert): Free old reference on hash collision.
20374
20375 2008-01-10  Raksit Ashok  <raksit@google.com>
20376
20377         PR rtl-optimization/27971
20378         * combine.c (find_split_point): Split PLUS expressions which are
20379         inside a MEM rtx, and whose first operand is complex.
20380
20381 2008-01-10  DJ Delorie  <dj@redhat.com>
20382
20383         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
20384         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
20385         (m32c_hard_regno_ok): Call the underlying function.
20386
20387 2008-01-10  Richard Guenther  <rguenther@suse.de>
20388
20389         PR middle-end/34683
20390         * tree-cfg.c (tree_merge_blocks): Do not go through the
20391         full-blown folding and stmt updating path if we just deal
20392         with virtual operands.
20393         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
20394         test for abnormal SSA_NAMEs.
20395
20396 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
20397
20398         PR middle-end/34641
20399         * reload.c (push_reload): Add assertions.  All constants from
20400         reg_equiv_constant should have been used for replacing the respective
20401         pseudo earlier.
20402         (find_reloads_address): Invoke find_reloads_address_part for
20403         constant taken from the reg_equiv_constant array.
20404
20405 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
20406
20407         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
20408         field (valnum) the first in the struct.  Replace bools with
20409         unit bit fields.
20410
20411 2008-01-10  Richard Guenther  <rguenther@suse.de>
20412
20413         PR tree-optimization/34651
20414         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
20415         types and ordering for masking and converting.
20416
20417 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
20418
20419         PR tree-optimization/34017
20420         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
20421         also for PHI_NODE expressions.
20422
20423 2008-01-09  Jan Hubicka  <jh@suse.cz>
20424
20425         PR tree-optimization/34708
20426         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
20427         based on number of case labels.
20428         (init_inline_once): Remove switch_cost.
20429         * tree-inline.h (eni_weights_d): Remove switch_cost.
20430
20431 2008-01-09  Richard Guenther  <rguenther@suse.de>
20432         Andrew Pinski  <andrew_pinski@playstation.sony.com>
20433
20434         PR middle-end/30132
20435         * gimplify.c (gimplify_cond_expr): Do not create an addressable
20436         temporary if an rvalue is ok or an lvalue is not required.
20437
20438 2008-01-09  Richard Guenther  <rguenther@suse.de>
20439
20440         PR middle-end/34458
20441         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
20442         adjust return type.
20443
20444 2008-01-09  Richard Guenther  <rguenther@suse.de>
20445
20446         PR middle-end/34679
20447         * tree.c (host_integerp): Check for sizetype only if the
20448         type is an integer type.
20449
20450 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
20451
20452         PR debug/26364
20453         * opts.c (decode_options): Disable inlining of functions called
20454         once if not in unit-at-a-time mode.
20455
20456 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
20457
20458         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
20459
20460 2008-01-08  Richard Guenther  <rguenther@suse.de>
20461
20462         PR middle-end/31863
20463         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
20464         out early if the result will be unused.
20465
20466 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
20467
20468         PR target/34709
20469         Revert:
20470
20471         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
20472         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
20473         for TARGET_RECIP.
20474
20475 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
20476
20477         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
20478         for vectorization tuned.
20479
20480 2008-01-08  Richard Guenther  <rguenther@suse.de>
20481
20482         PR tree-optimization/34683
20483         * tree-ssa-operands.c (operand_build_cmp): Export.
20484         * tree-ssa-operands.h (operand_build_cmp): Declare.
20485         * tree-vn.c (vuses_compare): Remove.
20486         (sort_vuses): Use operand_build_cmp.
20487         (sort_vuses_heap): Likewise.
20488         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
20489         to re-use old VEC if available.  Do not sort already sorted VUSEs.
20490         (vdefs_to_vec): Do not sort already sorted VDEFs.
20491
20492 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
20493
20494         PR middle-end/34694
20495         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
20496
20497 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
20498
20499         PR target/34702
20500         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
20501         limitations of reciprocal sequences on x86 targets.
20502
20503 2008-01-08  Richard Guenther  <rguenther@suse.de>
20504
20505         PR tree-optimization/34683
20506         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
20507
20508 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
20509
20510         PR target/34622
20511         * config/darwin.c (darwin_mergeable_string_section): Don't use
20512         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
20513
20514 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
20515
20516         PR target/34682
20517         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
20518         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
20519         predicates of op0 and op1 to register_operand.
20520         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
20521         expander using X87MODEF mode iterator.  Change predicates of
20522         op0 and op1 to register_operand.
20523         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
20524         corresponding patterns and macroize using MODEF macro.  Change
20525         predicates of op0 and op1 to register_operand and remove
20526         "m" constraint. Disparage "r" alternative with "!".
20527         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
20528         macroize using X87MODEF macro.  Change predicates of op0 and op1
20529         to register_operand and remove "m" constraint.  Disparage "r"
20530         alternative with "!".
20531         (absneg splitter with memory operands): Remove.
20532         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
20533         patterns and macroize using X87MODEF mode iterator.
20534         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
20535         Change predicate of op1 to register_operand.
20536         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
20537         for memory operands.
20538
20539 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
20540
20541         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
20542
20543 2008-01-07  Richard Guenther  <rguenther@suse.de>
20544
20545         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
20546         fields.
20547
20548 2008-01-07  Richard Guenther  <rguenther@suse.de>
20549
20550         PR tree-optimization/34683
20551         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
20552         VOPs of the needed size to save memory.  Use VEC_quick_push
20553         to save compile-time.
20554         (vdefs_to_vec): Likewise.
20555
20556 2008-01-07  Sa Liu  <saliu@de.ibm.com>
20557
20558         * config/spu/spu.md (divdf3): Genetate inline code for double
20559         division.  The implementation doesn't handle INF or NAN, therefore it
20560         only applies when -ffinite-math-only is given.
20561
20562 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
20563
20564         PR libstdc++/34680
20565         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
20566         * doc/cpp.texi ([Common Predefined Macros]): Document.
20567
20568 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
20569
20570         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
20571         order to use commutative addition instead of subtraction.
20572
20573 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20574             Mircea Namolaru  <namolaru@il.ibm.com>
20575             Vladimir Yanovsky  <yanov@il.ibm.com>
20576             Revital Eres  <eres@il.ibm.com>
20577
20578         PR tree-optimization/34263
20579         * tree-outof-ssa.c (process_single_block_loop_latch,
20580         contains_tree_r): New functions.
20581         (analyze_edges_for_bb): Call process_single_block_loop_latch
20582         function to empty single-basic-block latch block if possible.
20583
20584 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
20585
20586         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
20587         for TARGET_RECIP.
20588         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
20589
20590 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
20591
20592         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
20593
20594 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
20595
20596         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
20597
20598 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
20599
20600         PR tree-optimization/34618
20601         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
20602         flag from T.
20603
20604 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
20605
20606         PR target/34673
20607         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
20608         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
20609         Update copyright year.
20610
20611         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
20612         Update copyright year.
20613         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
20614         using NR fixup.
20615
20616 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
20617
20618         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
20619         edge does not point to current bb before changing need_assert.
20620
20621 2008-01-04  Richard Guenther  <rguenther@suse.de>
20622
20623         PR middle-end/34029
20624         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
20625         for verifying purposes if they are is_gimple_min_invariant.
20626
20627 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
20628
20629         PR tree-optimization/34448
20630         PR tree-optimization/34465
20631         * gimplify.c (gimplify_init_constructor): Add new parameter
20632         notify_temp_creation.  Use it.
20633         (gimplify_modify_expr_rhs): Take volatiles into account when
20634         optimizing constructors.
20635         Do not optimize constructors if gimplify_init_constructor will dump to
20636         memory.
20637         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
20638         * gcc.c-torture/compile/pr34448.c: New.
20639
20640 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
20641
20642         PR gcov-profile/34609
20643         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
20644         return_slot if result is TREE_ADDRESSABLE.
20645
20646 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
20647
20648         * config/mips/mips.md (sqrt_condition): Tweak comment.
20649         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
20650
20651 2008-01-03  Tom Tromey  <tromey@redhat.com>
20652
20653         PR c/34457
20654         * c-common.c (c_type_hash): Handle VLAs.
20655
20656 2008-01-03  Jan Hubicka  <jh@suse.cz>
20657
20658         PR tree-optimization/31081
20659         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
20660         0 when inlining and not inlining to first basic block.
20661         (remap_decl): When var is initialized to 0, don't set default_def.
20662         (expand_call_inline): Set entry_bb.
20663         * tree-inline.h (copy_body_data): Add entry_bb.
20664
20665 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
20666
20667         PR c++/34619
20668         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
20669         before returning.
20670
20671         PR tree-optimization/29484
20672         * tree-inline.c (inline_forbidden_p_2): New function.
20673         (inline_forbidden_p): Disallow inlining if some static var
20674         has an address of a local LABEL_DECL in its initializer.
20675         * doc/extend.texi (Labels as Values): Document &&foo behaviour
20676         vs. inlining.
20677
20678 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
20679
20680         PR tree-optimization/34635
20681         * tree-data-ref.c (add_other_self_distances): Make sure that the
20682         evolution step is constant.
20683
20684 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
20685
20686         PR middle-end/34608
20687         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
20688
20689 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
20690
20691         * tree-sra.c (scalarize_init): Insert the generate_element_init
20692         statements after the generate_element_zero statements.
20693
20694 2008-01-02  Richard Guenther  <rguenther@suse.de>
20695
20696         PR middle-end/34093
20697         PR middle-end/31976
20698         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
20699         for very large number of operands instead of ICEing.
20700
20701 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
20702
20703         PR target/34013
20704         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
20705         while stack probing.
20706
20707 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
20708
20709         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
20710         in C++0x mode.
20711
20712 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
20713
20714         PR libmudflap/26442
20715         * tree-mudflap.c (mx_register_decls): Guard warning by
20716         !DECL_ARTIFICIAL check.
20717
20718 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
20719
20720         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
20721         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
20722         sse5_perm<mode>): Fix constraints.