OSDN Git Service

cd5f12b6d6eb818462588f7f1dbb1d4ae9c18a17
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-05-13  Diego Novillo  <dnovillo@google.com>
2             Kenneth Zadeck  <zadeck@naturalbridge.com>
3
4         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
5
6         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
7         phinodes_print_statistics, init_ssanames, fini_ssanames,
8         make_ssa_name, duplicate_ssa_name,
9         duplicate_ssa_name_ptr_info, release_ssa_name,
10         release_defs, replace_ssa_name_symbol,
11         ssanames_print_statistics): Move ...
12         * tree-flow.h: ... here.
13         * tree-ssanames.c (init_ssanames): Add arguments FN and
14         SIZE.  Use FN instead of cfun.
15         (make_ssa_name_fn): Rename from make_ssa_name.
16         (pass_release_ssa_names): Add TODO_dump_func to finish
17         flags.
18         * tree-flow-inline.h (make_ssa_name): Move from
19         tree-ssanames.c.  Convert to static inline.  Call
20         make_ssa_name_fn.
21         * omp-low.c (expand_omp_parallel):
22         * tree-flow-inline.h (redirect_edge_var_map_result):
23         * tree-ssa.c (init_tree_ssa): Add argument FN.  Use it
24         instead of cfun.
25         Update all users.
26
27 2008-05-13  Tom Tromey  <tromey@redhat.com>
28
29         PR preprocessor/22168:
30         * doc/cpp.texi (Top): Update menu.
31         (Alternatives to Wrapper #ifndef): New node.
32         (Other Directives): Document deprecation.
33         (Obsolete Features): Remove menu.
34         (Assertions): Merge node into Obsolete Features.
35         (Obsolete once-only headers): Move earlier; rename to Alternatives
36         to Wrapper #ifndef.
37         * doc/cppopts.texi: Update.
38         * c.opt (Wdeprecated): Enable for C and ObjC.
39         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
40         (C++ Dialect Options): Move -Wno-deprecated from here to...
41         (Warning Options): ... here.
42
43 2008-05-13  Richard Guenther  <rguenther@suse.de>
44
45         PR middle-end/36227
46         * fold-const.c (fold_sign_changed_comparison): Do not allow
47         changes in pointer-ness.
48
49 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
50
51         PR target/24713
52         * config/sh/sh.c (sh_expand_prologue): Don't clear
53         RTX_FRAME_RELATED_P for push insns.
54
55 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
56
57         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
58
59 2008-05-12  Anatoly Sokolov <aesok@post.ru>
60
61         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
62         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
63         Use 'machine->is_leaf' instead of 'leaf_func_p'.
64
65 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
66
67         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
68         (*vec_concatv4sf_sse): This.
69         (*sse2_concatv2si): Renamed to ...
70         (*vec_concatv2si_sse2): This.
71         (*sse1_concatv2si): Renamed to ...
72         (*vec_concatv2si_sse): This.
73         (*vec_concatv2di_rex): Renamed to ...
74         (*vec_concatv2di_rex64): This.
75         (*vec_concatv2si_sse4_1): New.
76         (*vec_concatv2di_rex64_sse4_1): Likewise.
77
78 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
79
80         PR rtl-optimization/36111
81         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
82         that was created for swappable operands.
83
84 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
85
86         PR ada/36001
87         * Makefile.in: Substitute GNATMAKE and GNATBIND.
88         * configure.ac: Add call to ACX_PROG_GNAT.
89
90 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
91
92         * optc-gen.awk: Fix comment typo.
93
94 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
95
96         * pretty-print.c (pp_integer_with_precision): Use
97         HOST_LONG_LONG_FORMAT.
98
99 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
100
101         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
102                 
103 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
104
105         * config/i386/i386.c (bdesc_ptest): Removed.
106         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
107         (bdesc_args): Add __builtin_ia32_ptestz128,
108         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
109         (ix86_init_mmx_sse_builtins): Updated.
110         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
111         (ix86_expand_builtin): Updated.
112
113 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
114
115         * tree-cfg.c (valid_fixed_convert_types_p): New function.
116         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
117
118 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
119
120         * value-prof.c (interesting_stringop_to_profile): Do not
121         return early for BUILT_IN_MEMPCPY.
122
123 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
124
125         * calls.c (expand_call): Don't use callgraph to increase
126         preferred_stack_boundary.
127
128         * cgraph.h (cgraph_rtl_info): Use unsigned on
129         preferred_incoming_stack_boundary.
130
131         * final.c (rest_of_clean_state): Use unsigned on
132         preferred_stack_boundary.
133
134 2008-05-09  Tom Tromey  <tromey@redhat.com>
135
136         PR preprocessor/22231:
137         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
138         proceeding.
139
140 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
141
142         PR tree-optimization/36129
143         * tree-ssa-ccp.c: Include value-prof.h.
144         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
145         built-in function was folded to a constant.
146         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
147
148 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
149             Sebastian Pop  <sebastian.pop@amd.com>
150
151         * tree-scalar-evolution.c: Document instantiate_scev.
152         (instantiate_parameters_1): Renamed instantiate_scev_1.
153         Don't use the same loop for instantiation_loop and evolution_loop.
154         (instantiate_scev): New.
155         (instantiate_parameters): Moved...
156         (resolve_mixers): Update call to instantiate_scev_1 to pass the
157         same loop twice.  Maintains the semantics for this function.
158         * tree-scalar-evolution.h (instantiate_scev): Declare.
159         (instantiate_parameters): ...here.  Now static inline.
160         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
161         instead of resolve_mixers.
162
163 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
164
165         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
166
167 2008-05-09  Tomas Bily  <tbily@suse.cz>
168
169         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
170         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
171         * tree-ssa-structalias.c (get_constraint_for): Likewise.
172         * c-common.c (c_common_truthvalue_conversion): Likewise.
173         * tree-object-size.c (compute_object_offset): Likewise.
174         * tree-inline.c (estimate_num_insns_1): Likewise.
175         * varasm.c (const_hash_1, compare_constant, copy_constant)
176         (compute_reloc_for_constant, output_addressed_constants)
177         (initializer_constant_valid_p): Likewise.
178         * c-omp.c (check_omp_for_incr_expr): Likewise.
179         * gimplify.c (gimplify_expr): Likewise.
180         * c-typeck.c (c_finish_return): Likewise.
181         * tree-vectorizer.c (supportable_widening_operation)
182         (supportable_narrowing_operation): Likewise.
183         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
184         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
185         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
186         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
187         (descr_info_loc): Likewise.
188         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
189         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
190         (fold_unary): Likewise.
191         * builtins.c (get_pointer_alignment): Likewise.
192         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
193         (instantiate_parameters_1): Likewise.
194         * tree.c (expr_align, stabilize_reference): Likewise.
195         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
196         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
197         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
198         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
199         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
200         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
201         Likewise.
202         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
203         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
204         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
205         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
206         (forward_propagate_comparison)
207         (tree_ssa_forward_propagate_single_use_vars): Likewise.
208         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
209         * emit-rtl.c (component_ref_for_mem_expr)
210         (set_mem_attributes_minus_bitpos): Likewise.
211         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
212         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
213         Likewise.
214         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
215         (build_function_call, pointer_diff, build_compound_expr)
216         (c_finish_return): Likewise.
217         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
218         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
219         Likewise.
220         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
221         * expr.c (is_aligning_offset): Likewise.
222         * tree-ssa-alias.c (is_escape_site): Likewise.
223         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
224         (check_all_va_list_escapes): Likewise.
225         * tree-ssa-loop-ivopts.c (determine_base_object)
226         (determine_common_wider_type): Likewise.
227         * dojump.c (do_jump): Likewise.
228         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
229         * tree-gimple.c (is_gimple_cast): Likewise.
230         * fold-const.c (decode_field_reference, )
231         (fold_sign_changed_comparison, fold_unary, fold_comparison)
232         (fold_binary): Likewise.
233         * tree-ssa-alias-warnings.c (find_alias_site_helper)
234         (already_warned_in_frontend_p): Likewise.
235         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
236         * tree.c (really_constant_p, get_unwidened): Likewise.
237         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
238         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
239         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
240         Likewise.
241         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
242         CONVERT_EXPR_P.
243         (CONVERT_EXPR_P): Define.
244         (CASE_CONVERT): Define.
245         
246 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
247
248         PR middle-end/36117
249         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
250         (delete_unmarked_insns): When deleting a call, call
251         delete_unreachable_blocks.
252         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
253         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
254
255 2008-05-08  Richard Guenther  <rguenther@suse.de>
256
257         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
258         (-ftree-salias): Likewise.
259         (salias-max-implicit-fields): Remove param documentation.
260         (salias-max-array-elements): Likewise.
261         * tree-pass.h (pass_create_structure_vars): Remove.
262         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
263         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
264         * tree-ssa-alias.c (create_structure_vars): Remove.
265         (gate_structure_vars): Likewise.
266         (pass_create_structure_vars): Likewise.
267         (gate_build_alias): Likewise.
268         (pass_build_alias): Adjust to run always and dump the function.
269         * common.opt (ftree-salias): Hide.
270         * passes.c (init_optimization_passes): Remove
271         pass_create_structure_vars, adjust comment.
272         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
273         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
274         * opts.c (decode_options): Do not set flag_tree_salias.
275         (common_handle_option): Add OPT_ftree_salias to the backward
276         compatibility section.
277
278 2008-05-08  Richard Guenther  <rguenther@suse.de>
279
280         * tree-flow-inline.h (var_can_have_subvars): Move ...
281         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
282         * tree-flow.h (var_can_have_subvars): Remove.
283         (push_fields_onto_fieldstack): Remove.
284         (sort_fieldstack): Likewise.
285         (struct fieldoff): Move ...
286         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
287         alias_set and base_for_components fields.
288         (sort_fieldstack): Make static.
289         (push_fields_onto_fieldstack): Likewise.  Remove code that
290         handles anything but RECORD_TYPEs.  Remove alias_set and
291         base_for_components handling.
292         (create_variable_info_for): Adjust.
293
294 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
295
296         * common.opt (Wframe-larger-than=): Shorten the help message
297         to one line.
298         * doc/invoke.texi (Wframe-larger-than=): Add more description.
299
300 2008-05-08  Rafael Espindola  <espindola@google.com>
301
302         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
303         trap.
304         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
305         trap and that both operands are gimple values.
306         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
307         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
308         is a fp operation.
309
310 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
311
312         * read-rtl.c (join_c_conditions): Return the first string if the
313         two strings are equal.
314
315 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
316
317         * gensupport.h (pred_data): Add a "num_codes" field.
318         (add_predicate_code): Declare.
319         * gensupport.c (add_predicate_code): New function.
320         (std_pred_table): Add an "allows_const_p" field.
321         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
322         Remove the (incomplete) list of such codes from the codes field.
323         (init_predicate_table): Use add_predicate_code.  Add all
324         RTX_CONST_OBJs if allows_const_p is true.
325         * genrecog.c (process_define_predicate): Use add_predicate_code.
326
327 2008-05-08  David Daney  <ddaney@avtrex.com>
328             Richard Sandiford  <rsandifo@nildram.co.uk>
329         
330         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
331         special case of constant zero operands.
332         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
333         old and new values.  Special case constant zero values.
334         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
335         fails.
336         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
337         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
338
339 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
340
341         PR target/36090
342         * simplify-rtx.c (simplify_plus_minus): Create CONST of
343         similar RTX_CONST_OBJ before CONST_INT.
344
345 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
346
347         * stmt.c (expand_stack_restore): Change sa mode if needed.
348
349 2008-05-08  Richard Guenther  <rguenther@suse.de>
350
351         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
352         return type to bool.
353         (ix86_sol10_return_in_memory): Likewise.
354         (ix86_i386elf_return_in_memory): Likewise.
355         (ix86_i386interix_return_in_memory): Likewise.
356         * config/i386/i386.c (ix86_return_in_memory): Likewise.
357         (ix86_sol10_return_in_memory): Likewise.
358         (ix86_i386elf_return_in_memory): Likewise.
359         (ix86_i386interix_return_in_memory): Likewise.
360
361 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
362
363         PR bootstrap/36180
364         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
365         fndecl argument.
366         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
367         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
368         declared in front.
369
370 2008-05-08  Richard Guenther  <rguenther@suse.de>
371
372         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
373         * tree-data-ref.h (struct dr_alias): Remove subvars field.
374         (DR_SUBVARS): Remove.
375         * tree-dfa.c (dump_subvars_for): Remove.
376         (debug_subvars_for): Likewise.
377         (dump_variable): Do not dump subvars.
378         (remove_referenced_var): Do not remove subvars.
379         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
380         (lookup_subvars_for_var): Remove.
381         (get_subvars_for_var): Likewise.
382         (get_subvars_at): Likewise.
383         (get_first_overlapping_subvar): Likewise.
384         (overlap_subvar): Likewise.
385         * tree-flow.h (subvar_t): Remove.
386         (struct var_ann_d): Remove subvars field.
387         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
388         argument.  Remove special handling of SFTs.
389         (compute_tag_properties): Likewise.
390         (set_initial_properties): Likewise.
391         (compute_call_clobbered): Likewise.
392         (count_mem_refs): Likewise.
393         (compute_memory_partitions): Likewise.
394         (compute_flow_insensitive_aliasing): Likewise.
395         (setup_pointers_and_addressables): Likewise.
396         (new_type_alias): Likewise.
397         (struct used_part): Remove.
398         (used_portions): Likewise.
399         (struct used_part_map): Likewise.
400         (used_part_map_eq): Likewise.
401         (used_part_map_hash): Likewise.
402         (free_used_part_map): Likewise.
403         (up_lookup): Likewise.
404         (up_insert): Likewise.
405         (get_or_create_used_part_for): Likewise.
406         (create_sft): Likewise.
407         (create_overlap_variables_for): Likewise.
408         (find_used_portions): Likewise.
409         (create_structure_vars): Likewise.
410         * tree.def (STRUCT_FIELD_TAG): Remove.
411         * tree.h (MTAG_P): Adjust.
412         (struct tree_memory_tag): Remove base_for_components and
413         unpartitionable flags.
414         (struct tree_struct_field_tag): Remove.
415         (SFT_PARENT_VAR): Likewise.
416         (SFT_OFFSET): Likewise.
417         (SFT_SIZE): Likewise.
418         (SFT_NONADDRESSABLE_P): Likewise.
419         (SFT_ALIAS_SET): Likewise.
420         (SFT_UNPARTITIONABLE_P): Likewise.
421         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
422         (union tree_node): Remove sft field.
423         * alias.c (get_alias_set): Remove special handling of SFTs.
424         * print-tree.c (print_node): Remove handling of SFTs.
425         * tree-dump.c (dequeue_and_dump): Likewise.
426         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
427         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
428         * tree-predcom.c (set_alias_info): Do not set subvars.
429         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
430         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
431         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
432         (add_vars_for_offset): Remove.
433         (add_virtual_operand): Remove special handling of SFTs.
434         (add_call_clobber_ops): Likewise.
435         (add_call_read_ops): Likewise.
436         (get_asm_expr_operands): Likewise.
437         (get_modify_stmt_operands): Likewise.
438         (get_expr_operands): Likewise.
439         (add_to_addressable_set): Likewise.
440         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
441         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
442         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
443         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
444         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
445         (tree_node_structure): Likewise.
446         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
447         handling of SFTs.
448         (find_what_p_points_to): Likewise.
449
450 2008-05-08  Sa Liu  <saliu@de.ibm.com>
451
452         * config/spu/spu.md: Fixed subti3 pattern.
453
454 2008-05-08  Richard Guenther  <rguenther@suse.de>
455
456         PR middle-end/36154
457         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
458         sure to create a representative for trailing arrays for PTA.
459
460 2008-05-08  Richard Guenther  <rguenther@suse.de>
461
462         PR middle-end/36172
463         * fold-const.c (operand_equal_p): Two objects which types
464         differ in pointerness are not equal.
465
466 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
467
468         * calls.c (compute_argument_block_size): Add argument tree fndecl.
469         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
470         (emit_library_call_value_1): Add new variable fndecl initialized by
471         NULL_TREE. It should be the decl type of orgfun, but this information
472         seems not to be available here, so it uses the default calling abi.
473         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
474         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
475         by TARGET_RETURN_IN_MEMORY.
476         * config/i386/i386-interix.h: Likewise.
477         * config/i386/i386.h: Likewise.
478         * config/i386/i386elf.h: Likewise.
479         * config/i386/ptx4-i.h: Likewise.
480         * config/i386/sol2-10.h: Likewise.
481         * config/i386/sysv4.h: Likewise.
482         * config/i386/vx-common.h: Likewise.
483         * config/cris/cris.h: Removed #if 0 clause.
484         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
485         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
486         argument.
487         (ix86_sol10_return_in_memory): Likewise.
488         (ix86_i386elf_return_in_memory): New.
489         (ix86_i386interix_return_in_memory): New.
490         * config/mt/mt-protos.h (mt_return_in_memory): New.
491         * config/mt/mt.c: Likewise.
492         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
493         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
494         * config/bfin/bfin.h: Likewise.
495         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
496         argument.
497         * config/bfin/bfin.c: Likewise.
498         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
499         * config/alpha/unicosmk.h: Likewise.
500         * config/i386/cygming.h: Likewise.
501         * config/iq2000/iq2000.h: Likewise.
502         * config/mips/mips.h: Likewise.
503         * config/mn10300/mn10300.h: Likewise.
504         * config/rs6000/rs6000.h: Likewise.
505         * config/score/score.h: Likewise.
506         * config/spu/spu.h: Likewise.
507         * config/v850/v850.h: Likewise.
508         * defaults.h: Likewise.
509         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
510         * expr.c (emit_block_move): Adjust use of
511         OUTGOING_REG_PARM_STACK_SPACE.
512         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
513         OUTGOING_REG_PARM_STACK_SPACE.
514         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
515
516 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
517
518         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
519         on OMP_RETURN for OMP_FOR.
520
521         PR debug/35896
522         * dwarf2out.c (dw_expand_expr, common_check): Removed.
523         (fortran_common): New function.
524         (gen_variable_die): Call fortran_common instead of common_check,
525         adjust for it returning tree instead of rtx.  Formatting.
526
527 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
528
529         PR rtl/7335
530         PR rtl/33826
531         * see.c (see_copy_insn): Copy new pure const attributes for new call.
532         * c-decl.c (merge_decls): Ditto.
533         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
534         to RTL_CONST_OR_PURE_CALL_P.
535         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
536         Initialized DECL_LOOPING_CONST_PURE.
537         (process_call_operands): Set tree_side_effects properly.
538         * tree.h (TREE_READONLY_DECL_P): Removed.
539         (DECL_IS_PURE): Renamed to DECL_PURE_P.
540         (DECL_LOOPING_OR_CONST_P): New macro.
541         (struct tree_function_decl): Added looping_const_or_pure_p.
542         (ECF_*) Renumbered.
543         (ECF_LOOPING_OR_CONST_P): New macro.
544         * rtlanal.c (pure_const_p): Removed.
545         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
546         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
547         to RTL_CONST_CALL_P.
548         * ipa-pure-const.c (pure_const_state_e): Added looping field.
549         (check_decl, check_tree, check_call, scan_function): Initialize
550         looping.
551         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
552         (static_execute): Set looping true for recursive functions.
553         Undo setting state to IPA_NEITHER for recursive functions.
554         * cse.c (cse_insn): 
555         * ifcvt.c (noce_can_store_speculate_p): Changed
556         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or 
557         RTL_CONST_OR_PURE_CALL_P.
558         * dse.c (scan_insn): Ditto.
559         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
560         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
561         RTL_CONST_OR_PURE_CALL_P.
562         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
563         pure_call_p to RTL_CONST_CALL_P.
564         * gimplify.c (gimplify_call_expr): Clear side effects for
565         non-looping pure and constant calls.
566         * calls.c (emit_call_1): Set rtl flags from ecf flags.
567         (flags_from_decl_or_type): Set ecf flags from decl flags.
568         (initialize_argument_information): Turn off
569         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
570         Change const to pure if callee_copies is true rather than just
571         turning off const.
572         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
573         way of marking pure calls.
574         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
575         Remove hack that was supposed to fix pr7335 and remove old
576         way of marking pure calls.
577         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
578         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
579         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
580         RTL_CONST_OR_PURE_CALL_P.
581         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
582         * loop-invariant.c (find_exits, find_invariant_bb): Changed
583         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
584         * sched-deps.c (schedule_analyze): Ditto.
585         * rtl.h (struct rtx_def): Use call field, unchanging field, and
586         return_val field of calls to represent pure and const function info.
587         (CONST_OR_PURE_CALL_P): Deleted macro.
588         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
589         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
590         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
591         TREE_READONLY.
592         * tree-optimize.c (execute_fixup_cfg): Added test for
593         ECF_LOOPING_CONST_OR_PURE.
594         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
595         DECL_PURE_P.
596         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
597         effects for looping pure or const calls.
598         (verify_gimple_expr): Added verification code. 
599         * config/alpha/alpha.c (alpha_legitimize_address,
600         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
601         RTL_CONST_CALL_P.
602         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
603         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
604         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
605         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
606         RTL_CONST_OR_PURE_CALL_P.
607         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
608         and const calls to be deleted.
609
610 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
611
612         PR target/35714
613         * config/i386/mmx.md (mmx_subv2sf3): New expander.
614         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
615         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
616         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
617         to handle nonimmediate operands.
618         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
619         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
620         to handle nonimmediate operands.
621         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
622         (mmx_pmulhrwv4hi3): New expander.  Use
623         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
624         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
625         (sse2_umulv1siv1di3): New expander.  Use
626         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
627         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
628         (mmx_eq<mode>3): New expander.  Use
629         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
630         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
631         (mmx_uavgv8qi3): New expander.  Use
632         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
633         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
634         (mmx_uavgv4hi3): New expander.  Use
635         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
636
637         * config/i386/sse.md
638         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
639         to handle nonimmediate operands.
640         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
641         to handle nonimmediate operands.
642         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
643         to handle nonimmediate operands.
644         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
645         to handle nonimmediate operands.
646         (sse2_unpckhpd_exp): New expander.  Use
647         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
648         (sse2_unpcklpd_exp): New expander.  Use
649         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
650         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
651         to handle nonimmediate operands.
652         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
653         to handle nonimmediate operands.
654         (*sse2_<plusminus_insn><mode>3): Rename from
655         sse2_<plusminus_insn><mode>3 insn pattern.
656         (sse2_<plusminus_insn><mode>3): New expander.  Use
657         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
658         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
659         (sse2_umulv2siv2di3): New expander.  Use
660         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
661         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
662         (sse4_1_mulv2siv2di3): New expander.  Use
663         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
664         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
665         (sse2_pmaddwd): New expander.  Use
666         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
667         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
668         (sse2_eq<mode>3): New expander.  Use
669         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
670         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
671         (sse4_1_eqv2di3): New expander.  Use
672         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
673         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
674         (sse2_uavgv16qi3): New expander.  Use
675         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
676         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
677         (sse2_uavgv16qi3): New expander.  Use
678         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
679         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
680         (sse2_uavgv8hi3): New expander.  Use
681         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
682         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
683         (ssse3_pmulhrswv8hi3): New expander.  Use
684         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
685         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
686         (ssse3_pmulhrswv4hi3): New expander.  Use
687         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
688
689         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
690         (<sse>_vmmul<mode>3): Ditto.
691         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
692         (divv2df3): Ditto.
693         (ssse3_pmaddubsw128): Use register_operand for operand 1.
694         (ssse3_pmaddubsw): Ditto.
695
696         * config/i386/i386.c (struct_builtin_description)
697         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
698         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
699         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
700         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
701         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
702         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
703         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
704         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
705         (ix86_fixup_binary_operands): Assert that src1
706         and src2 must have the same mode when swapped.
707         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
708         and ix86_binary_operator_ok.  Do not force operands in registers
709         when optimizing.
710
711 2008-05-07  Jan Hubicka  <jh@suse.cz>
712
713         * cgraph.c (dump_cgraph_node): Update.
714         * cgraph.h (cgraph_local_info): Break out inline summary.
715         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
716         hook.
717         * ipa-inline (inline_summary): New accestor function.
718         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
719         cgraph_decide_inlining, compute_inline_parameters): Update.
720         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
721
722 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
723
724         Cleanup ColdFire scheduling support and add V4 pipeline model.
725
726         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
727         (define_attr cpu): Add cfv4 value.
728         (define_attr type, define_attr type1): Merge into a single 'type'
729         attribute.  Update all uses.
730         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
731         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
732         Update all uses.
733         (define_attr opx_mem, define_attr opy_mem): Remove.
734         (define_attr op_mem): Clean up, update comment.
735         (define_attr size): Use specific values instead of general int.
736         (define_attr guess, define_attr split): Remove.  Update all uses.
737         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
738         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
739         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
740         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
741         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
742         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
743         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
744         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
745         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
746         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
747         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
748         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
749         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
750         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
751         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
752         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
753         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
754         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
755         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
756         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
757         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
758         Update or set attributes.
759         (stack_tie): New fake instruction.
760
761         * config/m68k/m68k.h (TUNE_CFV4): New macro.
762         (m68k_sched_attr_size): Update declaration.
763         (m68k_sched_attr_type2): Remove.
764         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
765         Declare new bypass predicates.
766
767         * config/m68k/m68k.c (m68k_sched_issue_rate,
768         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
769         implementations.
770         (TARGET_SCHED_ISSUE_RATE,
771         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
772         (override_options): Handle scheduling for ColdFire V4 core.
773         (m68k_expand_prologue): Emit stack_tie.
774         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
775         'OP_TYPE_FPN'.  Update all uses.
776         (sched_guess_p): Remove.
777         (sched_address_type): Handle symbolic addresses.
778         (sched_get_operand): New static function.
779         (sched_operand_type): Merge into sched_attr_op_type.
780         (sched_attr_op_type): Handle FP registers, handle quick constants,
781         update.
782         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
783         (m68k_sched_attr_size): Update.  Move logic to ...
784         (sched_get_attr_size_int): New static function.
785         (sched_get_opxy_mem_type): New static function.
786         (m68k_sched_attr_op_mem): Update.
787         (m68k_sched_attr_type2): Remove.
788         (sched_cfv4_bypass_data): New static variable.
789         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
790         (m68k_sched_issue_rate): Implement scheduler hook.
791         (struct _sched_ib: enabled_p): New field.
792         (m68k_sched_variable_issue): Update.  Handle V4.
793         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
794         sched_dump_class_func_t, sched_dump_split_class,
795         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
796         sched_dump_dfa_class, m68k_sched_dump): Remove.
797         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
798         hook.
799         (m68k_sched_init_global): Remove statisctics dumping, introduce
800         sanity check that all instructions have pipeline reservations.  Handle
801         ColdFire V4 core.
802         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
803         Handle ColdFire V4 core.
804         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
805         New static functions.
806         (m68k_sched_address_bypass_p): New bypass predicate.
807         (sched_get_indexed_address_scale): New static function.
808         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
809
810         * cf.md: Update comments.
811         (define_attr type2): Remove.  Use 'type' attribute instead.
812         Update all uses.
813         (cf_ib): Rename to cfv123_ib.  Update all uses.
814         (cf_oep): Rename to cfv123_oep.  Update all uses.
815         (cf_chr): Rename to cfv123_chr.  Update all uses.
816         (cf_mem): Rename to cfv123_mem.  Update all uses.
817         (cf_mac): Move to more appropriate place.
818         (cfv123_guess): New automaton and cpu_unit.
819         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
820         Update uses of 'size' attribute.  Handle before reload scheduling.
821         (cfv123_guess): New dummy reservation for unhandled instructions.
822         (cfv4_*): Pipeline description of ColdFire V4 core.
823         (ignore): New reservation to handle 'ignore' type.
824
825 2008-05-07  Ian Lance Taylor  <iant@google.com>
826
827         PR middle-end/36013
828         * gimplify.c (find_single_pointer_decl_1): Don't look through
829         indirections.
830         (find_single_pointer_decl): Adjust comments.
831
832 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
833
834         PR middle-end/36137
835         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
836         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
837
838         PR middle-end/36106
839         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
840         integral type rather than floating point, then VIEW_CONVERT_EXPR
841         to the floating point type.
842
843 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
844
845         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
846         TFmode op0 to register.
847
848 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
849
850         * c-decl.c (grokdeclarator): Comment typo.
851
852 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
853
854         * tree-flow.h: Remove prototype for computed_goto_p.
855         * tree-cfg.c (computed_goto_p): Make static.
856
857 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
858
859         PR target/35657
860         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
861         (contains_aligned_value_p): This.  Handle _Decimal128.
862         (ix86_function_arg_boundary): Only align _Decimal128 to its
863         natural boundary and handle it properly.
864
865 2008-05-06  Martin Jambor  <mjambor@suse.cz>
866
867         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
868         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
869         (ipcp_method_set_orig_node): Removed.
870         (ipcp_cval_get_cvalue_type): Removed.
871         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
872         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
873         (ipcp_cval_set_cvalue_type): Removed.
874         (ipcp_cval_get_cvalue): Removed.
875         (ipcp_cval_set_cvalue): Removed.
876         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
877         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
878         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
879         (ipcp_cval_meet): Renamed to ipa_lattice_meet
880         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
881         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
882         (ipcp_get_ith_lattice): Changed parameters.
883         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
884         (ipcp_lattice_from_jfunc): Changed parameters.
885         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
886         (ipcp_method_cval_print): Added temporary variable info.
887         (ipcp_redirect): Removed already unused local variable caller.
888         (ipcp_redirect): New temporary variable orig_callee_info
889         (ipcp_redirect): Removed newly unused local variable callee.
890         (ipcp_redirect): Removed (a bit confusing) local variable type.
891         (ipcp_insert_stage): Added local variable info.
892         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters 
893         renamed too
894         (ipcp_formal_create): Removed.
895         (ipcp_method_cval_set): Removed.
896         (ipcp_propagate_stage): Renamed lattice variables.
897         (ipcp_method_cval_set_cvalue_type): Removed.
898         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
899         (ipcp_print_all_lattices): Changed printed strings to refer to 
900         lattices rather than cvals.
901         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
902         (ipcp_propagate_const): Changed formal parameters.
903         (build_const_val): Changed formal parameters.
904         (ipcp_insert_stage): Removed useless variable cvalue
905         (build_const_val): Changed formal parameters.
906         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
907         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
908         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
909         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
910         (ipcp_print_func_profile_counts): Changed string from "method" to 
911         "function"
912         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
913         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
914         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
915         (ipcp_structures_print): Renamed to ipcp_print_all_structures
916         (ipcp_profile_print): Renamed to ipcp_print_profile_data
917         (ipcp_lat_is_const): Changed parameters and made inline.
918         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
919         (ipcp_redirect): Renamed to ipcp_need_redirect_p
920         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using 
921         the predicate condition directly
922         (ipcp_propagate_stage): Added local variable args. Removed local
923         variable callee.  (Both are mere code simplifications.)
924         (ipcp_method_dont_insert_const): Renamed to
925         ipcp_node_not_modifiable_p.
926         (ipcp_node_not_modifiable_p): Made inline.
927         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
928         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
929         (ipcp_print_all_lattices): Removed variable cvalue
930         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
931         Updated comments.
932
933 2008-05-06  Olivier Hainque  <hainque@adacore.com>
934
935         * tree-sra.c (try_instantiate_multiple_fields): Early return
936         if field has POINTER_TYPE.
937
938 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
939
940         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
941         by using 'q' specifier for instruction.
942         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
943
944 2008-05-06  Anatoly Sokolov <aesok@post.ru>
945
946         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
947         Change mode of zero_extract from QImode to HImode.
948         (sign bit tests peepholes): (Ditto.).
949
950 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
951
952         * config/i386/mmx.md: Remove double backslashes from asm templates.
953         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
954         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
955         to handle nonimmediate operands.
956         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
957         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
958         to handle nonimmediate operands.
959         (*mmx_<code>v2sf3_finite): New insn pattern.
960         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
961         (mmx_<code>v2sf3): New expander.  Use
962         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
963         (mmx_<plusminus_insn><mode>3): New expander.  Use
964         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
965         (*mmx_<plusminus_insn><mode>3): New insn pattern.
966         (mmx_add<mode>3): Removed.
967         (mmx_ssadd<mode>3): Ditto.
968         (mmx_usadd<mode>3): Ditto.
969         (mmx_sub<mode>3): Ditto.
970         (mmx_sssub<mode>3): Ditto.
971         (mmx_ussub<mode>3): Ditto.
972         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
973         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
974         to handle nonimmediate operands.
975         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
976         insn pattern.
977         (mmx_smulv4hi3_highpart): New expander.  Use
978         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
979         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
980         insn pattern.
981         (mmx_umulv4hi3_highpart): New expander.  Use
982         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
983         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
984         (mmx_<code>v4hi3): New expander.  Use
985         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
986         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
987         (mmx_<code>v8qi3): New expander.  Use
988         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
989         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
990         (mmx_<code><mode>3): New expander.  Use
991         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
992
993 2008-05-05  Jan Hubicka  <jh@suse.cz>
994
995         PR tree-optimization/36118
996         * passes.c (pass_init_dump_file): Fix dump header.
997
998 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
999
1000         PR middle-end/36141
1001         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
1002         VCE for function decls.
1003
1004 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1005
1006         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
1007
1008 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1009
1010         * config/i386/i386.md (sat_plusminus): New.
1011         (plusminus_insn): Likewise.
1012         (plusminus_mnemonic): Likewise.
1013         (addsub): Removed.
1014         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
1015         (*<addsub><mode>3_cc_overflow): Renamed to ...
1016         (*<plusminus_insn><mode>3_cc_overflow): This.
1017         (*<addsub>si3_zext_cc_overflow): Renamed to ...
1018         (*<plusminus_insn>si3_zext_cc_overflow): This.
1019
1020         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
1021         (<plusminus_insn><mode>3): This.
1022         (*<addsub><mode>3): Renamed to ...
1023         (*<plusminus_insn><mode>3): This.
1024         (<sse>_vm<addsub><mode>3): Renamed to ...
1025         (<sse>_vm<plusminus_insn><mode>3): This.
1026         (sse3_h<addsub>v4sf3): Renamed to ...
1027         (sse3_h<plusminus_insn>v4sf3): This.
1028         (sse3_h<addsub>v2df3): Renamed to ...
1029         (sse3_h<plusminus_insn>v2df3): This.
1030         (<plusminus_insn><mode>3): New.
1031         (*<plusminus_insn><mode>3): Likewise.
1032         (sse2_<plusminus_insn><mode>3): Likewise.
1033         (add<mode>): Removed.
1034         (*add<mode>3): Likewise.
1035         (sse2_ssadd<mode>3): Likewise.
1036         (sse2_usadd<mode>3): Likewise.
1037         (sub<mode>3): Likewise.
1038         (*sub<mode>3): Likewise.
1039         (sse2_sssub<mode>3): Likewise.
1040         (sse2_ussub<mode>3): Likewise.
1041
1042 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
1043
1044         * gthr-single.h: Add in required interface elements as per gthr.h.
1045         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
1046         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
1047         Generalize UNUSED macro. 
1048         (__gthread_once): Add.
1049         (__gthread_key_create): Add.
1050         (__gthread_key_delete): Add.
1051         (__gthread_getspecific): Add.
1052         (__gthread_setspecific): Add.
1053         
1054 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
1055
1056         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
1057         the same size types for the indirect reference on the rhs, then
1058         create a VCE.
1059
1060 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
1061
1062         * config/i386/i386.md
1063         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
1064         one insn template instead of template series.
1065         (*xordi_1_rex64): Ditto.
1066         (*xordi_2_rex64): Ditto.
1067
1068 2008-05-05  Ira Rosen  <irar@il.ibm.com>
1069
1070         PR tree-optimization/36119
1071         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
1072         in case of SLP.
1073
1074 2008-06-04  Jan Hubicka  <jh@suse.cz>
1075
1076         tree-optimization/36100
1077         * tree-pass.h (pass_O0_always_inline): Declare.
1078         * ipa-inline.c (inline_transform): Remove dead code.
1079         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
1080         pass_O0_always_inline): New.
1081         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
1082
1083 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
1084
1085         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
1086         mnemonic in this_param move for TARGET_64BIT.
1087
1088 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
1089
1090         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
1091         (*strmovsi_rex_1): Ditto.
1092         (*strsetsi_1): Ditto.
1093         (*strsetsi_rex_1): Ditto.
1094
1095         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
1096         adddicc expanders using SWI mode iterator.
1097
1098 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
1099
1100         PR target/36121
1101         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
1102         argument handling.
1103
1104 2008-05-04  David S. Miller  <davem@davemloft.net>
1105
1106         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
1107         (sparc*-*-linux*): Use linux.h in tm_file.
1108         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
1109         compiler defaulting to 32-bit.
1110         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
1111         no longer needed.
1112         * config/sparc/linux.h: Remove definitions now obtained
1113         properly from linux.h
1114         * config/sparc/linux64.h: Likewise.
1115         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
1116         don't want this setting for 32-bit builds in a biarch compiler.
1117         * doc/install.texi: Add sparc-linux to list of targets
1118         supporting --enable-targets=all.
1119
1120 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
1121
1122         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
1123
1124 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
1125
1126         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
1127         after V4SI_FTYPE_V8HI.
1128         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
1129         case V4SI_FTYPE_V2DF.
1130
1131 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
1132
1133         * doc/invoke.texi (max-flow-memory-locations): Removed.
1134         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
1135         
1136 2008-05-03  Richard Guenther  <rguenther@suse.de>
1137
1138         PR middle-end/34973
1139         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
1140
1141 2008-05-02  David S. Miller  <davem@davemloft.net>
1142
1143         * config.gcc (need_64bit_hwint): Document libcpp dependency.
1144
1145 2008-05-02  Simon Baldwin <simonb@google.com>
1146
1147         PR bootstrap/36108
1148         * c-common.h (warn_array_subscript_range): Removed.
1149         * c-common.c (warn_array_subscript_range): Ditto.
1150         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
1151         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
1152
1153 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
1154
1155         * config/i386/i386.c (ix86_special_builtin_type): New.
1156         (bdesc_special_args): Likewise.
1157         (ix86_expand_special_args_builtin): Likewise.
1158         (ix86_init_mmx_sse_builtins): Updated.
1159         (ix86_expand_builtin): Updated.
1160         (ix86_expand_store_builtin): Removed.
1161         (ix86_expand_unop_builtin): Likewise.
1162
1163         * config/i386/mm3dnow.h (__v2sf): Moved to ...
1164         * config/i386/mmintrin.h (__v2sf): Here.
1165
1166         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
1167         const __v2sf.
1168         (_mm_loadl_pi): Likewise.
1169         (_mm_storeh_pi): Replace __v2si with __v2sf.
1170         (_mm_storel_pi): Likewise.
1171
1172         * doc/extend.texi: Correct __builtin_ia32_loadhps,
1173         __builtin_ia32_loadlps, __builtin_ia32_storehps,
1174         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
1175         __builtin_ia32_loadlpd.
1176
1177 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
1178
1179         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
1180         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
1181         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
1182         (ix86_init_mmx_sse_builtins): Updated.
1183         (ix86_expand_args_builtin): Likewise.
1184         (ix86_expand_builtin): Likewise.
1185         (ix86_expand_unop1_builtin): Renamed to ...
1186         (ix86_expand_unop_vec_merge_builtin): This.
1187
1188 2008-05-01  Jan Hubicka  <jh@suse.cz>
1189
1190         PR bootstrap/36100
1191         * ipa-inline.c (inline_generate_summary): Make static.
1192         (inline_transform): Do not call inlining at -O0; make static.
1193         * passes.c (execute_todo): Add sanity check.
1194         (execute_one_ipa_transform_pass): Execute proper flags.
1195
1196 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
1197
1198         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
1199         (DECL_NONADDRESSABLE_P): Likewise.
1200         * alias.c (record_component_aliases): Fix comment.
1201
1202 2008-05-01  Simon Baldwin <simonb@google.com>
1203
1204         * c-common.h (warn_array_subscript_range): New function.
1205         * c-common.c (warn_array_subscript_range): Ditto.
1206         * tree-vrp.c (check_array_ref): Corrected code to agree with
1207         comment, ignoring only arrays of size 0 or size 1.
1208         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
1209
1210 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1211
1212         * config/i386/i386.c (ix86_builtin_type): Replace
1213         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
1214         (bdesc_args): Updated.
1215         (ix86_init_mmx_sse_builtins): Likewise.
1216         (ix86_expand_args_builtin): Likewise.
1217
1218         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
1219         with __v1di.
1220
1221         * doc/extend.texi: Correct __builtin_ia32_palignr.
1222
1223 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1224
1225         PR target/36095
1226         * config/i386/i386.c (bdesc_crc32): Removed.
1227         (ix86_expand_crc32): Likewise.
1228         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
1229         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
1230         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
1231         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
1232         UINT_FTYPE_UINT_UCHAR.
1233         (bdesc_args): Updated. Add crc32 builtins.
1234         (ix86_init_mmx_sse_builtins): Updated.
1235         (ix86_expand_args_builtin): Updated to support subreg.
1236
1237         * doc/extend.texi: Correct __builtin_ia32_crc32di.
1238
1239 2008-05-01  Jan Hubicka  <jh@suse.cz>
1240
1241         * tree-pass.h (opt_pass): Add IPA_PASS.
1242         (varpool_node, cgraph_node): Forward declare.
1243         (ipa_opt_pass): Define.
1244         (pass_ipa_inline): Turn into ipa_opt_pass.
1245         (pass_apply_inline): Remove.
1246         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
1247         (apply_inline): Turn into ....
1248         (inline_transform): ... this one.
1249         (inline_generate_summary): New function.
1250         (pass_apply_inline): Remove.
1251         * function.h (ipa_opt_pass): Forward declare structure; typedef;
1252         vector.
1253         (struct function): Add ipa_transforms_to_apply.
1254         * passes.c (register_one_dump_file): Work on IPA_PASS.
1255         (init_optimization_passes): Remove pass_inline_parameters and
1256         pass_apply_inline.
1257         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
1258         (execute_one_pass) ... here; apply transforms when possible.
1259         (add_ipa_transform_pass, execute_ipa_summary_asses,
1260         execute_one_ipa_transform_pass): New.
1261         (execute_ipa_pass_list): Update for IPA_PASS type.
1262
1263 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1264
1265         * config/i386/i386.c (ix86_builtin_type): Add
1266         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
1267         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
1268         (bdesc_args): Add SSE4a builtins.
1269         (ix86_init_mmx_sse_builtins): Updated.
1270         (ix86_expand_args_builtin): Likewise.
1271         (ix86_expand_builtin): Likewise.
1272
1273 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1274
1275         * config/i386/i386.c (ix86_builtin_type): Add
1276         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
1277         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
1278         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
1279         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
1280         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
1281         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
1282         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
1283         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
1284         and DI_FTYPE_DI_DI_INT.
1285         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
1286         (ix86_init_mmx_sse_builtins): Updated.
1287         (ix86_expand_args_builtin): Likewise.
1288         (ix86_expand_builtin): Likewise.
1289         (ix86_expand_binop_imm_builtin): Removed.
1290
1291         * doc/extend.texi: Correct __builtin_ia32_palignr128.
1292
1293 2008-04-30  Richard Guenther  <rguenther@suse.de>
1294
1295         PR tree-optimization/32921
1296         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
1297
1298 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
1299
1300         * config/arm/arm.c (arm_unwind_emit): Use
1301         crtl->all_throwers_are_sibcalls instead of
1302         cfun->all_throwers_are_sibcalls.
1303         (arm_output_fn_unwind): Likewise.
1304         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
1305         instead of cfun->uses_pic_offset_table.
1306         (frv_expand_prologue): Likewise.
1307         (frv_frame_pointer_required): Likewise.
1308         (frv_expand_fdpic_call): Likewise.
1309         (frv_emit_movsi): Likewise.
1310         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
1311         cfun->returns_pcc_struct instead of
1312         current_function_returns_pcc_struct.
1313         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
1314         instead of cfun->calls_eh_return.
1315         (m32c_pushm_popm): Likewise.
1316         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
1317         "extern" declaration.
1318
1319 2008-04-30  Richard Guenther  <rguenther@suse.de>
1320
1321         PR tree-optimization/21636
1322         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
1323         constant address.
1324         (evaluate_stmt): Print the likely value.
1325         (ccp_visit_stmt): Avoid excessive vertical spacing.
1326
1327 2008-04-30  Rafael Espindola  <espindola@google.com>
1328
1329         * builtins.c (fold_call_expr): Return realret.
1330         * tree-ssa-threadedge.c
1331         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
1332         __builtin_object_size.
1333
1334 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
1335
1336         * gcc.c (wrapper_string): New variable.
1337         (insert_wrapper): New function.
1338         (execute): New option -wrapper.
1339         * doc/invoke.texi (Overall Options): New driver option -wrapper.
1340
1341 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
1342
1343         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
1344         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
1345         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
1346         from...
1347         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
1348         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
1349         config/rs6000/e500crtres64gprctr.asm,
1350         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
1351         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
1352         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
1353         config/rs6000/e500crtsav64gprctr.asm,
1354         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
1355         config/rs6000/e500crtsavg64gprctr.asm: New files.
1356         * config/rs6000/t-ppccomm: Add build rules for new files.
1357         (LIB2FUNCS_STATIC_EXTRA): Add new files.
1358         * config/rs6000/t-netbsd: Add build rules for new files.
1359         (LIB2FUNCS_STATIC_EXTRA): New variable.
1360         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
1361         (CRTSAVRES_DEFAULT_SPEC): Likewise.
1362         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
1363
1364 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
1365
1366         * config/i386/i386.c (ix86_builtin_type): Add
1367         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
1368         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
1369         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
1370         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
1371         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
1372         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
1373         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
1374         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
1375         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
1376         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
1377         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
1378         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
1379         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
1380         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
1381         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
1382         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
1383         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
1384         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
1385         V1DI_FTYPE_V2SI_V2SI.
1386         (bdesc_2arg): Moved to ...
1387         (bdesc_args): Here.
1388         (ix86_init_mmx_sse_builtins): Updated.
1389         (ix86_expand_args_builtin): Updated.  Take a pointer
1390         to const struct builtin_description.  Handle comparison
1391         builtin functions.
1392         (ix86_expand_sse_compare): Take a new argument for swapping operands.
1393         (ix86_expand_builtin): Updated.
1394
1395         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
1396         (ssse3_pmaddubsw128): This.
1397         (ssse3_pmaddubswv4hi3): Renamed to ...
1398         (ssse3_pmaddubsw): This.
1399
1400         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
1401         (__builtin_ia32_packssdw128): Likewise.
1402         (__builtin_ia32_packuswb128): Likewise.
1403         (__builtin_ia32_pmaddubsw): Likewise.
1404         (__builtin_ia32_pmaddubsw128): Likewise.
1405
1406 2008-04-30  Richard Guenther  <rguenther@suse.de>
1407
1408         PR tree-optimization/14847
1409         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
1410         (recognize_bits_test): Use it.
1411         (recognize_single_bit_test): Likewise.
1412
1413 2008-04-30  Martin Jambor  <mjambor@suse.cz>
1414
1415         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
1416         instead of setting number of formal parameters to zero.
1417         (ipcp_init_stage): Do not set the number of actual parameters to zero 
1418         either.
1419         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
1420         which are called with variable number of arguments.
1421         (ipcp_insert_stage): Explicitely skipping all nodes which are
1422         called with variable number of arguments.
1423         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible 
1424         number of parameters.
1425
1426         * ipa-prop.h (struct ipa_node_params): Added flag
1427         called_with_var_arguments
1428         (ipa_set_param_count): Added.  Changed sole setter to use it.
1429         (ipa_get_param_count): Added.  All readers of param_count
1430         converted to use it instead.
1431         (ipa_set_called_with_variable_arg): Added.
1432         (ipa_is_called_with_var_arguments): Added.
1433         (ipa_get_ith_param): Added.  All readers of param_decls converted
1434         to use it instead.
1435         (ipa_set_cs_argument_count): Added, sole writer to argument_count 
1436         changed to use it. 
1437         (ipa_get_cs_argument_count): Added, all readers of argument_count
1438         changed to cal it.
1439         (ipa_get_ith_jump_func): Added. Accessors of jump values changed 
1440         to use it.
1441         
1442         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
1443         (struct ipcp_lattice): Renamed cval_type to type
1444         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
1445
1446         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
1447         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
1448         (ipcp_insert_stage): Changed the type of variable cvalue to tree
1449         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
1450         (build_const_val): Changed the type of parameter cvalue to tree
1451         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
1452         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
1453         
1454         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called 
1455         constant 
1456
1457         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
1458         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
1459         (ipa_add_method): Renamed to ipa_push_func_to_list
1460         (ipa_remove_method): Renamed to ipa_pop_func_from_list
1461         (ipa_callsite_param_count): Removed.
1462         (ipa_callsite_param_count_set): Removed.
1463         (ipa_callsite_param): Removed.
1464         (ipa_callsite_callee): Removed.
1465         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
1466         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
1467         (ipa_method_formal_count): Removed.
1468         (ipa_method_formal_count_set): Removed.
1469         (ipa_method_get_tree): Removed.
1470         (ipa_method_tree_map_create): Removed.
1471         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
1472         (ipa_create_param_decls_array): Creates the array itself
1473         (ipa_create_param_decls_array): Temporary variable info instead of 
1474         a few dereferences.
1475         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
1476         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
1477         (get_type): Removed.
1478         (ipa_jf_get_info_type): Removed.
1479         (ipa_node_create): Renamed to ipa_create_node_params
1480         (ipa_free): Renamed to ipa_free_all_node_params
1481         (ipa_nodes_create): Renamed to ipa_create_all_node_params
1482         (ipa_edges_create): Renamed to ipa_create_all_edge_args
1483         (ipa_edges_free): Renamed to ipa_free_all_edge_args
1484         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
1485         (ipa_free_all_node_params): Deallocation to jump_functions moved to 
1486         ipa_free_all_edge_args
1487         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
1488         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
1489         (ipa_create_methodlist_node): Removed.
1490         (ipa_methodlist_method): Removed.
1491         (ipa_methodlist_method_set): Removed.
1492         (ipa_methodlist_next_method): Removed.
1493         (ipa_methodlist_next_method_set): Removed.
1494         (ipa_method_is_modified): Removed.
1495         (ipa_method_modify_create): Removed.
1496         (ipa_method_modify_init): Temporary variable info instead of a few 
1497         dereferences.
1498         (ipa_detect_param_modifications): Temporary variable info instead of 
1499         a few dereferences.
1500         (ipa_compute_jump_functions): Temporary variable info instead of 
1501         a few dereferences.
1502         (ipa_method_modify_set): Removed.
1503         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
1504         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather 
1505         than craph_node as the first parameter.
1506         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
1507         (ipa_method_modify_init): Removed.
1508         (ipa_compute_jump_functions): Added a temp variable instead of 
1509         repeatadly dereferencing the cgraph_edge.aux pointer
1510         (ipa_callsite_param_set_type): Removed.
1511         (ipa_compute_jump_functions): i renamed to index and moved to 
1512         an inner block
1513         (ipa_callsite_param_set_info_type_formal): Removed.
1514         (ipa_callsite_param_set_info_type): Removed.
1515         (ipa_callsite_param_map_create): Removed.
1516         (ipa_callsite_tree): Removed.
1517         (ipa_callsite_caller): Removed.
1518         (ipa_pop_func_from_list): return_method removed to return_func
1519
1520         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
1521         prefixed all values with IPA_. Changed all users.
1522         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN, 
1523         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF 
1524         and FORMAL_IPATYPE IPA_PASS_THROUGH. 
1525         (union parameter_info): Renamed to jump_func_value.
1526         (union jump_func_value): Renamed value to constant
1527         (struct ipa_jump_func): Renamed info_type to value
1528         (struct ipa_node): Renamed to ipa_node_params
1529         (struct ipa_node_params): Renamed ipa_arg_num to param_count
1530         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
1531         (struct ipa_node_params): Renamed ipa_mod to modified_flags
1532         (struct ipa_edge): Renamed to ipa_edge_args
1533         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
1534         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
1535         (struct ipa_methodlist): Renamed to ipa_func_list
1536         (struct ipa_func_list): method_p renamed to node, next_method
1537         renamed to next
1538         (ipa_methodlist_p): Removed, switched all users to struct pointer
1539         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
1540
1541 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
1542
1543         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
1544         (rs6000_emit_epilogue): Use backchain to restore only when we
1545         have a large frame.  Make use of frame pointer to restore if we
1546         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
1547
1548 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
1549
1550         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
1551         Add mode to zero_extract.
1552         (sign bit tests peepholes): (Ditto.).
1553
1554 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
1555
1556         * config/i386/i386.c (ix86_builtins): Replace Prescott New
1557         Instructions in comments with SSE3.
1558         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
1559         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
1560         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
1561         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
1562         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
1563         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
1564         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
1565         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
1566         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
1567         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
1568         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
1569         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
1570         (bdesc_sse_args): Renamed to ...
1571         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
1572         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
1573         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
1574         IX86_BUILTIN_FABSQ.
1575         (bdesc_1arg): Moved to ...
1576         (bdesc_args): Here.
1577         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
1578         Instructions in comments with SSE3.
1579         (ix86_expand_sse_operands_builtin): Renamed to ...
1580         (ix86_expand_args_builtin): This.  Updated.
1581         (ix86_expand_unop1_builtin): Update comments.
1582         (ix86_expand_builtin): Updated.
1583
1584 2008-04-29  Richard Guenther  <rguenther@suse.de>
1585
1586         PR tree-optimization/36078
1587         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
1588         Update virtual SSA form after cleaning up the CFG.
1589
1590 2008-04-29  Richard Guenther  <rguenther@suse.de>
1591
1592         PR middle-end/15255
1593         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
1594
1595 2008-04-29  Richard Guenther  <rguenther@suse.de>
1596
1597         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
1598         (compute_may_aliases): Do not call finalize_ref_all_pointers.
1599         (compute_flow_insensitive_aliasing): Do not treat
1600         PTR_IS_REF_ALL pointers special.
1601         (get_smt_for): Likewise.
1602         (may_alias_p): Re-structure.
1603         (is_escape_site): A ref-all pointer conversion is not an escape site.
1604         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
1605         PTR_IS_REF_ALL pointers special.
1606         * tree-ssa-structalias.h (struct alias_info): Remove
1607         ref_all_symbol_mem_tag field.
1608         (PTR_IS_REF_ALL): Remove.
1609
1610 2008-04-29  Richard Guenther  <rguenther@suse.de>
1611
1612         PR middle-end/36077
1613         * fold-const.c (extract_muldiv_1): In combining division constants
1614         make sure to never overflow.
1615
1616 2008-04-29  Nick Clifton  <nickc@redhat.com>
1617
1618         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
1619
1620 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1621
1622         PR bootstrap/35169
1623         * optc-gen.awk: Work around HP-UX/IA awk bug.
1624
1625 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
1626
1627         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
1628         2008-04-25 commit.
1629
1630 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
1631
1632         PR target/36073
1633         * config/i386/i386.md
1634         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
1635         Change operand 1 predicate to nonimmediate_operand.
1636
1637 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
1638
1639         PR debug/36060
1640         * dwarf2out.c (struct die_struct): Mark as chain_circular through
1641         die_sub field.
1642         * gengtype.c (walk_type, write_func_for_structure): Handle
1643         chain_circular.
1644         * doc/gty.texi: Document chain_circular.
1645
1646 2008-04-28  Richard Guenther  <rguenther@suse.de>
1647
1648         PR tree-optimization/36066
1649         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
1650         SCEV and loop.
1651
1652 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
1653
1654         PR target/36064
1655         * config/i386/i386.md
1656         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
1657         Use match_scratch instead of match_operand for operands 3 and 4.
1658
1659 2008-04-27  Richard Guenther  <rguenther@suse.de>
1660
1661         PR tree-optimization/18754
1662         PR tree-optimization/34223
1663         * tree-pass.h (pass_complete_unrolli): Declare.
1664         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
1665         loop size before and after unconditionally of UL_NO_GROWTH in effect.
1666         Rewrite loop into loop closed SSA form if it is not already.
1667         (tree_unroll_loops_completely): Re-structure to iterate over
1668         innermost loops with intermediate CFG cleanups.
1669         Unroll outermost loops only if requested or the code does not grow
1670         doing so.
1671         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
1672         loops are available.
1673         (tree_vectorize): Instead do so here.
1674         (tree_complete_unroll): Also unroll outermost loops.
1675         (tree_complete_unroll_inner): New function.
1676         (gate_tree_complete_unroll_inner): Likewise.
1677         (pass_complete_unrolli): New pass.
1678         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
1679         uses outside of the loop.
1680         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
1681         form if it is available.  
1682         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
1683         * passes.c (init_optimization_passes): Schedule complete inner
1684         loop unrolling pass before the first CCP pass after final inlining.
1685
1686 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
1687
1688         * targhooks.h (default_emutls_var_fields,
1689         default_emutls_var_init): Declare.
1690         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
1691         * target.h (struct gcc_target): Add struct emutls member.
1692         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
1693         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
1694         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
1695         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
1696         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
1697         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
1698         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
1699         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
1700         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
1701         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
1702         emit debug information.
1703         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
1704         * varasm.c: Include targhooks.h.
1705         (emutls_object_section, emutls_tmpl_section): New.
1706         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
1707         (EMUTLS_SEPARATOR): New.
1708         (prefix_name): New.
1709         (get_emutls_object_name): New.
1710         (default_emutls_var_fields): New, broken out of ...
1711         (get_emutls_object_type): ... here.  Adjust to use target hooks.
1712         (get_emutls_init_templ_addr): Adjust to use target hooks.
1713         (emutls_decl): Adjust to use target hooks.
1714         (emutls_finish): Likewise.
1715         (default_emutls_var_init): New, broken out of ...
1716         (assemble_variable): ... here.  Adjust to use target hooks.
1717         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
1718         SECCAT_EMUTLS_TMPL.
1719         * c-common.c (handle_section_attribute): Prevent overriding
1720         sections for emulated tls with special sections.
1721         * config/i386/i386.c (x86_64_elf_select_section): Add
1722         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
1723         (x86_64_elf_unique_section): Likewise.
1724         * config/vxworks.c: Include tree.h.
1725         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
1726         (vxworks_override_options): Set TLS scheme.
1727         * doc/tm.texi (Emulated TLS): New node.
1728
1729 2008-04-26  Simon Baldwin <simonb@google.com>
1730
1731         PR c/35652
1732         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
1733         with propagated string constants.
1734
1735 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
1736
1737         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
1738         constraint for operand 2 when operand 0 is memory operand.
1739         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
1740         operand 0 is memory operand.
1741         (fix_trunc<mode>_i387_with_temp): Ditto.
1742         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
1743         operand 2 when operand 1 is memory operand.
1744         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
1745         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
1746         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
1747         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
1748         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
1749         operands 2,3 and 4 when operand 1 is memory operand.
1750         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
1751         is memory operand.
1752         (fistdi2_floor_with_temp): Ditto.
1753         (fist<mode>2_floor_with_temp): Ditto.
1754         (fistdi2_ceil_with_temp): Ditto.
1755         (fist<mode>2_ceil_with_temp): Ditto.
1756         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
1757
1758 2008-04-26  David Daney  <ddaney@avtrex.com>
1759
1760         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
1761         unspec_volitile.
1762         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
1763         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
1764         UNSPEC_UPDATE_GOT_VERSION): Renumber.
1765         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
1766         (compare_and_swap_12): New insn.
1767         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
1768         * config/mips/mips.c (mips_force_binary): New function.
1769         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
1770         (mips_expand_compare_and_swap_12): New function.
1771         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
1772
1773 2008-04-25  Jan Hubicka  <jh@suse.cz>
1774
1775         PR testsuite/35843
1776         * cfgexpand.c (pass_expand): Turn into RTL pass.
1777         * passes.c (execute_one_pass): Do pass typechecking after execution.
1778         * tree-pass.h (pass_expand): Turn into RTL pass.
1779
1780         * function.h (struct rtl_data): Move here fields
1781         accesses_prior_frames, calls_eh_return, saves_all_registers,
1782         has_nonlocal_goto, has_asm_statement, is_thunk,
1783         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
1784         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
1785         arg_pointer_save_area_init from struct function; turn into bool.
1786         (struct function): Move
1787         calls_eh_return, saves_all_registers, has_nonlocal_goto,
1788         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
1789         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
1790         tail_call_emit, arg_pointer_save_area_init
1791         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
1792         (current_function_returns_struct, current_function_returns_pcc_struct,
1793         current_function_calls_setjmp, current_function_calls_alloca,
1794         current_function_accesses_prior_frames,
1795         current_function_calls_eh_return, current_function_is_thunk,
1796         current_function_stdarg, current_function_profile,
1797         current_function_limit_stack, current_function_uses_pic_offset_table,
1798         current_function_uses_const_pool, current_function_has_nonlocal_label,
1799         current_function_saves_all_registers,
1800         current_function_has_nonlocal_goto,
1801         current_function_has_asm_statement): Remove accesor macros.
1802         * ra-conflict.c (global_conflicts): Update.
1803         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
1804         (suitable_for_tail_call_opt_p): Update.
1805         * builtins.c (expand_builtin_return_addr): Update.
1806         (expand_builtin_setjmp_setup): Update.
1807         (expand_builtin_nonlocal_goto): Update.
1808         * final.c (final_start_function): Update.
1809         (profile_function): Update.
1810         (leaf_function_p): Update.
1811         (only_leaf_regs_used): Update.
1812         * df-scan.c (df_get_exit_block_use_set): Update.
1813         * dojump.c (clear_pending_stack_adjust): Update.
1814         * tree-stdarg.c (gate_optimize_stdarg): Update.
1815         * gimple-low.c (lower_function_body): Update.
1816         * global.c (compute_regsets): Update.
1817         (global_alloc): Update.
1818         * dwarf2out.c (dwarf2out_begin_prologue): Update.
1819         * expr.c (expand_assignment): Update.
1820         * dse.c (dse_step0): Update.
1821         (dse_step1): Update.
1822         * c-decl.c (store_parm_decls): Update.
1823         * local-alloc.c (combine_regs): Update.
1824         (find_free_reg): Update.
1825         * function.c (assign_parms_augmented_arg_list): Update.
1826         (assign_parm_find_data_types): Update.
1827         (assign_parms): Update.
1828         (allocate_struct_function): Update.
1829         (expand_function_start): Update.
1830         (expand_function_end): Update.
1831         (get_arg_pointer_save_area): Update.
1832         (thread_prologue_and_epilogue_insns): Update.
1833         (rest_of_match_asm_constraints): Update.
1834         * stor-layout.c (variable_size): Update.
1835         * gcse.c (gcse_main): Update.
1836         (bypass_jumps): Update.
1837         * gimplify.c (gimplify_function_tree): Update.
1838         * calls.c (emit_call_1): Update.
1839         (expand_call): Update.
1840         * bt-load.c (compute_defs_uses_and_gen): Update.
1841         * except.c (sjlj_assign_call_site_values): Update.
1842         (sjlj_emit_function_enter): Update.
1843         (can_throw_external): Update.
1844         (set_nothrow_function_flags): Update.
1845         (expand_builtin_unwind_init): Update.
1846         (expand_eh_return): Update.
1847         (convert_to_eh_region_ranges): Update.
1848         (output_function_exception_table): Update.
1849         * emit-rtl.c (gen_tmp_stack_mem): Update.
1850         * cfgexpand.c (expand_used_vars): Update.
1851         (tree_expand_cfg): Update.
1852         * cfgcleanup.c (rest_of_handle_jump): Update.
1853         * explow.c (allocate_dynamic_stack_space): Update.
1854         * varasm.c (assemble_start_function): Update.
1855         (force_const_mem): Update.
1856         (mark_constant_pool): Update.
1857         * tree-optimize.c (tree_rest_of_compilation): Update.
1858         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
1859         * tree-cfg.c (notice_special_calls): Update.
1860         (is_ctrl_altering_stmt): Update.
1861         (tree_can_make_abnormal_goto): Update.
1862         (tree_purge_dead_abnormal_call_edges): Update.
1863         * config/alpha/predicates.md: Update.
1864         * config/alpha/alpha.c (alpha_sa_mask): Update.
1865         (alpha_sa_size): Update.
1866         (alpha_does_function_need_gp): Update.
1867         (alpha_expand_prologue): Update.
1868         (alpha_start_function): Update.
1869         (alpha_output_function_end_prologue): Update.
1870         (alpha_expand_epilogue): Update.
1871         * config/frv/frv.c (frv_stack_info): Update.
1872         (frv_expand_epilogue): Update.
1873         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
1874         (s390_register_info): Update.
1875         (s390_frame_info): Update.
1876         (s390_init_frame_layout): Update.
1877         (s390_can_eliminate): Update.
1878         (save_gprs): Update.
1879         * config/spu/spu.c (spu_split_immediate): Update.
1880         (need_to_save_reg): Update.
1881         (spu_expand_prologue): Update.
1882         (spu_expand_epilogue): Update.
1883         * config/sparc/sparc.md: Update.
1884         * config/sparc/sparc.c (eligible_for_return_delay): Update.
1885         (sparc_tls_got): Update.
1886         (legitimize_pic_address): Update.
1887         (sparc_emit_call_insn): Update.
1888         (sparc_expand_prologue): Update.
1889         (output_return): Update.
1890         (print_operand): Update.
1891         (sparc_function_ok_for_sibcall): Update.
1892         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
1893         * config/m32r/m32r.md: Update.
1894         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
1895         (m32r_compute_frame_size): Update.
1896         (m32r_expand_prologue): Update.
1897         (m32r_expand_epilogue): Update.
1898         (m32r_legitimize_pic_address): Update.
1899         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
1900         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
1901         * config/i386/i386.c (ix86_frame_pointer_required): Update.
1902         (gen_push): Update.
1903         (ix86_save_reg): Update.
1904         (ix86_compute_frame_layout): Update.
1905         (ix86_expand_prologue): Update.
1906         (ix86_expand_epilogue): Update.
1907         * config/sh/sh.c (output_stack_adjust): Update.
1908         (calc_live_regs): Update.
1909         (sh5_schedule_saves): Update.
1910         (sh_expand_prologue): Update.
1911         (sh_expand_epilogue): Update.
1912         (sh_setup_incoming_varargs): Update.
1913         (sh_allocate_initial_value): Update.
1914         (sh_get_pr_initial_val): Update.
1915         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
1916         * config/sh/sh.md (label:): Update.
1917         * config/avr/avr.c (out_movhi_mr_r): Update.
1918         * config/crx/crx.h (enum): Update.
1919         * config/xtensa/xtensa.h (along): Update.
1920         * config/stormy16/stormy16.c Update.
1921         (xstormy16_compute_stack_layout): Update.
1922         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
1923         (fr30_expand_prologue): Update.
1924         * config/cris/cris.c (cris_conditional_register_usage): Update.
1925         (cris_reg_saved_in_regsave_area): Update.
1926         (cris_initial_frame_pointer_offset): Update.
1927         (cris_simple_epilogue): Update.
1928         (cris_expand_prologue): Update.
1929         (cris_expand_epilogue): Update.
1930         (cris_expand_pic_call_address): Update.
1931         (cris_asm_output_symbol_ref): Update.
1932         (cris_asm_output_label_ref): Update.
1933         * config/cris/cris.md Update.
1934         * config/iq2000/iq2000.c (compute_frame_size): Update.
1935         (iq2000_expand_epilogue): Update.
1936         * config/mt/mt.h (save_direction): Update.
1937         * config/mn10300/mn10300.c (mn10300_function_value): Update.
1938         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
1939         (ia64_secondary_reload_class): Update.
1940         * config/m68k/m68k.c (m68k_save_reg): Update.
1941         (m68k_expand_prologue): Update.
1942         (m68k_expand_epilogue): Update.
1943         (legitimize_pic_address): Update.
1944         * config/rs6000/rs6000.c (rs6000_got_register): Update.
1945         (first_reg_to_save): Update.
1946         (first_altivec_reg_to_save): Update.
1947         (compute_vrsave_mask): Update.
1948         (compute_save_world_info): Update.
1949         (rs6000_stack_info): Update.
1950         (spe_func_has_64bit_regs_p): Update.
1951         (rs6000_ra_ever_killed): Update.
1952         (rs6000_emit_eh_reg_restore): Update.
1953         (rs6000_emit_allocate_stack): Update.
1954         (rs6000_emit_prologue): Update.
1955         (rs6000_emit_epilogue): Update.
1956         (rs6000_output_function_epilogue): Update.
1957         (output_profile_hook): Update.
1958         (rs6000_elf_declare_function_name): Update.
1959         * config/rs6000/rs6000.h (rs6000_args): Update.
1960         * config/rs6000/rs6000.md: Update.
1961         * config/mcore/mcore.c (mcore_expand_prolog): Update.
1962         * config/arc/arc.c (arc_output_function_epilogue): Update.
1963         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
1964         * config/darwin.c (machopic_function_base_name): Update.
1965         * config/score/score3.c (score3_compute_frame_size): Update.
1966         (rpush): Update.
1967         (rpop): Update.
1968         (score3_epilogue): Update.
1969         * config/score/score7.c (score7_compute_frame_size): Update.
1970         (score7_prologue): Update.
1971         (score7_epilogue): Update.
1972         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
1973         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
1974         * config/arm/arm.c (use_return_insn): Update.
1975         (require_pic_register): Update.
1976         (arm_load_pic_register): Update.
1977         (arm_compute_save_reg0_reg12_mask): Update.
1978         (arm_compute_save_reg_mask): Update.
1979         (thumb1_compute_save_reg_mask): Update.
1980         (output_return_instruction): Update.
1981         (arm_output_function_prologue): Update.
1982         (arm_output_epilogue): Update.
1983         (arm_get_frame_offsets): Update.
1984         (arm_expand_prologue): Update.
1985         (thumb_pushpop): Update.
1986         (thumb_exit): Update.
1987         (thumb1_expand_prologue): Update.
1988         (thumb1_expand_epilogue): Update.
1989         (arm_unwind_emit): Update.
1990         (arm_output_fn_unwind): Update.
1991         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
1992         * config/arm/arm.md: Update.
1993         * config/pa/pa.md: Update.
1994         * config/pa/pa.c (legitimize_pic_address): Update.
1995         (compute_frame_size): Update.
1996         (hppa_expand_prologue): Update.
1997         (hppa_expand_epilogue): Update.
1998         (borx_reg_operand): Update.
1999         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
2000         (HARD_REGNO_RENAME_OK): Update.
2001         * config/mips/mips.c (mips_global_pointer): Update.
2002         (mips_save_reg_p): Update.
2003         (mips_compute_frame_info): Update.
2004         (mips_frame_pointer_required): Update.
2005         (mips_expand_prologue): Update.
2006         (mips_expand_epilogue): Update.
2007         (mips_can_use_return_insn): Update.
2008         (mips_reorg_process_insns): Update.
2009         * config/v850/v850.c (compute_register_save_size): Update.
2010         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
2011         * config/mmix/mmix.c (along): Update.
2012         (mmix_expand_epilogue): Update.
2013         * config/bfin/bfin.c (legitimize_pic_address): Update.
2014         (must_save_p): Update.
2015         (stack_frame_needed_p): Update.
2016         (add_to_reg): Update.
2017         (bfin_expand_prologue): Update.
2018         * stmt.c (expand_asm_operands): Update.
2019         * reload1.c (reload): Update.
2020         (init_elim_table): Update.
2021
2022 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
2023         
2024         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
2025         
2026 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
2027
2028         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
2029         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
2030         (mov<mode>): Removed.
2031         (*movv4sf_internal): Likewise.
2032         (*movv2df_internal): Likewise.
2033
2034 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
2035
2036         * config.gcc (crx-*-elf): Remove deprecation.
2037
2038 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
2039
2040         * config/i386/cygming-crtend.c (register_frame_ctor): Register
2041         __gcc_deregister_frame with atexit.
2042         (deregister_frame_dtor): Remove.
2043
2044 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
2045             Nathan Sidwell  <nathan@codesourcery.com>
2046
2047         * config/rs6000/rs6000.opt (mspe): Remove Var property.
2048         (misel): Likewise.
2049         * config/rs6000/rs6000.h (rs6000_spe): Declare.
2050         (rs6000_isel): Likewise.
2051         * config/rs6000/rs6000.c (rs6000_spe): New variable.
2052         (rs6000_isel): New variable.
2053         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
2054
2055 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2056
2057         PR c++/35758
2058         * c-common.c (handle_vector_size_attribute): Call
2059         lang_hooks.types.reconstruct_complex_type instead of
2060         reconstruct_complex_type.
2061         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
2062         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
2063         * langhooks.h (struct lang_hooks_for_types): Add
2064         reconstruct_complex_type hook.
2065         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
2066         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
2067
2068 2008-04-24  Richard Guenther  <rguenther@suse.de>
2069
2070         * c-common.h (check_builtin_function_arguments): Declare.
2071         * c-common.c (validate_nargs): New function.
2072         (check_builtin_function_arguments): Likewise.
2073         * c-typeck.c (build_function_call): Call
2074         check_builtin_function_arguments.
2075         * builtins.c (fold_builtin_classify): Remove error reporting code.
2076         (fold_builtin_unordered_cmp): Likewise.
2077         (fold_builtin_1): Likewise.
2078         (fold_builtin_n): Likewise.
2079
2080 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2081
2082         PR tree-optimization/36008
2083         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
2084         the original op1, rather than delta by step.
2085
2086 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
2087             Sebastian Pop  <sebastian.pop@amd.com>
2088
2089         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
2090         eliminate_local_variables_stmt, eliminate_local_variables,
2091         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
2092         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
2093         of code delimited by two edges in the CFG.
2094         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
2095         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
2096         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate 
2097         the case of parallelisation of reductions.
2098         (expr_invariant_in_region_p): New.
2099
2100         * tree-flow.h (gather_blocks_in_sese_region): Declared.
2101         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
2102
2103 2008-04-24  Ira Rosen  <irar@il.ibm.com>
2104             Richard Guenther  <rguenther@suse.de>
2105
2106         PR tree-optimization/36034
2107         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
2108         incapable of dealing with loads with gaps.
2109
2110 2008-04-24  Rafael Espindola  <espindola@google.com>
2111
2112         * tree-flow.h (vrp_evaluate_conditional): Change signature.
2113         * tree-ssa-propagate.c (fold_predicate_in): Update call to
2114         vrp_evaluate_conditional.
2115         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
2116         (vrp_evaluate_conditional): Split the cond argument.
2117         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
2118         (simplify_stmt_for_jump_threading): Update call to
2119         vrp_evaluate_conditional.
2120
2121 2008-04-24  Ira Rosen  <irar@il.ibm.com>
2122
2123         PR tree-optimization/35982
2124         * tree-vect-analyze.c (vect_check_interleaving): Check that the
2125         interleaved data-refs are of the same type.
2126
2127 2008-04-24  Danny Smith  <dannysmith@users.net>
2128
2129         * c-format.c (check_format_info_main): Use strncmp rather than a
2130         magic prefix to handle multichar length specs.
2131         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
2132         Don't prefix "I64" and "I32" with '\0'.
2133
2134 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2135
2136         PR target/36015
2137         * config/i386/i386.c (init_cumulative_args): Don't pass anything
2138         in registers for -m32 only if stdarg_p (fntype).
2139
2140 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
2141
2142         PR rtl-optimization/36006
2143         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
2144         temp to op0 in order to avoid invalid rtx sharing.
2145
2146 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2147
2148         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
2149         check TREE_INVARIANT.
2150         * tree-gimple.c (is_gimple_address): New.
2151         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
2152         * tree-gimple.h (is_gimple_address): New.
2153         * tree.h (decl_address_invariant_p): New.
2154         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
2155         (build_string): Likewise.
2156         (decl_address_invariant_p): New, from is_gimple_invariant_address.
2157         (tree_invariant_p_1): Likewise.
2158         (save_expr): Use it.
2159         (tree_invariant_p): New.
2160         (skip_simple_arithmetic): Use it.
2161         (stabilize_reference_1): Use it.
2162         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
2163         simplify.
2164         (build1_stat): Drop code to compute TREE_INVARIANT.
2165         (build2_stat): Drop code to compute TREE_INVARIANT.
2166         (build3_stat): Drop code to compute TREE_INVARIANT.
2167         (build4_stat): Drop code to compute TREE_INVARIANT.
2168         (build5_stat): Drop code to compute TREE_INVARIANT.
2169         (build7_stat): Drop code to compute TREE_INVARIANT.
2170         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
2171         * tree.h (struct tree_base): Remove invariant_flag.
2172         (TREE_INVARIANT): Remove.
2173         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
2174         (fold_builtin_expect): Check TREE_CONSTANT.
2175         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
2176         * c-tree.h (c_expr_to_decl): Drop third parameter.
2177         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
2178         (build_c_cast): Don't set TREE_INVARIANT.
2179         (pop_init_level): Don't set TREE_INVARIANT.
2180         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
2181         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
2182         TREE_CONSTANT.
2183         (gimplify_init_constructor): Don't set TREE_INVARIANT.
2184         (gimplify_addr_expr): Adjust comment.
2185         * tree-mudflap.c (mf_build_string):
2186         * print-tree.c (print_node): Don't print TREE_INVARIANT.
2187         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
2188         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
2189         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
2190         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
2191         * langhooks.h (struct lang_hooks): Drop third parameter from
2192         expr_to_decl.
2193
2194 2008-04-23  Richard Guenther  <rguenther@suse.de>
2195
2196         PR tree-optimization/27799
2197         PR tree-optimization/32921
2198         PR tree-optimization/32624
2199         * tree-ssa-structalias.c (merge_smts_into): Only merge the
2200         SMTs aliases and the tag itself into the solution.
2201         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
2202         merge the points-to solution back into the SMT aliases.
2203         (may_alias_p): Use alias_set_subset_of instead of
2204         aliases_conflict_p.  A pointer which points to
2205         memory with alias set zero may access any variable.
2206
2207 2008-04-23  Richard Guenther  <rguenther@suse.de>
2208
2209         * alias.c (alias_set_subset_of): Correctly handle asking
2210         if zero is a subset of an alias set with zero child.
2211         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
2212         (compute_flow_insensitive_aliasing): Correctly walk all
2213         pointers.  Do not unnecessarily union sets.
2214
2215 2008-04-23  Richard Guenther  <rguenther@suse.de>
2216
2217         PR middle-end/36021
2218         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
2219
2220 2008-04-22  Tomas Bily  <tbily@suse.cz>
2221
2222         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
2223         unreachable case.
2224         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
2225         NON_LVALUE_EXPR.
2226         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
2227         * tree-ssa-structalias.c (get_constraint_for): Likewise.
2228         * tree-inline.c (estimate_num_insns_1): Likewise.
2229         * varasm.c (const_hash_1, compare_constant, copy_constant)
2230         (compute_reloc_for_constant, output_addressed_constants): Likewise.
2231         * emit-rtl.c (component_ref_for_mem_expr)
2232         (set_mem_attributes_minus_bitpos): Likewise.
2233         * expr.c (highest_pow2_factor, expand_expr_real_1, )
2234         (is_aligning_offset): Likewise.
2235         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
2236         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
2237         * dojump.c (do_jump): Likewise.
2238         * builtins.c (get_pointer_alignment, get_memory_rtx)
2239         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
2240         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
2241
2242 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
2243
2244         PR rtl-optimization/36017
2245         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
2246         expanding the library call.
2247
2248 2008-04-22  Ian Lance Taylor  <iant@google.com>
2249
2250         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
2251         than size_in_bytes.
2252
2253 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
2254
2255         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
2256         of LR/CTR moves for Power6.
2257
2258 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
2259
2260         PR middle-end/36003
2261         * passes.c (init_optimization_passes): Remove
2262         pass_fast_rtl_byte_dce.
2263         
2264 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
2265
2266         PR target/29096
2267         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
2268         builtin functions to generate faster code.
2269         (_mm_cvtpu16_ps): Ditto.
2270         (_mm_cvtpi32x2_ps): Ditto.
2271
2272 2008-04-22  Nick Clifton  <nickc@redhat.com>
2273
2274         * common.opt (ftree-loop-distribution): Add Optimization
2275         attribute.
2276
2277         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
2278         (frv_expand_builtin_va_start): Likewise.
2279
2280         * config/arm/arm.c (thumb_find_work_register): Fix location of
2281         argument register count.
2282
2283 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2284
2285         Support scheduling for ColdFire V1 and V3 microarchitecture.
2286         Improve scheduling of multiplication instructions.
2287
2288         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
2289         (mac): New instruction attribute.
2290         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
2291         (m68k_sched_mac): New variable.
2292         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
2293         Handle cfv1 and cfv3.
2294         (max_insn_size): New static variable.
2295         (struct _sched_ib): New type.
2296         (sched_ib): New static variable.
2297         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
2298         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
2299         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
2300         Update.
2301         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
2302         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
2303         new variables.  Update.
2304         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
2305         Add modeling of cfv3 instruction buffer.  Update.
2306         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
2307         * config/m68k/m68k.h (TUNE_CFV3): New macro.
2308         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
2309         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
2310         a particular reservation applies to.
2311         (type2): Reorganize attribute values.  Rename alu to alu_reg,
2312         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
2313         to mul_l and mul_w.
2314         (cf_ib_*): Simplify description of instruction buffer.
2315         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
2316         (cf_mem): Split into cf_mem1 and cf_mem2.
2317         (cf_v2_move_??): Rename to cfv12_alu_??.
2318         (cf_v2_move_l_??): Rename to cfv12_omove_??.
2319         (cf_v2_mul_??): Remove reservations.
2320         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
2321         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
2322         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
2323         appropriate place.
2324         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
2325         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
2326         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
2327         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
2328         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
2329         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
2330         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
2331         expansions of the above reservations for instructions of sizes
2332         1, 2 and 3 words.
2333
2334 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2335
2336         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
2337
2338 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
2339
2340         * coverage.c: Include tree-pass.h.
2341         (coverage_counter_alloc): Print da_file_name to the dump file.
2342
2343 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
2344
2345         * sbitmap.c (sbitmap_range_empty_p): New function.
2346         * sbitmap.h (sbitmap_range_empty_p): New function.
2347         * bitmap.h: Now includes obstack.h.
2348
2349 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2350             Kenneth Zadeck  <zadeck@naturalbridge.com>
2351
2352         * dbgcnt.def (ra_byte_scan): Added.
2353         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
2354         when the last hit happens for a counter.  
2355         * timevar.def (TV_DF_BYTE_LR): New variable.
2356         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
2357         * passes.c (pass_fast_rtl_byte_dce): New pass.
2358         * fwprop.c (update_df): Added mode to call df_ref_create.
2359         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
2360         DF_REF_EXTRACT_OFFSET.
2361         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
2362         DF_BYTE_LR_OUT, df_byte_lr): New macro.
2363         (df_mm): New enum.
2364         (df_ref_extract): Added mode field.
2365         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
2366         DF_REF_EXTRACT_OFFSET.
2367         (DF_REF_EXTRACT_MODE): New macro.
2368         (df_byte_lr_bb_info): New structure.
2369         (df_print_byte_regset, df_compute_accessed_bytes, 
2370         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
2371         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
2372         df_byte_lr_simulate_uses,
2373         df_byte_lr_simulate_artificial_refs_at_top,
2374         df_byte_lr_simulate_artificial_refs_at_end,
2375         df_compute_accessed_bytes): New function.
2376         (df_ref_create): Add parameter.
2377         (df_byte_lr_get_bb_info): New inline function.
2378         * df-scan.c (df_ref_record, df_uses_record,
2379         df_ref_create_structure): Added mode parameter.
2380         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
2381         df_defs_record, df_uses_record, df_get_conditional_uses,
2382         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
2383         df_entry_block_defs_collect, df_exit_block_uses_collect):
2384         Added mode parameter to calls to df_ref_record, df_uses_record,
2385         df_ref_create_structure.
2386         (df_ref_equal_p, df_ref_compare): Added test for modes.
2387         (df_ref_create_structure): Added code to set mode.  Renamed
2388         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
2389         DF_REF_EXTRACT_OFFSET.
2390         * df-core.c (df_print_byte_regset): New function.
2391         * df-byte-scan.c: New file.
2392         * df-problems.c (df_rd_transfer_function): Removed unnecessary
2393         calls to BITMAP_FREE.  
2394         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
2395         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
2396         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
2397         df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
2398         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
2399         df_byte_lr_local_compute, df_byte_lr_init,
2400         df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
2401         df_byte_lr_transfer_function, df_byte_lr_free, 
2402         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
2403         df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
2404         df_byte_lr_simulate_uses,
2405         df_byte_lr_simulate_artificial_refs_at_top,
2406         df_byte_lr_simulate_artificial_refs_at_end): New function.
2407         * dce.c (byte_dce_process_block): New function.
2408         (dce_process_block): au is now passed in rather than computed
2409         locally.  Changed loops that look at artificial defs to not look
2410         for conditional or partial ones, because there never are any.  
2411         (fast_dce): Now is able to drive byte_dce_process_block or 
2412         dce_process_block depending on the kind of dce being done.
2413         (rest_of_handle_fast_dce): Add parameter to fast_dce.
2414         (rest_of_handle_fast_byte_dce): New function.
2415         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
2416         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
2417
2418 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
2419
2420         PR fortran/35019
2421         * gcc.h: Added fortran options that take arguments to
2422         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
2423         macros.
2424
2425 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
2426
2427         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
2428         scalarization if on the LHS and not a full access.
2429
2430 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2431
2432         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
2433
2434 2008-04-18  Rafael Espindola  <espindola@google.com>
2435
2436         * tree-vrp.c (find_case_label_index): Fix the binary search.
2437         (find_case_label_range): New.
2438         (vrp_visit_switch_stmt): Use find_case_label_range.
2439         (simplify_switch_using_ranges): Use find_case_label_range.
2440
2441 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
2442
2443         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
2444         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
2445
2446 2008-04-18  Tom Tromey  <tromey@redhat.com>
2447
2448         PR libcpp/15500:
2449         * doc/cpp.texi (Implementation-defined behavior): Mention
2450         -finput-charset.
2451
2452 2008-04-18  Ian Lance Taylor  <iant@google.com>
2453
2454         * fold-const.c (pointer_may_wrap_p): New static function.
2455         (fold_comparison): Add another test for pointer overflow.  Use
2456         pointer_may_wrap_p to disable some false positives.
2457
2458 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
2459           
2460         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
2461         (fname_as_string): Match updated cpp_interpret_string prototype.
2462         (fix_string_type): Support char16_t* and char32_t*.
2463         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
2464         derivative) nodes.  Register as builtin if C++0x.
2465         (c_parse_error): Support CPP_CHAR{16,32}.
2466         * c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
2467         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
2468         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
2469         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
2470         CTI_CHAR32_ARRAY_TYPE>: New elements.
2471         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
2472         char32_type_node, signed_char32_type_node, char16_array_type_node,
2473         char32_array_type_node): New defines.
2474         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
2475         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
2476         (lex_string): Support CPP_STRING{16,32}, match updated
2477         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
2478         (lex_charconst): Support CPP_CHAR{16,32}.
2479         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
2480         and CPP_STRING{16,32}.
2481
2482 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
2483
2484         PR bootstrap/35457
2485         * aclocal.m4: Regenerate.
2486         * configure: Regenerate.
2487
2488 2008-04-18  Jan Hubicka  <jh@suse.cz>
2489
2490         * except.c (dw2_size_of_call_site_table,
2491         sjlj_size_of_call_site_table): Use vector API for call_site_record.
2492
2493         * cgraphbuild.c (build_cgraph_edges): Update.
2494         * tree-pass.h: Update comment.
2495         * final.c (leaf_function_p): Update.
2496         (leaf_renumber_regs): Update.
2497         (rest_of_clean_state): Update.
2498         * omp-low.c (expand_omp_parallel): Update.
2499         * ipa-reference.c (analyze_function): Update.
2500         * reorg.c (find_end_label): Update.
2501         (optimize_skip): Update.
2502         (fill_simple_delay_slots): Update.
2503         (fill_simple_delay_slots): Update.
2504         (make_return_insns): Update.
2505         (dbr_schedule): Update.
2506         * gimple-low.c (record_vars_into): Update.
2507         * cfgbuild.c (make_edges): Update.
2508         * function.c (assign_stack_local): Update.
2509         (assign_parm_adjust_stack_rtl): Update.
2510         (locate_and_pad_parm): Update.
2511         (allocate_struct_function): Do not initialize stack_alignment_needed
2512         and preferred_stack_boundary here.
2513         (stack_protect_prologue): Update.
2514         (stack_protect_epilogue): Update.
2515         (expand_function_start): Initialize stack_alignment_needed,
2516         preferred_stack_boundary and max_jumptable_ents.
2517         (expand_function_end): Update.
2518         (free_after_compilation): Do not NULLify epilogue_delay_list.
2519         * function.h (struct rtl_data): Add stack_protect_guard,
2520         stack_alignment_needed,
2521         preferred_stack_boundary, epilogue_delay_list.
2522         (struct function): Remove value_histograms, stack_alignment_needed,
2523         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
2524         last_label_uid,
2525         unexpanded_var_list, stack_protect_guard.
2526         (current_function_epilogue_delay_list): Remove.
2527         * ipa-type-escape.c (analyze_function): Update.
2528         * gimplify.c (pop_gimplify_context): Update comment.
2529         * calls.c (expand_call): Update.
2530         (emit_library_call_value_1): Update.
2531         * except.c (set_nothrow_function_flags): Update.
2532         * cfgexpand.c (get_decl_align_unit): Update.
2533         (create_stack_guard): Update.
2534         (estimated_stack_frame_size): Update.
2535         (expand_used_vars): Update.
2536         (tree_expand_cfg): Free histogram earliers, init expansion variables.
2537         * explow.c (allocate_dynamic_stack_space): Update.
2538         * tree-ssa-live.c (remove_unused_locals): Update.
2539         * varasm.c (mark_constant_pool): Update.
2540         * tree-inline.c (remap_decls): Update.
2541         (initialize_cfun): Update.
2542         (declare_return_variable): Update.
2543         (inline_forbidden_p): Update.
2544         (expand_call_inline): Update.
2545         (declare_inline_vars): Update.
2546         (tree_function_versioning): Update.
2547         * tree-flow.h (value_histograms): New.
2548         (VALUE_HISTOGRAMS): New macro.
2549         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
2550         last_label_uid.
2551         * tree-cfg.c (set_bb_for_stmt): Update.
2552         (replace_by_duplicate_decl): Update.
2553         (move_block_to_fn): Update.
2554         (new_label_mapper): Update.
2555         (dump_function_to_file): Update.
2556         * ipa-struct-reorg.c (build_data_structure): Update.
2557         * cfgrtl.c (print_rtl_with_bb): Update.
2558         * reload1.c (reload): Update.
2559         (reload): Update.
2560         * config/i386/i386.c (setup_incoming_varargs_64,
2561         ix86_compute_frame_layout): Update.
2562         * config/arc/arc.c (arc_output_function_epilogue): Update.
2563
2564 2008-04-18  Marius Strobl <marius@FreeBSD.org>
2565
2566         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
2567         for FreeBSD as well.
2568         * gthr-posix95.h: Likewise.
2569
2570 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
2571
2572         PR rtl-optimization/35838
2573         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
2574         out the byte offset of the first subreg.
2575
2576 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
2577
2578         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
2579         to split_ti instead of three separate calls with single member arrays.
2580         (subti3 splitter): Ditto.
2581         (adddi3 splitter): Ditto with split_di.
2582         (subdi3 splitter): Ditto.
2583         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
2584         two separate calls with single member arrays.  Swap match_dup
2585         operands 1 and 2 to better fit into the array.
2586         (negdi2 splitter): Ditto with split_di.
2587         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
2588         two separate calls with single member arrays.  Swap match_dup operands
2589         6 and 7 to better fit into the array.
2590
2591 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
2592
2593         * config/i386/i386.c (sse_builtin_type): New.
2594         (bdesc_sse_args): Likewise.
2595         (bdesc_sse_3arg): Removed.
2596         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
2597         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
2598         IX86_BUILTIN_ROUNDPS.
2599         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
2600         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
2601         IX86_BUILTIN_ROUNDPS.
2602         (ix86_expand_sse_4_operands_builtin): Removed.
2603         (ix86_expand_sse_operands_builtin): New.
2604         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
2605         and CODE_FOR_sse4_1_roundps.
2606         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
2607         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
2608
2609 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
2610
2611         PR target/35907
2612         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
2613         regs before frame pop when needed.  If use_backchain_to_restore_sp
2614         then load backchain into a temp reg to restore vr and vrsave.  Add
2615         code to restore vr after frame pop if possible.
2616
2617 2008-04-17  Richard Guenther  <rguenther@suse.de>
2618
2619         * tree-vn.c (expressions_equal_p): Do not check type
2620         equality or compatibility before calling operand_equal_p.
2621         * fold-const.c (operand_equal_p): Check equivalence of
2622         integer constants before bailing out due to signedness or
2623         precision differences.
2624         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
2625         spurious differences in type qualification.  Ignore types
2626         for COMPONENT_REFs at all.
2627
2628 2008-04-17  Christian Bruel  <christian.bruel@st.com>
2629
2630         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
2631         msw_skip comparison.
2632         
2633 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
2634
2635         PR c/35739
2636         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
2637         reg type.
2638
2639         PR tree-optimization/35899
2640         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
2641         rather than TREE_OPERAND.
2642
2643 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
2644
2645         PR target/35944
2646         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
2647         temporary registers.  Change operand predicate to general_operand.
2648         (remainderxf3): Ditto.
2649
2650 2008-04-16  Richard Guenther  <rguenther@suse.de>
2651
2652         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
2653         * tree-affine.c (aff_combination_expand): Look through some
2654         conversions.
2655
2656 2008-04-15  Doug Kwan  <dougkwan@google.com>
2657
2658         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
2659         for hex printing.
2660         * tree-pretty-print.c (dump_generic_node): Ditto.
2661         * final.c (output_addr_const): Ditto.
2662         * dwarf2out.c (output_cfi): Ditto.
2663         * c-pretty-print.c (pp_c_integer_constant): Ditto.
2664         * print-rtl.c (print_rtx): Ditto.
2665         * print-tree.c (print_node_brief, print_node): Ditto.
2666         * c-common.c (match_case_to_enum_1): Ditto.
2667         * sched-vis.c (print_value): Ditto.
2668         * config/i386/i386.c (print_operand): Cast to long unsigned int
2669         for hex printing.
2670
2671 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
2672         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
2673         MS Windows VirtualProtect function.
2674
2675 2008-04-15  Jan Hubicka  <jh@suse.cz>
2676
2677         * gengtype.c (write_root): Param_is argument is OK.
2678         * expr.c (expand_expr_real_1): Update call of get_exception_*.
2679         * function.h: Include varray.h
2680         (rtl_eh): New stucture based on except.c one.
2681         (call_site_record): New forward declaration and vector type.
2682         * calls.c (emit_call_1): Do not call
2683         note_current_region_may_contain_throw.
2684         * except.c (eh_status): Remove cur_region, try_region since they are
2685         unused.
2686         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
2687         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
2688         sjlj_fc, sjlj_exit_after to rth_eh in function.h. 
2689         Remove call_site_data_used, call_site_data_size.
2690         Turn call_site_record into vector in function.h.
2691         (note_current_region_may_contain_throw): Remove.
2692         (get_exception_pointer, get_exception_filter): Do not take struct
2693         function argument; update.
2694         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
2695         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
2696         build_post_landing_pads, dw2_build_landing_pads,
2697         sjlj_assign_call_site_values, sjlj_mark_call_sites,
2698         sjlj_emit_function_enter, sjlj_emit_function_enter, 
2699         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
2700         sjlj_build_landing_pads, finish_eh_generation,
2701         remove_exception_handler_label, remove_eh_handler,
2702         maybe_remove_eh_handler, add_reachable_handler,
2703         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
2704         add_action_record, collect_one_action_chain, add_call_site,
2705         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
2706         sjlj_output_call_site_table, output_function_exception_table,
2707         * except.h (note_current_region_may_contain_throw): Remove
2708         (get_exception_pointer, get_exception_filter): Do not take struct
2709         function argument.
2710         * Makefile.in (GTFILES): Put varargs before struct function.
2711
2712 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
2713
2714         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
2715         punt for STRING_CST.
2716         (get_constraint_for): Deal with STRING_CST here instead.
2717
2718 2008-04-15  Richard Guenther  <rguenther@suse.de>
2719
2720         * tree-ssa-propagate.c (substitute_and_fold): Substitute
2721         statements in a basic-block with a backward walk.  Do not
2722         substitute into dead statements but instead remove those.
2723
2724 2008-04-15  Richard Guenther  <rguenther@suse.de>
2725
2726         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
2727         to zero, thus disable creation of SFTs.
2728
2729 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
2730
2731         * tree-predcom.c (suitable_reference_p): Return false if the
2732         reference can throw.
2733
2734 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
2735
2736         PR c/35751
2737         * c-decl.c (finish_decl): If extern or static var has variable
2738         size, set TREE_TYPE (decl) to error_mark_node.
2739
2740 2008-04-15  Rafael Espindola  <espindola@google.com>
2741
2742         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
2743         variable arg1.
2744
2745 2008-04-15  Richard Guenther  <rguenther@suse.de>
2746
2747         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
2748         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
2749         (visit_reference_op_load): Do walk vuse-vdef chains on
2750         vn_reference_lookup.
2751         (visit_reference_op_store): But do not here.
2752         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
2753         vn_reference_lookup.
2754         (vn_lookup_with_vuses): But do so here.
2755
2756 2008-04-14  Ian Lance Taylor  <iant@google.com>
2757
2758         * fold-const.c (fold_overflow_warning): Remove assertion.
2759
2760 2008-04-15  Ben Elliston  <bje@au.ibm.com>
2761
2762         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
2763         temp1 local variables.
2764
2765 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
2766
2767         PR target/35661
2768         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
2769         ".text.unlikely" section as executable.
2770
2771 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
2772
2773         * config/ia64/ia64.c (rtx_needs_barrier): Handle
2774         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
2775         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
2776         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
2777         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
2778         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
2779         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
2780
2781 2008-04-14  Ian Lance Taylor  <iant@google.com>
2782
2783         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
2784         * fold-const.c (fold_comparison): If appropriate, test
2785         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
2786         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
2787         reassociating a pointer type.
2788         * doc/invoke.texi (Optimize Options): Document that
2789         -fstrict-overflow applies to pointer wraparound.
2790
2791 2008-04-13  Jan Hubicka  <jh@suse.cz>
2792
2793         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
2794
2795 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
2796
2797         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
2798         we are going to "save the world".
2799
2800 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
2801
2802         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
2803         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
2804         operand 0 constraint, not "=".
2805
2806 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
2807
2808         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
2809
2810 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
2811
2812         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
2813         of size of positions_needed * CHAR_BIT.
2814
2815 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
2816
2817         PR middle-end/35897
2818         * dse.c (store_info): Change positions_needed to unsigned
2819         HOST_WIDE_INT.
2820         (lowpart_bitmask): New.
2821         (record_store): Cast to unsigned HOST_WIDE_INT for
2822         positions_needed.  Assert width <= size of positions_needed *
2823         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
2824         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
2825         lowpart_bitmask to set mask.
2826
2827 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2828
2829         * config/bfin/constraints.md: New file.
2830         * config/bfin/bfin.md: Include it.
2831         (adddi3): Use satisfies_constraint functions instead of the old macros.
2832         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
2833         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
2834         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
2835         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
2836         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
2837         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
2838         EXTRA_CONSTRAINT): Delete.
2839         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
2840         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
2841         of the old macros.
2842         * config/bfin/bfin.c: Include "tm-constrs.h".
2843         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
2844         Use satisfies_constraint functions instead of the old macros.
2845         * doc/md.texi (Blackfin Constraints): Update file name reference.
2846
2847 2008-04-11  Richard Guenther  <rguenther@suse.de>
2848
2849         PR tree-optimization/35869
2850         * tree-vrp.c (execute_vrp): Move switch statement update after
2851         jump threading.  Schedule another cfg cleanup run.
2852
2853 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
2854
2855         PR c/35744
2856         * attribs.c (decl_attributes): Return early on errorneous node.
2857
2858 2008-04-10  Oleg Ryjkov  <olegr@google.com>
2859
2860         * tree.h (struct tree_base): Added a new flag default_def_flag.
2861         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
2862
2863 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
2864
2865         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
2866
2867 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2868
2869         PR target/35768
2870         * pa.md: Define mode iterator P.  Define mode attribute dwc.
2871         (dcacheflush): Update pattern to use iterator P and attribute dwc.
2872         (icacheflush): Likewise.
2873         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
2874         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
2875
2876 2008-04-11  Ben Elliston  <bje@au.ibm.com>
2877
2878         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
2879
2880 2008-04-10  Rafael Espindola  <espindola@google.com>
2881
2882         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
2883         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
2884         (extract_range_from_expr): The same.
2885
2886 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
2887
2888         * config/mips/mips.md (GPR2): New mode iterator.
2889         (seq): Add comment.
2890         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
2891         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
2892         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
2893         Rewrite these to take two modes, the mode of comparison and the
2894         mode of the destination.
2895         * config/mips/mips.c (mips_expand_scc): Instead of having
2896         paradoxical subreg as destination, expand "narrowing" scc if mode
2897         of comparison is SI and target is requested in DI mode.
2898         (mips_emit_int_order_test): Update comment.  Make mode of
2899         comparison match CMP0 rather than TARGET.  When creating inverse
2900         target use mode of TARGET.
2901
2902 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
2903
2904         * gcov-dump.c (tag_summary): Only print summaries for the first
2905         GCOV_COUNTERS_SUMMABLE counters.
2906
2907 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
2908
2909         * config/i386/i386.md (absneg): New code iterator.
2910         (absnegprefix): New code attribute.
2911         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
2912         patterns using absneg code iterator.
2913         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
2914         using absneg code iterator.
2915         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
2916         *neg<mode>2 patterns using absneg code iterator.
2917         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
2918         *negextendsfdf2 patterns using absneg code iterator.
2919         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
2920         *negextendsfxf2 patterns using absneg code iterator.
2921         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
2922         *negextendsfdf2 patterns using absneg code iterator.
2923         * config/i386/sse.md (<code><mode>2): Macroize expander from
2924         abs<mode>2 and neg<mode>2 patterns using absneg code iterator. 
2925
2926 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2927
2928         * config/s390/s390.h: Remove the remains of the recent search
2929         & replace action of current_function_outgoing_args_size.
2930
2931 2008-04-10  Ira Rosen  <irar@il.ibm.com>
2932
2933         PR tree-optimization/35821
2934         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
2935         NEW_STMT_LIST is not NULL.
2936
2937 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
2938
2939         PR libstdc++/35597
2940         * toplev.c (process_options): Remove -ffunction-sections debugging
2941         warning.
2942
2943 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
2944
2945         PR middle-end/PR28690
2946         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
2947         than gen_rtx_fmt_ee to perform more canonicalizations.
2948
2949 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2950
2951         PR driver/35665
2952         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
2953
2954 2008-04-09  Richard Guenther  <rguenther@suse.de>
2955
2956         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
2957         (dump_function_to_file): Dump function arguments with types.
2958
2959 2008-04-08  Richard Guenther  <rguenther@suse.de>
2960
2961         * fold-const.c (fold_widened_comparison): Do not allow
2962         sign-changes that change the result.
2963
2964 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
2965
2966         PR target/35839
2967         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
2968         kinds of indirect references.
2969
2970 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
2971
2972         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
2973         GNU Fortran language string.
2974
2975 2008-04-08  Rafael Espindola  <espindola@google.com>
2976
2977         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
2978         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
2979         * tree.h (tree_call_nonnegative_warnv_p): New.
2980
2981 2008-04-08  Jan Hubicka  <jh@suse.cz>
2982
2983         * function.c (free_after_compilation): Clear out regno_reg_rtx
2984         pointer.
2985
2986 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
2987
2988         Revert
2989         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
2990
2991         PR middle-end/PR28690
2992         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
2993         same precedence as REG_POINTER and MEM_POINTER operands.
2994
2995 2008-04-08  Richard Guenther  <rguenther@suse.de>
2996
2997         PR middle-end/35834
2998         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
2999         for adding index to base.
3000
3001 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
3002
3003         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
3004         (MINGW_ENABLE_EXECUTE_STACK): New.
3005         (IN_LIBGCC2): For libgcc include windows.h file for
3006         function declarations.
3007
3008 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
3009
3010         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
3011         and tem2 if tem1 is not a REG or MULT.
3012
3013 2008-04-08  Jan Hubicka  <jh@suse.cz>
3014
3015         * function.h (incomming_args): Break out of struct function.
3016         (function_subsections): Break out of struct function.
3017         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
3018         return_rtx and hard_reg_initial_vals from struct function.
3019         Kill inl_max_label_num.
3020         (current_function_pops_args, current_function_args_info,
3021         current_function_args_size, current_function_args_size,
3022         current_function_pretend_args_size,
3023         current_function_outgoing_args_size,
3024         current_function_internal_arg_pointer, current_function_return_rtx):
3025         Kill compatibility accestor macros.
3026         * builtins.c (expand_builtin_apply_args_1): Update.
3027         (expand_builtin_next_arg): Update.
3028         * df-scan.c (df_get_call_refs): Update.
3029         * dbxout.c (dbxout_function_end): Update.
3030         * dwarf2out.c (dwarf2out_switch_text_section): Update.
3031         (output_line_info): Update.
3032         (secname_for_decl): Update.
3033         (dwarf2out_var_location): Update.
3034         * function.c (free_after_compilation): Update.
3035         (assign_parm_find_stack_rtl): Update.
3036         (assign_parms): Update.
3037         (expand_dummy_function_end): Update.
3038         (expand_function_end): Update.
3039         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
3040         (expand_call): Update.
3041         (emit_library_call_value_1): Update.
3042         (store_one_arg): Update.
3043         * varasm.c (initialize_cold_section_name): Update.
3044         (unlikely_text_section): Update.
3045         (unlikely_text_section_p): Update.
3046         (assemble_start_function): Update.
3047         (assemble_end_function): Update.
3048         (default_section_type_flags): Update.
3049         (switch_to_section): Update.
3050         * integrate.c (set_decl_abstract_flags): Update.
3051         (get_hard_reg_initial_val): Update.
3052         (has_hard_reg_initial_val): Update.
3053         (allocate_initial_values): Update.
3054         * resource.c (init_resource_info): Update.
3055         * config/alpha/alpha.c (NUM_ARGS): Update.
3056         (direct_return): Update.
3057         (alpha_va_start): Update.
3058         (alpha_sa_size): Update.
3059         (alpha_initial_elimination_offset): Update.
3060         (alpha_expand_prologue): Update.
3061         (alpha_start_function): Update.
3062         (alpha_expand_epilogue): Update.
3063         (unicosmk_initial_elimination_offset):
3064         * config/alpha/alpha.md (call expander): Update.
3065         * config/s390/s390.c (s390_register_info): Update.
3066         (s390_register_info): Update.
3067         (s390_frame_info): Update.
3068         (s390_initial_elimination_offset): Update.
3069         (s390_build_builtin_va_list): Update.
3070         (s390_va_start): Update.
3071         * config/spu/spu.c (direct_return): Update.
3072         (spu_expand_prologue): Update.
3073         (spu_initial_elimination_offset): Update.
3074         (spu_build_builtin_va_list): Update.
3075         (spu_va_start): Update.
3076         * config/sparc/sparc.c (sparc_init_modes): Update.
3077         (sparc_compute_frame_size): Update.
3078         (function_value): Update.
3079         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
3080         * config/i386/i386.md (return expander): Update.
3081         * config/i386/i386.c (ix86_va_start): Update.
3082         (ix86_can_use_return_insn_p): Update.
3083         (ix86_compute_frame_layout): Update.
3084         (ix86_expand_epilogue): Update.
3085         * config/sh/sh.c (output_stack_adjust): Update.
3086         (calc_live_regs): Update.
3087         (sh_expand_prologue): Update.
3088         (sh_builtin_saveregs): Update.
3089         (sh_va_start): Update.
3090         (initial_elimination_offset): Update.
3091         (sh_allocate_initial_value): Update.
3092         (sh_function_ok_for_sibcall): Update.
3093         (sh_get_pr_initial_val): Update.
3094         * config/sh/sh.md (return expander): Update.
3095         * config/avr/avr.c (frame_pointer_required_p): UPdate.
3096         * config/crx/crx.c (crx_compute_frame): UPdate.
3097         (crx_initial_elimination_offset): UPdate.
3098         * config/xtensa/xtensa.c (compute_frame_size): Update
3099         (xtensa_builtin_saveregs): Update.
3100         (xtensa_va_start): Update.
3101         (order_regs_for_local_alloc): Update.
3102         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
3103         (xstormy16_expand_builtin_va_start): Update.
3104         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
3105         * config/m68hc11/m68hc11.md (return expanders): Update.
3106         * config/m68hc11/m68hc11.c (expand_prologue): Update.
3107         (expand_epilogue): Update.
3108         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
3109         (cris_simple_epilogue): Update.
3110         (cris_expand_prologue): Update.
3111         (cris_expand_epilogue): Update.
3112         * config/iq2000/iq2000.c (iq2000_va_start): Update.
3113         (compute_frame_size): Update.
3114         * config/mt/mt.c (mt_compute_frame_size): Update.
3115         * config/mn10300/mn10300.c (expand_prologue): Update.
3116         (expand_epilogue): Update.
3117         (initial_offset): Update.
3118         (mn10300_builtin_saveregs):
3119         * config/mn10300/mn10300.md (return expander): Update.
3120         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
3121         (ia64_initial_elimination_offset): Update.
3122         (ia64_initial_elimination_offset): Update.
3123         (ia64_expand_prologue): Update.
3124         * config/m68k/m68k.md (return expander): Update.
3125         * config/rs6000/rs6000.c (rs6000_va_start): Update.
3126         (rs6000_stack_info): Update.
3127         * config/mcore/mcore.c (layout_mcore_frame): Update.
3128         (mcore_expand_prolog): Update.
3129         * config/arc/arc.c (arc_compute_frame_size): Update.
3130         * config/score/score3.c (score3_compute_frame_size): Update.
3131         * config/score/score7.c (score7_compute_frame_size): Update.
3132         * config/arm/arm.c (use_return_insn): Update.
3133         (thumb_find_work_register): Update.
3134         (arm_compute_save_reg_mask): Update.
3135         (arm_output_function_prologue): Update.
3136         (arm_output_epilogue): Update.
3137         (arm_size_return_regs): Update.
3138         (arm_get_frame_offsets): Update.
3139         (arm_expand_prologue): Update.
3140         (thumb_exit): Update.
3141         (thumb_unexpanded_epilogue): Update.
3142         (thumb1_output_function_prologue): Update.
3143         * config/pa/pa.md (return expander): Update.
3144         * config/pa/pa.c (compute_frame_size): Update.
3145         (hppa_builtin_saveregs): Update.
3146         * config/mips/mips.c (mips_va_start): Update.
3147         (mips16_build_function_stub): Update.
3148         (mips_compute_frame_info): Update.
3149         (mips_restore_gp): Update.
3150         (mips_output_function_prologue): Update.
3151         (mips_expand_prologue): Update.
3152         * config/v850/v850.c (compute_frame_size): Update.
3153         (expand_prologue): * config/mmix/mmix.c (along): update.
3154         (mmix_initial_elimination_offset): update.
3155         (mmix_reorg): update.
3156         (mmix_use_simple_return): update.
3157         (mmix_expand_prologue): update.
3158         (mmix_expand_epilogue): Update.
3159         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
3160         (emit_link_insn): Update.
3161
3162 2008-04-08  Anatoly Sokolov <aesok@post.ru>
3163
3164         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define 
3165         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL 
3166         instructions.
3167         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for 
3168         atmega103 device.
3169
3170 2008-04-07  Jan Hubicka  <jh@suse.cz>
3171
3172         * function.h (rtl): Rename to x_rtl.
3173         (crtl): New define.
3174         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
3175         frame_offset, stack_check_probe_note, arg_pointer_save_area,
3176         used_temp_slots avail_temp_slots, temp_slot_level,
3177         nonlocal_goto_handler_labels): Update accesstors.
3178         (rtl): New global variable.
3179         (struct function): Move some fileds to rtl_data.
3180         (get_arg_pointer_save_area): Update prototype.
3181         * builtins.c (expand_builtin_setjmp_receiver): Update call of
3182         get_arg_pointer_save_area.
3183         * expr.c (init_expr): Update
3184         * function.c (get_frame_size): Update
3185         (assign_stack_local): Update
3186         (expand_function_end): Update.
3187         (get_art_pointer_save_area): Update
3188         * function.h 
3189         * emit-rtl.c (rtl): Declare.
3190         (regno_reg_rtx): Declare.
3191         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
3192         Update.
3193         (gen_reg_rtx): Update.
3194         * varasm.c (n_deferred_constatns): Update accestor.
3195         (init_varasm_status): Do not allocate varasm_status.
3196         (force_const_mem, get_pool_size, output_constant_pool): Update.
3197         * stmt.c (force_label_rtx): Do not use x_ prefixes.
3198         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
3199         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
3200         * sparc/sparc.h (INIT_EXPANDERS): Update.
3201         * ia64/ia64.h (INIT_EXPANDERS): Update.
3202
3203 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
3204
3205         * reload.c (push_secondary_reload): Add missing break to for loop.
3206
3207 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
3208
3209         PR middle-end/PR28690
3210         * rtlanal.c: Update copyright years.
3211         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
3212         as REG_POINTER and MEM_POINTER operands.
3213         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
3214         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
3215         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
3216         * gcse.c: Update copyright years.
3217         (pre_delete): Call gen_reg_rtx_and_attrs.
3218         (hoist_code): Likewise.
3219         (build_store_vectors): Likewise.
3220         (delete_store): Likewise.
3221         * loop-invariant.c (move_invariant_reg): Likewise.
3222         Update copyright years.
3223
3224 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
3225
3226         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
3227         control string instead of quoted.
3228
3229 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
3230
3231         * doc/rtl.texi: Rewrite of subreg section.
3232
3233 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
3234
3235         PR/35842
3236         * config/i386/i386.c (legitimize_pic_address): Add treating
3237         of dllimport SYM_REF's.
3238         (legitimize_dllimport_symbol): Add prototype.
3239
3240 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
3241
3242         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
3243         reference in constructor with non self-referential type.
3244
3245 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
3246
3247         Removal of Return with Depressed Stack Pointer support
3248         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
3249         (ECF_SP_DEPRESSED): Likewise.
3250         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
3251         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
3252         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
3253         (expand_call): Do not test ECF_SP_DEPRESSED.
3254         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
3255         * function.c (keep_stack_depressed): Delete.
3256         (handle_epilogue_set): Likewise.
3257         (update_epilogue_consts): Likewise.
3258         (emit_equiv_load): Likewise.
3259         (thread_prologue_and_epilogue_insns): Remove support for Return with
3260         Depressed Stack Pointer.
3261         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
3262
3263 2008-04-06  Richard Guenther  <rguenther@suse.de>
3264
3265         PR tree-optimization/35400
3266         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
3267         information from SSA_NAMEs.
3268
3269 2008-04-06  Anatoly Sokolov <aesok@post.ru>
3270
3271         * config/avr/avr.h (avr_mega_p): Remove declaration.
3272         (AVR_MEGA): Remove macro.
3273         * config/avr/avr.c (avr_mega_p): Remove variable.
3274         (avr_override_options): Remove inicializion of avr_mega_p.
3275         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
3276         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
3277         (avr_jump_mode): (Ditto.).
3278         (avr_output_progmem_section_asm_op): (Ditto.).
3279         (avr_asm_init_sections): (Ditto.).
3280         (avr_asm_init_sections): (Ditto.).
3281         (avr_rtx_costs): (Ditto.).
3282         * config/avr/avr.md: (Ditto.).
3283         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of 
3284         '__AVR_MEGA__'.
3285
3286 2008-04-06  Richard Guenther  <rguenther@suse.de>
3287
3288         PR tree-optimization/35842
3289         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
3290         is_gimple_invariant_address.
3291
3292 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3293
3294         * gcc.c (default_compilers): Sync Fortran extensions list with
3295         that in fortran/lang-specs.h.
3296         * doc/invoke.texi: Likewise.
3297         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
3298         * dwarf2out.c (gen_compile_unit_die): Likewise.
3299
3300 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
3301
3302         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
3303
3304 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
3305
3306         PR target/12329
3307         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
3308         attribute is used for nested functions.
3309
3310 2008-04-05  Jan Hubicka  <jh@suse.cz>
3311
3312         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
3313
3314         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
3315         letter argument.
3316         (dump_files): Update.
3317         (enable_rtl_dump_file): Do not accept letter argument.
3318         * tree-pass.h (dump_file_info): Remove letter argument.
3319         * toplev.c (decode_d_option): Update -da handling.
3320         * toplev.h (enable_rtl_dump_file): Update prototype.
3321         * passes.c (register_one_dump_file): Do not accept IPA argument; work
3322         it out based on pass type.
3323         (register_dump_files_1): Likewise.
3324         (init_optimization_passes): Update register_one_dump_file calls.
3325         (execute_one_pass): Sanity check that IPA passes are called at IPA
3326         level and RTL passes at RTL level.
3327         (execute_pass_list): IPA pass can not be after or subpass of
3328         GIMPLE/RTL pass.
3329         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
3330         disallov RTL subpasses of IPA subpasses.
3331
3332 2008-04-05  Ben Elliston  <bje@au.ibm.com>
3333
3334         * tree-cfg.c (need_fake_edge_p): Return false for calls to
3335         builtins that return exactly once and do not throw. Cache call to
3336         call_expr_flags.
3337
3338 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
3339
3340         PR rtl-optimization/34916
3341         PR middle-end/35519
3342         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
3343         between instruction pairs.
3344
3345 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
3346
3347         * doc/invoke.texi: Document -mbitops for SH.
3348         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
3349         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
3350         * config/sh/sh.c (print_operand): Add %t operand code.
3351         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
3352         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
3353         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
3354         (extendqihi2): Likewise.
3355         (movqi_i): Likewise.
3356         (insv): Use bset, bclr and bst instructions for SH2A if possible.
3357         (extv): Use bld instruction for SH2A if possible.
3358         (extzv): Likewise.
3359         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
3360         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
3361         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
3362         (bset.b, bclr.b): Define peepholes.
3363         * config/sh/sh.opt (mbitops): New option.
3364
3365 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
3366
3367         PR target/35620
3368         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
3369         and view convert expression.
3370
3371 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
3372
3373         PR target/35364
3374         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
3375
3376 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
3377
3378         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
3379
3380         * config/i386/cpuid.h (bit_AES): New.
3381         (bit_PCLMUL): Likewise.
3382
3383         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
3384         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
3385         SSE2 if AES or PCLMUL is enabled.
3386         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
3387         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
3388         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
3389         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
3390         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
3391         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
3392         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
3393         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
3394         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
3395         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
3396         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
3397         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
3398         __builtin_ia32_aeskeygenassist128 and
3399         __builtin_ia32_pclmulqdq128.
3400         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
3401         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
3402         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
3403
3404         * config/i386/i386.h (TARGET_AES): New.
3405         (TARGET_PCLMUL): Likewise.
3406         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
3407
3408         * config/i386/i386.md (UNSPEC_AESENC): New.
3409         (UNSPEC_AESENCLAST): Likewise.
3410         (UNSPEC_AESDEC): Likewise.
3411         (UNSPEC_AESDECLAST): Likewise.
3412         (UNSPEC_AESIMC): Likewise.
3413         (UNSPEC_AESKEYGENASSIST): Likewise.
3414         (UNSPEC_PCLMUL): Likewise.
3415
3416         * config/i386/i386.opt (maes): New.
3417         (mpclmul): Likewise.
3418
3419         * config/i386/sse.md (aesenc): New pattern.
3420         (aesenclast): Likewise.
3421         (aesdec): Likewise.
3422         (aesdeclast): Likewise.
3423         (aesimc): Likewise.
3424         (aeskeygenassist): Likewise.
3425         (pclmulqdq): Likewise.
3426
3427         * config/i386/wmmintrin.h: New.
3428
3429         * doc/extend.texi: Document AES and PCLMUL built-in function.
3430
3431         * doc/invoke.texi: Document -maes and -mpclmul.
3432
3433 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
3434
3435         * function.c (free_after_parsing): Replace with
3436         cxx_push_function_context from C++ front-end.
3437         (allocate_struct_function): Don't call langhook.
3438         * langhooks.h (struct lang_hooks_for_functions): Delete.
3439         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
3440         member "function".
3441         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
3442         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
3443         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
3444         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
3445         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
3446         remove LANG_HOOKS_FUNCTION_INITIALIZER.
3447         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
3448
3449         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
3450         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
3451         
3452 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
3453
3454         PR c/35440
3455         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
3456         for all types.
3457
3458 2008-04-04  Richard Guenther  <rguenther@suse.de>
3459
3460         PR middle-end/35823
3461         * fold-const.c (optimize_minmax_comparison): Use the correct
3462         type for the constant in the simplified comparison.
3463
3464 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
3465
3466         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
3467         Pass L2 size as "--param l2-cache-size" to the compiler.
3468         (decode_l2_cache): New function to decode L2 cache parameters using
3469         0x8000006 extended cpuid function.
3470         (detect_caches_amd): Determine parameters of L2 cache using
3471         decode_l2_caches function.
3472         (decode_caches_intel): Decode L2 cache parameters.
3473         (detect_caches_intel): Determine L2 cache parameters using
3474         decode_caches_intel and decode_l2_caches functions.
3475
3476 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
3477
3478         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
3479         secondary input reload for subword loads from the constant pool.
3480
3481 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
3482
3483         PR target/35713
3484         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
3485           constants of the appropriate size for runtime calculations.
3486
3487         PR c/35712
3488         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
3489           decimal-float literal constant zero.
3490
3491 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
3492
3493         PR c/35738
3494         * c-parser.c (c_parser_omp_atomic): Call
3495         default_function_array_conversion on the RHS.
3496
3497         PR middle-end/35818
3498         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
3499         call is_variable_sized if decl has incomplete type.
3500
3501 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
3502
3503         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
3504
3505 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
3506
3507         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
3508         iterators.
3509         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
3510         (sgt<u>): Merge sgt and sgtu into new expander.
3511         (sgt, sgtu): Remove expanders.
3512         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
3513         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
3514         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
3515         *sgtu_<mode>_mips16 into new pattern.
3516         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
3517         (sge<u>): Merge sge and sgeu into new expander.
3518         (sge, sgeu): Remove expanders.
3519         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
3520         new pattern.
3521         (*sge_<mode>, second *sge_<mode>): Remove patterns.
3522         (slt<u>): Merge slt and sltu into new expander.
3523         (slt, sltu): Remove expanders.
3524         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
3525         (*slt_<mode>, *sltu_<mode>): Remove patterns.
3526         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
3527         *sltu_<mode>_mips16 into new pattern.
3528         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
3529         (sle<u>): Merge sle and sleu into new expander.
3530         (sle, sleu): Remove expanders.
3531         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
3532         (*sle_<mode>, *sleu_<mode>): Remove patterns.
3533         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
3534         *sleu_<mode>_mips16 into new pattern.
3535         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
3536
3537 2008-04-03  Jan Hubicka  <jh@suse.cz>
3538
3539         PR tree-optimization/35795
3540         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
3541         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
3542         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
3543         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
3544         * score/score3.c (score3_output_mi_thunk): Likewise.
3545         * score/score7.c (score7_output_mi_thunk): Likewise.
3546         * mips/mips.c (mips_output_mi_thunk): Likewise.
3547
3548 2008-04-03  Richard Guenther  <rguenther@suse.de>
3549
3550         * tree-vrp.c (extract_range_from_unary_expr): Handle all
3551         conversions.  Simplify code.
3552
3553 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
3554
3555         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
3556
3557 2008-04-03  Tom Tromey  <tromey@redhat.com>
3558             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3559
3560         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
3561         * config/bfin/t-bfin-linux (generated_files): Add
3562         linux-sysroot-suffix.h.
3563         * doc/install.texi (Prerequisites): Require make 3.80.
3564         * doc/sourcebuild.texi (Front End Directory): Document new
3565         variable.
3566         * Makefile.in (generated_files): New variable.
3567         (ALL_HOST_OBJS): New variable.
3568         ($(ALL_HOST_OBJS)): New target.
3569
3570 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
3571
3572         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
3573         (remap_block): Call id->transform_lang_insert_block instead
3574         of langhook.
3575         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
3576         Set id.transform_lang_insert_block to NULL.
3577         (clone_body): Move to cp/optimize.c
3578         * tree-inline.h (struct copy_body_data): Change
3579         transform_lang_insert_block to function pointer.
3580         (copy_generic_body, copy_decl_no_change): Export.
3581         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
3582         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
3583         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
3584
3585         * c-tree.h (insert_block): Kill.
3586         * c-decl.c (insert_block): Kill.
3587
3588 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
3589
3590         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
3591         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
3592         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
3593         argument.
3594         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
3595         argument, call {push,pop}_function_context from here.
3596         * c-parser.c: Use c_{push,pop}_function_context.
3597
3598         * function.c (push_function_context_to): Move meat ...
3599         (push_function_context): ... here.  Simplify.
3600         * function.c (pop_function_context_from): Move meat ...
3601         (pop_function_context): ... here.  Simplify.
3602         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
3603         leave_nested).
3604         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
3605         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
3606         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
3607         * tree.h (push_function_context_to, pop_function_context_from): Remove.
3608
3609 2008-04-03  Ben Elliston  <bje@au.ibm.com>
3610
3611         * expmed.c (extract_force_align_mem_bit_field): Remove.
3612
3613 2008-04-03  Richard Guenther  <rguenther@suse.de>
3614
3615         PR middle-end/35800
3616         * expr.h (try_casesi): Adjust prototype.
3617         * expr.c (try_casesi): Take fallback label as extra parameter.
3618         Use that for gen_casesi if default_label is NULL.
3619         * stmt.c (expand_case): Pass fallback label to try_casesi,
3620         make sure to fill gaps with a fallback label if default_label
3621         is not present.
3622
3623 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
3624
3625         PR target/35801
3626         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
3627
3628 2008-04-03  Ben Elliston  <bje@au.ibm.com>
3629
3630         * expmed.c (extract_split_bit_field): Remove if (0) code.
3631         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
3632         (do_ds_constraint): Likewise.
3633
3634 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
3635
3636         * doc/cppopts.texi (-dU): Document.
3637         * c-common.h (flag_dump_macros): Update comment.
3638         * c-opts.c (handle_OPT_d): Handle -dU.
3639         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
3640         dump_queued_macros, cb_used_define, cb_used_undef): New.
3641         (init_pp_output): Handle -dU.
3642         (cb_line_change): Call dump_queued_macros.
3643         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
3644
3645 2008-04-02  Anatoly Sokolov <aesok@post.ru>
3646
3647         * config/avr/predicates.md (io_address_operand): New predicate. 
3648         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
3649         * config/avr/avr.c (avr_io_address_p): Remove function.
3650         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of 
3651         'avr_io_address_p' function.
3652         (out_movhi_r_mr): (Ditto.).
3653         (out_movqi_mr_r): (Ditto.).
3654         (out_movhi_mr_r): (Ditto.).
3655         (avr_address_cost): (Ditto.).
3656
3657 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
3658
3659         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
3660         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
3661         in 32bit mode when XMM registers are available to avoid store
3662         forwarding stalls.
3663         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
3664         corresponding post-reload splitters.
3665
3666 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
3667
3668         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
3669         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
3670         __builtin_ia32_roundss.
3671         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
3672         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
3673         __builtin_ia32_roundss.
3674         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
3675         IX86_BUILTIN_SHUFPD here.
3676
3677 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
3678
3679         * config/i386/i386.md (plogic): New.
3680         (plogicprefix): Likewise.
3681
3682         * config/i386/mmx.md (mmx_<code><mode>3): New.
3683         (mmx_and<mode>3): Removed.
3684         (mmx_ior<mode>3): Likewise.
3685         (mmx_xor<mode>3): Likewise.
3686
3687         * config/i386/sse.md (<code><mode>3): New.
3688         (*<code><mode>3): Likewise.
3689         (*<code><mode>3): Likewise.
3690         (<code><mode>3): Likewise.
3691         (*sse_<code><mode>3): Likewise.
3692         (*sse2_<code><mode>3): Likewise.
3693         (<code>tf3): Likewise.
3694         (*<code>tf3): Likewise.
3695         (and<mode>3): Likewise.
3696         (*and<mode>3): Likewise.
3697         (ior<mode>3): Removed.
3698         (*ior<mode>3): Likewise.
3699         (xor<mode>3): Likewise.
3700         (*xor<mode>3): Likewise.
3701         (*and<mode>3): Likewise.
3702         (*ior<mode>3): Likewise.
3703         (*xor<mode>3): Likewise.
3704         (and<mode>3): Likewise.
3705         (*sse_and<mode>3): Likewise.
3706         (*sse2_and<mode>3): Likewise.
3707         (andtf3): Likewise.
3708         (*andtf3): Likewise.
3709         (ior<mode>3): Likewise.
3710         (*sse_ior<mode>3): Likewise.
3711         (*sse2_ior<mode>3): Likewise.
3712         (iortf3): Likewise.
3713         (*iortf3): Likewise.
3714         (xor<mode>3): Likewise.
3715         (*sse_xor<mode>3): Likewise.
3716         (*sse2_xor<mode>3): Likewise.
3717         (xortf3): Likewise.
3718         (*xortf3): Likewise.
3719
3720 2008-04-02  Richard Guenther  <rguenther@suse.de>
3721
3722         PR tree-optimization/14495
3723         PR tree-optimization/34793
3724         * tree-vrp.c (struct switch_update): New structure.
3725         (to_remove_edges, to_update_switch_stmts): New VECs.
3726         (simplify_switch_using_ranges): New function.  Remove not taken
3727         case labels and edges.
3728         (simplify_stmt_using_ranges): Call it.
3729         (identify_jump_threads): Mark edges we have queued for removal
3730         so we don't thread them.
3731         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
3732         case label vector.
3733         * tree-cfg.c (group_case_labels): Deal with missing default label.
3734         (tree_verify_flow_info): Allow missing default label.
3735         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
3736         (emit_case_nodes): Likewise.
3737         (expand_case): Do not rely on the default label to be present.
3738         * expr.c (try_casesi): Deal with NULL default_label.
3739         (do_tablejump): Likewise.
3740
3741 2008-04-02  Richard Guenther  <rguenther@suse.de>
3742
3743         PR tree-optimization/14495
3744         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
3745         SWITCH_EXPR here ...
3746         (vrp_visit_switch_stmt): ... but here (new function).
3747         (find_case_label_index): New helper function.
3748         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
3749
3750 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3751
3752         * fwprop.c: Fix ISO-C99ism.
3753
3754 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3755
3756         PR bootstrap/35752
3757         * Makefile.in (objdir): Set it here.
3758         * configure.ac: Not here.  Find dynamic linker characteristics.
3759         * exec-tool.in: Use them.
3760         * aclocal.m4: Regenerate.
3761         * configure: Regenerate.
3762
3763 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3764
3765         * expr.c (expand_var): Delete it.
3766         * expr.h (expand_var): Delete prototype.
3767         * function.c (expand_function_start): Use expand_decl instead.
3768         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
3769         langhook.
3770
3771 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
3772
3773         PR rtl-optimization/35542
3774         * fwprop.c (forward_propagate_and_simplify): Replace
3775         loc_reg_mentioned_in_p with reg_mentioned_p.
3776
3777 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3778
3779         PR rtl-optimization/35281
3780         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
3781         (propagate_rtx_1): Handle PR_HANDLE_MEM.
3782         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
3783         (varying_mem_p): Move above propagate_rtx.
3784         (all_uses_available_at): Do not check MEMs.
3785
3786 2008-04-02  Rafael Espindola  <espindola@google.com>
3787
3788         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
3789         (register_edge_assert_for_2): Split the cond argument.
3790         (register_edge_assert_for_1): Adjust for the change in
3791         register_edge_assert_for_2.
3792         (register_edge_assert_for): Split the cond argument.
3793         (find_switch_asserts): Adjust for the change in
3794         register_edge_assert_for.
3795
3796 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
3797
3798         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
3799         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
3800         offsets for 64-bit mingw.
3801         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
3802         abi for x86_64-pc-mingw.
3803
3804 2008-04-02  Richard Guenther  <rguenther@suse.de>
3805
3806         * tree-vrp.c (extract_range_from_assert): Make sure to not
3807         produce range min/max with TREE_OVERFOW set.
3808         If merging a anti-range and a range keep the anti-range if
3809         the range covers all values of the type.
3810         (register_edge_assert_for_2): Only allow sign-changing
3811         conversions in detecting canonical range checks.  Also
3812         register an assert for the unsigned name if useful.
3813
3814         PR tree-optimization/35787
3815         * tree-vrp.c (vrp_val_max): New function.
3816         (vrp_val_min): Likewise.
3817         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
3818         (vrp_val_is_min): Likewise.
3819         (supports_overflow_infinity): Use vrp_val_{min,max}.
3820         (negative_overflow_infinity): Likewise.
3821         (positive_overflow_infinity): Likewise.
3822         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
3823         (is_positive_overflow_infinity): Likewise.
3824         (is_overflow_infinity): Likewise.
3825         (avoid_overflow_infinity): Use vrp_val_{min,max} and
3826         vrp_val_is_{min,max}.
3827         (set_and_canonicalize_value_range): Canonicalize anti-ranges
3828         to ranges if possible.  Avoid empty ranges.
3829
3830 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3831
3832         PR middle-end/35705
3833         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
3834         the expression is a function address.
3835
3836 2008-04-01  George Helffrich  <george@gcc.gnu.org>
3837
3838         PR fortran/35154, fortran/23057
3839         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
3840         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
3841         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
3842         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
3843         in common.
3844         (dbxout_syms): Check for COMMON-based symbol and wrap in
3845         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
3846         in bracket for efficiency.
3847
3848         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
3849         using DW_TAG_common_block + member offset.
3850         (add_pubname_string): New function.
3851         (dw_expand_expr): New function to find block name and offset for
3852         COMMON var.
3853         (common_check): New function to check whether symbol in Fortran COMMON.
3854         (gen_variable_die): If COMMON, use DW_TAG_common_block.
3855
3856 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
3857
3858         PR c/35436
3859         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
3860
3861 2008-04-02  Ben Elliston  <bje@au.ibm.com>
3862
3863         * config/v850/v850.md (casesi): Remove if (0) code.
3864         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
3865         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
3866
3867 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
3868
3869         * config/i386/i386.md (rex64suffix): New mode attribute.
3870         (floathi<mode>2): Disable expander for SSE math.
3871         (*floathi<mode>2_1): New insn insn_and_split pattern.
3872         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
3873         corresponding post-reload splitters.
3874         (*floathi<mode>2_i387): New macroized insn pattern.
3875         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
3876         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
3877         insn_and_split pattern.
3878         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
3879         New macroized instruction patterns and corresponding post-reload
3880         splitters.
3881         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
3882         and corresponding post-reload splitters.
3883         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
3884         New macroized instruction patterns.
3885         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
3886         macroized instruction patterns and corresponding post-reload splitters.
3887         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
3888         corresponding post-reload splitters.
3889         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
3890         New macroized instruction patterns.
3891         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
3892         corresponding post-reload splitters.
3893         (*floatsi<mode>2_i387): New macroized instruction patterns.
3894
3895 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
3896
3897         * config/i386/i386.md (smaxmin): New.
3898         (umaxmin): Likewise.
3899         (maxminiprefix): Likewise.
3900         (maxminfprefix): Likewise.
3901         (<code><mode>3): Likewise.
3902         (smin<mode>3): Removed.
3903         (smax<mode>3): Likewise.
3904
3905         * config/i386/mmx.md (mmx_<code>v2sf3): New.
3906         (mmx_<code>v4hi3): Likewise.
3907         (mmx_<code>v8qi3): Likewise.
3908         (mmx_smaxv2sf3): Removed.
3909         (mmx_sminv2sf3): Likewise.
3910         (mmx_umaxv8qi3): Likewise.
3911         (mmx_smaxv4hi3): Likewise.
3912         (mmx_uminv8qi3): Likewise.
3913         (mmx_sminv4hi3): Likewise.
3914
3915         * config/i386/sse.md (<addsub><mode>3): New.
3916         (*<addsub><mode>3): Likewise.
3917         (<sse>_vm<addsub><mode>3): Likewise.
3918         (<maxmin><mode>3): Likewise.
3919         (*<maxmin><mode>3_finite): Likewise.
3920         (*<maxmin><mode>3): Likewise.
3921         (<sse>_vm<maxmin><mode>3): Likewise.
3922         (sse3_h<addsub>v4sf3): Likewise.
3923         (sse3_h<addsub>v2df3): Likewise.
3924         (<maxmin>v16qi3): Likewise.
3925         (*<maxmin>v16qi3): Likewise.
3926         (<maxmin>v8hi3): Likewise.
3927         (*<maxmin>v8hi3): Likewise.
3928         (*sse4_1_<maxmin><mode>3): Likewise.
3929         (*sse4_1_<maxmin><mode>3): Likewise.
3930         (add<mode>3): Removed.
3931         (*add<mode>3): Likewise.
3932         (<sse>_vmadd<mode>3): Likewise.
3933         (sub<mode>3): Likewise.
3934         (*sub<mode>3): Likewise.
3935         (<sse>_vmsub<mode>3): Likewise.
3936         (smin<mode>3): Likewise.
3937         (*smin<mode>3_finite): Likewise.
3938         (*smin<mode>3): Likewise.
3939         (<sse>_vmsmin<mode>3): Likewise.
3940         (smax<mode>3): Likewise.
3941         (*smax<mode>3_finite): Likewise.
3942         (*smax<mode>3): Likewise.
3943         (<sse>_vmsmax<mode>3): Likewise.
3944         (sse3_haddv4sf3): Likewise.
3945         (sse3_haddv2df3): Likewise.
3946         (sse3_hsubv4sf3): Likewise.
3947         (sse3_hsubv2df3): Likewise.
3948         (umaxv16qi3): Likewise.