OSDN Git Service

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