OSDN Git Service

Change attribute((option(...))) to attribute((target(...))); Do not allocate tree...
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
2
3         * dojump.c (top level): Include basic-block.h to declare
4         optimize_insn_for_speed_p
5
6         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
7
8         * opts.h (CL_SAVE): New option class for marking options that are
9         target specific options usable in the target attribute.
10         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
11
12         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
13         can easily find the target specific options that are safe to use
14         in the attribute or pragma.
15
16         * attribs.c (decl_attributes): Change #pragma GCC option to
17         #pragma GCC target, and attribute((option(...))) to
18         attribute((target(...))).
19
20         * doc/extend.texi (target attribute): Change from option
21         attribute.  Delete push/pop/reset.
22         (#pragma GCC target): Change from #pragma GCC option.  Delete
23         push/pop/reset.
24         (#pragma GCC push_options): Document new pragma.
25         (#pragma GCC pop_options): Document new pragma.
26         (#pragma GCC reset_options): Document new pragma.
27
28         * targhooks.c (default_target_option_valid_attribute_p): Add
29         warning about port not supporting target attributes.
30         (default_target_option_pragma_parse): New function, warn about
31         #pragma GCC target not being supported.
32
33         * targhooks.h (default_target_option_pragma_parse): Add
34         declaration.
35
36         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
37         TI_CURRENT_OPTION_PRAGMA.
38         (current_target_pragma): Rename from current_option_pragma.
39
40         * target.h: (struct target_option): Delete booleans for changing
41         the optimization level on hot/cold functions.  Change signature of
42         pragma_parse hook to take a second tree.
43
44         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
45
46         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
47         that the declaration is done at global scope.
48
49         * langhooks.c (add_builtin_function_common): Move most of the code
50         from add_builtin_function here, calling the hook passed in.
51         (add_builtin_function): Call add_builtin_function_common with
52         standard builtin hook.
53         (add_builtin_function_ext_scope): New function to add builtins to
54         global scope.
55
56         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
57         hook.
58         (add_builtin_function_ext_scope): Add declaration.
59
60         * c-pragma.c (handle_pragma_target): Rename from
61         handle_pragma_option, #pragma GCC option is now #pragma GCC
62         target.  Move warning about port not supporting target options to
63         default pragma parse hook.  Remove push/pop/reset from this
64         pragma.
65         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
66         (option_stack): Delete static variable.
67         (optimize_stack): Ditto.
68         (optons_stack): New stack of saved target and optimization
69         options.
70         (handle_pragma_push_options): New function to handle pushing both
71         target and optimization options.
72         (handle_pragma_pop_options): New function to handle popping both
73         target and optimization options.
74         (handle_pragma_reset_options): New function to handle resetting
75         both target and optimization options to their initial state.
76         (init_pragma): Rename handle_pragma_option to
77         handle_pragma_target.  Add support for push_options, pop_options,
78         and reset_options pragmas.
79
80         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
81         default_target_option_pragma_parse.
82         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
83         default_target_option_valid_attribute_p.
84         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
85         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
86         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
87         optimization level on hot/cold functions.
88
89         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
90         if the caller and callee have different optimization levels.
91
92         * c-common.c (handle_target_attribute): Rename from
93         handle_option_attribute, attribute((option(...))) is now
94         attribute((target(...))).  Move warning if the port does not
95         support target attributes to the default hook.
96         (handle_hot_attribute): Delete code to change the optimization
97         level of hot functions.
98         (handle_cold_attribute): Ditto.
99
100         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
101         argument that is the binary tree options to use if there are no
102         arguments.  Call ix86_valid_target_attribute_tree instead of
103         ix86_valid_option_attribute_tree.
104         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
105         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
106         ix86_pragma_option_parse.
107
108         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
109         Rename from ix86_valid_option_attribute_tree.
110
111         * config/i386/i386.c (ix86_add_new_builtins): New function to add
112         new builtins when the ISA changes.
113         (ix86_valid_target_attribute_tree): Rename from
114         ix86_valid_option_attribute_tree.  Change callers.  If the
115         function specified optimization options, use those as the starting
116         point before setting up the target attributes.  If the
117         optimization options were changed in the course of setting the
118         target attributes, record the new optimization options.
119         (ix86_valid_target_attribute_tree_inner_p): Rename from
120         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
121         ix86_add_new_builtins if the ISA changed.
122         (ix86_valid_target_attribute_p): Rename from
123         ix86_valid_option_attribute_p.  Change callers.
124         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
125         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
126         as delayed builtin functions.
127         (struct builtin_isa): New structure to record builtin functions
128         that should be delayed until the ISA for that function is used.
129         (ix86_builtins_isa): Change from int to struct to track builtin
130         functions we want to declare at some point.
131         (def_builtin): If the front end can delay defining the builtin
132         functions, don't create builtins for ISAs not part of the default
133         options.
134         (def_builtin_const): Ditto.
135         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
136         __builtin_ia32_pcmov_v2di to be different builtin functions.
137         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
138         a structure instead of an int.
139         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
140         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
141         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
142         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
143
144         * config/ia64/ia64.h
145         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
146         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
147
148         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
149         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
150         (LANG_HOOKS_INITIALIZER): Add
151         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
152
153 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
154
155         PR target/37270
156         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
157         the reload address with the index register for SFmode
158         access with a displacement.
159
160 2008-08-30  Jan Hubicka  <jh@suse.cz>
161
162         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
163         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
164         * dojump.c (do_jump): Likewise.
165         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
166         (note-if_info): Add BRANCH_COST.
167         (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
168         noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
169         noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
170         branch cost.
171         * expr.h (BRANCH_COST): Update default.
172         * predict.c (predictable_edge_p): New function.
173         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
174         Update BRANCH_COST call.
175         * basic-block.h (predictable_edge_p): Declare.
176         * config/alpha/alpha.h (BRANCH_COST): Update.
177         * config/frv/frv.h (BRANCH_COST): Update.
178         * config/s390/s390.h (BRANCH_COST): Update.
179         * config/spu/spu.h (BRANCH_COST): Update.
180         * config/sparc/sparc.h (BRANCH_COST): Update.
181         * config/m32r/m32r.h (BRANCH_COST): Update.
182         * config/i386/i386.h (BRANCH_COST): Update.
183         * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
184         * config/sh/sh.h (BRANCH_COST): Update.
185         * config/pdp11/pdp11.h (BRANCH_COST): Update.
186         * config/avr/avr.h (BRANCH_COST): Update.
187         * config/crx/crx.h (BRANCH_COST): Update.
188         * config/xtensa/xtensa.h (BRANCH_COST): Update.
189         * config/stormy16/stormy16.h (BRANCH_COST): Update.
190         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
191         * config/iq2000/iq2000.h (BRANCH_COST): Update.
192         * config/ia64/ia64.h (BRANCH_COST): Update.
193         * config/rs6000/rs6000.h (BRANCH_COST): Update.
194         * config/arc/arc.h (BRANCH_COST): Update.
195         * config/score/score.h (BRANCH_COST): Update.
196         * config/arm/arm.h (BRANCH_COST): Update.
197         * config/pa/pa.h (BRANCH_COST): Update.
198         * config/mips/mips.h (BRANCH_COST): Update.
199         * config/vax/vax.h (BRANCH_COST): Update.
200         * config/h8300/h8300.h (BRANCH_COST): Update.
201         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
202         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
203         * doc/tm.texi (BRANCH_COST): Update.
204
205 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
206
207         PR target/37283
208         * config/arm/arm.c (arm_optimization_options): Set
209         flag_section_anchors to 2 instead of 1 to distinguish it from
210         -fsection-anchors given explicitely on the command line.
211
212 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
213
214         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
215         final insn of a split.
216
217 2008-08-30  Jan Hubicka  <jh@suse.cz>
218
219         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
220         optimized for speed.
221         * final.c (compute_alignments): Use optimize_bb_for_size_p.
222         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
223         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
224         flag_gcse_after_reload_set): New static vars.
225         (common_handle_option): Enable those flags for profile-use.
226         (decode_options): Remove optimize_size flags that are handled
227         on higher granuality.
228         * tree-vectorizer.c (vectorize_loops): Use
229         optimize_loop_nest_for_speed_p.
230         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
231         * tree-predcom.c (tree_predictive_commoning): Use
232         optimize_loop_for_speed_p.
233         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
234         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
235         * predict.c (optimize_loop_for_speed_p): Fix walk.
236
237 2008-08-30  Jan Hubicka  <jh@suse.cz>
238
239         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
240         functions.
241         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
242         profile presence locally.
243
244 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
245
246         PR bootstrap/37086
247         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
248         versions before 4.0.
249
250 2008-08-29  Jan Hubicka  <jh@suse.cz>
251
252         * tree-inline.c (insert_init_stmt): Insert sequence even when
253         not in SSA form.
254
255 2008-08-29  Jeff Law  <law@redhat.com>
256
257         * mn10300.c (mn10300_secondary_reload_class): We need secondary
258         reloads for AM33-2 if IN is a pseudo with an equivalent memory
259         location and class is an FP register.
260
261 2008-08-29  Jan Hubicka  <jh@suse.cz>
262
263         * see.c (see_merge_one_def_extension): Silence used uninitialized
264         warning.
265         * matrix-reorg.c (check_allocation_function): Likewise.
266         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
267
268 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
269
270         PR c/37261
271         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
272         compute new & and | in type rather than TREE_TYPE (arg0).
273
274         * dwarf2out.c (fortran_common): Update comment.
275         (gen_variable_die): Swap com_die and var_die variables in Fortran
276         COMMON block handling code.
277
278         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
279
280         * dwarf2out.c (gen_const_die): New function.
281         (size_of_die, value_format, output_die): Output larger
282         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
283         (native_encode_initializer): New function.
284         (tree_add_const_value_attribute): Call it.
285         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
286
287         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
288         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
289         TREE_THIS_VOLATILE to add_type_attribute.
290
291         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
292         types.
293         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
294         types.
295
296         * dwarf2out.c (loc_by_reference): New function.
297         (add_location_or_const_value_attribute): Use it.
298
299         PR fortran/23057
300         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
301         as DW_TAG_variable children of DW_TAG_common_block rather than
302         DW_TAG_member children.  Put DW_AT_external to individual
303         DW_TAG_variable DIEs, not to DW_TAG_common_block.
304
305         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
306         loc_descriptor_from_tree_1.
307
308         PR fortran/29635
309         PR fortran/23057
310         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
311         arguments to imported_module_or_decl.
312         (debug_nothing_tree_tree): Removed.
313         (debug_nothing_tree_tree_tree_bool): New prototype.
314         * debug.c (do_nothing_debug_hooks): Adjust.
315         (debug_nothing_tree_tree): Removed.
316         (debug_nothing_tree_tree_tree_bool): New function.
317         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
318         (gen_variable_die): Put all common vars for the
319         same COMMON block under one DW_TAG_common_block.
320         (declare_in_namespace): Return new context_die, for Fortran
321         return the module DIE instead of adding extra declarations into
322         the namespace.
323         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
324         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
325         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
326         DW_AT_declaration.
327         (dwarf2out_global_decl): Don't skip Fortran global vars.
328         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
329         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
330         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
331         DW_TAG_imported_declaration as child of previous
332         DW_TAG_imported_module.
333         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
334         * sdbout.c (sdb_debug_hooks): Likewise.
335         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
336
337 2008-08-29  Jan Hubicka  <jh@suse.cz>
338
339         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
340
341         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
342         * ipa-cp.c (n_cloning_candidates): New static variable.
343         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
344         (ipcp_print_all_lattices): Improve debug output.
345         (ipcp_cloning_candidate_p): New function.
346         (ipcp_initialize_node_lattices): Use it.
347         (ipcp_init_stage): Do only analyzis here; prettier debug output.
348         (ipcp_propagate_stage): Prettier debug output.
349         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
350         (ipcp_print_all_structures): Remove.
351         (ipcp_need_redirect_p): Test !n_cloning_candidates.
352         (ipcp_insert_stage): Prettier debug output; call
353         cgraph_remove_unreachable_nodes before propagating.
354         (pass_ipa_cp): Schedule function removal pass.
355         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
356         debug output.
357         (cgraph_maybe_hot_edge_p): Move to ...
358         * predict.c (cgraph_maybe_hot_edge_p) ... here.
359         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
360         (common_handle_option): Set them; enable ipa-cp when profiling.
361         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
362         (ipa_print_all_jump_functions): Likewise.
363         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
364         (ipa_print_node_params, ipa_print_all_params): New.
365         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
366         ipa_print_all_param_flags): Remove.
367         (ipa_print_node_params, ipa_print_all_params): New.
368
369 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
370
371         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
372         change from 2008-04-03.
373         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
374
375 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
376
377         PR rtl-opt/37251
378
379         * ira-color.c (push_allocnos_to_stack): Truncate
380         removed_splay_allocno_vec.
381
382 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
383
384         PR rtl-opt/37243
385         * ira-color (ira_fast_allocation): Don't assign hard registers to
386         global allocnos.
387
388 2008-08-29  Jan Hubicka  <jh@suse.cz>
389
390         PR middle-end/37278
391         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
392         for cold internal loops.
393
394 2008-08-29  Richard Guenther  <rguenther@suse.de>
395
396         * tree-ssa-structalias.c (create_variable_info_for): Do not
397         create fields for heap vars or vars with a noalias state.
398         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
399         from ESCAPED.
400
401 2008-08-29  Richard Guenther  <rguenther@suse.de>
402
403         * common.opt (ftree-store-ccp): Mark as preserved for
404         backward compatibility.
405         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
406         * tree-pass.h (pass_store_ccp): Remove.
407         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
408         (first_vdef): Remove declaration.
409         (get_value_loaded_by): Likewise.
410         * tree-ssa-ccp.c (do_store_ccp): Remove.
411         (get_default_value): Simplify as do_store_ccp is always false
412         now.  Do not initialize mem_ref.
413         (set_value_varying): Likewise.
414         (canonicalize_float_value): Likewise.
415         (set_lattice_value): Likewise.
416         (likely_value): Likewise.
417         (surely_varying_stmt_p): Likewise.
418         (ccp_initialize): Likewise.
419         (ccp_lattice_meet): Likewise.
420         (ccp_visit_phi_node): Likewise.
421         (ccp_fold): Likewise.
422         (evaluate_stmt): Likewise.
423         (visit_assignment): Likewise.
424         (ccp_visit_stmt): Likewise.
425         (execute_ssa_ccp): Fold into ...
426         (do_ssa_ccp): ... this.
427         (do_ssa_store_ccp): Remove.
428         (gate_store_ccp): Likewise.
429         (pass_store_ccp): Likewise.
430         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
431         initialize mem_ref.
432         * tree-ssa-propagate.c (first_vdef): Remove.
433         (get_value_loaded_by): Likewise.
434         (replace_vuses_in): Likewise.
435         (substitute_and_fold): Do not call replace_vuses_in.
436         * opts.c (decode_options): Do not set flag_tree_store_ccp.
437
438 2008-08-29  Richard Guenther  <rguenther@suse.de>
439
440         PR middle-end/37236
441         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
442         PARAM_NOALIAS tags with is_heapvar.
443         * tree-ssa-operands.c (access_can_touch_variable): Offset
444         based tests do not apply for heapvars.  Fix offset test.
445
446 2008-08-29  Jan Hubicka  <jh@suse.cz>
447
448         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
449         (-fipa-cp-clone): Enabled by default at -O3.
450         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
451         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
452
453 2008-08-29  Jan Hubicka  <jh@suse.cz>
454
455         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
456         New functions.
457         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
458         Declare.
459         * gimple.c (giple_copy_call_skip_args): New function.
460         (giple_copy_call_skip_args): Declare.
461
462         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
463         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
464         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
465         (ipcp_create_replace_map): Improve debug output.
466         (ipcp_need_redirect_p): Return false when not clonning.
467         (ipcp_update_callgraph): Skip args.
468         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
469         skip args.
470         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
471         (save_inline_function_body): Update call of tree_function_versioning.
472         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
473         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
474         (tree_function_versioning): Likewise.
475         * tree-inline.h (tree_function_versioning): Update prototype.
476
477 2008-08-29  Jan Hubicka  <jh@suse.cz>
478
479         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
480         * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
481         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
482         * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
483         * value-prof.c (gimple_divmod_fixed_value_transform,
484         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
485         gimple_stringops_transform): Use optimize_bb_for_size_p.
486         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
487         * final.c (compute_alignments): Use optimize_function_for_size_p.
488         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
489         (fold_builtin_strcpy, fold_builtin_fputs): Use
490         optimize_function_for_size_p.
491         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
492         * recog.c (relax_delay_slots): Likewise.
493         * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
494         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
495         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
496         optimize_function_for_size_p.
497         (cgraph_decide_inlining_of_small_function): Use
498         optimize_function_for_size_p.
499         * global.c (find_reg): Use optimize_function_for_size_p.
500         * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
501         flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
502         flag_prefetch_loop_arrays. Those can work it out from profile.
503         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
504         optimize_loop_for_speed_p.
505         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
506         argument.
507         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
508         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
509         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
510         * local-alloc.c (block_alloc): Pass BB pointer.
511         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
512         * gcse.c (gcse_main): Use optimize_function_for_size_p.
513         * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
514         (decide_peel_completely): Likewise.
515         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
516         optimize_loop_for_size_p.
517         (vect_enhance_data_refs_alignment): Likewise.
518         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
519         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
520         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
521         (try_crossjump_bb): Use optimize_bb_for_size_p.
522         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
523         optimize_loop_for_speed_p.
524         * bb-reorder.c (find_traces_1_round): Likewise.
525         (copy_bb): Use optimize_bb_for_speed_p.
526         (duplicate_computed_gotos): Likewise.
527         * basic-block.h (optimize_loop_nest_for_size_p,
528         optimize_loop_nest_for_speed_p): New.
529         * stmt.c (expand_case): Use optimize_insn_for_size_p.
530
531 2008-08-29  Tristan Gingold  <gingold@adacore.com>
532
533         * gcov.c (main): Call expandargv.
534
535 2008-08-29  Jan Hubicka  <jh@suse.cz>
536
537         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
538         is not cold.
539         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
540         Constify arguments.
541         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
542         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
543         Constify.
544         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
545
546 2008-08-29  Jan Hubicka  <jh@suse.cz>
547
548         * tree-pass.h (pass_strip_predict_hints): Declare.
549         * predict.c (strip_builtin_expect): Rename to ...
550         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
551         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
552         (tree_estimate_probability): Do not strip builtin_expect.
553         (pass_strip_predict_hints): New pass.
554         * tree-inline.c (expand_call_inline): When inlining cold function, predict
555         it as unlikely.
556         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
557
558 2008-08-29  Richard Guenther  <rguenther@suse.de>
559
560         PR tree-optimization/37207
561         * tree-vrp.c (extract_range_from_binary_expr): Also try
562         to constant fold if only one of the operands is a constant.
563
564 2008-08-29  Nick Clifton  <nickc@redhat.com>
565
566         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
567         the same way as SYMBOL_REFs.
568
569 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
570
571         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
572
573 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
574
575         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
576         * config/mips/mips.md (branch_likely): Remove const.  Fix
577         comment formatting.
578         (define_delay for type "branch"): Change to only apply for branch
579         with likely variant.
580         (define_delay for type "branch" and "branch_likely" no).  New delay
581         definition.
582         (equality_op): New code iterator.
583         (bbv, bbinv): New code attributes.
584         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
585         patterns.
586
587 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
588             Andrew Pinski  <pinskia@gcc.gnu.org>
589
590         PR 18050
591         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
592
593 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
594
595         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
596         rule that a symbolic constant must be defined and >= 0 for the
597         corresponding facility to be present at compile-time.
598         * gthr-posix.c: Likewise.
599
600 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
601
602         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
603         * config/mips/mips.md (D): New mode attribute.
604         (mulsi3, muldi3): Merge it into ...
605         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op
606         patterns.
607         (muldi3_mul3): New pattern.
608         (mulsi3_mult3): Rename to mulsi3_mul3.
609
610 2008-08-28  Jan Hubicka  <jh@suse.cz>
611
612         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
613         to fail.
614         * predict.c (always_optimize_for_size_p): Rename to ...
615         (optimize_function_for_size): ... this one; make extern.
616         (optimize_function_for_speed_p): New.
617         (optimize_bb_for_size_p, optimize_bb_for_size_p,
618         optimize_edge_for_size_p,optimize_edge_for_size_p,
619         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
620         * basic-block.h (optimize_function_for_size_p,
621         optimize_function_for_speed_p): Declare.
622         * i386.md (optimize_size checks): Replace them by appropriate
623         predicate.
624         (standard_80387_constant_p, ix86_compute_frame_layout,
625         ix86_expand_epilogue, ix86_decompose_address,
626         print_operand, emit_i387_cw_initialization,
627         inline_memory_move_cost, ix86_pad_returns,
628         ix86_reorg): Replace optimize_size checks.
629
630 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
631
632         * rtl.h (simplify_subreg_regno): Declare.
633         * rtlanal.c (simplify_subreg_regno): New function, split out from...
634         * simplify-rtx.c (simplify_subreg): ...here.
635         * reload.c (find_reloads): Use simplify_subreg_regno instead of
636         subreg_offset_representable_p.
637
638 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
639
640         PR c/30949
641         * c-typeck.c (convert_for_assignment): Give a note describing what
642         was passed and what was expected.
643
644 2008-08-28  Joey Ye  <joey.ye@intel.com>
645
646         * doc/extend.texi: Document AVX built-in functions.
647         * doc/invoke.texi: Document -mavx.
648
649 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
650             Joey Ye  <joey.ye@intel.com>
651             Xuepeng Guo  <xuepeng.guo@intel.com>
652
653         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
654
655         * config/i386/cpuid.h (bit_FMA): New.
656         (bit_XSAVE): Likewise.
657         (bit_OSXSAVE): Likewise.
658         (bit_AVX): Likewise.
659
660         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
661         define.  Use ASM_OUTPUT_AVX_PREFIX.
662
663         * config/i386/gmmintrin.h: New.
664
665         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
666         (OPTION_MASK_ISA_AVX_SET): New.
667         (OPTION_MASK_ISA_FMA_SET): Likewise.
668         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
669         (OPTION_MASK_ISA_FMA_SET): Likewise.
670         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
671         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
672         (pta_flags): Add PTA_AVX and PTA_FMA.
673         (override_options): Handle PTA_AVX and PTA_FMA.
674         (init_cumulative_args): Handle warn_avx.
675         (classify_argument): Return 0 for COImode and OImode.  Return
676         1 and X86_64_AVX_CLASS for 256bit vector types.
677         (examine_argument): Handle X86_64_AVX_CLASS.
678         (construct_container): Likewise.
679         (function_arg_advance_32): Pass OImode and 256bit vector types
680         in AVX register.
681         (function_arg_advance_64): Take a new argument to indicate if a
682         parameter is named.  Handle 256bit vector types.  Return
683         immediately for unnamed 256bit vector mode parameters.
684         (function_arg_advance): Updated.
685         (function_arg_32): Add comments for TImode.  Handle OImode
686         and 256bit vector types.
687         (function_arg_64): Take a new argument to indicate if a
688         parameter is named.  Handle 256bit vector types.  Return NULL
689         for unnamed 256bit vector mode parameters.
690         (function_arg): Updated.
691         (setup_incoming_varargs_64): Support
692         AVX encoding for *sse_prologue_save_insn.
693         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
694         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
695         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
696         enabled, otherwise return -3.
697         (standard_sse_constant_opcode): Handle AVX and 256bit vector
698         modes.
699         (print_reg): Support AVX registers.  Handle 'x' and 't'.
700         Handle 'd' to duplicate the operand.
701         (print_operand): Likewise.  Also support AVX vector compare
702         instructions.
703         (output_387_binary_op): Support AVX.
704         (output_fp_compare): Likewise.
705         (ix86_expand_vector_move_misalign): Likewise.
706         (ix86_attr_length_vex_default): New.
707         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
708         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
709         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
710         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
711         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
712         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
713         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
714         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
715         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
716         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
717         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
718         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
719         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
720         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
721         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
722         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
723         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
724         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
725         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
726         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
727         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
728         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
729         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
730         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
731         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
732         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
733         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
734         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
735         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
736         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
737         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
738         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
739         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
740         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
741         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
742         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
743         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
744         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
745         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
746         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
747         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
748         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
749         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
750         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
751         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
752         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
753         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
754         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
755         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
756         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
757         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
758         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
759         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
760         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
761         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
762         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
763         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
764         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
765         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
766         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
767         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
768         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
769         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
770         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
771         and IX86_BUILTIN_MOVMSKPS256,
772         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
773         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
774         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
775         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
776         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
777         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
778         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
779         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
780         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
781         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
782         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
783         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
784         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
785         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
786         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
787         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
788         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
789         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
790         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
791         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
792         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
793         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
794         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
795         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
796         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
797         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
798         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
799         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
800         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
801         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
802         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
803         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
804         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
805         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
806         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
807         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
808         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
809         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
810         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
811         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
812         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
813         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
814         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
815         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
816         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
817         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
818         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
819         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
820         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
821         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
822         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
823         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
824         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
825         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
826         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
827         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
828         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
829         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
830         IX86_BUILTIN_CMPPS,
831         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
832         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
833         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
834         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
835         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
836         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
837         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
838         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
839         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
840         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
841         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
842         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
843         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
844         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
845         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
846         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
847         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
848         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
849         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
850         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
851         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
852         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
853         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
854         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
855         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
856         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
857         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
858         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
859         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
860         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
861         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
862         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
863         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
864         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
865         IX86_BUILTIN_MOVMSKPS256.
866         (ix86_init_mmx_sse_builtins): Support AVX builtins.
867         (ix86_expand_args_builtin): Likewise.
868         (ix86_expand_special_args_builtin): Likewise.
869         (ix86_hard_regno_mode_ok): Handle AVX modes.
870         (ix86_expand_vector_init_duplicate): Likewise.
871         (ix86_expand_vector_init_one_nonzero): Likewise.
872         (ix86_expand_vector_init_one_var): Likewise.
873         (ix86_expand_vector_init_concat): Likewise.
874         (ix86_expand_vector_init_general): Likewise.
875         (ix86_expand_vector_set): Likewise.
876         (ix86_vector_mode_supported_p): Likewise.
877         (x86_extended_reg_mentioned_p): Check INSN_P before using
878         PATTERN.
879
880         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
881         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
882
883         * config/i386/i386.h (TARGET_AVX): New.
884         (TARGET_FMA): Likewise.
885         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
886         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
887         (VALID_AVX256_REG_MODE): New.
888         (AVX256_VEC_FLOAT_MODE_P): Likewise.
889         (AVX_FLOAT_MODE_P): Likewise.
890         (AVX128_VEC_FLOAT_MODE_P): Likewise.
891         (AVX256_VEC_FLOAT_MODE_P): Likewise.
892         (AVX_VEC_FLOAT_MODE_P): Likewise.
893         (ASM_OUTPUT_AVX_PREFIX): Likewise.
894         (ASM_OUTPUT_OPCODE): Likewise.
895         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
896         support.
897         (SSE_REG_MODE_P): Allow 256bit vector modes.
898         (ix86_args): Add a warn_avx field.
899
900         * config/i386/i386.md (UNSPEC_PCMP): New.
901         (UNSPEC_VPERMIL): Likewise.
902         (UNSPEC_VPERMIL2): Likewise.
903         (UNSPEC_VPERMIL2F128): Likewise.
904         (UNSPEC_MASKLOAD): Likewise.
905         (UNSPEC_MASKSTORE): Likewise.
906         (UNSPEC_CAST): Likewise.
907         (UNSPEC_VTESTP): Likewise.
908         (UNSPECV_VZEROALL): Likewise.
909         (UNSPECV_VZEROUPPER): Likewise.
910         (XMM0_REG): Likewise.
911         (XMM1_REG): Likewise.
912         (XMM2_REG): Likewise.
913         (XMM3_REG): Likewise.
914         (XMM4_REG): Likewise.
915         (XMM5_REG): Likewise.
916         (XMM6_REG): Likewise.
917         (XMM8_REG): Likewise.
918         (XMM9_REG): Likewise.
919         (XMM10_REG): Likewise.
920         (XMM11_REG): Likewise.
921         (XMM12_REG): Likewise.
922         (XMM13_REG): Likewise.
923         (XMM14_REG): Likewise.
924         (XMM15_REG): Likewise.
925         (prefix): Likewise.
926         (prefix_vex_imm8): Likewise.
927         (prefix_vex_w): Likewise.
928         (length_vex): Likewise.
929         (maxmin): Likewise.
930         (movoi): Likewise.
931         (*avx_ashlti3): Likewise.
932         (*avx_lshrti3): Likewise.
933         (*avx_setcc<mode>): Likewise.
934         (*fop_<mode>_comm_mixed_avx): Likewise.
935         (*fop_<mode>_comm_avx): Likewise.
936         (*fop_<mode>_1_mixed_avx): Likewise.
937         (*fop_<mode>_1_avx): Likewise.
938         (*avx_<code><mode>3): Likewise.
939         (*avx_ieee_smin<mode>3): Likewise.
940         (*avx_ieee_smax<mode>3): Likewise.
941         (mode): Add OI, V8SF and V4DF.
942         (length): Support VEX prefix.
943         (*cmpfp_i_mixed): Set prefix attribute.
944         (*cmpfp_i_sse): Likewise.
945         (*cmpfp_iu_mixed): Likewise.
946         (*cmpfp_iu_sse): Likewise.
947         (*movsi_1): Support AVX.
948         (*movdi_2): Likewise.
949         (*movdi_1_rex64): Likewise.
950         (*movti_internal): Likewise.
951         (*movti_rex64): Likewise.
952         (*movsf_1): Likewise.
953         (*movdf_nointeger): Likewise.
954         (*movdf_integer_rex64): Likewise.
955         (*movtf_internal): Likewise.
956         (zero_extendsidi2_32): Likewise.
957         (zero_extendsidi2_rex64): Likewise.
958         (*extendsfdf2_mixed): Likewise.
959         (*extendsfdf2_sse): Likewise.
960         (*truncdfsf_fast_mixed): Likewise.
961         (*truncdfsf_fast_sse): Likewise.
962         (*truncdfsf_mixed): Likewise.
963         (fix_trunc<mode>di_sse): Likewise.
964         (fix_trunc<mode>si_sse): Likewise.
965         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
966         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
967         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
968         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
969         (*rcpsf2_sse): Likewise.
970         (*rsqrtsf2_sse): Likewise.
971         (*sqrt<mode>2_sse): Likewise.
972         (sse4_1_round<mode>2): Likewise.
973         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
974         Support AVX.  Set length attribute properly for AVX.
975
976         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
977         (VECTOR_MODES (FLOAT, 32)): Likewise.
978         (VECTOR_MODE (INT, DI, 8)): Likewise.
979         (VECTOR_MODE (INT, HI, 32)): Likewise.
980         (VECTOR_MODE (INT, QI, 64)): Likewise.
981         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
982         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
983         (VECTOR_MODE (INT, DI, 4)): Removed.
984         (VECTOR_MODE (INT, SI, 8)): Likewise.
985         (VECTOR_MODE (INT, HI, 16)): Likewise.
986         (VECTOR_MODE (INT, QI, 32)): Likewise.
987         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
988         (INT_MODE (OI, 32)): Likewise.
989
990         * config/i386/i386.opt (mavx): New.
991         (mfma): Likewise.
992
993         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
994
995         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
996         (*mov<mode>_internal_avx): New.
997         (*movv2sf_internal_rex64_avx): Likewise.
998         (*movv2sf_internal_avx): Likewise.
999
1000         * config/i386/predicates.md (const_4_to_5_operand): New.
1001         (const_6_to_7_operand): Likewise.
1002         (const_8_to_11_operand): Likewise.
1003         (const_12_to_15_operand): Likewise.
1004         (avx_comparison_float_operator): Likewise.
1005
1006         * config/i386/sse.md (AVX256MODEI): New.
1007         (AVX256MODE): Likewise.
1008         (AVXMODEQI): Likewise.
1009         (AVXMODE): Likewise.
1010         (AVX256MODEF2P): Likewise.
1011         (AVX256MODE2P): Likewise.
1012         (AVX256MODE4P): Likewise.
1013         (AVX256MODE8P): Likewise.
1014         (AVXMODEF2P): Likewise.
1015         (AVXMODEF4P): Likewise.
1016         (AVXMODEDCVTDQ2PS): Likewise.
1017         (AVXMODEDCVTPS2DQ): Likewise.
1018         (avxvecmode): Likewise.
1019         (avxvecpsmode): Likewise.
1020         (avxhalfvecmode): Likewise.
1021         (avxscalarmode): Likewise.
1022         (avxcvtvecmode): Likewise.
1023         (avxpermvecmode): Likewise.
1024         (avxmodesuffixf2c): Likewise.
1025         (avxmodesuffixp): Likewise.
1026         (avxmodesuffixs): Likewise.
1027         (avxmodesuffix): Likewise.
1028         (vpermilbits): Likewise.
1029         (pinsrbits): Likewise.
1030         (mov<mode>): Likewise.
1031         (*mov<mode>_internal): Likewise.
1032         (push<mode>1): Likewise.
1033         (movmisalign<mode>): Likewise.
1034         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1035         (avx_movdqu<avxmodesuffix>): Likewise.
1036         (avx_lddqu<avxmodesuffix>): Likewise.
1037         (<plusminus_insn><mode>3): Likewise.
1038         (*avx_<plusminus_insn><mode>3): Likewise.
1039         (*avx_vm<plusminus_insn><mode>3): Likewise.
1040         (mul<mode>3): Likewise.
1041         (*avx_mul<mode>3): Likewise.
1042         (*avx_vmmul<mode>3): Likewise.
1043         (divv8sf3): Likewise.
1044         (divv4df3): Likewise.
1045         (avx_div<mode>3): Likewise.
1046         (*avx_div<mode>3): Likewise.
1047         (*avx_vmdiv<mode>3): Likewise.
1048         (avx_rcpv8sf2): Likewise.
1049         (*avx_vmrcpv4sf2): Likewise.
1050         (sqrtv8sf2): Likewise.
1051         (avx_sqrtv8sf2): Likewise.
1052         (*avx_vmsqrt<mode>2): Likewise.
1053         (rsqrtv8sf2): Likewise.
1054         (avx_rsqrtv8sf2): Likewise.
1055         (*avx_vmrsqrtv4sf2): Likewise.
1056         (<code><mode>3): Likewise.
1057         (*avx_<code><mode>3_finite): Likewise.
1058         (*avx_<code><mode>3): Likewise.
1059         (*avx_vm<code><mode>3): Likewise.
1060         (*avx_ieee_smin<mode>3): Likewise.
1061         (*avx_ieee_smax<mode>3): Likewise.
1062         (avx_addsubv8sf3): Likewise.
1063         (avx_addsubv4df3): Likewise.
1064         (*avx_addsubv4sf3): Likewise.
1065         (*avx_addsubv2df3): Likewise.
1066         (avx_h<plusminus_insn>v4df3): Likewise.
1067         (avx_h<plusminus_insn>v8sf3): Likewise.
1068         (*avx_h<plusminus_insn>v4sf3): Likewise.
1069         (*avx_h<plusminus_insn>v2df3): Likewise.
1070         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
1071         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
1072         (*avx_maskcmp<mode>3): Likewise.
1073         (avx_nand<mode>3): Likewise.
1074         (*avx_<code><mode>3): Likewise.
1075         (*avx_nand<mode>3): Likewise.
1076         (*avx_<code><mode>3): Likewise.
1077         (*avx_cvtsi2ss): Likewise.
1078         (*avx_cvtsi2ssq): Likewise.
1079         (*avx_cvtsi2sd): Likewise.
1080         (*avx_cvtsi2sdq): Likewise.
1081         (*avx_cvtsd2ss): Likewise.
1082         (avx_cvtss2sd): Likewise.
1083         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
1084         (avx_cvtps2dq<avxmodesuffix>): Likewise.
1085         (avx_cvttps2dq<avxmodesuffix>): Likewise.
1086         (*avx_cvtsi2sd): Likewise.
1087         (*avx_cvtsi2sdq): Likewise.
1088         (avx_cvtdq2pd256): Likewise.
1089         (avx_cvtpd2dq256): Likewise.
1090         (avx_cvttpd2dq256): Likewise.
1091         (*avx_cvtsd2ss): Likewise.
1092         (*avx_cvtss2sd): Likewise.
1093         (avx_cvtpd2ps256): Likewise.
1094         (avx_cvtps2pd256): Likewise.
1095         (*avx_movhlps): Likewise.
1096         (*avx_movlhps): Likewise.
1097         (avx_unpckhps256): Likewise.
1098         (*avx_unpckhps): Likewise.
1099         (avx_unpcklps256): Likewise.
1100         (*avx_unpcklps): Likewise.
1101         (avx_movshdup256): Likewise.
1102         (avx_movsldup256): Likewise.
1103         (avx_shufps256): Likewise.
1104         (avx_shufps256_1): Likewise.
1105         (*avx_shufps_<mode>): Likewise.
1106         (*avx_loadhps): Likewise.
1107         (*avx_storelps): Likewise.
1108         (*avx_loadlps): Likewise.
1109         (*avx_movss): Likewise.
1110         (*vec_dupv4sf_avx): Likewise.
1111         (*vec_concatv2sf_avx): Likewise.
1112         (*vec_concatv4sf_avx): Likewise.
1113         (*vec_setv4sf_0_avx): Likewise.
1114         (*vec_setv4sf_avx): Likewise.
1115         (*avx_insertps): Likewise.
1116         (avx_vextractf128<mode>): Likewise.
1117         (vec_extract_lo_<mode>): Likewise.
1118         (vec_extract_hi_<mode>): Likewise.
1119         (vec_extract_lo_<mode>): Likewise.
1120         (vec_extract_hi_<mode>): Likewise.
1121         (vec_extract_lo_v16hi): Likewise.
1122         (vec_extract_hi_v16hi): Likewise.
1123         (vec_extract_lo_v32qi): Likewise.
1124         (vec_extract_hi_v32qi): Likewise.
1125         (avx_unpckhpd256): Likewise.
1126         (*avx_unpckhpd): Likewise.
1127         (avx_movddup256): Likewise.
1128         (*avx_movddup): Likewise.
1129         (avx_unpcklpd256): Likewise.
1130         (*avx_unpcklpd): Likewise.
1131         (avx_shufpd256): Likewise.
1132         (avx_shufpd256_1): Likewise.
1133         (*avx_punpckhqdq): Likewise.
1134         (*avx_punpcklqdq): Likewise.
1135         (*avx_shufpd_<mode>): Likewise.
1136         (*avx_storehpd): Likewise.
1137         (*avx_loadhpd): Likewise.
1138         (*avx_loadlpd): Likewise.
1139         (*avx_movsd): Likewise.
1140         (*vec_concatv2df_avx): Likewise.
1141         (*avx_<plusminus_insn><mode>3): Likewise.
1142         (*avx_<plusminus_insn><mode>3): Likewise.
1143         (*avx_mulv8hi3): Likewise.
1144         (*avxv8hi3_highpart): Likewise.
1145         (*avx_umulv8hi3_highpart): Likewise.
1146         (*avx_umulv2siv2di3): Likewise.
1147         (*avx_mulv2siv2di3): Likewise.
1148         (*avx_pmaddwd): Likewise.
1149         (*avx_mulv4si3): Likewise.
1150         (*avx_ashr<mode>3): Likewise.
1151         (*avx_lshr<mode>3): Likewise.
1152         (*avx_ashl<mode>3): Likewise.
1153         (*avx_<code><mode>3): Likewise.
1154         (*avx_eq<mode>3): Likewise.
1155         (*avx_gt<mode>3): Likewise.
1156         (*avx_nand<mode>3): Likewise.
1157         (*avx_nand<mode>3): Likewise.
1158         (*avx_<code><mode>3): Likewise.
1159         (*avx_<code><mode>3): Likewise.
1160         (*avx_packsswb): Likewise.
1161         (*avx_packssdw): Likewise.
1162         (*avx_packuswb): Likewise.
1163         (*avx_punpckhbw): Likewise.
1164         (*avx_punpcklbw): Likewise.
1165         (*avx_punpckhwd): Likewise.
1166         (*avx_punpcklwd): Likewise.
1167         (*avx_punpckhdq): Likewise.
1168         (*avx_punpckldq): Likewise.
1169         (*avx_pinsr<avxmodesuffixs>): Likewise.
1170         (*avx_pinsrq): Likewise.
1171         (*avx_loadld): Likewise.
1172         (*vec_extractv2di_1_rex64_avx): Likewise.
1173         (*vec_extractv2di_1_avx): Likewise.
1174         (*vec_dupv2di_avx): Likewise.
1175         (*vec_concatv2si_avx): Likewise.
1176         (*vec_concatv4si_1_avx): Likewise.
1177         (*vec_concatv2di_avx): Likewise.
1178         (*vec_concatv2di_rex64_avx): Likewise.
1179         (*avx_uavgv16qi3): Likewise.
1180         (*avx_uavgv8hi3): Likewise.
1181         (*avx_psadbw): Likewise.
1182         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
1183         (*avx_phaddwv8hi3): Likewise.
1184         (*avx_phadddv4si3): Likewise.
1185         (*avx_phaddswv8hi3): Likewise.
1186         (*avx_phsubwv8hi3): Likewise.
1187         (*avx_phsubdv4si3): Likewise.
1188         (*avx_phsubswv8hi3): Likewise.
1189         (*avx_pmaddubsw128): Likewise.
1190         (*avx_pmulhrswv8hi3): Likewise.
1191         (*avx_pshufbv16qi3): Likewise.
1192         (*avx_psign<mode>3): Likewise.
1193         (*avx_palignrti): Likewise.
1194         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1195         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1196         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1197         (*avx_mpsadbw): Likewise.
1198         (*avx_packusdw): Likewise.
1199         (*avx_pblendvb): Likewise.
1200         (*avx_pblendw): Likewise.
1201         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1202         (avx_ptest256): Likewise.
1203         (avx_roundp<avxmodesuffixf2c>256): Likewise.
1204         (*avx_rounds<ssemodesuffixf2c>): Likewise.
1205         (*avx_aesenc): Likewise.
1206         (*avx_aesenclast): Likewise.
1207         (*avx_aesdec): Likewise.
1208         (*avx_aesdeclast): Likewise.
1209         (avx_vzeroupper): Likewise.
1210         (avx_vzeroupper_rex64): Likewise.
1211         (avx_vpermil<mode>): Likewise.
1212         (avx_vpermilvar<mode>3): Likewise.
1213         (avx_vpermil2<mode>3): Likewise.
1214         (avx_vperm2f128<mode>3): Likewise.
1215         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1216         (avx_vbroadcastss256): Likewise.
1217         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
1218         (avx_vinsertf128<mode>): Likewise.
1219         (vec_set_lo_<mode>): Likewise.
1220         (vec_set_hi_<mode>): Likewise.
1221         (vec_set_lo_<mode>): Likewise.
1222         (vec_set_hi_<mode>): Likewise.
1223         (vec_set_lo_v16hi): Likewise.
1224         (vec_set_hi_v16hi): Likewise.
1225         (vec_set_lo_v32qi): Likewise.
1226         (vec_set_hi_v32qi): Likewise.
1227         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1228         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
1229         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
1230         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
1231         (vec_init<mode>): Likewise.
1232         (*vec_concat<mode>_avx): Likewise.
1233         (blendbits): Support V8SF and V4DF.
1234         (sse2_movq128): Support AVX.
1235         (<sse>_movnt<mode>): Likewise.
1236         (sse2_movntv2di): Likewise.
1237         (sse_rcpv4sf2): Likewise.
1238         (sse_sqrtv4sf2): Likewise.
1239         (sse_rsqrtv4sf2): Likewise.
1240         (<sse>_comi): Likewise.
1241         (<sse>_ucomi): Likewise.
1242         (sse_cvtss2si): Likewise.
1243         (sse_cvtss2si_2): Likewise.
1244         (sse_cvtss2siq): Likewise.
1245         (sse_cvtss2siq_2): Likewise.
1246         (sse_cvttss2si): Likewise.
1247         (sse_cvttss2siq): Likewise.
1248         (sse2_cvtsd2si): Likewise.
1249         (sse2_cvtsd2si_2): Likewise.
1250         (sse2_cvtsd2siq): Likewise.
1251         (sse2_cvtsd2siq_2): Likewise.
1252         (sse2_cvttsd2si): Likewise.
1253         (sse2_cvttsd2siq): Likewise.
1254         (sse2_cvtdq2pd): Likewise.
1255         (*sse2_cvtpd2dq): Likewise.
1256         (*sse2_cvttpd2dq): Likewise.
1257         (*sse2_cvtpd2ps): Likewise.
1258         (sse2_cvtps2pd): Likewise.
1259         (sse3_movshdup): Likewise.
1260         (sse3_movsldup): Likewise.
1261         (sse_storehps): Likewise.
1262         (*sse4_1_extractps): Likewise.
1263         (sse2_storelpd): Likewise.
1264         (vec_dupv2df_sse3): Likewise.
1265         (*vec_concatv2df_sse3): Likewise.
1266         (*sse4_1_pextrb): Likewise.
1267         (*sse4_1_pextrb_memory): Likewise.
1268         (*sse2_pextrw): Likewise.
1269         (*sse4_1_pextrw_memory): Likewise.
1270         (*sse4_1_pextrd): Likewise.
1271         (*sse4_1_pextrq): Likewise.
1272         (sse2_pshufd_1): Likewise.
1273         (sse2_pshuflw_1): Likewise.
1274         (sse2_pshufhw_1): Likewise.
1275         (*sse2_storeq_rex64): Likewise.
1276         (*vec_dupv4si): Likewise.
1277         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
1278         (sse2_pmovmskb): Likewise.
1279         (*sse2_maskmovdqu): Likewise.
1280         (*sse2_maskmovdqu_rex64): Likewise.
1281         (sse_ldmxcsr): Likewise.
1282         (sse_stmxcsr): Likewise.
1283         (abs<mode>2): Likewise.
1284         (sse4_1_movntdqa): Likewise.
1285         (sse4_1_phminposuw): Likewise.
1286         (sse4_1_extendv8qiv8hi2): Likewise.
1287         (*sse4_1_extendv8qiv8hi2): Likewise.
1288         (sse4_1_extendv4qiv4si2): Likewise.
1289         (*sse4_1_extendv4qiv4si2): Likewise.
1290         (sse4_1_extendv2qiv2di2): Likewise.
1291         (*sse4_1_extendv2qiv2di2): Likewise.
1292         (sse4_1_extendv4hiv4si2): Likewise.
1293         (*sse4_1_extendv4hiv4si2): Likewise.
1294         (sse4_1_extendv2hiv2di2): Likewise.
1295         (*sse4_1_extendv2hiv2di2): Likewise.
1296         (sse4_1_extendv2siv2di2): Likewise.
1297         (*sse4_1_extendv2siv2di2): Likewise.
1298         (sse4_1_zero_extendv8qiv8hi2): Likewise.
1299         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
1300         (sse4_1_zero_extendv4qiv4si2): Likewise.
1301         (*sse4_1_zero_extendv4qiv4si2): Likewise.
1302         (sse4_1_zero_extendv2qiv2di2): Likewise.
1303         (*sse4_1_zero_extendv2qiv2di2): Likewise.
1304         (sse4_1_zero_extendv4hiv4si2): Likewise.
1305         (*sse4_1_zero_extendv4hiv4si2): Likewise.
1306         (sse4_1_zero_extendv2hiv2di2): Likewise.
1307         (*sse4_1_zero_extendv2hiv2di2): Likewise.
1308         (sse4_1_zero_extendv2siv2di2): Likewise.
1309         (*sse4_1_zero_extendv2siv2di2): Likewise.
1310         (sse4_1_ptest): Likewise.
1311         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
1312         (sse4_2_pcmpestri): Likewise.
1313         (sse4_2_pcmpestrm): Likewise.
1314         (sse4_2_pcmpistri): Likewise.
1315         (sse4_2_pcmpistrm): Likewise.
1316         (aesimc): Likewise.
1317         (aeskeygenassist): Likewise.
1318
1319 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
1320
1321         * config/i386/predicates.md (vzeroall_operation): New.
1322
1323         * config/i386/sse.md (avx_vzeroall): New.
1324         (*avx_vzeroall): Likewise.
1325
1326 2008-08-28  Paul Brook  <paul@codesourcery.com>
1327             Mark Shinwell  <shinwell@codesourcery.com>
1328             Richard Earnshaw  <richard.earnshaw@arm.com>
1329
1330         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
1331         (TARGET_MIN_ANCHOR_OFFSET): New.
1332         (arm_override_options): Set correct anchor ranges for Thumb-1
1333         and Thumb-2 if required.
1334         (legitimize_pic_address): Handle case involving a TLS symbol
1335         reference with an addend.
1336         (arm_optimization_options): Enable section anchors at -O1 and
1337         above.
1338         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
1339         * config/arm/arm-protos.h (arm_optimization_options): New.
1340
1341 2008-08-28  Nick Clifton  <nickc@redhat.com>
1342
1343         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
1344         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
1345         attribute.
1346
1347         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
1348         * config/v850/v850.md (return): Remove frame size restriction.  
1349
1350         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
1351
1352         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
1353
1354         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
1355
1356         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
1357
1358 2008-08-28  Paul Brook  <paul@codesourcery.com>
1359
1360         * config/arm/vfp11.md: Update license notice.
1361         * config/arm/cortex-r4.md: Ditto.
1362
1363 2008-08-28  Richard Guenther  <rguenther@suse.de>
1364
1365         PR tree-optimization/37207
1366         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
1367         tuplification bug.
1368
1369 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
1370
1371         PR c++/36741
1372         * tree.c (int_fits_type_p): Don't forget unsigned integers
1373           of type sizetype which higher end word equals -1.
1374
1375 2008-08-28  Ira Rosen  <irar@il.ibm.com>
1376
1377         * target.h (struct vectorize): Add new target builtin.
1378         * tree-vectorizer.c (destroy_loop_vec_info): Call 
1379         vect_free_slp_instance instead of vect_free_slp_node.
1380         * tree-vectorizer.h (enum slp_load_perm_type): New.
1381         (struct _slp_instance): Add new fields.
1382         (SLP_INSTANCE_LOAD_PERMUTATION): New.
1383         (SLP_INSTANCE_LOADS): New.
1384         (vect_free_slp_tree): Remove.
1385         (vect_free_slp_instance): Declare.        
1386         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
1387         (vectorizable_load): Add argument.
1388         (vect_transform_slp_perm_load): New.
1389         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to 
1390         vectorizable_load.
1391         (vect_get_place_in_interleaving_chain): New function.
1392         (vect_free_slp_tree): Make static.
1393         (vect_free_slp_instance): New function.
1394         (vect_build_slp_tree): Add new arguments. Allow load permutations and 
1395         collect the load location in the interleaving chain.
1396         (vect_supported_slp_permutation_p): New function.
1397         (vect_supported_load_permutation_p): Likewise.
1398         (vect_analyze_slp_instance): In case of loads permutation, call
1399         vect_supported_load_permutation_p to check that the permutation is 
1400         supported.
1401         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
1402         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
1403         (vect_create_mask_and_perm): New function.
1404         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
1405         (vectorizable_load): Add an argument. Don't keep the created vectors  
1406         statements in the node if permutation is required. Call 
1407         vect_transform_slp_perm_load to generate the permutation.
1408         (vect_transform_stmt): Add new argument. Call vectorizable_load with 
1409         additional argument.
1410         (vect_schedule_slp_instance): In case of loads permutation, allocate  
1411         vectorized statements structure for all the related SLP nodes. Call 
1412         vect_transform_stmt with addditional argument.
1413         (vect_transform_loop): Call vect_transform_stmt with correct arguments. 
1414         * config/spu/spu.c (spu_builtin_vec_perm): New. 
1415         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
1416         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
1417         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
1418         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
1419
1420 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
1421
1422         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
1423         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
1424         __gthread_cond_signal, __gthread_cond_timedwait,
1425         __gthread_cond_timedwait_recursive): New functions.
1426         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
1427         Likewise.
1428         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
1429         thread interfaces.
1430
1431 2008-08-28  Richard Guenther  <rguenther@suse.de>
1432
1433         PR middle-end/37005
1434         * fold-const.c (maybe_canonicalize_comparison_1): Require
1435         undefined overflow only for canonicalizing A +- CST cmp CST.
1436         Make sure to not generate new constants that are not inside
1437         their TYPE_MIN/MAX_VALUE range.
1438         (maybe_canonicalize_comparison): Remove undefined overflow
1439         checking from here.
1440         (fold_binary): Remove now duplicate folding.
1441
1442 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
1443
1444         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
1445         use not updated in the last change.
1446
1447 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1448
1449         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
1450         (IRA_COVER_CLASSES): Add FPUL_REGS.
1451
1452 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1453
1454         PR 37217
1455         * c-common.c (conversion_warning): Check for null operands.
1456
1457 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1458
1459         PR c/31673
1460         * c-decl.c (check_for_loop_decls): Improve error message. Give
1461         hint.
1462
1463 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1464
1465         PR c/37186
1466         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
1467         (convert_for_assignment): Pass corrent OPT_W* parameter to
1468         WARN_FOR_ASSIGNMENT.
1469
1470 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
1471
1472         PR c++/35321
1473         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
1474
1475 2008-08-27  Paul Brook  <paul@codesourcery.com>
1476
1477         * config.gcc: Loosen checks for arm uclinux eabi targets.
1478
1479 2008-08-27  Paul Brook  <paul@codesourcery.com>
1480
1481         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
1482         _clzsi2.
1483         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
1484
1485 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
1486
1487         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
1488         the enumerators of an ENUMERAL_TYPE.
1489         * dbxout.c (dbxout_type): Ditto.
1490
1491 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1492
1493         PR rtl-opt/37219
1494         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
1495         (fwprop_addr): Check that the loop_father is not the outer loop.
1496
1497 2008-08-26  Paul Brook  <paul@codesourcery.com>
1498
1499         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
1500         Remove documentation entry for fmul type.
1501         Use fmuls to annotate single-precision multiplication patterns,
1502         fmuld to annotate double-precision multiplication patterns,
1503         fmacs to annotate single-precision multiply-accumulate patterns
1504         and fmacd to annotate double-precision multiply-accumulate patterns.
1505         * config/arm/vfp11.md: Update reservations accordingly.
1506         * config/arm/arm.md: Note that certain values of the "type"
1507         attribute are documented in vfp.md.
1508         * config/arm/arm1020e.md: Remove out of date duplicate comment.
1509         (v10_cvt): Use new fmul types.
1510
1511 2008-08-26  Paul Brook   <paul@codesourcery.com>
1512
1513         * config/arm/vfp.md: Move pipeline description for VFP11 to...
1514         * config/arm/vfp11.md: ...here.  New.
1515         * config/arm/arm.md: Include vfp11.md.
1516
1517 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
1518
1519         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
1520         parameter to inform call.
1521
1522 2008-08-26  Jeff Law  <law@redhat.com>
1523
1524         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
1525         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
1526         preferred class when copying a constant into a partial word register.
1527
1528 2008-08-26  Ben Elliston  <bje@au.ibm.com>
1529
1530         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
1531         * cp/typeck.c: Likewise.
1532         * cp/tree.c: Likewise.
1533         * gimple-low.c: Likewise.
1534         * jump.c: Likewise.
1535
1536 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
1537
1538         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
1539         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
1540
1541         * doc/passes.texi: Describe IRA.
1542
1543         * doc/tm.texi (IRA_COVER_CLASSES,
1544         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
1545
1546         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
1547         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
1548         -fira-propagate-cost, -fno-ira-share-save-slots,
1549         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
1550
1551         * flags.h (ira_algorithm): New enumeration.
1552         (flag_ira_algorithm, flag_ira_verbose): New external variable
1553         declarations.
1554
1555         * postreload.c (gate_handle_postreload): Don't do post reload
1556         optimizations unless the reload is completed.
1557
1558         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
1559         IRA.
1560
1561         * tree-pass.h (pass_ira): New external variable declaration.
1562
1563         * reload.h: Add 2008 to the Copyright.
1564     
1565         * cfgloopanal.c: Include params.h.
1566         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
1567         mode.
1568     
1569         * params.h (IRA_MAX_LOOPS_NUM): New macro.
1570
1571         * toplev.c (ira.h): New include.
1572         (flag_ira_algorithm, flag_ira_verbose): New external variables.
1573         (backend_init_target): Call ira_init.
1574         (backend_init): Call ira_init_once.
1575         (finalize): Call finish_ira_once.
1576
1577         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
1578         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
1579         external variables.
1580
1581         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
1582         may_move_out_cost): New external variable declarations.
1583         (move_table): New typedef.
1584     
1585         * caller-save.c: Include headers output.h and ira.h.
1586         (no_caller_save_reg_set): New global variable.
1587         (save_slots_num, save_slots): New variables.
1588         (reg_save_code, reg_restore_code, add_stored_regs): Add
1589         prototypes.
1590         (init_caller_save): Set up no_caller_save_reg_set.
1591         (init_save_areas): Reset save_slots_num.
1592         (saved_hard_reg): New structure.
1593         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
1594         (initiate_saved_hard_regs, new_saved_hard_reg,
1595         finish_saved_hard_regs, saved_hard_reg_compare_func): New
1596         functions.
1597         (setup_save_areas): Add code for sharing stack slots.
1598         (all_blocks): New variable.
1599         (save_call_clobbered_regs): Process pseudo-register too.
1600         (mark_set_regs): Process pseudo-register too.
1601         (insert_one_insn): Put the insn after bb note in a empty basic
1602         block.  Add insn check.
1603     
1604         * global.c (eliminable_regset): Make it external.
1605         (mark_elimination): Use DF_LR_IN for IRA.
1606         (pseudo_for_reload_consideration_p): New.
1607         (build_insn_chain): Make it external.  Don't ignore spilled
1608         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
1609         (gate_handle_global_alloc): New function.
1610         (pass_global_alloc): Add the gate function.
1611
1612         * opts.c (decode_options): Set up flag_ira.  Print the warning for
1613         -fira.
1614         (common_handle_option): Process -fira-algorithm and -fira-verbose.
1615
1616         * timevar.def (TV_IRA, TV_RELOAD): New passes.
1617
1618         * regmove.c (regmove_optimize): Don't do replacement of output for
1619         IRA.
1620
1621         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
1622         New external variable declarations.
1623
1624         * local-alloc.c (update_equiv_regs): Make it external.  Return
1625         true if jump label rebuilding should be done.  Rescan new_insn for
1626         notes.
1627         (gate_handle_local_alloc): New function.
1628         (pass_local_alloc): Add the gate function.
1629
1630         * alias.c (value_addr_p, stack_addr_p): New functions.
1631         (nonoverlapping_memrefs_p): Use them for IRA.
1632
1633         * common.opt (fira, fira-algorithm, fira-coalesce,
1634         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
1635         fira-verbose): New options.
1636
1637         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
1638         move_cost, may_move_in_cost, may_move_out_cost): Make the
1639         variables external.
1640         (move_table): Remove typedef.
1641         (init_move_cost): Make it external.
1642         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
1643         functions.
1644
1645         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
1646         setup_reg_classes): New function prototypes.
1647         (eliminable_regset): New external variable declaration.
1648         (build_insn_chain, update_equiv_regs): New function prototypes.
1649     
1650         * Makefile.in (IRA_INT_H): New definition.
1651         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
1652         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
1653         (reload1.o, toplev.o): Add dependence on ira.h.
1654         (cfgloopanal.o): Add PARAMS_H.
1655         (caller-save.o): Add dependence on output.h and ira.h.
1656         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
1657         ira-emit.o, ira-lives.o): New entries.
1658
1659         * passes.c (pass_ira): New pass.
1660
1661         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
1662
1663         * reload1.c (ira.h): Include the header.
1664         (changed_allocation_pseudos): New bitmap.
1665         (init_reload): Initiate the bitmap.
1666         (compute_use_by_pseudos): Permits spilled registers in FROM.
1667         (temp_pseudo_reg_arr): New variable.
1668         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
1669         IRA.  Call alter_reg with the additional parameter.  Don't clear
1670         spilled_pseudos for IRA.  Restore original insn chain for IRA.
1671         Clear changed_allocation_pseudos at the end of reload.
1672         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
1673         (hard_regno_to_pseudo_regno): New variable.
1674         (count_pseudo): Check spilled pseudos.  Set up
1675         hard_regno_to_pseudo_regno.
1676         (count_spilled_pseudo): Check spilled pseudos. Update
1677         hard_regno_to_pseudo_regno.
1678         (find_reg): Use better_spill_reload_regno_p.  Check
1679         hard_regno_to_pseudo_regno.
1680         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
1681         code for IRA.
1682         (eliminate_regs_1): Use additional parameter for alter_reg.
1683         (finish_spills): Set up pseudo_previous_regs only for spilled
1684         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
1685         more arguments.  Don't clear live_throughout and dead_or_set for
1686         spilled pseudos.  Use additional parameter for alter_reg.  Call
1687         mark_allocation_change.  Set up changed_allocation_pseudos.
1688         Remove sanity check.
1689         (emit_input_reload_insns, delete_output_reload): Use additional
1690         parameter for alter_reg.  Call mark_allocation_change.
1691         (substitute, gen_reload_chain_without_interm_reg_p): New
1692         functions.
1693         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
1694     
1695         * testsuite/gcc.dg/20080410-1.c: New file.
1696         
1697         * config/s390/s390.h (IRA_COVER_CLASSES,
1698         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
1699
1700         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
1701
1702         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
1703
1704         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
1705
1706         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
1707
1708         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
1709     
1710         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
1711     
1712         2008-08-24  Jeff Law  <law@redhat.com>
1713         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
1714         when ignoring unavailable registers.
1715
1716         2008-08-24  Jeff Law  <law@redhat.com>
1717         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
1718         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
1719         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
1720         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
1721
1722         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
1723         * ira-build.c (allocno_range_compare_func): Stabilize sort.
1724
1725         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
1726         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
1727         * reload1.c (find_reg): Process registers in register allocation order.
1728
1729         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
1730         * toplev.c (backend_init_target): Move ira_init call from
1731         here...
1732         (lang_dependent_init_target): ...to here.
1733
1734         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
1735         * ira.c (setup_class_subset_and_memory_move_costs): Don't
1736         calculate memory move costs for NO_REGS.
1737
1738         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
1739         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
1740         STACK_REGS is defined.
1741
1742         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
1743         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
1744
1745         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
1746         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
1747
1748         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
1749         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
1750         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
1751         barrier.
1752
1753 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
1754             Dorit Nuzman  <dorit@il.ibm.com>
1755
1756         * gcc/config/spu/spu.md (vec_extract_evenv4si,
1757         vec_extract_evenv4sf, vec_extract_evenv8hi,
1758         vec_extract_evenv16qi, vec_extract_oddv4si,
1759         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
1760         vec_interleave_highv4sf, vec_interleave_lowv4sf,
1761         vec_interleave_highv4si, vec_interleave_lowv4si,
1762         vec_interleave_highv8hi, vec_interleave_lowv8hi,
1763         vec_interleave_highv16qi, vec_interleave_lowv16qi,
1764         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
1765
1766 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
1767
1768         PR target/36756
1769         * config/rs6000/rs6000.c (optimization_options): Don't default to
1770         section anchors without toplevel reorder.
1771
1772 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1773
1774         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
1775         (mfc_end_critical_section): Likewise.
1776
1777 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1778
1779         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
1780         all type qualifiers from element type to vector type.
1781
1782 2008-08-25  David Daney  <ddaney@avtrex.com>
1783
1784         * config/mips/mips.md (immediate_insn): Move up in file, fix
1785         comment typo, reformat.
1786         (fetchop_bit, atomic_hiqi_op memory_barrier,
1787         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
1788         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
1789         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
1790         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
1791         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
1792         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
1793         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
1794         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
1795         sync_old_nand<mode>, sync_new_nand<mode>,
1796         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
1797         test_and_set_12): Moved to sync.md.
1798         (sync.md): Include.
1799         * config/mips/sync.md: New file.
1800
1801 2008-08-25  Richard Henderson  <rth@redhat.com>
1802
1803         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
1804         (regsave): Likewise.
1805         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
1806         (output_cfi_directive): Likewise.
1807         (div_data_align): New.
1808         (output_cfi): Use it.
1809
1810 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
1811
1812         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
1813         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
1814         (TARGET_OCTEON): New macro.
1815         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
1816         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
1817         (ISA_HAS_POP): New macro.
1818         * config/mips/driver-native.c (host_detect_local_cpu): Handle
1819         Octeon.
1820         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1821         Handle Octeon.
1822         * config/mips/mips.md (cpu): Add octeon.
1823         (type): Add pop attribute value.
1824         (popcount<mode>2): New pattern.
1825         * doc/invoke.texi (-march=@var{arch}): Add octeon.
1826
1827 2008-08-24  Jan Hubicka  <jh@suse.cz>
1828
1829         * doc/invoke.texi (-fipa-cp-clone): New option.
1830         (-fipa-cp): Update docs.
1831         (--param ipcp-unit-growth):New.
1832         * ipa-cp.c: Include fibheap.h, params.h
1833         (ipcp_initialize_node_lattices): When not cloning, all externally
1834         visible functions are bottom.
1835         (ipcp_need_redirect_p): Accept clones.
1836         (ipcp_insert_stage): Use cost driven heuristics.
1837         (max_count, dead_nodes): New static vars.
1838         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
1839         ipcp_const_param_count): New functions.
1840         * common.opt (ipa-cp-clone): New command line option.
1841         * params.def (ipcp-unit-growth): New.
1842
1843 2008-08-24  Jan Hubicka  <jh@suse.cz>
1844
1845         * tree-inline.c (tree_function_versioning): Look harder
1846         for referenced vars.
1847
1848 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
1849
1850         PR tree-optimization/37185
1851         * matrix-reorg.c (transform_access_sites): Update changed stmt.
1852
1853 2008-08-23  Jan Hubicka  <jh@suse.cz>
1854
1855         * ipa-cp.c (ipcp_analyze_node): New function.
1856         (ipcp_update_cloned_node): Use it.
1857         (ipcp_init_stage): Likewise.
1858         * ipa-inline.c (function_insertion_hook_holder): New static var.
1859         (analyze_function): Break out from ....
1860         (inline_generate_summary): Here; register insertion hook.
1861         (cgraph_decide_inlining): Remove hook.
1862         (add_new_function): New function.
1863
1864 2008-08-23  Jan Hubicka  <jh@suse.cz>
1865
1866         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
1867
1868 2008-08-23  Jan Hubicka  <jh@suse.cz>
1869
1870         * ipa-cp.c (constant_val_insert): Remove.
1871         (ipcp_propagate_one_const): Remove.
1872         (ipcp_create_replace_map): Always insert replacements to the map.
1873         (ipcp_insert_stage): Do not try to insert statements by hand.
1874         * tree-inline.c (insert_init_stmt): Break out from ...
1875         (setup_one_parameter): ... here; allow NULL BB pointer.
1876         (tree_function_versioning): Use setup_one_parameter to process
1877         replacement map.
1878
1879 2008-08-23  Jan Hubicka  <jh@suse.cz>
1880
1881         * tree.c (decl_address_ip_invariant_p): New function.
1882         * tree.h (decl_address_ip_invariant_p): Declare.
1883         * gimple.c (strip_invariant_refs): Break out from ...
1884         (is_gimple_invariant_address): ... here
1885         (is_gimple_ip_invariant_address): New function.
1886         (is_gimple_ip_invariant): New function.
1887         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
1888         Declare.
1889
1890         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
1891         (ipcp_lat_is_insertable): All constants are insertable.
1892         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
1893         IPA_CONST_VALUE_REF.
1894         (ipcp_initialize_node_lattices): Propagate all types of operands.
1895         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
1896         (ipcp_create_replace_map): Reformat.
1897         (ipcp_need_redirect_p): Simplify.
1898         (ipcp_insert_stage): Check that argument is used before clonning.
1899         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle IPA_CONST_REF.
1900         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
1901         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
1902         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
1903         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
1904         (jump_func_type): Remove IPA_CONST_VALUE_REF.
1905         * tree-inline.c (tree_function_versioning): Add variables referenced by
1906         replacing trees.
1907
1908 2008-08-23  Jan Hubicka  <jh@suse.cz>
1909
1910         PR target/37094
1911         * i386.c (standard_80387_constant_p): Use optimize_size.
1912
1913 2008-08-23  Ira Rosen  <irar@il.ibm.com>
1914
1915         PR tree-optimization/37161
1916         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
1917         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
1918         (vect_determine_vectorization_factor): Move the scalar type
1919         retrieval to vect_get_smallest_scalar_type.
1920         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
1921         scalar type. Remove redundant computation.
1922         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
1923         (vect_get_slp_defs): Take the type of RHS into account if
1924         necessary by calling vect_get_smallest_scalar_type. Call
1925         vect_get_constant_vectors with additional argument.
1926
1927 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1928
1929         PR 35648
1930         * doc/invoke.texi (Wwrite-strings): Clarify description.
1931         
1932 2008-08-23  Ira Rosen  <irar@il.ibm.com>
1933
1934         PR tree-optimization/37174
1935         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
1936         def stmt is a part of the loop before accessing its stmt_vec_info.
1937
1938 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
1939
1940         PR target/11259
1941         * config/avr/avr.md (UNSPEC_SWAP): New constants.
1942         (*swap): New insn pattern.
1943         (*ashlqi3): Rename from ashlqi3 insn pattern.
1944         (ashlqi3): New expanders.
1945         (*lshrqi3): Rename from lshrqi3 insn pattern.
1946         (lshrqi3): New expanders.       
1947         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
1948         lshrqi3_const5, lshrqi3_const6): New splitters.
1949         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
1950         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
1951         peephole2 patterns.
1952
1953 2008-08-22  Richard Guenther  <rguenther@suse.de>
1954
1955         PR tree-optimization/37078
1956         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
1957         [+INF, +INF] ranges.
1958
1959 2008-08-22  Richard Guenther  <rguenther@suse.de>
1960
1961         PR tree-optimization/37143
1962         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
1963         a conversion statement instead of a copy.
1964
1965 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
1966
1967         PR target/37184
1968         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
1969         CCCmode, CCOmode and CCSmode destination modes.
1970
1971         PR target/37191
1972         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
1973         from different units in a single alternative.
1974         (*vec_extractv2sf_1): Ditto.
1975         (*vec_extractv2si_0): Ditto.
1976         (*vec_extractv2si_1): Ditto.
1977         * config/i386/sse.md (sse2_storehpd): Ditto.
1978         (sse2_storelpd): Ditto.
1979         (sse2_loadhpd): Ditto.
1980         (sse2_loadlpd): Ditto.
1981
1982         PR target/37197
1983         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
1984         (popcountsi2): Ditto.
1985         (clzdi2_abm): Ditto.
1986         (popcountdi2): Ditto.
1987         (clzhi2_abm): Ditto.
1988         (popcounthi2): Ditto.
1989
1990 2008-08-22  Richard Guenther  <rguenther@suse.de>
1991
1992         PR middle-end/36548
1993         PR middle-end/37125
1994         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
1995         if the multiplication does not overflow.
1996
1997 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
1998
1999         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
2000
2001 2008-08-21  Richard Henderson  <rth@redhat.com>
2002
2003         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
2004         spurrious comma from test.
2005         * configure: Rebuild.
2006
2007 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2008
2009         PR 30457
2010         * builtins.c (fold_builtin_next_arg): Add warning about undefined
2011         behaviour.
2012         
2013 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
2014
2015         * c-tree.h (grokfield): New argument.
2016         * c-decl.c (grokfield): Handle new location argument.
2017         * c-parser.c (c_parser_struct_declaration): Pass location to
2018         grokfield.
2019
2020 2008-08-21  Richard Guenther  <rguenther@suse.de>
2021
2022         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
2023
2024 2008-08-21  Jan Hubicka  <jh@suse.cz>
2025
2026         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
2027         (cgraph_add_function_insertion_hook,
2028         cgraph_remove_function_insertion_hook,
2029         cgraph_call_function_insertion_hooks): New functions.
2030         * cgraph.h (cgraph_add_function_insertion_hook,
2031         cgraph_remove_function_insertion_hook,
2032         cgraph_call_function_insertion_hooks): Declare.
2033         * ipa-reference.c (function_insertion_hook_holder): New variable.
2034         (check_operand, look_for_address_of): When checking late, do not care
2035         about module bitmaps.
2036         (add_new_function): New function.
2037         (generate_summary): Register hooks; zero module bitmaps.
2038         (propagate): Unregister hooks.
2039         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
2040         (add_new_function): New function.
2041         (generate_summary): Register hook.
2042         (propagate): Remove hook.
2043
2044         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
2045
2046         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
2047         * ipa-cp.c (ipcp_update_cloned_node): New function.
2048         (build_const_val): Handle functions correctly; bring type logic
2049         into sync with tree-inline.c
2050         (ipcp_init_stage):  Take care of computing stuff needed by
2051         indirect inlining; update clones.
2052         (ipcp_generate_summary): Break out of ipcp_driver.
2053         (ipcp_driver): Do only execution and transformation.
2054         (pass_ipa_cp): Make IPA_PASS.
2055         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
2056         offset to address.
2057         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
2058         ipcp, some info is already available.
2059         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
2060         * tree-inline.c (remap_ssa_name): Unshare expression.
2061
2062 2008-08-21  Richard Guenther  <rguenther@suse.de>
2063
2064         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
2065         a PHI ask VN if it is already available.
2066         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
2067         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
2068
2069 2008-08-21  Richard Guenther  <rguenther@suse.de>
2070
2071         PR middle-end/36817
2072         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
2073         makes sure to produce a result of the correct type.
2074
2075 2008-08-21  Jan Hubicka  <jh@suse.cz>
2076         Backport from LTO branch:
2077
2078         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
2079                     Jan Hubicka  <jh@suse.cz>
2080         
2081         * ipa-pure-const.c
2082         (init_state, finish_state, set_function_state, generate_summary):
2083         New functions.
2084         (scan_stmt): Renamed from scan_function.  Changed to keep state in
2085         local static vars rather than cgraph aux field.
2086         (propagate): Renamed from static_execute. Changed to keep state in
2087         local static vars rather than cgraph aux field.
2088         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
2089         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
2090
2091         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
2092
2093         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
2094         * ipa-reference.c (init_function_info, generate_summary, 
2095         propagate): New functions.
2096         (analyze_function):  Call init_function_info.
2097         (static_execute): Stripped into generate_summary and propagate.
2098         (pass_ipa_reference): Made into ipa_opt_pass.
2099
2100 2008-08-21  Richard Guenther  <rguenther@suse.de>
2101
2102         PR tree-optimization/37181
2103         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
2104         folding result.
2105         (extract_range_from_unary_expr): Likewise.
2106
2107 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2108
2109         * diagnostic.c (pedwarn_at): Rename as pedwarn.
2110         (pedwarn): Delete.
2111         * toplev.h (pedwarn_at): Likewise.
2112         * builtins.c: Update all calls to pedwarn.
2113         * c-lex.c: Likewise.
2114         * toplev.c: Likewise.
2115         * c-tree.h: Likewise.
2116         * c-decl.c: Likewise.
2117         * c-errors.c: Likewise.
2118         * c-typeck.c: Likewise.
2119         * c-common.c: Likewise.
2120         * c-parser.c: Likewise.
2121
2122 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
2123
2124         PR target/31070
2125         * config/sparc/sparc.c (function_arg_slotno): Handle structure
2126         with MODE_VECTOR_INT mode.
2127
2128 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2129
2130         PR middle-end/179
2131         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
2132         initialized outside the current module.
2133         (warn_uninitialized_var): Ignore left-hand side when walking the
2134         trees. Ignore address expressions. Examine VUSE operands in gimple
2135         statements with a variable declaration on the right-hand side.
2136
2137 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
2138
2139         PR bootstrap/37155
2140         * rtlanal.c (subreg_offset_representable_p): Revert last change.
2141
2142 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2143
2144         PR 35701
2145         * c-common.c (conversion_warning): Do not warn if applying bit-and
2146         operator to unsigned constant that fits in the target type.
2147
2148 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2149
2150         PR c++/35602
2151         * c-common.c (conversion_warning): Do not warn for artificial
2152         expressions.
2153
2154 2008-08-20  Richard Guenther  <rguenther@suse.de>
2155
2156         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
2157         (extract_range_from_binary_expr): Fall back to constant propagation.
2158         (extract_range_from_unary_expr): Likewise.
2159
2160 2008-08-20  Richard Guenther  <rguenther@suse.de>
2161
2162         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
2163         with TREE_THIS_VOLATILE on shared nodes.
2164         (fold_stmt_r): Likewise.
2165
2166 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
2167
2168         PR c/37171
2169         * c-parser.c (c_parser_attributes): For keywords use canonical
2170         spelling for attr_name.
2171
2172 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2173
2174         * value-prof.c (check_counter): Revert wrong call to error.
2175         
2176 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2177
2178         * profile.c: Update calls to inform.
2179         * value-prof.c: Update calls to inform.
2180         
2181 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2182
2183         * diagnostic.c (inform): Add an explicit location_t parameter.
2184         * toplev.h (inform): Update declaration.
2185         * builtins.c: Update all calls to inform.
2186         * c-common.c: Likewise.
2187         * c-decl.c: Likewise.
2188         * c-opts.c: Likewise.
2189         * c-pch.c: Likewise.
2190         * c-pragma.c: Likewise.
2191         * c-typeck.c: Likewise.
2192         * coverage.c: Likewise.
2193         * opts.c: Likewise.
2194         * toplev.c: Likewise.
2195         * tree-cfg.c: Likewise.
2196         * tree-ssa.c: Likewise.
2197
2198 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
2199
2200         PR target/37169
2201         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
2202         V2DI mode, for SSE4.1, use movq instead of vector set if the
2203         second element is zero and inter-unit moves are OK.
2204
2205 2008-08-20  Richard Guenther  <rguenther@suse.de>
2206
2207         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
2208         properly handle conversion/copy chains after tuplification.
2209
2210 2008-08-20  Richard Guenther  <rguenther@suse.de>
2211
2212         * passes.c (init_optimization_passes): Move the second
2213         forwprop pass before alias computation.  Remove the second
2214         DCE pass.  Remove the first dominator and phi copy/const
2215         prop passes.
2216
2217 2008-08-20  Nick Clifton  <nickc@redhat.com>
2218
2219         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
2220         support of this feature.  Do not assume that a sufficiently new
2221         assembler will support the feature regardless of the target type.
2222         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
2223         * configure: Regenerate.
2224
2225 2008-08-20  Richard Guenther  <rguenther@suse.de>
2226
2227         * tree-vrp.c (found_in_subgraph): Remove.
2228         (live): New global static.
2229         (live_on_edge): New function.
2230         (blocks_visited): Remove.
2231         (register_edge_assert_for_2): Use live_on_edge.
2232         (find_conditional_asserts): Remove code dealing with
2233         found_in_subgraph.  Do not walk the CFG.
2234         (find_switch_asserts): Likewise.
2235         (find_assert_locations_1): Renamed from find_assert_locations.
2236         Move finding assert locations for conditional and switch
2237         statements first.  Update live bitmap.  Do not walk the CFG.
2238         (find_assert_locations): New function.
2239         (insert_range_assertions): Remove entry of CFG walk.
2240         Adjust call to find_assert_locations.
2241         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
2242         that only can appear because of fake exit edges but assert we
2243         never try to insert on those.
2244         (fini_pre): Do not remove fake exit edges here...
2245         (execute_pre): ...but here, before committing edge inserts.
2246
2247 2008-08-19  Richard Guenther  <rguenther@suse.de>
2248
2249         * passes.c (init_optimization_passes): Exchange store-ccp
2250         with a ccp pass.
2251
2252 2008-08-19  Rafael Espindola  <espindola@google.com>
2253
2254         * varasm.c (weak_decls): Move earlier in the file.
2255         (assemble_external): Add weak decls to the weak_decls list.
2256         (declare_weak): Don't add decls to the weak_decls list.
2257
2258 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
2259
2260         PR target/37157
2261         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
2262         before (sse2_shufpd_<mode>).
2263
2264 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
2265
2266         PR debug/37156
2267         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
2268         * tree.c (block_nonartificial_location): Likewise.
2269
2270 2008-08-19  Richard Guenther  <rguenther@suse.de>
2271
2272         PR tree-optimization/35972
2273         PR tree-optimization/23094
2274         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
2275         parameter.
2276         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
2277         handle MISALIGNED_INDIRECT_REF.
2278         (get_ref_from_reference_ops): New helper.
2279         (vn_reference_lookup_pieces): Walk the use-def chain using the
2280         alias-oracle if requested.
2281         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
2282         walking the use-def chain.
2283         (compute_avail): But not here.
2284         (create_component_ref_by_pieces_1): Properly handle
2285         MISALIGNED_INDIRECT_REF.
2286         (do_regular_insertion): Handle fully redundant
2287         expressions after PHI-translation also for SSA_NAME values, not
2288         only constants.  Correctly use edoubleprime for that.
2289
2290 2008-08-19  Ira Rosen  <irar@il.ibm.com>
2291
2292         * tree-vectorizer.c (supportable_widening_operation): Support
2293         multi-step conversion, return the number of steps in such conversion
2294         and the required intermediate types.
2295         (supportable_narrowing_operation): Likewise.
2296         * tree-vectorizer.h (vect_pow2): New function.
2297         (supportable_widening_operation): Change argument types.
2298         (supportable_narrowing_operation): Likewise.
2299         (vectorizable_type_promotion): Add an argument.
2300         (vectorizable_type_demotion): Likewise.
2301         * tree-vect-analyze.c (vect_analyze_operations): Call 
2302         vectorizable_type_promotion and vectorizable_type_demotion with
2303         additional argument.
2304         (vect_get_and_check_slp_defs): Detect patterns.
2305         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
2306         types. 
2307         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
2308         vect_build_slp_tree with correct arguments. Calculate unrolling factor
2309         according to the smallest type in the loop.
2310         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
2311         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call 
2312         supportable_widening_operation with correct arguments. 
2313         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector 
2314         operands lists according to the number of vector statements in left
2315         or right node, if exists.
2316         (vect_gen_widened_results_half): Remove unused argument.
2317         (vectorizable_conversion): Call supportable_widening_operation, 
2318         supportable_narrowing_operation, and vect_gen_widened_results_half
2319         with correct arguments. 
2320         (vectorizable_assignment): Change documentation, support multiple
2321         types in SLP. 
2322         (vectorizable_operation): Likewise.
2323         (vect_get_loop_based_defs): New function.
2324         (vect_create_vectorized_demotion_stmts): Likewise.
2325         (vectorizable_type_demotion): Support loop-aware SLP and general
2326         multi-step conversion. Call vect_get_loop_based_defs and
2327         vect_create_vectorized_demotion_stmts for transformation.
2328         (vect_create_vectorized_promotion_stmts): New function.
2329         (vectorizable_type_promotion): Support loop-aware SLP and general
2330         multi-step conversion. Call vect_create_vectorized_promotion_stmts
2331         for transformation.     
2332         (vectorizable_store): Change documentation, support multiple
2333         types in SLP. 
2334         (vectorizable_load): Likewise.
2335         (vect_transform_stmt): Pass SLP_NODE to 
2336         vectorizable_type_promotion and vectorizable_type_demotion.
2337         (vect_schedule_slp_instance): Move here the calculation of number
2338         of vectorized statements for each node from...
2339         (vect_schedule_slp): ... here.
2340         (vect_transform_loop): Call vect_schedule_slp without the last
2341         argument.
2342
2343 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2344
2345         PR bootstrap/37152
2346         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change = 
2347         to == in assert statement.
2348         (vectorizable_reduction): Fix typo.
2349
2350 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
2351
2352         PR bootstrap/37153
2353         * value-prof.c (check_counter): Dereference pointer to overall
2354         count when printing it.
2355
2356 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
2357
2358         * profile.h: Really add it.
2359
2360 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
2361
2362         * mcf.c: Really add it.
2363
2364 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
2365             Vinodha Ramasamy  <vinodha@google.com>
2366
2367         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
2368         count_scale.
2369         * value-prof.c (check_counter): Fix the counter if
2370         flag_profile_correction is true.
2371         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
2372         tree_mod_subtract_transform):
2373         Follow check_counter parameter change.
2374         * common.opt (fprofile-correction): New option.
2375         * mcf.c: New file.
2376         * profile.h: Likewise.
2377         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
2378         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
2379         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
2380         functions.
2381         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
2382         flag_profile_correction is set.
2383
2384 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
2385
2386         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
2387
2388 2008-08-18  Tomas Bily  <tbily@suse.cz>
2389
2390         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
2391         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
2392         CONVERT_EXPR_P.
2393         * tree-data-ref.c (split_constant_offset_1): Likewise.
2394         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
2395         * tree-sra.c (sra_walk_expr): Likewise.
2396         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
2397         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
2398         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
2399         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
2400         Likewise.
2401         * gimple.c (gimple_assign_unary_nop_p): Likewise.
2402         * tree-vect-transform.c (vectorizable_type_demotion)
2403         (vectorizable_type_promotion): Likewise.
2404         * tree-inline.c (expand_call_inline): 
2405         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
2406         (forward_propagate_addr_expr_1, forward_propagate_comparison)
2407         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2408         * expr.c (expand_expr_real_1): Likewise.
2409         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
2410         (gimple_assign_unary_useless_conversion_p): Likewise.
2411         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
2412         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
2413         * fold-const.c (fold_unary): Likewise.
2414         * tree.h (CONVERT_EXPR_P): Likewise.
2415         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
2416         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
2417         * tree-vrp.c: 
2418         (register_edge_assert_for_2, extract_range_from_unary_expr)
2419         (register_edge_assert_for_1): Likewise.
2420         
2421 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2422
2423         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
2424         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
2425         (enum real_value_const): Delete.
2426         (get_real_const): Delete.
2427         * real.c (get_real_const): Delete.
2428         (dconst_e_ptr): Define.
2429         (dconst_third_ptr): Define.
2430         (dconst_sqrt2_ptr): Define.
2431         * builtins.c: Update all callers.
2432
2433 2008-08-18  Richard Guenther  <rguenther@suse.de>
2434
2435         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
2436         statement iterator after statement removal.
2437
2438 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
2439
2440         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
2441         (detect_processor_freebsd): Likewise.
2442         (host_detect_local_cpu): Call newly added functions for FreeBSD.
2443
2444 2008-08-18  Richard Guenther  <rguenther@suse.de>
2445
2446         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
2447         and loads have the correct types.
2448
2449 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2450
2451         PR cpp/7263
2452         * c-opts.c (cpp_opts): Remove static.
2453         * c-parser.c (cpp_opts): Declare it extern.
2454         (disable_extension_diagnostics): Handle cpp options.
2455         (enable_extension_diagnostics): Likewise.
2456
2457 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2458
2459         * diagnostics.c (permerror_at): Rename as permerror.
2460         (permerror): Delete.
2461         * toplev.h: Likewise.
2462
2463 2008-08-18  Richard Guenther  <rguenther@suse.de>
2464
2465         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
2466         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
2467         Move call_cdce before build_alias.  Move copyrename2,
2468         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
2469         right after final inlining.
2470         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
2471         (pass_build_cfg): But instead via TODO_dump_func.
2472
2473 2008-08-18  Richard Guenther  <rguenther@suse.de>
2474
2475         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
2476         element index.
2477         (scalarize_init): If we failed to generate some initializers
2478         do not generate zeros for not instantiated members.  Instead
2479         rely on the copy out.
2480         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
2481         about missing flow-sensitive alias info only if we have
2482         aliases computed.
2483
2484 2008-08-17  Nick Clifton  <nickc@redhat.com>
2485
2486         * doc/extend.texi (Function Attributes): Fix typo in description
2487         if hot function attribute.
2488
2489 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
2490             Richard Sandiford  <rdsandiford@googlemail.com>
2491
2492         * doc/install.texi (--with-mips-plt): Document.
2493         * doc/invoke.texi (-mplt, -mno-plt): Document.
2494         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
2495         and handle ${with_mips_plt}.
2496         * config/mips/mips.opt (mplt): New option.
2497         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
2498         (TARGET_ABICALLS_PIC2): Likewise.
2499         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
2500         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
2501         (ASM_SPEC): Use !mabi=* instead of !mabi*.
2502         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
2503         to decide whether to output ".option picX" directives.
2504         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
2505         Pass -call_nonpic rather than -KPIC for -mplt.
2506         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
2507         on the command line.  Also remove it when -mabi=64 is used without
2508         -msym32.
2509         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
2510         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
2511         TARGET_ABICALLS_PIC0.
2512         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
2513         TARGET_ABICALLS.
2514         (mips16_build_function_stub): Only output ".option pic" directives
2515         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
2516         (mips16_build_call_stub): Fix comment and remove redundant
2517         ".set at"/"set .noat" directives.
2518         (mips_function_rodata_section): Use the default behaviour for
2519         TARGET_ABSOLUTE_ABICALLS.
2520         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
2521         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
2522         (mips_restore_gp): Do nothing if the current function doesn't use
2523         a global pointer.
2524         (mips_expand_prologue): Only save $gp if the current function uses it.
2525         Use a normal move for TARGET_ABICALLS_PIC0.
2526         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
2527
2528 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
2529
2530         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
2531         of function when handling GLOBAL_POINTER_REGNUM.
2532
2533 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
2534
2535         PR ada/20548
2536         * common.opt (-fstack-check): Do not declare the variable here.
2537         (-fstack-check=): New option variant.
2538         * doc/invoke.texi (Code Gen Options): Document it.
2539         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
2540         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
2541         (STACK_CHECK_STATIC_BUILTIN): New macro.
2542         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
2543         * opts.c: Include expr.h.
2544         (common_handle_option) <OPT_fold_stack_check_>: New case.
2545         <OPT_fstack_check>: Likewise.
2546         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
2547         consistently in the test for variable-sized types.  Adjust for
2548         new behaviour of flag_stack_check.
2549         * explow.c: Include except.h.
2550         (allocate_dynamic_stack_space): Do not take into account
2551         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
2552         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
2553         for variable-sized parameters.  Treat all parameters whose size is
2554         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
2555         stack checking is enabled.
2556         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
2557         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
2558         if generic stack checking is enabled.
2559         (expand_function_end): Adjust for new behaviour of flag_stack_check.
2560         * reload1.c (reload): Likewise.
2561         * stmt.c (expand_decl): Assert that all automatic variables have
2562         fixed size at this point and remove dead code.
2563         * flags.h (stack_check_type): New enumeration type.
2564         (flag_stack_check): Declare.
2565         * toplev.c (flag_stack_check): New global variable.
2566         * Makefile.in (opts.o): Add dependency on EXPR_H.
2567         (explow.o): Add dependency on except.h.
2568
2569 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
2570
2571         * config/avr/avr.c (avr_override_options): Reduce value of 
2572         PARAM_INLINE_CALL_COST.
2573
2574 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
2575
2576         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
2577         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
2578         lieu of TYPE_MODE (type) throughout.
2579
2580 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
2581
2582         * config/arm/arm.c (add_minipool_backward_ref): Check for
2583         8-byte-aligned entries in second case of forcing insertion after a
2584         particular entry.  Change third case to avoid inserting
2585         non-8-byte-aligned entries before 8-byte-aligned ones.
2586
2587 2008-08-15  Richard Guenther  <rguenther@suse.de>
2588
2589         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
2590         strip components for unknown size accesses.
2591
2592 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
2593
2594         * config/s390/2097.md New file.
2595         * config/s390/s390.md ("z10prop" attribute): Define none,
2596         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
2597         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
2598         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
2599         possible values and apply them to insns as appropriate.
2600         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
2601         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
2602         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
2603         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
2604         values.
2605         ("bfp" mode attribute): Removed.  Every occurence replaced
2606         with <mode>.
2607         * config/s390/s390.c (struct "z10_cost"): Updated entries.
2608         * config/s390/2084.md (insn_reservation "x_itof"): Updated
2609           type attribute.
2610
2611 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2612
2613         PR c/28152
2614         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
2615         for keywords.
2616         
2617 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
2618
2619         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
2620         additional argument. Support reduction when duplication is needed due
2621         to data-types of different sizes in the loop.
2622         (get_initial_def_for_induction): Fix printout.
2623         (vect_get_vec_def_for_stmt_copy): Support case where the
2624         vec_stmt_for_operand is a phi node.
2625         (vectorizable_reduction): Support reduction when duplication is needed 
2626         due to data-types of different sizes in the loop.
2627         (vectorizable_call): Remove restriction to not vectorize in case we 
2628         have data-types of different sizes in the loop.
2629         (vectorizable_conversion): Likewise.
2630         (vectorizable_operation): Likewise.
2631         (vectorizable_type_demotion): Likewise.
2632         (vectorizable_type_promotion): Likewise.
2633         (vectorizable_induction): Add restriction to not vectorize in case 
2634         we have data-types of different sizes in the loop.
2635
2636 2008-08-14  Christophe Saout  <christophe@saout.de>
2637             Uros Bizjak  <ubizjak@gmail.com>
2638
2639         PR target/37101
2640         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
2641         (*vec_concatv2di_rex64_sse4_1): Ditto.
2642         (*vec_concatv2di_rex64_sse): Ditto.
2643
2644 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
2645
2646         PR middle-end/37103
2647         * fold-const.c (fold_widened_comparison): Do not allow
2648         sign changes that change the result even if shorter type
2649         is wider than arg1_unw's type.
2650
2651 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
2652
2653         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
2654         Skip if the multilib testing specifies -march that does not
2655         agree with the one specified in the testcase.
2656
2657 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
2658
2659         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
2660         zero extend SImode values being converted to TFmode before passing
2661         to libcalls.
2662
2663 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2664
2665         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
2666         __PPU__ when targeting the Cell/B.E. PPU processor.
2667
2668 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
2669
2670         * gimple.h (gimple_call_set_chain): Accept SSA variables.
2671         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
2672         Rematerialize the static chain, if any.
2673         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
2674         static chain.
2675
2676 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
2677
2678         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
2679         (new_loc_descr): Likewise.
2680         (add_loc_descr): Likewise.
2681         (size_of_loc_descr): Likewise.
2682         (size_of_locs): Likewise.
2683         (output_loc_operands): Likewise.
2684         (output_loc_sequence): Likewise.
2685         (new_reg_loc_descr): New.
2686         (build_cfa_loc): Use it.
2687         (build_cfa_aligned_loc): Likewise.
2688         (one_reg_loc_descriptor): Likewise.
2689         (based_loc_descr): Likewise.
2690
2691 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2692
2693         PR 30551
2694         * doc/invoke.texi (Wmain): Update.
2695         * c-decl.c (start_decl): warn_main is only 0 or 1.
2696         (start_function): Likewise. Fix formatting.
2697         (finish_function): Delete redundant warning.
2698         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
2699         * c-opts (c_common_handle_option): -Wall only has effect if
2700         warn_main is uninitialized. OPT_Wmain is automatically
2701         handled. -pedantic also enables Wmain.
2702         (c_common_post_options): Handle all logic for Wmain here.
2703         * c-common.c (warn_main): Delete.
2704         (check_main_parameter_types): Make pedwarns conditional on
2705         OPT_Wmain.
2706         * c-common.h (warn_main): Delete.
2707
2708 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
2709
2710         PR middle-end/36701
2711         * expr.c (emit_group_store): Allocate stack temp with the
2712         largest alignment when copying from register to stack.
2713
2714 2008-08-13  Richard Guenther  <rguenther@suse.de>
2715
2716         * tree.h (maybe_fold_offset_to_address): Declare.
2717         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
2718         (ccp_fold): Handle pointer conversions the same as fold_stmt.
2719         Likewise for POINTER_PLUS_EXPR.
2720         (maybe_fold_offset_to_reference): Enable disabled code.
2721         (maybe_fold_offset_to_address): New function.
2722         (fold_stmt_r): Use it.
2723         (fold_gimple_assign): Likewise.
2724         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
2725         (gimplify_expr): Likewise.
2726
2727 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2728
2729         * toplev.h (pedwarn_at): Fix declaration.
2730         
2731 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
2732
2733         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
2734         LINK_SPEC): Use %R in -Y P argument.
2735
2736 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2737
2738         PR c/15236
2739         * diagnostic.c (pedwarn_at): New.
2740         * toplev.h (pedwarn_at): Declare.
2741         * c-tree.h (build_enumerator): Update declaration.
2742         * c-decl.c (finish_enum): Update comment.
2743         (build_enumerator): Take a location parameter. Give a pedwarn but do
2744         not perform any conversion.
2745         * c-parser.c (c_parser_enum_specifier): Set correct location for
2746         enumerator.
2747
2748 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2749
2750         PR 35635
2751         * c-common.c (conversion_warning): Use a switch. Ignore boolean
2752         expressions except for conversions to signed:1 bitfields. Handle
2753         COND_EXPR with constant operands.
2754         
2755 2008-08-13  Richard Guenther  <rguenther@suse.de>
2756
2757         PR tree-optimization/15255
2758         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
2759         (struct oecount_s): New struct and VEC types.
2760         (cvec): New global.
2761         (oecount_hash): New function.
2762         (oecount_eq): Likewise.
2763         (oecount_cmp): Likewise.
2764         (zero_one_operation): New function.
2765         (build_and_add_sum): Likewise.
2766         (undistribute_ops_list): Perform un-distribution of multiplication
2767         and division on the chain of summands.
2768         (should_break_up_subtract): Also break up subtracts for factors.
2769         (reassociate_bb): Delete dead visited statements.
2770         Call undistribute_ops_list.  Re-sort and optimize if it did something.
2771         * passes.c (init_optimization_passes): Move DSE before
2772         reassociation.
2773         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
2774         PHI nodes.
2775
2776 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
2777
2778         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
2779
2780         * doc/invoke.texi: Revert unintended checkin.
2781
2782 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
2783
2784         PR libgomp/26165
2785         * gcc.c (include_spec_function): Tweak call to find_a_file.
2786
2787 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
2788
2789         PR middle-end/37014
2790         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
2791         and TRUTH_ORIF_EXPR.
2792         * dojump.c (do_jump): Likewise.
2793
2794         PR tree-optimization/37084
2795         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
2796         if id->regimplify, don't assume stmt is a cast assignment.
2797
2798 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
2799
2800         * final.c (final_scan_insn): Use app_enable/app_disable functions.
2801
2802 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2803
2804         PR bootstrap/37097
2805         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
2806         by last change.
2807
2808 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2809
2810         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
2811         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
2812
2813         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
2814         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
2815         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
2816         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
2817         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
2818
2819         * doc/tm.texi (Storage Layout): Remove documentation for
2820         TARGET_FLOAT_FORMAT.
2821
2822         * simplify-rtx.c (simplify_binary_operation_1): Replace
2823         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
2824
2825 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2826
2827         * real.h (struct real_format): New member has_sign_dependent_rounding.
2828         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
2829         spu_single_format, ieee_double_format, mips_double_format,
2830         motorola_double_format, ieee_extended_motorola_format,
2831         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
2832         ieee_extended_intel_96_round_53_format, ibm_extended_format,
2833         mips_extended_format, ieee_quad_format, mips_quad_format,
2834         vax_f_format, vax_d_format, vax_g_format): Initialize it.
2835         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
2836
2837         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
2838         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
2839         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
2840         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
2841         (ROUND_TOWARDS_ZERO): Likewise.
2842
2843         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
2844         (FLOAT_MODE_FORMAT): New macro.
2845         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
2846         (MODE_COMPOSITE_P): ... this new macro.
2847         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
2848         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
2849         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
2850
2851         * flags.h: Include "real.h".
2852
2853         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
2854         REAL_MODE_FORMAT_COMPOSITE_P.
2855         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
2856
2857         * doc/tm.texi (Storage Layout): Remove documentation of
2858         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
2859         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
2860         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
2861         they only apply to libgcc2.a.
2862
2863 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2864
2865         * config/spu/float_disf.c: New file.
2866         * config/spu/float_unsdisf.c: New file.
2867         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
2868         (LIB2FUNCS_EXCLUDE): Define.
2869
2870 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2871             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2872
2873         * real.h (struct real_format): New member round_towards_zero.
2874         * real.c (round_for_format): Respect fmt->round_towards_zero.
2875         (ieee_single_format, mips_single_format, motorola_single_format,
2876         spu_single_format, ieee_double_format, mips_double_format,
2877         motorola_double_format, ieee_extended_motorola_format,
2878         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
2879         ieee_extended_intel_96_round_53_format, ibm_extended_format,
2880         mips_extended_format, ieee_quad_format, mips_quad_format,
2881         vax_f_format, vax_d_format, vax_g_format): Initialize it.
2882         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
2883
2884         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
2885         real_format to choose rounding mode when calling MPFR functions.
2886         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
2887         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
2888
2889         * real.h (real_to_decimal_for_mode): Add prototype.
2890         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
2891         Respect target rounding mode when generating decimal representation.
2892         (real_to_decimal): New stub for backwards compatibility.
2893         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
2894         real_to_decimal_for_mode instead of real_to_decimal.
2895
2896         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
2897
2898 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2899             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2900
2901         * real.c (spu_single_format): New variable.
2902         * real.h (spu_single_format): Declare.
2903
2904         * config/spu/spu.c (spu_override_options): Install SFmode format.
2905         (spu_split_immediate): Use integer mode to operate on pieces of
2906         floating-point values in all cases.
2907
2908         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
2909         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
2910         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
2911
2912 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2913
2914         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
2915
2916 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2917
2918         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
2919
2920 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
2921
2922         PR c++/36688
2923         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
2924         on the VAR_DECL instead of TYPE_READONLY on its type.
2925
2926 2008-08-12  Ira Rosen  <irar@il.ibm.com>
2927
2928         * tree-vectorizer.c: Depend on langhooks.h.
2929         (supportable_widening_operation): Add two arguments. Support double
2930         type conversions.
2931         (supportable_narrowing_operation): Likewise.
2932         * tree-vectorizer.h (supportable_widening_operation): Add two 
2933         arguments.
2934         (supportable_narrowing_operation): Likewise.
2935         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
2936         supportable_widening_operation with correct arguments.
2937         * tree-vect-transform.c (vectorizable_conversion): Likewise.
2938         (vectorizable_type_demotion): Support double type conversions.
2939         (vectorizable_type_promotion): Likewise.
2940         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
2941
2942 2008-08-11  Michael Matz  <matz@suse.de>
2943
2944         * i386/i386.c (override_options): Move initialisation from
2945         flag_schedule_insns_after_reload to here from ...
2946         (optimization_options): ... here.
2947
2948 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
2949
2950         PR rtl-optimization/36998
2951         * dwarf2out.c (compute_barrier_args_size_1,
2952         compute_barrier_args_size): Temporarily remove assertions.
2953
2954 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2955
2956         PR middle-end/20644
2957         * tree-ssa.c (struct walk_data): Add new flag
2958         warn_possibly_uninitialized.
2959         (warn_uninitialized_var): Use it.
2960         (warn_uninitialized_vars): New.
2961         (execute_early_warn_uninitialized): Call it.
2962         (execute_late_warn_uninitialized): Likewise.
2963
2964 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2965
2966         PR middle-end/36238
2967         * reload1.c (gen_reload): Guard calls to get_secondary_mem
2968         for memory subregs.
2969
2970 2008-08-09  Jan Hubicka  <jh@suse.cz>
2971
2972         PR target/37055
2973         * optabs.c (maybe_emit_unop_insn): Remove produced code if
2974         expansion failed.
2975         (expand_fix): Be prepared for expansion to fail.
2976         (expand_sfix_optab): Remove instructions if expansion failed.
2977
2978 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
2979
2980         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
2981         avr31 architecture.
2982         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
2983         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2984
2985 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2986
2987         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
2988         mips/t-libgcc-mips16 to tmake_file.
2989         * config/mips/mips-protos.h (mips_call_type): New enum.
2990         (mips_pic_base_register, mips_got_load): Declare.
2991         (mips_restore_gp): Take an rtx argument.
2992         (mips_use_pic_fn_addr_reg_p): Declare.
2993         (mips_expand_call): Replace the sibcall_p argument with
2994         a mips_call_type argument.  Add a lazy_p parameter.
2995         (mips_split_call): Declare.
2996         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
2997         (MIPS16_PIC_TEMP): Likewise.
2998         (reg_class): Delete M16_NA_REGS.
2999         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
3000         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
3001         (mips_split_hi_p): Declare.
3002         * config/mips/mips.c (mips_split_hi_p): New array.
3003         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
3004         (mips_got_symbol_type_p): New function.
3005         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
3006         (mips16_stub_function_p): New function.
3007         (mips16_local_function_p): Likewise.
3008         (mips_use_pic_fn_addr_reg_p): Likewise.
3009         (mips_cannot_force_const_mem): Return false for HIGHs.
3010         Extend CONST_INT and symbolic handling to MIPS16, using
3011         mips_symbol_insns to check that the base symbol type is a
3012         legitimate constant.  Reject GOT-based constants if
3013         TARGET_MIPS16_PCREL_LOADS.
3014         (mips_const_insns): Check targetm.cannot_force_const_mem when
3015         decomposing a symbolic base and a large offset.
3016         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
3017         When calling a function that needs $25 from MIPS16 code,
3018         move the target address into $25 separately and add a USE
3019         to the call insn.
3020         (mips16_gp_pseudo_reg): Insert the initializer immediately
3021         before the first real insn.
3022         (mips_pic_base_register, mips_got_load): New functions.
3023         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
3024         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
3025         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
3026         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
3027         (mips_call_tls_get_addr): Update the call to mips_expand_call,
3028         also passing NULL_RTX rather than const0_rtx as the aux argument.
3029         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
3030         instead of TARGET_EXPLICIT_RELOCS.
3031         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
3032         (mips_load_call_address): Replace the sibcall_p argument with
3033         a mips_call_type argument.  Use mips_got_load.
3034         (mips16_local_alias): New structure.
3035         (mips16_local_aliases): New variable.
3036         (mips16_local_aliases_hash): New function.
3037         (mips16_local_aliases_eq): Likewise.
3038         (mips16_local_alias): Likewise.
3039         (mips16_stub_function): Likewise.
3040         (mips16_build_function_stub): Create a local alias for the target
3041         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
3042         .cpload directive and an R_MIPS_NONE relocation for the target
3043         function, then load the alias rather than the function itself.
3044         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
3045         (mips16_copy_fpr_return_value): Use mips16_stub_function and
3046         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
3047         (mips16_build_call_stub): Replace the FN parameter with an
3048         FN_PTR parameter.  Force the address into a register if it
3049         isn't a call_insn_operand; don't rely on the caller to do this.
3050         If a call to a locally-defined and locally-binding MIPS16
3051         function must be made indirectly, redirect the call to the
3052         function's local alias.  Use mips16_stub_function_p,
3053         mips16_stub_function, mips_expand_call and use_reg.
3054         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
3055         Use explicit %hi and %lo accesses where possible.
3056         Use MIPS_CALL to generate the correct code form of a
3057         jal instruction.  Add clobbers of $18 instead of uses.
3058         Update the call to mips_emit_call_insn.
3059         (mips_expand_call): Replace the SIBCALL_P argument with a
3060         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
3061         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
3062         allowing it to modify the call address.  Update the calls to
3063         mips_load_call_address and mips_emit_call_insn.
3064         (mips_split_call): New function.
3065         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
3066         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
3067         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
3068         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
3069         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
3070         if TARGET_MIPS16.
3071         (mips_cprestore_slot): New function.
3072         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
3073         and use mips_cprestore_slot.
3074         (mips_output_function_prologue): Handle TARGET_MIPS16 for
3075         LOADGP_OLDABI.
3076         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
3077         then use a copygp_mips16 instruction to set up $28.
3078         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
3079         (mips16_lay_out_constants): Call split_all_insns_noflow.
3080         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
3081         false if TARGET_MIPS16.
3082         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
3083         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
3084         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
3085         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
3086         MIPS16 code.  Allow MIPS16 o32 PIC.
3087         (mips_override_options): Allow MIPS16 o32 PIC.
3088         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
3089         after reload if TARGET_USE_GOT.
3090         (UNSPEC_COPYGP): New constant.
3091         (length): Use a default length of 8 for MIPS16 GOT loads.
3092         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
3093         (*got_page<mode>): Check mips_split_hi_p.
3094         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
3095         (unspec_got<mode>, unspec_call<mode>): New expanders.
3096         (load_got<mode>, load_call<mode>): Remove the length attributes.
3097         Use a got attribute instead of a type attribute.
3098         (copygp_mips16): New insn.
3099         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
3100         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
3101         (sibcall, sibcall_value, call, call_value): Update the calls
3102         to mips_expand_call.
3103         (call_internal, call_value_internal): Use mips_split_call.
3104         (call_value_multiple_internal): Likewise.
3105         (call_split): Move after call_internal (the insn it is split from).
3106         (call_internal_direct, call_value_internal_direct): Turn into
3107         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
3108         (call_direct_split, call_value_direct_split): New patterns.
3109         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
3110         and use M16_REGS instead of M16_NA_REGS.
3111         * config/mips/predicates.md (const_call_insn_operand): Replace
3112         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
3113         mips_use_pic_fn_addr_reg_p check.
3114         (move_operand): Reject HIGHs if mips_split_hi_p.
3115         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
3116         (__mips16_floatunsisf): Inline __mips16_floatsisf.
3117         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
3118         * config/mips/libgcc-mips16.ver: New file.
3119         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
3120         $(srcdir)/config/mips/libgcc-mips16.ver.
3121
3122 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3123
3124         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
3125         (mips_unspec_address, mips_unspec_offset_high): Likewise.
3126         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
3127         (mips16_cfun_returns_in_fpr_p): Likewise.
3128
3129 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3130
3131         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
3132         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
3133         rather than 4 to PC.
3134
3135 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3136
3137         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
3138         (FUNCTION_PROFILER): Save the static chain pointer into $2
3139         beforehand and restore it aftewards.
3140         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
3141         address directly into $25 and call the function through $25;
3142         do not clobber $3.  Pad the DImode version to cover the space
3143         left by the deleted $25 <- $3 move.
3144         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
3145         the removal of the $25 <- $3 move.
3146         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
3147         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
3148
3149 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
3150             Daniel Jacobowitz  <dan@codesourcery.com>
3151
3152         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
3153         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
3154         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
3155         * config/mips/mips.c (mips_start_function_definition): New function.
3156         (mips_end_function_definition): Likewise.
3157         (mips_output_function_prologue): Use mips_start_function_definition.
3158         (mips_output_function_epilogue): Use mips_end_function_definition.
3159         (build_mips16_function_stub): Use mips_start_function_definition
3160         and mips_end_function_definition.
3161         (build_mips16_call_stub): Likewise.
3162
3163 2008-08-09  Richard Guenther  <rguenther@suse.de>
3164
3165         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
3166         * gimple.h (gimple_call_fn): Adjust comment.
3167         (gimple_call_set_fndecl): New function.
3168         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
3169         longer having bare FUNCTION_DECL operand.
3170         (gimple_call_return_type): Likewise.
3171         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
3172
3173         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
3174         (gimple_mod_pow2): Likewise.
3175         (gimple_mod_subtract): Likewise.
3176         (gimple_ic): Likewise.
3177         (gimple_stringop_fixed_value): Likewise.
3178         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
3179         longer having bare FUNCTION_DECL operand.
3180         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
3181         * omp-low.c (optimize_omp_library_calls): Likewise.
3182         * cgraphunit.c (update_call_expr): Likewise.
3183         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
3184         (execute_convert_to_rsqrt): Likewise.
3185         * cfgexpand.c (gimple_to_tree): Simplify.
3186         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
3187         bare FUNCTION_DECL operand.
3188         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
3189         (convert_gimple_call): Use gimple_call_fndecl.
3190         * c-common.c (c_warn_unused_result): Likewise.
3191
3192 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3193
3194         PR c/17880
3195         * c-typeck.c (digest_init): Call verify_sequence_points from here.
3196         (c_finish_return): Likewise.
3197         (c_start_case): Likewise.
3198         * c-common.c (warn_for_collisions_1): Use explicit location in
3199         warning.
3200         * c-parser.c (c_parser_condition): New. Call
3201         verify_sequence_points.
3202         (c_parser_paren_condition): Call c_parser_condition.
3203         (c_parser_for_statement): Call c_parser_condition.
3204
3205 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3206
3207         PR 36901
3208         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.  
3209         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
3210         Moved from diagnostic.h
3211         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
3212         DK_PERMERROR.
3213         (emit_diagnostic): New.
3214         (warning0, pedwarn0): Delete.
3215         (warning, warning_at, pedwarn, permerror): Return bool.  
3216         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
3217         Moved to diagnostic.c.
3218         (struct diagnostic_context): Use correct type for
3219         classify_diagnostic.
3220         (diagnostic_report_diagnostic): Update declaration.
3221         (emit_diagnostic): Declare.
3222         * errors.c (warning): Return bool.  
3223         * errors.h (warning): Update declaration.
3224         * toplev.h (warning0, pedwarn0): Delete.
3225         (warning, warning_at, pedwarn, permerror): Return bool.
3226         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
3227         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
3228         inform. Update all calls.
3229         (diagnose_mismatched_decls): Check return value of warning/pedwarn
3230         before giving informative note.
3231         (implicit_decl_warning): Likewise.  
3232         * c-typeck.c (build_function_call): Likewise.  
3233         * tree-sssa.c (warn_uninit): Likewise.  
3234         * builtins.c (gimplify_va_arg_expr): Likewise.
3235
3236 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3237
3238         PR 7651
3239         * doc/invoke.texi (-Wextra): Move warning from here...
3240         (-Wuninitialized): ... to here.
3241         
3242 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3243
3244         PR 28875
3245         * flags.h (set_Wunused): Delete
3246         * toplev.c (process_options): Handle Wunused flags here.
3247         * opts.c (maybe_warn_unused_parameter): Delete.
3248         (common_handle_option): Replace set_Wunused by warn_unused.
3249         (set_Wextra): Do not handle Wunused-parameter here.
3250         (set_Wunused): Delete.
3251         * c-opts.c (c_common_handle_option): Replace set_Wunused by
3252         warn_unused.
3253         * common.opt (Wunused): Add Var and Init.
3254         (Wunused-function): Likewise.
3255         (Wunused-label): Likewise.
3256         (Wunused-parameter): Likewise.
3257         (Wunused-value): Likewise.
3258         (Wunused-variable): Likewise.
3259         
3260 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
3261
3262         * doc/invoke.texi: Add cpu_type power7.
3263         * config.in (HAVE_AS_VSX): New.
3264         * config.gcc: Add cpu_type power7.
3265         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
3266         VSX instructions.
3267         * configure: Regenerate.
3268         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
3269         power5.
3270         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
3271         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
3272         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
3273
3274 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
3275
3276         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
3277         type to vectorize.builtin_conversion.
3278         (vectorizable_conversion): Likewise.
3279         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
3280         integral type as input.
3281         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
3282         FIX_TRUNC_EXPR.
3283         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
3284         and ALTIVEC_BUILTIN_VCTSXS.
3285         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
3286         formatting. 
3287
3288 2008-08-08  Richard Guenther  <rguenther@suse.de>
3289
3290         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
3291         (surely_varying_stmt_p): Calls are varying only if they are
3292         non-builtin and not indirect or have no result.
3293         (ccp_fold): Re-instantiate code before the tuples merge.
3294
3295 2008-08-08  Richard Guenther  <rguenther@suse.de>
3296
3297         PR tree-optimization/37056
3298         * gimple.h (gimple_assign_rhs_class): New helper function.
3299         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
3300         unary operations properly.
3301
3302 2008-08-07  Jan Hubicka  <jh@suse.cz>
3303
3304         * i386.h (ix86_size_cost): Declare.
3305         (ix86_cur_cost): New function macro.
3306         * i386.md (peepholes expanding size and splitters): Predicate by
3307         optimize_insn_for_speed_p.
3308         (peepholes reduce size and splitters): Predicate by
3309         optimize_insn_for_size_p.
3310         * i386.c (ix86_size_cost): Rename from ...
3311         (size_cost): This one.
3312         (override_options): Update.
3313         (decide_alg): Likewise.
3314         (ix86_expand_clear): Use RTL profile.
3315         (ix86_pad_returns): Use RTL profile.
3316
3317 2008-08-07  Jan Hubicka  <jh@suse.cz>
3318
3319         * recog.c (split_all_insns): Set RTL profile
3320         (peephole2_optimize): Likewise.
3321         * function.c (thread_prologue_and_epilogue_insns): Likewise.
3322         * combine.c (combine_instructions): Likewise.
3323
3324 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3325
3326         * c-common.c (c_common_reswords): Also warn about keyword "bool".
3327
3328 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
3329         
3330         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
3331         value in a6 after the set_frame_ptr insn.
3332         
3333 2008-08-07  Richard Henderson  <rth@redhat.com>
3334
3335         PR debug/37033
3336         * gcc.c (cpp_options): Pass along -g*.
3337
3338 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
3339
3340         * config/arm/arm.c (output_move_neon): Update comment describing
3341         big-endian vector layout.
3342         (arm_assemble_integer): Do not handle big-endian NEON vectors
3343         specially.
3344         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
3345         neon_vget_lane<mode>_sext_internal,
3346         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
3347         element indices for big-endian.
3348
3349 2008-08-07  Richard Henderson  <rth@redhat.com>
3350
3351         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
3352         * configure, config.in: Rebuild.
3353         * debug.h (dwarf2out_do_cfi_asm): Declare.
3354         * c-cppbuiltin.c (c_cpp_builtins): Use it.
3355         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
3356         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
3357         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
3358
3359 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
3360
3361         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
3362         movv2si_internal): Combine into mov<mode>_internal.
3363         (movv2si_internal_2): Remove.
3364
3365 2008-08-07  Jan Hubicka  <jh@suse.cz>
3366
3367         PR target/37048
3368         * i386.md (single stringop patterns): Enable unconditionally. 
3369
3370 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
3371
3372         PR target/36992
3373         * config/i386/emmintrin.h (_mm_move_epi64): Use
3374         __builtin_ia32_movq128.
3375
3376         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
3377         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
3378
3379         * config/i386/sse.md (sse2_movq128): New.
3380
3381         * doc/extend.texi: Document __builtin_ia32_movq128.
3382
3383 2008-08-07  Richard Guenther  <rguenther@suse.de>
3384
3385         PR middle-end/37042
3386         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
3387         pointers can access anything.
3388
3389 2008-08-06  Jan Hubicka  <jh@suse.cz>
3390
3391         * optabs.c (emit_unop_insn): Break out to ...
3392         (maybe_emit_unop_insn): ... this one.
3393         (expand_sfix_optab): Use maybe variant.
3394         * optabs.h (maybe_emit_unop_insn): Declare.
3395
3396         * i386.md (mov0 patterns): Enable by default.
3397         (FP conversion expanders): Disable expansion of code expanding
3398         sequences when instruction should be optimized for size.
3399         (single strinop patterns): Enable when optimizing for size.
3400         (string expanders): Disable expanding of code expanding sequences
3401         when optimizning instruction for size.
3402         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
3403         per BB basis.
3404         (ix86_fp_comparison_sahf_cost): Likewise.
3405         (ix86_expand_branch): Likewise.
3406         (ix86_expand_ashl_const): Likewise.
3407         (ix86_split_ashl): Likewise.
3408         (ix86_expand_strlen): Likewise.
3409         (ix86_emit_fp_unordered_jump): Likewie.
3410
3411 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3412
3413         * c-common.c: Fix typo.
3414         (c_common_reswords): Activate more C++ keyword warnings.
3415
3416         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
3417
3418 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3419
3420         PR 26785
3421         * diagnostic.c (permerror_at): New.
3422         * toplev.h (permerror_at): Declare.
3423         
3424 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
3425             Ira Rosen  <irar@il.ibm.com>
3426
3427         * tree-vect-transform.c (vect_model_simple_cost): Return
3428         immediately if stmt is pure SLP.
3429         (vect_model_store_cost): Ditto.
3430         (vect_model_load_cost): Ditto.
3431         (vectorizable_store): Remove PURE_SLP check before call
3432         to vect_model_store_cost.
3433         (vect_model_store_cost): When checking whether stmt describe
3434         strided access, add a check that it is not slp_node.
3435
3436 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3437
3438         PR 8715
3439         * c-common.c (warn_for_sign_compare): New. Handle separately the
3440         case that 'constant' is zero.
3441         * c-typeck.c (build_binary_op): Move code to c-common.c
3442         
3443 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3444
3445         * config/alpha/alpha.c (alpha_preferred_reload_class,
3446         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
3447         alpha_output_mi_thunk_osf): Avoid C++ keywords.
3448         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
3449         * config/arm/arm.md: Likewise.
3450         * config/avr/avr-protos.h (preferred_reload_class,
3451         test_hard_reg_class, avr_simplify_comparison_p,
3452         out_shift_with_cnt, class_max_nregs): Likewise.
3453         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
3454         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
3455         preferred_reload_class, test_hard_reg_class): Likewise.
3456         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
3457         bfin_memory_move_cost, bfin_secondary_reload,
3458         bfin_output_mi_thunk): Likewise.
3459         * config/crx/crx.c (crx_secondary_reload_class,
3460         crx_memory_move_cost): Likewise.
3461         * config/frv/frv-protos.h (frv_secondary_reload_class,
3462         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
3463         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
3464         frv_secondary_reload_class, frv_class_likely_spilled_p,
3465         frv_class_max_nregs): Likewise.
3466         * config/h8300/h8300.c (h8300_classify_operand,
3467         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
3468         Likewise.
3469         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
3470         * config/ia64/ia64.c (ia64_preferred_reload_class,
3471         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
3472         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
3473         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
3474         Likewise.
3475         * config/m68hc11/m68hc11.c (preferred_reload_class,
3476         m68hc11_memory_move_cost): Likewise.
3477         * config/mcore/mcore.c (mcore_secondary_reload_class,
3478         mcore_reload_class): Likewise.
3479         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
3480         mips_class_max_nregs, mips_cannot_change_mode_class,
3481         mips_preferred_reload_class, mips_secondary_reload_class,
3482         mips_output_mi_thunk): Likewise.
3483         * config/mmix/mmix.c (mmix_preferred_reload_class,
3484         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
3485         Likewise.
3486         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
3487         Likewise.
3488         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
3489         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
3490         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
3491         * config/rs6000/rs6000.c (paired_expand_vector_init,
3492         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
3493         compare_section_name, rs6000_memory_move_cost): Likewise.
3494         * config/s390/s390.c (s390_emit_compare_and_swap,
3495         s390_preferred_reload_class, s390_secondary_reload,
3496         legitimize_pic_address, legitimize_tls_address,
3497         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
3498         s390_class_max_nregs): Likewise.
3499         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
3500         * config/s390/s390.md: Likewise.
3501         * config/score/score-protos.h (score_secondary_reload_class,
3502         score_preferred_reload_class): Likewise.
3503         * config/score/score.c (score_preferred_reload_class,
3504         score_secondary_reload_class): Likewise.
3505         * config/score/score3.c (score3_output_mi_thunk,
3506         score3_preferred_reload_class, score3_secondary_reload_class,
3507         score3_hard_regno_mode_ok): Likewise.
3508         * config/score/score3.h (score3_preferred_reload_class,
3509         score3_secondary_reload_class): Likewise.
3510         * config/score/score7.c (score7_output_mi_thunk,
3511         score7_preferred_reload_class, score7_secondary_reload_class,
3512         score7_hard_regno_mode_ok): Likewise.
3513         * config/score/score7.h (score7_preferred_reload_class,
3514         score7_secondary_reload_class): Likewise.
3515         * config/sh/sh.c (prepare_move_operands, output_far_jump,
3516         output_branchy_insn, add_constant, gen_block_redirect,
3517         sh_insn_length_adjustment, sh_cannot_change_mode_class,
3518         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
3519         Likewise.
3520         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
3521         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
3522         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
3523         xstormy16_preferred_reload_class): Likewise.
3524         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
3525         xtensa_expand_atomic, override_options,
3526         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
3527         Likewise.
3528         * reorg.c (try_merge_delay_insns): Likewise.
3529         * tree.c (merge_dllimport_decl_attributes): Likewise.
3530
3531         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
3532
3533 2008-08-06  Michael Matz  <matz@suse.de>
3534
3535         * Makefile.in (write_entries_to_file): Quote words.
3536         * gengtype.c: (read_input_line): Skip over leading white-space.
3537
3538 2008-08-06  Marc Gauthier  <marc@tensilica.com>
3539
3540         * config.gcc: Match more processor names for Xtensa.
3541         * configure.ac: Likewise.
3542         * doc/install.texi (Specific): Likewise.
3543         * configure: Regenerate.
3544
3545 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3546
3547         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
3548         * calls.c (avoid_likely_spilled_reg): Likewise.
3549         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
3550         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
3551         * config/i386/i386.c (ix86_expand_special_args_builtin,
3552         ix86_secondary_reload): Likewise.
3553         * except.c (struct eh_region, gen_eh_region_catch,
3554         remove_unreachable_regions, duplicate_eh_regions,
3555         assign_filter_values, build_post_landing_pads,
3556         sjlj_find_directly_reachable_regions, remove_eh_handler,
3557         reachable_next_level, foreach_reachable_handler,
3558         can_throw_internal_1, can_throw_external_1,
3559         collect_one_action_chain): Likewise.
3560         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
3561         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
3562         * function.c (update_temp_slot_address, instantiate_new_reg,
3563         instantiate_virtual_regs_in_rtx,
3564         instantiate_virtual_regs_in_insn): Likewise.
3565         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
3566         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
3567         gimplify_cleanup_point_expr): Likewise.
3568         * ipa-cp.c (ipcp_lattice_changed): Likewise.
3569         * passes.c (next_pass_1): Likewise.
3570         * print-tree.c (print_node_brief, print_node): Likewise.
3571         * profile.c (branch_prob): Likewise.
3572         * tree-dump.c (dump_register): Likewise.
3573         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
3574         Likewise.
3575         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
3576         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
3577         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
3578         copy_arguments_for_versioning, copy_static_chain): Likewise.
3579         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
3580         add_new_name_mapping, register_new_name_mapping): Likewise.
3581         * tree-mudflap.c (mf_xform_derefs): Likewise.
3582         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
3583         get_init_expr, combine_chains): Likewise.
3584         * tree-pretty-print.c (dump_generic_node): Likewise.
3585         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
3586         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
3587         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
3588         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
3589
3590 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3591
3592         PR middle-end/37010
3593         * calls.c (expand_call): Use the biggest preferred stack
3594         boundary.
3595
3596 2008-08-06  Michael Matz  <matz@suse.de>
3597
3598         PR target/36613
3599         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
3600         for reused reload, instead of overwriting them.
3601
3602 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3603
3604         PR middle-end/37009
3605         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
3606         for incoming stack boundary.
3607
3608         * function.c (assign_parm_find_entry_rtl): Update
3609         parm_stack_boundary.
3610
3611         * function.h (rtl_data): Add parm_stack_boundary.
3612
3613         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
3614         parm_stack_boundary for incoming stack boundary.
3615
3616 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
3617
3618         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
3619         for unrepresentable subregs or treat them as equal to other regs
3620         or subregs with the same register number.
3621
3622 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
3623
3624         PR middle-end/35432
3625         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
3626         if want_value.
3627
3628 2008-08-06  Jan Hubicka  <jh@suse.cz>
3629
3630         * predict.c (maybe_hot_frequency_p): When profile is absent, all
3631         frequencies might be hot.
3632
3633 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
3634
3635         * reload.c (find_reloads): Force constants into literal pool
3636         also if they are wrapped in a SUBREG.
3637
3638 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
3639
3640         PR target/35659
3641         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
3642         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
3643         Don't allow predicated instructions for data speculation.
3644         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
3645         declaration.
3646
3647 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
3648
3649         * haifa-sched.c (extend_global): Split to extend_global_data and
3650         extend_region_data.  Update all uses.
3651         (extend_all): Rename to extend_block_data.
3652
3653 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
3654
3655         * sched-rgn.c (new_ready): Check if instruction can be
3656         speculatively scheduled before attempting speculation.
3657         (debug_rgn_dependencies): Remove wrongful assert.
3658
3659 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
3660
3661         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
3662         
3663 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
3664         
3665         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
3666         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
3667         va_size, and type_size.
3668         
3669 2008-08-04  Jason Merrill  <jason@redhat.com>
3670
3671         PR c++/37016
3672         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
3673         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
3674
3675 2008-08-05  Richard Henderson  <rth@redhat.com>
3676
3677         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
3678         * configure: Rebuild.
3679
3680 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3681
3682         PR tree-opt/37024
3683         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
3684         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
3685         is a conversion.
3686
3687 2008-08-05  Richard Henderson  <rth@redhat.com>
3688
3689         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
3690         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
3691         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
3692         * common.opt (fdwarf2-cfi-asm): New.
3693         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
3694         * config.in, configure: Rebuild.
3695         * dwarf2asm.c (dw2_asm_output_data_raw): New.
3696         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
3697         (dw2_force_const_mem): Externalize.
3698         * dwarf2asm.h: Update.
3699         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
3700         generate a real label.
3701         (output_cfi_directive): New.
3702         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
3703         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
3704         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
3705         and .cfi_lsda.
3706         (dwarf2out_end_epilogue): Emit .cfi_endproc.
3707         (output_loc_operands_raw, output_loc_sequence_raw): New.
3708         (output_cfa_loc_raw): New.
3709         
3710 2008-08-05  Paul Brook  <paul@codesourcery.com>
3711
3712         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
3713         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
3714         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
3715         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
3716         * config/arm/arm.h (TARGET_VFPD32): Define.
3717         (TARGET_VFP3): Use TARGET_VFPD32.
3718         (fputype): Add FPUTYPE_VFP3D16.
3719         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
3720         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
3721         * config/arm/arm-cores.def: Add cortex-r4f.
3722         * config/arm/arm-tune.md: Regenerate.
3723
3724 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3725
3726         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
3727         Reword some comments throughout the file.
3728
3729         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
3730         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
3731         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
3732         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
3733
3734         (MFC_START_ENABLE): Remove PPU-only define.
3735         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
3736         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
3737
3738         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
3739         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
3740         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
3741         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
3742         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
3743         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
3744         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
3745
3746         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
3747         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
3748         (mfc_sdcrt, mfc_sdcrtst): Likewise.
3749         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
3750
3751         (spu_read_machine_status): Fix typo.
3752
3753 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3754
3755         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
3756         SUBREG of multi-word hard register.
3757         * config/spu/spu.c (valid_subreg): Likewise.
3758         (adjust_operand): Handle SUBREGs of multi-word hard registers.
3759
3760 2008-08-04  Richard Guenther  <rguenther@suse.de>
3761
3762         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
3763         the candidate with the stripped base if that base is different
3764         from the original base even for offset zero.
3765
3766 2008-08-04  Richard Guenther  <rguenther@suse.de>
3767
3768         PR middle-end/36691
3769         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
3770         check for no_overflow.
3771
3772 2008-08-04  Richard Guenther  <rguenther@suse.de>
3773
3774         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
3775
3776 2008-08-04  Paul Brook  <paul@codesourcery.com>
3777
3778         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
3779         (arm_order_regs_for_local_alloc): New function.
3780         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
3781         prototype.
3782         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
3783
3784 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
3785
3786         PR target/37012
3787         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
3788         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
3789         (ix86_expand_epilogue): Likewise.
3790
3791 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
3792
3793         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
3794         in comments.
3795
3796 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
3797
3798         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
3799         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
3800         (*movv2sf_internal_rex64): Ditto.
3801
3802 2008-08-03  Jan Hubicka  <jh@suse.cz>
3803
3804         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
3805         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
3806         * expmed.c (expand_smod_pow2): Likewise.
3807
3808 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
3809
3810         PR target/36992
3811         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
3812         alternative 0 of operand 1.
3813         (*vec_concatv2di_rex64_sse): Ditto.
3814         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
3815         of operand 1.
3816         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
3817         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
3818         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
3819         (*movv2sf_internal_rex64): Ditto.
3820
3821 2008-08-02  Richard Guenther  <rguenther@suse.de>
3822
3823         PR target/35252
3824         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
3825         (ssedoublesizemode): New mode attribute.
3826         (sse_shufps): Call gen_sse_shufps_v4sf.
3827         (sse_shufps_1): Macroize.
3828         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
3829         (sse2_shufpd_1): Macroize.
3830         (vec_extract_odd, vec_extract_even): New expanders.
3831         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
3832         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
3833         * i386.c (ix86_expand_vector_init_one_nonzero): Call
3834         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
3835         (ix86_expand_vector_set): Likewise.
3836         (ix86_expand_reduc_v4sf): Likewise.
3837
3838 2008-08-01  Doug Kwan  <dougkwan@google.com>
3839
3840         * matrix-reorg.c: Re-enable all code.
3841         (struct malloc_call_data): Change CALL_STMT to gimple type.
3842         (collect_data_for_malloc_call): Tuplify.
3843         (struct access_site_info): Change STMT to gimple type.
3844         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
3845         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
3846         (struct free_info): Change STMT to gimple type.
3847         (struct matrix_access_phi_node):  Change PHI to gimple type.
3848         (get_inner_of_cast_expr): Remove.
3849         (may_flatten_matrices_1): Tuplify.
3850         (may_flatten_matrices): Ditto.
3851         (mark_min_matrix_escape_level): Ditto.
3852         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
3853         (ssa_accessed_in_call_rhs): New
3854         (ssa_accessed_in_assign_rhs): New
3855         (record_access_alloc_site_info): Tuplify.
3856         (add_allocation_site): Ditto.
3857         (analyze_matrix_allocation_site): Ditto.
3858         (analyze_transpose): Ditto.
3859         (get_index_from_offset): Ditto.
3860         (update_type_size): Ditto.
3861         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
3862         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
3863         (analyze_accesses_for_phi_node): Tuplify.
3864         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
3865         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
3866         (analyze_matrix_accesses): Tuplify.
3867         (check_var_data): New call-back type for check_var_notmodified_p.
3868         (check_var_notmodified_p): Tuplify and use call-back struct to
3869         return statement found.
3870         (can_calculate_expr_before_stmt): Factor out statement related code
3871         into ...
3872         (can_calculate_stmt_before_stmt): New.
3873         (check_allocation_function): Tuplify.
3874         (find_sites_in_func): Ditto.
3875         (record_all_accesses_in_func): Ditto.
3876         (transform_access_sites): Ditto.
3877         (transform_allocation_sites): Ditto.
3878         (matrix_reorg): Re-enable.
3879         (gate_matrix_reorg): Re-enable.
3880
3881 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
3882
3883         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
3884         for labels for which it hasn't been set yet.  If it has been set,
3885         stop walking insns and continue with next worklist item.
3886         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
3887         if the only BARRIER is at the very end of a function.
3888
3889 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
3890
3891         * cfgexpand.c (expand_stack_alignment): Assert that
3892         stack_realign_drap and drap_rtx must match.
3893
3894         * function.c (instantiate_new_reg): If DRAP is used to realign
3895         stack, replace virtual_incoming_args_rtx with internal arg
3896         pointer.
3897
3898 2008-08-01  Richard Guenther  <rguenther@suse.de>
3899
3900         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
3901         loop information only if we initialized it.
3902         (execute_pre): Call fini_pre with in_fre.
3903         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
3904         if we do not unroll because we hit max-completely-peeled-insns.
3905         Use our estimation for consistency, do allow shrinking.
3906
3907 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
3908
3909         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
3910         with MIN_STACK_BOUNDARY.
3911         (ix86_update_stack_boundary): Likewise.
3912         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
3913         STACK_BOUNDARY.
3914
3915         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
3916         (MIN_STACK_BOUNDARY): This.
3917
3918 2008-08-01  Richard Guenther  <rguenther@suse.de>
3919
3920         PR middle-end/36997
3921         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
3922
3923 2008-08-01  Richard Guenther  <rguenther@suse.de>
3924
3925         PR tree-optimization/36988
3926         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
3927         do not matter if that doesn't change volatile qualification.
3928
3929 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
3930
3931         * configure.ac: Do not generate libada-mk.  Do not subst
3932         host_cc_for_libada.
3933         * libada-mk.in: Remove.
3934         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
3935         * configure: Regenerate.
3936
3937 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
3938
3939         * tree-pass.h: Added comment about not dumping passes with name
3940         starting with star in struct opt_pass.
3941         * passes.c (register_dump_files_1): Don't do dump for a pass with
3942         name starting with star.
3943         * doc/passes.texi (Pass manager): Mention pass names and special
3944         meaning of star prefix to avoid dump.
3945
3946 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
3947
3948         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
3949         to MIPS64r2.
3950         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
3951         (ISA_MIPS64R2): New macro.
3952         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
3953         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
3954         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
3955         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
3956         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
3957         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
3958         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
3959         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
3960         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
3961         Move up to keep list alphabetically sorted.
3962         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
3963         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
3964         processor.
3965         * doc/invoke.texi (MIPS Options): Add -mips64r2.
3966         (-march=@var{arch}): Add mips64r2.
3967
3968 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3969
3970         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
3971
3972 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
3973
3974         * expr.c (expand_assignment): Check for complete type.
3975
3976 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
3977
3978         PR debug/36977
3979         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
3980
3981         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
3982         for stack alignment.
3983
3984         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
3985
3986 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
3987
3988         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
3989         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
3990
3991 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
3992
3993         PR rtl-optimization/36419
3994         * dwarf2out.c (barrier_args_size): New variable.
3995         (compute_barrier_args_size, compute_barrier_args_size_1): New
3996         functions.
3997         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
3998         if not called yet in the current function, use barrier_args_size
3999         array to find the new args_size value.
4000         (dwarf2out_frame_debug): Free and clear barrier_args_size.
4001
4002 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4003
4004         PR debug/36980
4005         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
4006         rule 19.
4007
4008 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4009
4010         PR debug/36976
4011         * dwarf2out.c (dwarf2out_args_size_adjust): New.
4012         (dwarf2out_stack_adjust): Use it.
4013         (dwarf2out_frame_debug_expr): Likewise.
4014
4015 2008-07-31  Richard Guenther  <rguenther@suse.de>
4016
4017         PR tree-optimization/36978
4018         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
4019         the generated condition.
4020
4021 2008-07-31  Richard Guenther  <rguenther@suse.de>
4022
4023         * passes.c (init_optimization_passes): Always call
4024         pass_early_warn_uninitialized.
4025         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
4026         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
4027         * doc/passes.texi (Warn for uninitialized variables): Adjust.
4028
4029 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
4030
4031         PR c/36970
4032         * builtins.c (maybe_emit_free_warning): New function.
4033         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
4034         maybe_emit_free_warning for BUILT_IN_FREE.
4035
4036         PR debug/36278
4037         * dwarf2out.c (get_context_die): New function.
4038         (force_decl_die, force_type_die): Use it.
4039         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
4040         returns NULL, force generation of DW_TAG_typedef and put that into
4041         DW_AT_import.
4042
4043         PR preprocessor/36649
4044         * c-pch.c (c_common_read_pch): Save and restore
4045         line_table->trace_includes across PCH restore.
4046
4047 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
4048
4049         PR ada/36554
4050         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
4051
4052 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
4053
4054         PR 36974
4055         * final.c (call_from_call_insn): Handle COND_EXEC.
4056
4057 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
4058
4059         * builtins.c (std_gimplify_va_arg_expr): Replace
4060         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
4061         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
4062
4063 2008-07-30  Joey Ye  <joey.ye@intel.com>
4064             H.J. Lu  <hongjiu.lu@intel.com>
4065
4066         * builtins.c (expand_builtin_setjmp_receiver): Replace
4067         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
4068         (expand_builtin_apply_args_1): Likewise.
4069         (expand_builtin_longjmp): Need DRAP for stack alignment.
4070         (expand_builtin_apply): Likewise.
4071
4072         * caller-save.c (setup_save_areas): Call assign_stack_local_1
4073         instead of assign_stack_local to allow alignment reduction.
4074
4075         * calls.c (emit_call_1): Need DRAP for stack alignment if
4076         return pops.
4077         (expand_call): Replace virtual_incoming_args_rtx with
4078         crtl->args.internal_arg_pointer.
4079         * stmt.c (expand_nl_goto_receiver): Likewise.
4080
4081         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
4082         alignment and store to stack_alignment_estimated and
4083         max_used_stack_slot_alignment.
4084         (expand_one_var): Likewise.
4085         (expand_stack_alignment): New function.
4086         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
4087         and stack_alignment_estimated fields in rtl_data.  Call
4088         expand_stack_alignment at end.
4089
4090         * defaults.h (INCOMING_STACK_BOUNDARY): New.
4091         (MAX_STACK_ALIGNMENT): Likewise.
4092         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
4093         (SUPPORTS_STACK_ALIGNMENT): Likewise.
4094
4095         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
4096         stack alignment when generating virtual registers.
4097
4098         * function.c (assign_stack_local): Renamed to ...
4099         (assign_stack_local_1): This.  Add a parameter to indicate
4100         if it is OK to reduce alignment.
4101         (assign_stack_local): Use it.
4102         (instantiate_new_reg): Instantiate virtual incoming args rtx
4103         to vDRAP if stack realignment and DRAP is needed.
4104         (assign_parms): Collect parameter/return type alignment and
4105         contribute to stack_alignment_estimated.
4106         (locate_and_pad_parm): Likewise.
4107         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
4108         with crtl->args.internal_arg_pointer.
4109
4110         * function.h (rtl_data): Add new field drap_reg,
4111         max_used_stack_slot_alignment, stack_alignment_estimated,
4112         stack_realign_needed, need_drap, stack_realign_processed and
4113         stack_realign_finalized.
4114         (stack_realign_fp): New macro.
4115         (stack_realign_drap): Likewise.
4116
4117         * global.c (compute_regsets): Frame pointer is needed when
4118         stack is realigned.  Can eliminate frame pointer when stack is
4119         realigned and dynamic realigned argument pointer isn't used.
4120
4121         * reload1.c (update_eliminables):  Frame pointer is needed
4122         when stack is realigned.
4123         (init_elim_table): Can eliminate frame pointer when stack is
4124         realigned and dynamic realigned argument pointer isn't used.
4125
4126         * rtl.h (assign_stack_local_1): Declare new funtion.
4127
4128         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
4129         (TARGET_GET_DRAP_RTX): Likewise.
4130         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
4131         TARGET_GET_DRAP_RTX.
4132
4133         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
4134
4135         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
4136         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
4137
4138 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
4139             H.J. Lu  <hongjiu.lu@intel.com>
4140
4141         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
4142         vdrap_reg, stack_realign and drap_reg_saved.
4143         (add_cfi): Don't allow redefining CFA when DRAP is used.
4144         (reg_save): Handle stack alignment.
4145         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
4146         alignment.  Don't generate DWARF information for (set fp sp)
4147         when DRAP is used.
4148         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
4149         to INVALID_REGNUM.
4150         (int_loc_descriptor): Move prototype forward.  Also define if
4151         DWARF2_UNWIND_INFO is true.
4152         (output_cfa_loc): Handle DW_CFA_expression.
4153         (build_cfa_aligned_loc): New.
4154         (based_loc_descr): Update assert for stack realign.  For local
4155         variables, use sp+offset when stack is aligned without drap and
4156         fp+offset when stack is aligned with drap.  For arguments, use
4157         cfa+offset when drap is used to align stack.
4158
4159 2008-07-30  Joey Ye  <joey.ye@intel.com>
4160             H.J. Lu  <hongjiu.lu@intel.com>
4161
4162         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
4163         Break long line.
4164         (ix86_gen_andsp): New.
4165         (ix86_user_incoming_stack_boundary): Likewise.
4166         (ix86_default_incoming_stack_boundary): Likewise.
4167         (ix86_incoming_stack_boundary): Likewise.
4168         (ix86_can_eliminate): Likewise.
4169         (find_drap_reg): Likewise.
4170         (ix86_update_stack_boundary): Likewise.
4171         (ix86_get_drap_rtx): Likewise.
4172         (ix86_finalize_stack_realign_flags): Likewise.
4173         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
4174         (TARGET_GET_DRAP_RTX): Likewise.
4175         (override_options): Overide option value for new options.
4176         (ix86_function_ok_for_sibcall): Remove check for
4177         force_align_arg_pointer.
4178         (ix86_handle_cconv_attribute): Likewise.
4179         (ix86_function_regparm): Likewise.
4180         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
4181         (ix86_va_start): Replace virtual_incoming_args_rtx with
4182         crtl->args.internal_arg_pointer.
4183         (ix86_select_alt_pic_regnum): Check DRAP register.
4184         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
4185         (ix86_compute_frame_layout): Compute frame layout wrt stack
4186         realignment.
4187         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
4188         (ix86_expand_prologue): Decide if stack realignment is needed
4189         and generate prologue code accordingly.
4190         (ix86_expand_epilogue): Generate epilogue code wrt stack
4191         realignment is really needed or not.
4192         
4193         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
4194         (ABI_STACK_BOUNDARY): Likewise.
4195         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
4196         (STACK_REALIGN_DEFAULT): Likewise.
4197         (INCOMING_STACK_BOUNDARY): Likewise.
4198         (MAX_STACK_ALIGNMENT): Likewise.
4199         (ix86_incoming_stack_boundary): Likewise.
4200         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
4201         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
4202         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
4203         (machine_function): Remove force_align_arg_pointer.
4204
4205         * config/i386/i386.md (BX_REG): New.
4206         (R13_REG): Likewise.
4207
4208         * config/i386/i386.opt (mforce_drap): New.
4209         (mincoming-stack-boundary): Likewise.
4210         (mstackrealign): Add Init(-1).
4211
4212         * config/i386/i386-protos.h (ix86_can_eliminate): New
4213
4214 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
4215
4216         * doc/extend.texi: Update force_align_arg_pointer.
4217
4218         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
4219         -mstackrealign.
4220
4221         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
4222         (INCOMING_STACK_BOUNDARY): Likewise.
4223         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
4224         (TARGET_GET_DRAP_RTX): Likewise.
4225
4226 2008-07-30  Andreas Schwab  <schwab@suse.de>
4227
4228         PR rtl-optimization/36929
4229         * dse.c (replace_inc_dec): Use emit_insn_before instead of
4230         add_insn_before and fix argument order.
4231         (replace_inc_dec_mem): Handle NULL rtx.
4232
4233 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
4234
4235         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
4236         function.
4237         (arm_compute_initial_elimination_offset): Use it.
4238         (arm_compute_save_reg_mask): Include static chain save slot when
4239         calculating alignment.
4240         (arm_get_frame_offsets): Ditto.
4241         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
4242         that we can use to decrement the stack when the stack decrement
4243         could be too big for an immediate value in a single insn.
4244         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
4245
4246 2008-07-30  Richard Guenther  <rguenther@suse.de>
4247
4248         PR tree-optimization/36967
4249         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
4250         Release defs of statements we remove.
4251
4252 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
4253
4254         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
4255         instead of NULL_RTVEC.
4256
4257 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
4258
4259         PR target/35866
4260
4261         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
4262         vector modes.
4263
4264 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
4265
4266         * final.c (call_from_call_insn): New.
4267         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
4268
4269 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
4270
4271         * configure.ac: Substitute ADA_CFLAGS.
4272         * configure: Regenerate.
4273         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
4274         * Makefile.in: Remove mention of X_* variables.
4275         * config/pa/x-ada-hpux10: Remove.
4276         * config/pa/x-ada: Remove.
4277
4278         * doc/fragments.texi: Update.
4279
4280 2008-07-30  Olivier Hainque  <hainque@adacore.com>
4281
4282         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
4283         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
4284         __dso_handle explicitly here.
4285
4286 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4287
4288         PR 34389
4289         * c-typeck.c (build_binary_op): Encapsulate code into...
4290         * c-common.c (shorten_binary_op): ...this new function.
4291         (conversion_warning): Use the new function. Handle non-negative
4292         constant in bitwise-and.
4293         * c-common.h (shorten_binary_op): Declare.
4294
4295 2008-07-30  Olivier Hainque  <hainque@adacore.com>
4296
4297         * scan.c (make_sstring_space): Add explicit conversions of
4298         allocator's return value.
4299         * fix-header.c (recognized_function): Likewise.
4300
4301 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4302
4303         * doc/cpp.texi: Update to GFDL 1.2.
4304         * doc/gcc.texi: Do not list GPL as Invariant Section.
4305         * doc/gccint.texi: Likewise.  Update copyright years.
4306         * doc/install.texi: Update copyright years.
4307
4308 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
4309
4310         PR target/36955
4311         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
4312         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
4313
4314 2008-07-29  Jan Hubicka  <jh@suse.cz>
4315
4316         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
4317         (grokdeclarator): Likewise.
4318         * langhooks.c (lhd_warn_unused_global_decl): Use
4319         DECL_DECLARED_INLINE_P.
4320         * print-tree.c (print_node): Remove DECL_INLINE check.
4321
4322 2008-07-29  Richard Guenther  <rguenther@suse.de>
4323
4324         PR tree-optimization/36945
4325         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
4326         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
4327         Record invariant addresses un-decomposed.
4328         (copy_reference_ops_from_call): Record reference call
4329         arguments properly.  Simplify.
4330         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
4331         helper split out from ...
4332         (create_component_ref_by_pieces): ... here.  Simplify.
4333         Prepare for recursive invocation for call arguments.
4334         (create_expression_by_pieces): Adjust call to
4335         create_component_ref_by_pieces.
4336         (compute_avail): Process operand 2 of reference ops.
4337
4338 2008-07-29  Richard Guenther  <rguenther@suse.de>
4339
4340         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
4341
4342 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
4343
4344         * c-format.c (check_format_types): Revert unwanted checkin.
4345
4346 2008-07-29  Jan Hubicka  <jh@suse.cz>
4347
4348         * flags.h (flag_really_no_inline): Remove.
4349         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
4350         * toplev.c (flag_really_no_inline): Remove.
4351         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
4352         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
4353         (cgraph_decide_inlining_incrementally): Likewise.
4354         (compute_inline_parameters): Likewise.
4355         * opts.c (decode_options): Simplify.
4356         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
4357         * common.opt (finline): Initialize to 1.
4358         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
4359
4360 2008-07-29  Jan Hubicka  <jh@suse.cz>
4361
4362         * predict.c (always_optimize_for_size_p): New function.
4363         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
4364         optimize_edge_for_size_p, optimize_edge_for_speed_p,
4365         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
4366         functions.
4367         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
4368         * function.c (prepare_function_start): Set default profile.
4369         * function.h (rtl_data): Add maybe_hot_insn_p.
4370         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
4371         (construct_exit_block): Likewise.
4372         (tree_expand_cfg): Likewise.
4373         * basic-block.h
4374         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
4375         optimize_edge_for_size_p, optimize_edge_for_speed_p,
4376         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
4377         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
4378         Declare.
4379
4380 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4381
4382         PR 34985
4383         * c-decl.c (merge_decls): Merge USED flags.
4384
4385 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
4386
4387         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
4388         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
4389         next_stack, lab_false and lab_over trees.
4390
4391 2008-07-28  Richard Guenther  <rguenther@suse.de>
4392
4393         PR tree-optimization/36957
4394         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
4395         (useless_type_conversion_p): Remove.
4396         (types_compatible_p): Remove.
4397         * gimple.h (tree_ssa_useless_type_conversion): Declare.
4398         (useless_type_conversion_p): Declare.
4399         (types_compatible_p): Declare.
4400         (gimple_expr_type): Return the base type only if it is
4401         trivially convertible to the subtype.
4402
4403 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
4404
4405         * configure.ac: Use the m4_do macro to concatenate the warnings into
4406         one string in ACX_PROG_CC_WARNING_OPTS,
4407         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
4408         * configure: Regenerate.
4409
4410 2008-07-28  Richard Guenther  <rguenther@suse.de>
4411
4412         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
4413         (insert_fake_stores): Remove.
4414         (realify_fake_stores): Likewise.
4415         (execute_pre): Remove dead code.
4416         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
4417         (find_func_aliases): Deal with it here instead.
4418         Re-enable gcc_unreachable call.
4419
4420 2008-07-28  Richard Guenther  <rguenther@suse.de>
4421
4422         Merge from gimple-tuples-branch.
4423
4424         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
4425         * gimple.def: New file.
4426         * gsstruct.def: Likewise.
4427         * gimple-iterator.c: Likewise.
4428         * gimple-pretty-print.c: Likewise.
4429         * tree-gimple.c: Removed.  Merged into ...
4430         * gimple.c: ... here.  New file.
4431         * tree-gimple.h: Removed.  Merged into ...
4432         * gimple.h: ... here.  New file.
4433
4434         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
4435         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
4436         --enable-checking=gimple flag.
4437         * config.in: Likewise.
4438         * configure: Regenerated.
4439
4440         * tree-ssa-operands.h: Tuplified.
4441         * tree-vrp.c: Likewise.
4442         * tree-loop-linear.c: Likewise.
4443         * tree-into-ssa.c: Likewise.
4444         * tree-ssa-loop-im.c: Likewise.
4445         * tree-dump.c: Likewise.
4446         * tree-complex.c: Likewise.
4447         * cgraphbuild.c: Likewise.
4448         * tree-ssa-threadupdate.c: Likewise.
4449         * tree-ssa-loop-niter.c: Likewise.
4450         * tree-pretty-print.c: Likewise.
4451         * tracer.c: Likewise.
4452         * gengtype.c: Likewise.
4453         * tree-loop-distribution.c: Likewise.
4454         * tree-ssa-loop-unswitch.c: Likewise.
4455         * cgraph.c: Likewise.
4456         * cgraph.h: Likewise.
4457         * tree-ssa-loop-manip.c: Likewise.
4458         * value-prof.c: Likewise.
4459         * tree-ssa-loop-ch.c: Likewise.
4460         * tree-tailcall.c: Likewise.
4461         * value-prof.h: Likewise.
4462         * tree.c: Likewise.
4463         * tree.h: Likewise.
4464         * tree-pass.h: Likewise.
4465         * ipa-cp.c: Likewise.
4466         * tree-scalar-evolution.c: Likewise.
4467         * tree-scalar-evolution.h: Likewise.
4468         * target.h: Likewise.
4469         * lambda-mat.c: Likewise.
4470         * tree-phinodes.c: Likewise.
4471         * diagnostic.h: Likewise.
4472         * builtins.c: Likewise.
4473         * tree-ssa-alias-warnings.c: Likewise.
4474         * cfghooks.c: Likewise.
4475         * fold-const.c: Likewise.
4476         * cfghooks.h: Likewise.
4477         * omp-low.c: Likewise.
4478         * tree-ssa-dse.c: Likewise.
4479         * ipa-reference.c: Likewise.
4480         * tree-ssa-uncprop.c: Likewise.
4481         * toplev.c: Likewise.
4482         * tree-gimple.c: Likewise.
4483         * tree-gimple.h: Likewise.
4484         * tree-chrec.c: Likewise.
4485         * tree-chrec.h: Likewise.
4486         * tree-ssa-sccvn.c: Likewise.
4487         * tree-ssa-sccvn.h: Likewise.
4488         * cgraphunit.c: Likewise.
4489         * tree-ssa-copyrename.c: Likewise.
4490         * tree-ssa-ccp.c: Likewise.
4491         * tree-ssa-loop-ivopts.c: Likewise.
4492         * tree-nomudflap.c: Likewise.
4493         * tree-call-cdce.c: Likewise.
4494         * ipa-pure-const.c: Likewise.
4495         * c-format.c: Likewise.
4496         * tree-stdarg.c: Likewise.
4497         * tree-ssa-math-opts.c: Likewise.
4498         * tree-ssa-dom.c: Likewise.
4499         * tree-nrv.c: Likewise.
4500         * tree-ssa-propagate.c: Likewise.
4501         * ipa-utils.c: Likewise.
4502         * tree-ssa-propagate.h: Likewise.
4503         * tree-ssa-alias.c: Likewise.
4504         * gimple-low.c: Likewise.
4505         * tree-ssa-sink.c: Likewise.
4506         * ipa-inline.c: Likewise.
4507         * c-semantics.c: Likewise.
4508         * dwarf2out.c: Likewise.
4509         * expr.c: Likewise.
4510         * tree-ssa-loop-ivcanon.c: Likewise.
4511         * predict.c: Likewise.
4512         * tree-ssa-loop.c: Likewise.
4513         * tree-parloops.c: Likewise.
4514         * tree-ssa-address.c: Likewise.
4515         * tree-ssa-ifcombine.c: Likewise.
4516         * matrix-reorg.c: Likewise.
4517         * c-decl.c: Likewise.
4518         * tree-eh.c: Likewise.
4519         * c-pretty-print.c: Likewise.
4520         * lambda-trans.c: Likewise.
4521         * function.c: Likewise.
4522         * langhooks.c: Likewise.
4523         * ebitmap.h: Likewise.
4524         * tree-vectorizer.c: Likewise.
4525         * function.h: Likewise.
4526         * langhooks.h: Likewise.
4527         * tree-vectorizer.h: Likewise.
4528         * ipa-type-escape.c: Likewise.
4529         * ipa-type-escape.h: Likewise.
4530         * domwalk.c: Likewise.
4531         * tree-if-conv.c: Likewise.
4532         * profile.c: Likewise.
4533         * domwalk.h: Likewise.
4534         * tree-data-ref.c: Likewise.
4535         * tree-data-ref.h: Likewise.
4536         * tree-flow-inline.h: Likewise.
4537         * tree-affine.c: Likewise.
4538         * tree-vect-analyze.c: Likewise.
4539         * c-typeck.c: Likewise.
4540         * gimplify.c: Likewise.
4541         * coretypes.h: Likewise.
4542         * tree-ssa-phiopt.c: Likewise.
4543         * calls.c: Likewise.
4544         * tree-ssa-coalesce.c: Likewise.
4545         * tree.def: Likewise.
4546         * tree-dfa.c: Likewise.
4547         * except.c: Likewise.
4548         * except.h: Likewise.
4549         * cfgexpand.c: Likewise.
4550         * tree-cfgcleanup.c: Likewise.
4551         * tree-ssa-pre.c: Likewise.
4552         * tree-ssa-live.c: Likewise.
4553         * tree-sra.c: Likewise.
4554         * tree-ssa-live.h: Likewise.
4555         * tree-predcom.c: Likewise.
4556         * lambda.h: Likewise.
4557         * tree-mudflap.c: Likewise.
4558         * ipa-prop.c: Likewise.
4559         * print-tree.c: Likewise.
4560         * tree-ssa-copy.c: Likewise.
4561         * ipa-prop.h: Likewise.
4562         * tree-ssa-forwprop.c: Likewise.
4563         * ggc-page.c: Likewise.
4564         * c-omp.c: Likewise.
4565         * tree-ssa-dce.c: Likewise.
4566         * tree-vect-patterns.c: Likewise.
4567         * tree-ssa-ter.c: Likewise.
4568         * tree-nested.c: Likewise.
4569         * tree-ssa.c: Likewise.
4570         * lambda-code.c: Likewise.
4571         * tree-ssa-loop-prefetch.c: Likewise.
4572         * tree-inline.c: Likewise.
4573         * tree-inline.h: Likewise.
4574         * tree-iterator.c: Likewise.
4575         * tree-optimize.c: Likewise.
4576         * tree-ssa-phiprop.c: Likewise.
4577         * tree-vect-transform.c: Likewise.
4578         * tree-object-size.c: Likewise.
4579         * tree-outof-ssa.c: Likewise.
4580         * cfgloop.c: Likewise.
4581         * system.h: Likewise.
4582         * tree-profile.c: Likewise.
4583         * cfgloop.h: Likewise.
4584         * c-gimplify.c: Likewise.
4585         * c-common.c: Likewise.
4586         * tree-vect-generic.c: Likewise.
4587         * tree-flow.h: Likewise.
4588         * c-common.h: Likewise.
4589         * basic-block.h: Likewise.
4590         * tree-ssa-structalias.c: Likewise.
4591         * tree-switch-conversion.c: Likewise.
4592         * tree-ssa-structalias.h: Likewise.
4593         * tree-cfg.c: Likewise.
4594         * passes.c: Likewise.
4595         * ipa-struct-reorg.c: Likewise.
4596         * ipa-struct-reorg.h: Likewise.
4597         * tree-ssa-reassoc.c: Likewise.
4598         * cfgrtl.c: Likewise.
4599         * varpool.c: Likewise.
4600         * stmt.c: Likewise.
4601         * tree-ssanames.c: Likewise.
4602         * tree-ssa-threadedge.c: Likewise.
4603         * langhooks-def.h: Likewise.
4604         * tree-ssa-operands.c: Likewise.
4605         * config/alpha/alpha.c: Likewise.
4606         * config/frv/frv.c: Likewise.
4607         * config/s390/s390.c: Likewise.
4608         * config/m32c/m32c.c: Likewise.
4609         * config/m32c/m32c-protos.h: Likewise.
4610         * config/spu/spu.c: Likewise.
4611         * config/sparc/sparc.c: Likewise.
4612         * config/i386/i386.c: Likewise.
4613         * config/sh/sh.c: Likewise.
4614         * config/xtensa/xtensa.c: Likewise.
4615         * config/stormy16/stormy16.c: Likewise.
4616         * config/ia64/ia64.c: Likewise.
4617         * config/rs6000/rs6000.c: Likewise.
4618         * config/pa/pa.c: Likewise.
4619         * config/mips/mips.c: Likewise.
4620
4621 2008-07-28  Simon Baldwin  <simonb@google.com>
4622
4623         * c-pragma.c (handle_pragma_message): New function.
4624         (init_pragma): Register handle_pragma_message.
4625         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
4626         documentation.
4627
4628 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
4629
4630         PR tree-optimization/35252
4631         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
4632         REALPART_EXPR to be considered as same load operation.
4633
4634 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
4635
4636         PR tree-optimization/36830
4637         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
4638         (expressions_equal_p): Return false if only one operand is null.
4639
4640 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
4641
4642         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
4643         version requirements.
4644
4645 2008-07-26  Olivier Hainque  <hainque@adacore.com>
4646
4647         * collect2.c (symkind): New enum.  Symbol kinds we care about.
4648         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
4649         code and head comment accordingly.
4650         (scan_prog_file): Use symkind names instead of bare integers.
4651
4652 2008-07-25  Jan Hubicka  <jh@suse.cz>
4653
4654         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
4655         DECL_INLINE.
4656         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
4657         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
4658         * dojump.c (clear_pending_stack_adjust): Likewise.
4659         * print-tree.c (print_node): Ignore DECL_INLINE.
4660         * tree-inline.c (inlinable_function_p): Likewise.
4661
4662 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
4663
4664         * doc/extend.texi (hot attribute): Document that the hot attribute
4665         turns on -O3 for some ports.
4666         (cold attribute): Document that the cold attribute turns on -Os
4667         for some ports
4668
4669         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
4670         reflect function specific option support.
4671
4672         * target.h (struct target_option_hooks): Add fields to say whether
4673         the cold attribute implies -Os and the hot attribute implies -O3.
4674
4675         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
4676         By default, do not turn on -Os for cold functions.
4677         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
4678         not turn on -O3 for hot functions.
4679
4680         * c-common.c (handle_hot_attribute): Use target hook to determine
4681         if hot functions should enable -O3.
4682         (handle_cold_attribute): Use target hook to determine if cold
4683         functions should enable -Os.
4684
4685         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
4686         (override_options): Move disable scheduling to
4687         optimization_options.
4688         (optimization_options): Disable scheduling here, not
4689         override_options.
4690         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4691         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4692
4693         * config/ia64/ia64.c (ia64_override_options): Move setting
4694         scheduling flags to ia64_optimization_options.
4695         (ia64_optimization_options): Disable scheduling options here, and
4696         not in ia64_override_options.
4697         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4698         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
4699
4700 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
4701
4702         PR target/36936
4703         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
4704
4705 2008-07-25  Martin Jambor  <mjambor@suse.cz>
4706
4707         PR tree-optimization/36926
4708         * ipa-prop.c (ipa_analyze_call_uses): Call
4709         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
4710
4711 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
4712
4713         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
4714         movv2si_internal): Add mem = reg alternative.
4715
4716 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
4717
4718         PR bootstrap/36918
4719         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
4720         DEFAULT_PCC_STRUCT_RETURN to 127.
4721
4722 2008-07-24  Jan Hubicka  <jh@suse.cz>
4723
4724         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
4725         (build_cgraph_edges): Likewise.
4726         * cgraph.c (cgraph_node): Do not update assembler hash.
4727         (cgraph_remove_node): Drop non-unit-at-a-time code.
4728         * tree-pass.h (pass_O0_always_inline): Remove.
4729         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
4730         * toplev.c (process_options): Flag unit-at-a-time does not imply
4731         no section anchors.
4732         * cgraphunit.c: Update comments.
4733         (decide_is_function_needed): Drop non-unit-at-a-time mode.
4734         (cgraph_assemble_pending_functions): Remove.
4735         (cgraph_reset_node): Drop non-unit-at-a-time code.
4736         (cgraph_finalize_function): Likewise.
4737         (cgraph_analyze_function): Likewise.
4738         (cgraph_finalize_compilation_unit): Likewise.
4739         (cgraph_expand_function): Likewise.
4740         (cgraph_optimize): Likesise.
4741         (save_inline_function_body): Likewise.
4742         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
4743         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
4744         * ipa-inline.c: Update comments.
4745         (enum inlining_mode): remove INLINE_SPEED.
4746         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
4747         (cgraph_mark_inline_edge): Likewise.
4748         (try_inline): Likewise.
4749         (cgraph_decide_inlining_incrementally): Likewise.
4750         (cgraph_gate_inlining): Remove.
4751         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
4752         (cgraph_gate_early_inlining): Likewise.
4753         (gate_inline_passes): Remove.
4754         (pass_inline_parameters, pass_ipa_inline): Remove gates.
4755         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
4756         pass_O0_always_inline): Remove.
4757         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
4758         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
4759         * opts.c (no_unit_at_a_time_default): Remove.
4760         (decode_options): Remove flag_unit_at_a_time reset and warning.
4761         * opts.h (no_unit_at_a_time_default): Remove.
4762         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
4763         early in GNU dialect.
4764         (merge_decls): Update comment; drop unit-at-a-time check.
4765         (finish_decl): Likewise.
4766         (grok_declaration): Remove flag_inline_trees code.
4767         (finish_functions): Return on function returning non-void on all
4768         statics.
4769         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
4770         * cfgexpand.c (expand_one_static_var): Remove.
4771         (expand_one_var): Remove expand_one_static_var call.
4772         (expand_used_vars_for_block): Remove flag_unit_a_time check.
4773         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
4774         and flag_unit_at_a-time compatibility checks.
4775         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
4776         * tree-inline.c (flag_inline_trees): Remove.
4777         (inlinable_function_p): Don't check it.
4778         (expand_call_inline): Remove non-unit-at-a-time code.
4779         * tree-inline.h (flag_inline_trees): Remove.
4780         * tree-optimize.c (execute_early_local_optimizations): Remove
4781         unit-at-a-time checks.
4782         (tree_rest_of_compilation): Likewise.
4783         * combine.c (setup_incoming_promotions): Likewise.
4784         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
4785         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
4786         * passes.c (pass_inline_parameters): Update comments; remove
4787         O0_alwaysinline pass.
4788         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
4789         (execute_one_pass): Likewise.
4790         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
4791         (ix86_function_sseregparm): Likewise.
4792         * arm.c (arm_function_in_section_p): Likewise.
4793         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
4794         * varpool.c: Update comments.
4795         (decide_is_variable_needed): Remove unit-at-a-time checks.
4796         (varpool_finalize_decl): Likewise.
4797
4798 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
4799
4800         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
4801         to 2 instead of -1.
4802         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
4803
4804 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
4805
4806         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
4807         imp symbol extension.
4808
4809         2008-07-23  Ian Lance Taylor  <iant@google.com>
4810
4811         * tree-vrp.c (infer_value_range): Ignore asm statements when
4812         looking for memory accesses for -fdelete-null-pointer-checks.
4813
4814 2008-07-24  Ben Elliston  <bje@au.ibm.com>
4815
4816         * config/spu/spu-c.c (__vector_keyword): New variable.
4817         (vector_keyword): Likewise.
4818         (spu_categorize_keyword): New function.
4819         (spu_macro_to_expand): Likewise.
4820         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
4821         compiling an ISO C dialect.
4822
4823 2008-07-24  Ben Elliston  <bje@au.ibm.com>
4824
4825         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
4826         conventional usage.
4827
4828 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
4829
4830         * configure: Regenerate.
4831         * configure.ac: Require texinfo 4.7.
4832         * doc/install.texi: Document texinfo 4.7 requirement.
4833
4834 2008-07-23  Martin Jambor  <mjambor@suse.cz>
4835
4836         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
4837         rather than for DECL_SAVED_TREE.
4838         * ipa-prop.c: Include diagnostic.h.
4839         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
4840         thoroughly.
4841         (ipa_detect_param_modifications): Function rewritten from scratch.
4842         (ipa_compute_jump_functions): Changed accesses to modification flags.
4843         (ipa_free_node_params_substructures): Update flags destruction.
4844         (ipa_node_duplication_hook): Update flags duplication.
4845         (ipa_print_all_params_modified): Updated flag access.
4846         * ipa-prop.h (struct ipa_param_flags): New structure.
4847         (struct ipa_node_params): New field modification_analysis_done,
4848         modified_flags changed into param_flags.
4849         (ipa_is_ith_param_modified): Changed to use new flags.
4850         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
4851
4852         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
4853         ipa-cp.c and split into two functions.
4854         (ipa_print_node_jump_functions): New function.
4855         (compute_scalar_jump_functions): New function.
4856         (type_like_member_ptr_p): New function.
4857         (compute_pass_through_member_ptrs): New function.
4858         (fill_member_ptr_cst_jump_function): New function.
4859         (determine_cst_member_ptr): New function.
4860         (compute_cst_member_ptr_arguments): New function.
4861         (ipa_compute_jump_functions): Complete rewrite.
4862         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
4863         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
4864         (struct ipa_member_ptr_cst): New structure.
4865         (union jump_func_value): New field member_cst.
4866         * ipa-cp.c (ipcp_lat_is_insertable): New function.
4867         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
4868         jump function types.
4869         (ipcp_print_all_lattices): Slight fprintf rearrangement.
4870         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
4871         instead of ipcp_print_all_jump_functions.
4872         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
4873         only for replacable scalars.
4874
4875         * doc/invoke.texi (Optimize options): Add description of
4876         -findirect-inlining.
4877         * common.opt (flag_indirect_inlining): New flag.
4878         * opts.c (decode_options): Set flag_indirect_inlining when
4879         optimize >= 3.
4880
4881         * ipa-inline.c: Include ipa-prop.h.
4882         (inline_indirect_intraprocedural_analysis): New function.
4883         (inline_generate_summary): Allocate parameter and argument info
4884         structures, call inline_indirect_intraprocedural_analysis on each
4885         node when doing indirect inlining and deallocate indirect inlining
4886         data structures in the end.
4887         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
4888         (free_all_ipa_structures_after_iinln): New function.
4889         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
4890         done.
4891         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
4892
4893         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
4894         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
4895         of computing the frequency separately.
4896         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
4897         of computing the frequency separately.
4898         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
4899         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
4900         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
4901         (ipa_get_stmt_member_ptr_load_param): New function.
4902         (ipa_is_ssa_with_stmt_def): New function.
4903         (ipa_note_param_call): New function.
4904         (ipa_analyze_call_uses): New function.
4905         (ipa_analyze_stmt_uses): New function.
4906         (ipa_analyze_params_uses): New function.
4907         (ipa_free_node_params_substructures): Also free the param_calls linked
4908         list.
4909         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
4910         (ipa_print_node_param_flags): New function.
4911         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
4912         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
4913         * ipa-prop.h (struct ipa_param_flags): New field called.
4914         (struct ipa_param_call_note): New structure.
4915         (struct ipa_node_params): New fields param_calls and
4916         uses_analysis_done.
4917         (ipa_is_ith_param_called): New function.
4918         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
4919         ipa_analyze_params_uses and dump parameter flags.
4920
4921         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
4922         ipa_propagate_indirect_call_infos if performing indirect inlining,
4923         pass a new parameter new_edges to it.
4924         (add_new_edges_to_heap): New fucntion.
4925         (cgraph_decide_inlining_of_small_functions): New vector
4926         new_indirect_edges for newly found indirect edges , call
4927         ipa_propagate_indirect_call_infos after inlining.
4928         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
4929         inlining if performing indirect inlining.  Call
4930         free_all_ipa_structures_after_iinln when doing so too.
4931         (inline_generate_summary): Do not call
4932         free_all_ipa_structures_after_iinln here.
4933         * ipa-prop.c (update_jump_functions_after_inlining): New function.
4934         (print_edge_addition_message): New function.
4935         (update_call_notes_after_inlining): New function.
4936         (propagate_info_to_inlined_callees): New function.
4937         (ipa_propagate_indirect_call_infos): New function.
4938         * ipa-prop.h: Include cgraph.h
4939         (struct ipa_param_call_note): Fields reordered, new field processed.
4940         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
4941         flag indirect_call.
4942         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
4943         rediscovered call statements.
4944         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
4945         (dump_cgraph_node): Dump also the indirect_call flag.
4946         (cgraph_clone_edge): Copy also the indirect_call flag.
4947         * tree-inline.c (copy_bb): Do not check for fndecls from call
4948         expressions, check for edge availability when moving clones.
4949         (get_indirect_callee_fndecl): New function.
4950         (expand_call_inline): If callee declaration is not apprent from
4951         the statement, try calling get_indirect_callee_fndecl.  Do not
4952         issue warnings or call sorry when not inlinings an indirect edge.
4953         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
4954
4955         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
4956         bit more frandly to matching.
4957         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
4958         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
4959         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
4960
4961 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
4962
4963         PR 36907
4964         * opth-gen.awk: Suppress function specific features when building
4965         target libraries.
4966         * optc-gen.awk: Ditto.
4967
4968 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4969
4970         PR 35058
4971         * diagnostic.c (pedwarn): Add opt parameter.
4972         (pedwarn0): New.
4973         * c-tree.h (pedwarn_init): Add opt parameter.
4974         (pedwarn_c90): Likewise.
4975         (pedwarn_c99): Likewise.
4976         * c-errors.c (pedwarn_c99): Likewise.
4977         (pedwarn_c90): Likewise.
4978         * toplev.h (pedwarn): Update declaration.
4979         (pedwarn0): Declare.
4980         * c-lex.c: All calls to pedwarn changed.
4981         * builtins.c: All calls to pedwarn changed.
4982         * toplev.c: All calls to pedwarn changed.
4983         * c-decl.c: All calls to pedwarn changed.
4984         * c-typeck.c: All calls to pedwarn changed.
4985         * c-common.c: All calls to pedwarn changed.
4986         * c-parser.c: All calls to pedwarn changed.
4987
4988 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
4989             Karthik Kumar  <karthikkumar@gmail.com>
4990
4991         * attribs.c (file scope): Include c-common.h.
4992         (decl_attributes): Add support for #pragma GCC optimize and
4993         #pragma GCC option.
4994
4995         * targhooks.c (default_can_inline_p): New function that is the
4996         default for the TARGET_CAN_INLINE_P target hook.
4997
4998         * targhooks.h (default_can_inline_p): Add declaration.
4999
5000         * tree.c (cl_optimization_node): New static tree for building
5001         OPTIMIZATION_NODE tree.
5002         (cl_target_option_node): New static tree for building
5003         TARGET_OPTION_NODE tree.
5004         (cl_option_hash_table): New hash table for hashing
5005         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
5006         (cl_option_hash_hash): New function to provide the hash value for
5007         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
5008         (cl_option_hash_eq): New function to provide an equality test for
5009         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
5010         (tree_code_size): Add support for OPTIMIZATION_NODE and
5011         TARGET_OPTION_NODE trees.
5012         (tree_code_structure): Add support for OPTIMIZATION_NODE and
5013         TARGET_OPTION_NODE trees.
5014         (build_optimization_node): Build a tree that has all of the
5015         current optimization options.
5016         (build_target_option_node): Build a tree that has the target
5017         options that might be changed on a per function basis.
5018
5019         * tree.h (file scope): Include options.h.
5020         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
5021         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
5022         (TREE_OPTIMIZATION): Ditto.
5023         (TREE_TARGET_SPECIFIC): Ditto.
5024         (struct tree_function_decl): Add fields for remembering the
5025         current optimization options and target specific options.
5026         (struct tree_optimization_option): New tree variant that remembers
5027         the optimization options.
5028         (struct tree_target_option): New tree variant that remembers the
5029         target specific flags that might change for compiling a particular
5030         function.
5031         (union tree_node): Include tree_optimization_option and
5032         tree_target_option fields.
5033         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
5034         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
5035         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
5036         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
5037         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
5038         optimization and target options.
5039         (optimization_default_node): New macro to refer to global_trees
5040         field.
5041         (optimization_current_node): Ditto.
5042         (optimization_cold_node): Ditto.
5043         (optimization_hot_node): Ditto.
5044         (target_option_default_node): Ditto.
5045         (target_option_current_node): Ditto.
5046         (current_option_pragma): Ditto.
5047         (current_optimize_pragma): Ditto.
5048
5049         * target.h (struct gcc_target): Add valid_option_attribute_p,
5050         target_option_save, target_option_restore, target_option_print,
5051         target_option_pragma_parse, and can_inline_p hooks.
5052
5053         * toplev.h (parse_optimize_options): Add declaration.
5054         (fast_math_flags_struct_set_p): Ditto.
5055
5056         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
5057         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
5058         optimize is used.
5059
5060         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
5061         tree_can_inline_p hook to see if one function can inline another.
5062         (cgraph_decide_inlining): Ditto.
5063         (cgraph_decide_inlining_incrementally): Ditto.
5064
5065         * opts.c (decode_options): Add support for running multiple times
5066         to allow functions with different target or optimization options
5067         than was specified on the command line.
5068         (fast_math_flags_struct_set_p): New function that is similar to
5069         fast_math_flags_set_p, except it uses the values in the
5070         cl_optimization structure instead of global variables.
5071
5072         * optc-gen.awk: Add support for TargetSave to allow a back end to
5073         declare new fields that need to be saved when using function
5074         specific options.  Include flags.h and target.h in the options.c
5075         source.  Add support for Save to indicate which options can be set
5076         for individual functions.  Generate cl_optimize_save,
5077         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
5078         cl_target_option_restore, cl_target_option_print functions to
5079         allow functions to use different optimization or target options.
5080
5081         * opt-functions.awk (var_type_struct): Return the type used for
5082         storing the field in a structure.
5083
5084         * opth-gen.awk: Add support for TargetSave to allow a back end to
5085         declare new fields that need to be saved when using function
5086         specific options.  Add support for Save to indicate which options
5087         can be set for individual functions.  Only generate one extern for
5088         Mask fields.  Generate cl_optimization and cl_target_option
5089         structures to remember optimization and target options.
5090
5091         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
5092         collecting new tree nodes.
5093         (TS_TARGET_OPTION): Ditto.
5094
5095         * c-decl.c (merge_decls): Merge function specific target and
5096         optimization options.
5097
5098         * function.c (invoke_set_current_function_hook): If the function
5099         uses different optimization options, change the global variables
5100         to reflect this.
5101
5102         * coretypes.h (struct cl_optimization): Add forward reference.
5103         (struct cl_target_option): Ditto.
5104
5105         * c-pragma.c (option_stack): New static vector to remember the
5106         current #pragma GCC option stack.
5107         (handle_pragma_option): New function to support #pragma GCC option
5108         to change target options.
5109         (optimize_stack): New static vector to remember the current
5110         #pragma GCC optimize stack.
5111         (handle_pragma_optimize): New function to support #pragma GCC
5112         optimize to change optimization options.
5113         (init_pragma): Add support for #pragma GCC optimize and #pragma
5114         GCC option.
5115
5116         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
5117         optimization options.
5118         (TARGET_OPTION_NODE): New tree code for remembering certain target
5119         options.
5120
5121         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
5122         TARGET_OPTION_NODE trees.
5123
5124         * common.opt (-O): Add Optimization flag.
5125         (-Os): Ditto.
5126         (-fmath-errno): Ditto.
5127         (-falign-functions): Add UInteger flag to make sure flag gets full
5128         int in cl_optimization structure.
5129         (-falign-jumps): Ditto.
5130         (-falign-labels): Ditto.
5131         (-falign-loops): Ditto.
5132         (-fsched-stalled-insns): Ditto.
5133         (-fsched-stalled-insns-dep): Ditto.
5134
5135         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
5136         definition.
5137         (TARGET_OPTION_SAVE): Ditto.
5138         (TARGET_OPTION_RESTORE): Ditto.
5139         (TARGET_OPTION_PRINT): Ditto.
5140         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
5141         (TARGET_CAN_INLINE_P): Ditto.
5142         (TARGET_INITIALIZER): Add new hooks.
5143
5144         * tree-inline.c (tree_can_inline_p): New function to determine
5145         whether one function can inline another.  Check if the functions
5146         use compatible optimization options, and also call the backend
5147         can_inline_p hook.
5148
5149         * tree-inline.h (tree_can_inline_p): Add declaration.
5150
5151         * c-common.c (c_common_attribute): Add support for option and
5152         optimize attributes.
5153         (handle_option_attribute): Add support for the option attribute to
5154         allow the user to specify different target options for compiling a
5155         specific function.
5156         (handle_optimize_attribute): Add support for the optimize
5157         attribute to allow the user to specify different optimization
5158         options for compiling a specific function.
5159         (handle_hot_attribute): Turn on -O3 optimization for this one
5160         function if it isn't the default optimization level.
5161         (handle_cold_attribute): Turn on -Os optimization for this one
5162         function if it insn't the default optimization.
5163         (const_char_p): New const char * typedef.
5164         (optimize_args): New static vector to remember the optimization
5165         arguments.
5166         (parse_optimize_options): New function to set up the optimization
5167         arguments from either the optimize attribute or #pragma GCC optimize.
5168
5169         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
5170         (builtin_define_std): Ditto.
5171
5172         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
5173         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
5174         (x86_64-*-*): Ditto.
5175
5176         * Makefile.in (TREE_H): Add options.h.
5177         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
5178
5179         * doc/extend.texi (option attribute): Document new attribute.
5180         (optimize attribute): Ditto.
5181         (hot attribute): Document hot attribute sets -O3.
5182         (cold attribute): Document cold attribute sets -Os.
5183         (#pragma GCC option): Document new pragma.
5184         (#pragma GCC optimize): Ditto.
5185
5186         * doc/options.texi (TargetSave): Document TargetSave syntax.
5187         (UInteger): Document UInteger must be used for certain flags.
5188         (Save): Document Save option to create target specific options
5189         that can be saved/restored on a function specific context.
5190
5191         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
5192         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
5193
5194         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
5195         (TARGET_OPTION_SAVE): Ditto.
5196         (TARGET_OPTION_RESTORE): Ditto.
5197         (TARGET_OPTION_PRINT): Ditto.
5198         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
5199         (TARGET_CAN_INLINE_P): Ditto.
5200
5201         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
5202         -mfpmath=sse,387.
5203         (-mfpmath=both): Ditto.
5204
5205 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
5206             Karthik Kumar  <karthikkumar@gmail.com>
5207
5208         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
5209         (TARGET_POPCNT): Ditto.
5210         (TARGET_SAHF): Ditto.
5211         (TARGET_AES): Ditto.
5212         (TARGET_PCLMUL): Ditto.
5213         (TARGET_CMPXCHG16B): Ditto.
5214         (TARGET_RECIP): Move switch into target_flags.
5215         (TARGET_FUSED_MADD): Ditto.
5216         (ix86_arch_features): Make an unsigned char type.
5217         (ix86_tune_features): Ditto.
5218         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
5219         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
5220         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
5221
5222         * config/i386/i386.opt (arch): New TargetSave field to define
5223         fields that need to be saved for function specific option support.
5224         (tune): Ditto.
5225         (fpmath): Ditto.
5226         (branch_cost): Ditto.
5227         (ix86_isa_flags_explicit): Ditto.
5228         (tune_defaulted): Ditto.
5229         (arch_specified): Ditto.
5230         (-m128-long-double): Add Save flag to save option for target
5231         specific option support.
5232         (-m80387): Ditto.
5233         (-maccumulate-outgoing-args): Ditto.
5234         (-malign-double): Ditto.
5235         (-malign-stringops): Ditto.
5236         (-mfancy-math-387): Ditto.
5237         (-mhard-float): Ditto.
5238         (-mieee-fp): Ditto.
5239         (-minline-all-stringops): Ditto.
5240         (-minline-stringops-dynamically): Ditto.
5241         (-mms-bitfields): Ditto.
5242         (-mno-align-stringops): Ditto.
5243         (-mno-fancy-math-387): Ditto.
5244         (-mno-push-args): Ditto.
5245         (-mno-red-zone): Ditto.
5246         (-mpush-args): Ditto.
5247         (-mred-zone): Ditto.
5248         (-mrtd): Ditto.
5249         (-msseregparm): Ditto.
5250         (-mstack-arg-probe): Ditto.
5251         (-m32): Ditto.
5252         (-m64): Ditto.
5253         (-mmmx): Ditto.
5254         (-m3dnow): Ditto.
5255         (-m3dnowa): Ditto.
5256         (-msse): Ditto.
5257         (-msse2): Ditto.
5258         (-msse3): Ditto.
5259         (-msse4.1): Ditto.
5260         (-msse4.2): Ditto.
5261         (-msse4): Ditto.
5262         (-mno-sse4): Ditto.
5263         (-msse4a): Ditto.
5264         (-msse5): Ditto.
5265         (-mrecip): Move flag into target_flags.
5266         (-mcld): Ditto.
5267         (-mno-fused-madd): Ditto.
5268         (-mfused-madd): Ditto.
5269         (-mabm): Move flag into ix86_isa_flags.
5270         (-mcx16): Ditto.
5271         (-mpopcnt): Ditto.
5272         (-msahf): Ditto.
5273         (-maes): Ditto.
5274         (-mpclmul): Ditto.
5275
5276         * config/i386/i386-c.c: New file for #pragma support.
5277         (ix86_target_macros_internal): New function to #define or #undef
5278         target macros based when the user uses the #pragma GCC option to
5279         change target options.
5280         (ix86_pragma_option_parse): New function to add #pragma GCC option
5281         support.
5282         (ix86_target_macros): Move defining the target macros here from
5283         TARGET_CPU_CPP_BUILTINS in i386.h.
5284         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
5285         defined, initialize any subtarget #pragmas.
5286
5287         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
5288         REGISTER_TARGET_PRAGMAS.
5289
5290         * config/i386/t-i386: New file for x86 dependencies.
5291         (i386.o): Make dependencies mirror the include files used.
5292         (i386-c.o): New file, add dependencies.
5293
5294         * config/i386/i386-protos.h (override_options): Add bool argument.
5295         (ix86_valid_option_attribute_tree): Add declaration.
5296         (ix86_target_macros): Ditto.
5297         (ix86_register_macros): Ditto.
5298
5299         * config/i386/i386.c (ix86_tune_features): Move initialization of
5300         the target masks to initial_ix86_tune_features to allow functions
5301         to have different target options.  Make type unsigned char,
5302         instead of unsigned int.
5303         (initial_ix86_tune_features): New static vector to hold processor
5304         masks for the tune variables.
5305         (ix86_arch_features): Move initialization of the target masks to
5306         initial_ix86_arch_features to allow functions to have different
5307         target options.  Make type unsigned char, instead of unsigned int.
5308         (initial_ix86_arch_features): New static vector to hold processor
5309         masks for the arch variables.
5310         (enum ix86_function_specific_strings): New enum to describe the
5311         string options used for attribute((option(...))).
5312         (ix86_target_string): New function to return a string that
5313         describes the target options.
5314         (ix86_debug_options): New function to print the current options in
5315         the debugger.
5316         (ix86_function_specific_save): New function hook to save the
5317         function specific global variables in the cl_target_option structure.
5318         (ix86_function_specific_restore): New function hook to restore the
5319         function specific variables from the cl_target_option structure to
5320         the global variables.
5321         (ix86_function_specific_print): New function hook to print the
5322         target specific options in the cl_target_option structure.
5323         (ix86_valid_option_attribute_p): New function hook to validate
5324         attribute((option(...))) arguments.
5325         (ix86_valid_option_attribute_tree): New function that is common
5326         code between attribute((option(...))) and #pragma GCC option
5327         support that parses the options and returns a tree holding the options.
5328         (ix86_valid_option_attribute_inner_p): New helper function for
5329         ix86_valid_option_attribute_tree.
5330         (ix86_can_inline_p): New function hook to decide if one function
5331         can inline another on a target specific basis.
5332         (ix86_set_current_function); New function hook to switch target
5333         options if the user used attribute((option(...))) or #pragma GCC
5334         option.
5335         (ix86_tune_defaulted): Move to static file scope from
5336         override_options.
5337         (ix86_arch_specified): Ditto.
5338         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
5339         ix86_isa_flags.
5340         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
5341         (OPTION_MASK_ISA_ABM_SET): Ditto.
5342         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
5343         (OPTION_MASK_ISA_CX16_SET): Ditto.
5344         (OPTION_MASK_ISA_SAHF_SET): Ditto.
5345         (OPTION_MASK_ISA_AES_UNSET): Ditto.
5346         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
5347         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
5348         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
5349         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
5350         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
5351         (struct ptt): Move to static file scope from override_options.
5352         (processor_target_table): Ditto.
5353         (cpu_names): Ditto.
5354         (ix86_handle_option): Add support for options that are now isa options.
5355         (override_options): Add support for declaring functions that
5356         support different target options than were specified on the
5357         command line.  Move struct ptt, processor_target_table, cpu_names,
5358         ix86_tune_defaulted, ix86_arch_specified to static file scope.
5359         Add bool argument.  Fix up error messages so the appropriate error
5360         is given for either command line or attribute.
5361         (ix86_previous_fndecl): New static to remember previous function
5362         declaration to see if we need to change target options.
5363         (ix86_builtins_isa): New array to record the ISA of each builtin
5364         function.
5365         (def_builtin): Always create the builtin function, even if the
5366         current ISA doesn't support it.
5367         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
5368         tests for those builtins.
5369         (ix86_init_builtins): Remove TARGET_MMX test for calling
5370         ix86_init_mmx_sse_builtins.
5371         (ix86_expand_builtin): If the current ISA doesn't support a given
5372         builtin, signal an error.
5373         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
5374         (TARGET_SET_CURRENT_FUNCTION): Ditto.
5375         (TARGET_OPTION_SAVE): Ditto.
5376         (TARGET_OPTION_RESTORE): Ditto.
5377         (TARGET_OPTION_PRINT): Ditto.
5378         (TARGET_CAN_INLINE_P): Ditto.
5379
5380 2008-07-22  Rafael Avila de Espindola  <espindola@google.com>
5381
5382         * c-typeck.c (build_external_ref): Don't call assemble_external.
5383         * final.c (output_operand): Call assemble_external.
5384
5385 2008-07-21  DJ Delorie  <dj@redhat.com>
5386
5387         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
5388         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
5389
5390 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5391
5392         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
5393         original insn and splitter contents into ...
5394         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
5395         flag_unsafe_math_optimizations.  Add dummy scratch register.
5396         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
5397         !flag_unsafe_math_optimizations.  Returns number with next
5398         highest magnitude if this is still less or equal to the true
5399         quotient in magnitude.
5400
5401 2008-07-21  Rafael Avila de Espindola  <espindola@google.com>
5402
5403         * Makefile.in: Replace toplev.h with TOPLEV_H.
5404         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
5405         * c-lex.c (fe_file_change): Don't set in_system_header.
5406         * c-parser.c (c_token): Remove in_system_header.
5407         (c_lex_one_token): Don't set in_system_header.
5408         (c_parser_set_source_position_from_token): Don't set in_system_header.
5409         * diagnostic.c (diagnostic_report_diagnostic): Use location from
5410         diagnostic_info.
5411         (warning_at): New.
5412         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
5413         * flags.h (in_system_header): Remove.
5414         * function.c (saved_in_system_header): Remove.
5415         (push_cfun): Don't set in_system_header.
5416         (pop_cfun): Don't set in_system_header.
5417         (push_struct_function): Don't set in_system_header.
5418         * input.h (expanded_location): Add sysp.
5419         (in_system_header_at): New.
5420         (in_system_header): New.
5421         * toplev.c (in_system_header): Remove.
5422         * toplev.h: Include input.h
5423         (warning_at): New.
5424         * tree-cfg.c (execute_warn_function_return): Call warning_at.
5425         * tree-ssa.c (warn_uninit): Call warning_at.
5426         (warn_uninitialized_var): Update calls to warn_uninit.
5427         (warn_uninitialized_phi): Update calls to warn_uninit.
5428         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
5429         (expand_location): Initialize xloc.sysp.
5430         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
5431         (tree_decl_with_vis): Remove in_system_header_flag.
5432
5433 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
5434
5435         PR target/36822
5436         * recog.c (asm_operand_ok): Change the order of the extra
5437         memory constraint checks.
5438
5439 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5440
5441         PR tree-opt/36879
5442         * tree-switch-conversion.c (build_one_array): Call
5443         varpool_mark_needed_node and varpool_finalize_decl
5444         instead of assemble_variable.
5445
5446 2008-07-19  Jan Hubicka  <jh@suse.cz>
5447
5448         * cgraph.c (cgraph_add_new_function): Do early local passes.
5449         * tree-nrv.c (gate_pass_return_slot): New gate.
5450         (pass_nrv): Add the gate.
5451         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
5452         functions.
5453         (coalesce_ssa_name): Coalesce SSA names.
5454         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
5455         not optimizing so unused user vars remains visible.
5456         * common.opt (flag_tree_ter): Always enable by default.
5457         * tree-ssa-ter.c: Include flags.h
5458         (is_replaceable_p): Check that locations match; when aliasing is missing
5459         be conservative about loads.
5460         * tree-optimize.c (gate_init_datastructures): Remove.
5461         (pass_init_datastructures): New.
5462         * passes.c: Reorder passes so we always go into SSA.
5463
5464 2008-07-19  Jan Hubicka  <jh@suse.cz>
5465
5466         * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
5467         * doc/invoke.texi (--combine): Likewise.
5468         (-finline-functions-called-once): Update levels when enabled.
5469         (-funit-at-a-time): Document new behaviour.
5470         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
5471         -fno-section-anchors when disabled explicitly.
5472         (inline params): They are not ignored now.
5473         (precompiled headers): Remove unit-at-a-time as being incompatible.
5474         * opts.c (decode_options): Handle unit-at-a-time as alias;
5475         imply -fno-section-anchors when toplevel reorder is disabled
5476         explicitly.
5477         * common.opt (ftoplevel-reorder): Set default value to 2.
5478         (funit-at-a-time): Set default value to 1.
5479         * config/rs6000/rs6000.c (optimization_options): Set section anchors
5480         to 2.
5481
5482 2008-07-19  Jan Hubicka  <jh@suse.cz>
5483
5484         * builtins.c (expand_builtin_int_roundingfn,
5485         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
5486         it is not useful.
5487
5488 2008-07-19  Richard Guenther  <rguenther@suse.de>
5489
5490         PR bootstrap/36864
5491         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
5492         * tree-ssa-sccvn.c (get_constant_value_id): New function.
5493         * tree-ssa-pre.c (get_expr_value_id): For newly created
5494         constant value-ids make sure to add the expression to its
5495         expression-set.
5496
5497 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
5498
5499         PR middle-end/36877
5500         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
5501         return value of the builtin is ignored.
5502
5503 2008-07-19  Olivier Hainque  <hainque@adacore.com>
5504
5505         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
5506         bits, a C conformant malloc implementation has to provide.
5507         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
5508
5509 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
5510
5511         PR target/36780
5512         PR target/36827
5513         * reload.c (find_reloads_subreg_address): Only reload address if
5514         reloaded == 0, not for reloaded != 1.
5515
5516         Revert:
5517         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
5518         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
5519         (m32c_legitimate_address_p): Handle "++rii" addresses created by
5520         m32c_legitimize_reload_address.
5521
5522         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5523         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
5524         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
5525
5526 2008-07-19  Olivier Hainque  <hainque@adacore.com>
5527
5528         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
5529         argument, saying whether nested array are to be collapsed
5530         into a single array type DIE with multiple subscripts.
5531         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
5532         issues, centralize the nested array types collapsing control and
5533         disable the transformation for Ada.
5534
5535 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
5536
5537         PR target/36786
5538         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
5539         x86_64_shift_adj.
5540         (x86_64_shift_adj_2): New expander.
5541         (x86_64_shift_adj_3): Ditto.
5542         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
5543         to split TImode operands.
5544         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
5545         (ix86_split_lshr): Ditto.
5546
5547 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
5548
5549         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
5550         and __CHAR32_TYPE__.
5551         * c-typeck.c (digest_init): Support char16_t and char32_t.
5552         (set_nonincremental_init_from_string): Idem.
5553
5554 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5555
5556         PR middle-end/36859
5557         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
5558         PREFERRED_STACK_BOUNDARY.
5559         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
5560
5561 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5562
5563         PR middle-end/36858
5564         * function.c (locate_and_pad_parm): Cap boundary earlier.
5565
5566 2008-07-17  Julian Brown  <julian@codesourcery.com>
5567
5568         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
5569         no-op for targets which don't use DLLs.
5570
5571 2008-07-17  Martin Jambor  <mjambor@suse.cz>
5572
5573         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
5574         that nodes are relevant by examining the node->analyzed flag.
5575         (ipcp_init_stage): Check which nodes are relevant, assert that the
5576         relevant ones are also required.
5577         (ipcp_propagate_stage): Check on the side arrays are properly
5578         allocated.
5579         (ipcp_print_all_jump_functions): Make sure not to touch any node
5580         that is not analyzed or an edge that does not have a corresponding
5581         entry in the on-the-side vectors.
5582         (ipcp_function_scale_print): Likewise.
5583         (ipcp_update_callgraph): Check that the node is relevant.
5584         (ipcp_insert_stage): Check that the node is relevant.  Check there is
5585         an info for every node and edge.
5586         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
5587         (ipa_print_all_tree_maps): Likewise and a new variable info.
5588         (ipa_print_all_params_modified): Likewise.
5589         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
5590
5591 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
5592
5593         PR target/25343
5594         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
5595
5596 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
5597
5598         PR rtl-optimization/36753
5599         * fwprop.c (use_killed_between): Don't shortcut
5600         single-definition global registers.
5601
5602 2008-07-16  Jan Hubicka  <jh@suse.cz>
5603
5604         * cgraph.h (varpool_empty_needed_queue): Declare.
5605         * cgraphunit.c (output_in_order): Mark all variables as needed;
5606         empty the queue.
5607         * varpool.c (varpool_assemble_node): Update debug queue.
5608         (varpool_assemble_pending_decls): Don't do it here.
5609         (varpool_empty_needed_queue):  New function.
5610
5611 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5612
5613         * recog.c (peephole2_optimize): Fix formatting.
5614
5615 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5616
5617         * c-pch.c (get_ident): Avoid C++ keywords.
5618         * combine-stack-adj.c (single_set_for_csa): Likewise.
5619         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
5620         output_asm_insn): Likewise.
5621         * reload.c (push_secondary_reload, find_reusable_reload,
5622         push_reload, combine_reloads, find_reloads,
5623         debug_reload_to_stream): Likewise.
5624         * reload.h (struct reload): Likewise.
5625         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
5626         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
5627         emit_output_reload_insns): Likewise.
5628         * targhooks.c (default_secondary_reload): Likewise.
5629         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
5630
5631 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5632
5633         * recog.c (validate_change_1, validate_change,
5634         validate_unshare_change, validate_replace_rtx_1, struct
5635         funny_match, constrain_operands, peephole2_optimize): Avoid C++
5636         keywords.
5637         * reload.c (push_secondary_reload, secondary_reload_class,
5638         scratch_reload_class, find_valid_class, find_reusable_reload,
5639         push_reload, find_dummy_reload, find_reloads_address_1,
5640         find_reloads_address_part, find_equiv_reg): Likewise.
5641         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
5642         choose_reload_regs): Likewise.
5643         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
5644         Likewise.
5645         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
5646         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
5647         * sched-rgn.c (concat_INSN_LIST): Likewise.
5648         * stor-layout.c (mode_for_size, mode_for_size_tree,
5649         smallest_mode_for_size): Likewise.
5650
5651 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5652
5653         * cfg.c (dump_reg_info): Avoid C++ keywords.
5654         * dwarf2asm.c (dw2_force_const_mem,
5655         dw2_asm_output_encoded_addr_rtx): Likewise.
5656         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
5657         * expmed.c (expand_shift): Likewise.
5658         * global.c (find_reg): Likewise.
5659         * graph.c (draw_edge): Likewise.
5660         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
5661         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
5662         widen_clz, widen_bswap, expand_parity, expand_unop,
5663         emit_cmp_and_jump_insn_1): Likewise.
5664         * postreload.c (reload_cse_simplify_operands): Likewise.
5665         * ra.h (add_neighbor): Likewise.
5666         * reg-stack.c (remove_regno_note, change_stack): Likewise.
5667         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
5668         record_reg_classes, copy_cost, record_address_regs,
5669         invalid_mode_change_p): Likewise.
5670         * regrename.c (regrename_optimize, scan_rtx_reg,
5671         dump_def_use_chain, find_oldest_value_reg,
5672         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
5673
5674 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
5675
5676         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
5677         MASK_POWERPC64 for power4 in previous commit.
5678
5679 2008-07-16  Olivier Hainque  <hainque@adacore.com>
5680
5681         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
5682         instead of bare conversion to cast const-ness away.
5683
5684 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
5685
5686         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
5687         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
5688         * config/xtensa/xtensa.c (xtensa_function_value): New function.
5689         (TARGET_FUNCTION_VALUE): Define.
5690
5691 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
5692
5693         * config/rs6000/rs6000.c (processor_target_table): Add
5694         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
5695
5696 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
5697
5698         PR target/36827
5699         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
5700         (m32c_legitimate_address_p): Handle "++rii" addresses created by
5701         m32c_legitimize_reload_address.
5702
5703 2007-07-16  Rafael Avila de Espindola  <espindola@google.com>
5704
5705         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
5706         DECL_IN_SYSTEM_HEADER in sync.
5707
5708 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
5709
5710         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
5711         * tree-ssa-pre.c (pre_expr_eq): Ditto
5712         (get_constant_for_value_id): Take a type as an argument.
5713         (fully_constant_expression): Pass in type.
5714         (find_or_generate_expression): Short circuit constant case.
5715         (create_expression_by_pieces): Remove special casing of
5716         pointer_plus.
5717         (do_regular_insertion): Short circuit constant case.
5718         (do_partial_partial_insertion): Ditto.
5719
5720 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5721
5722         PR target/36782
5723         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
5724
5725 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
5726
5727         * config/xtensa/libgcc-xtensa.ver: New file.
5728         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
5729
5730 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5731
5732         * df-problems.c (df_set_note): Avoid C++ keywords.
5733         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
5734         * dse.c (record_store, remove_useless_values): Likewise.
5735         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
5736         gen_reg_rtx_offset, operand_subword, change_address_1,
5737         change_address, adjust_address_1, offset_address,
5738         widen_memory_access, emit_copy_of_insn_after): Likewise.
5739         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
5740         * fwprop.c (should_replace_address, propagate_rtx_1,
5741         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
5742         Likewise.
5743         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
5744         gcse_emit_move_after, update_ld_motion_stores): Likewise.
5745         * lcm.c (compute_insert_delete, pre_edge_lcm,
5746         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
5747         * lower-subreg.c (resolve_reg_notes): Likewise.
5748         * mode-switching.c (optimize_mode_switching): Likewise.
5749
5750 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5751
5752         * bt-load.c (add_btr_def, migrate_btr_def,
5753         branch_target_load_optimize): Avoid C++ keywords.
5754         * caller-save.c (insert_restore, insert_save, insert_one_insn):
5755         Likewise.
5756         * combine.c (subst, simplify_set, make_extraction,
5757         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
5758         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
5759         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
5760
5761 2008-07-15  Richard Guenther  <rguenther@suse.de>
5762
5763         PR middle-end/36369
5764         * c-common.c (strict_aliasing_warning): Do not warn for
5765         TYPE_REF_CAN_ALIAS_ALL pointers.
5766         (c_common_get_alias_set): may_alias types are not special.
5767         * tree.c (build_pointer_type_for_mode): Look up the may_alias
5768         attribute and set can_ref_all accordingly.
5769         (build_reference_type_for_mode): Likewise.
5770         * doc/extend.texi (may_alias): Clarify.
5771
5772 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5773
5774         PR target/36780
5775         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
5776         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
5777
5778 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5779
5780         PR target/31568
5781         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
5782         gcc_assert, instead call output_operand_lossage.
5783
5784 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
5785
5786         * builtins.c (std_canonical_va_list): Treat structure based
5787         va_list types.
5788
5789 2008-07-15  Ben Elliston  <bje@au.ibm.com>
5790
5791         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
5792
5793 2007-07-14  Rafael Avila de Espindola  <espindola@google.com>
5794
5795         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
5796         is set.
5797
5798 2008-07-14  Jan Hubicka  <jh@suse.cz>
5799
5800         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
5801         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
5802         fix predicates and constraints.
5803         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
5804         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
5805
5806 2008-07-14  Doug Kwan  <dougkwan@google.com>
5807
5808         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
5809         additional option file arm/eabi.opt.
5810         * config/arm/eabi.h (File): New configuration file for EABI targets.
5811         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
5812         SUBSUBTARGET_EXTRA_SPECS.
5813         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
5814         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
5815         from STARTFILE_SPEC so that it can be referenced in an override.
5816         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
5817         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
5818         can be referenced in an override.
5819         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
5820         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
5821         so that it can be referenced in an override.
5822         (LINK_SPEC): Use BPABI_LINK_SPEC.
5823         * config/arm/eabi.opt (File): New.
5824
5825 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5826
5827         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
5828         (FIXED_VALUE_H): New variable.
5829         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
5830         input.h, fixed-value.h.
5831         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
5832         (BASIC_BLOCK_H): Use $(BITMAP_H).
5833         (FUNCTION_H): Add varray.h.
5834         (IPA_REFERENCE_H): Use $(BITMAP_H).
5835         (CGRAPH_H): Add $(BASIC_BLOCK_H).
5836         (DF_H): Use $(BITMAP_H).
5837         (GGC_H): Add statistics.h.
5838         (INSN_ADDR_H): New.
5839         (INSN_ATTR_H): Use it.
5840         (SYSTEM_H): Add safe-ctype.h, filenames.h.
5841         (INPUT_H): New.
5842         (SYMTAB_H): Add $(OBSTACK_H).
5843         (CPP_INTERNAL_H): New.
5844         (TREE_DUMP_H): Add tree-pass.h.
5845         (TREE_FLOW_H): Use $(BITMAP_H)
5846         (PRETTY_PRINT_H): Use $(INPUT_H).
5847         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
5848         (GSTAB_H): New.
5849         (BITMAP_H): New.
5850         (many object files): Fix lots of header dependencies throughout.
5851
5852 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5853
5854         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
5855         New macros.
5856         (s-gtyp-input): Use them to write tmp-gi.list.
5857         (echo_to_gi.list): Remove.
5858
5859 2008-07-14  Richard Guenther  <rguenther@suse.de>
5860
5861         * tree-ssa-sccvn.c (pre_info): Remove.
5862         (switch_to_PRE_table): Likewise.
5863         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
5864         (set_hashtable_value_ids): Do not create value-ids for the
5865         optimistic tables.
5866         (run_scc_vn): Remove double test.  Remove bogus special-case
5867         in value-number printing.
5868         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
5869         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
5870         SSA_NAME_VALUE.
5871         * tree-flow-inline.h (get_value_handle): Remove.
5872         * tree-flow.h (get_value_handle): Remove.
5873
5874 2008-07-14  Martin Jambor  <mjambor@suse.cz>
5875
5876         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
5877         in which we generate arithmetics is not a subrange.
5878
5879 2008-07-14  Martin Jambor  <mjambor@suse.cz>
5880
5881         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
5882
5883 2008-07-14  Richard Guenther  <rguenther@suse.de>
5884
5885         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
5886
5887 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
5888
5889         PR target/36745
5890         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
5891         reload for symbol refs moved to r0 with -fPIC.
5892         (legitimize_pic_address): Use the target register as temporary
5893         reg if possible.
5894         (emit_symbolic_move): Adjust comment.
5895         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
5896         New expanders.
5897
5898 2008-07-14  Ben Elliston  <bje@au.ibm.com>
5899
5900         * c-common.h (C_CPP_HASHNODE): New macro.
5901         * coretypes.h (struct cpp_token): Forward declare.
5902         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
5903         the context-sensitive keyword method.
5904         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
5905         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
5906         expand_bool_pixel): New.
5907         (altivec_categorize_keyword): New function.
5908         (init_vector_keywords): New function.
5909         (rs6000_macro_to_expand): Likewise.
5910         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
5911         compiling an ISO C dialect.
5912
5913 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
5914
5915         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
5916         (create_expression_by_pieces): Fix typo.
5917         (do_regular_insertion): Use debug counter here too.
5918
5919 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
5920
5921         PR target/35492.
5922         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
5923         CONST_OK_FOR_LETTER_P.  All port-local users changed.
5924         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
5925         implement Kp matching power-of-two.
5926         (CONSTRAINT_LEN): Define to match.
5927         * config/cris/cris.md: Replace all use of constraint K with Kc.
5928         ("*btst*): Use Kp for operand 0 of last alternative.
5929
5930 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5931
5932         PR testsuite/36440
5933         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
5934         and quad formats.
5935
5936 2008-07-13  Jan Hubicka  <jh@suse.cz>
5937
5938         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
5939         to be mangled too.
5940
5941 2008-07-13  Richard Guenther  <rguenther@suse.de>
5942
5943         PR middle-end/36811
5944         * langhooks.c (lhd_print_error_function): Deal with recursive
5945         BLOCK trees.
5946
5947 2008-07-12  Jan Hubicka  <jh@suse.cz>
5948
5949         * cgraph.c (assembler_name_hash): New static var.
5950         (hash_node_by_assembler_name, eq_assembler_name): New.
5951         (cgraph_node_for_asm): Use hashtable.
5952         (cgraph_remove_node): Maintain hashtable.
5953         (change_decl_assembler_name): Sanity check that names are not changing
5954         after aliasing was processed.
5955         * cgraph.h (varpoon_node): Add next GGC marker.
5956         * tree.c (decl_assembler_name_equal): Constify.
5957         (decl_assembler_name_hash): New.
5958         * tree.h (decl_assembler_name_equal): Constify.
5959         (decl_assembler_name_hash): Update.
5960
5961 2008-07-12  David Daney  <ddaney@avtrex.com>
5962
5963         * config/mips/driver-native.c (host_detect_local_cpu): Handle
5964         sb1 and r5000 cpus.
5965
5966 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
5967
5968         * doc/md.texi: Document the MIPS "v" constraint.
5969         * config/mips/mips.h (reg_class): Revert last change.
5970         (REG_CLASS_NAMES): Likewise.
5971         (REG_CLASS_CONTENTS): Likewise.
5972         * config/mips/mips.c (mips_regno_to_class): Likewise.
5973         * config/mips/constraints.md (v): Likewise, but add documentation.
5974         Add a comment to say that this constraint should not be used in
5975         gcc code.
5976
5977 2008-07-11  DJ Delorie  <dj@redhat.com>
5978
5979         * config/h8300/h8300.md (length): Fix branch offset limit.
5980
5981 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
5982
5983         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
5984         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
5985         (avr_hard_regno_scratch_ok): New function.
5986         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
5987         * config/avr/avr.md (all peepholes that request a scratch register):
5988         Remove avr_peep2_scratch_safe use.
5989
5990 2008-07-11  Tom Tromey  <tromey@redhat.com>
5991             Ian Lance Taylor  <iant@google.com>
5992
5993         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
5994         (struct c_common_resword): Define.
5995         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
5996         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
5997         (c_common_reswords, num_c_common_reswords): Declare.
5998         * c-common.c (c_common_reswords): New global const array.
5999         (num_c_common_reswords): New const int.
6000         * c-parser.c (struct resword, reswords): Don't define.
6001         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
6002         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
6003         than reswords.  If warning about C++ keywords, give them a special
6004         RID code.
6005         (c_lex_one_token): Warn about C++ keywords.  Call
6006         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
6007         (c_parser_external_declaration): Look for RID_xxx rather than
6008         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
6009         (c_parser_statement_after_labels): Likewise.
6010         (c_parser_objc_class_instance_variables): Likewise.
6011         (c_parser_objc_class_declaration): Likewise.
6012         (c_parser_objc_try_catch_statement): Likewise.
6013         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
6014         (declspecs_add_type): Likewise.
6015
6016 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
6017
6018         * ggc-page.c (alloc_page):
6019         Substituting xmalloc, xcalloc with
6020         XNEWVEC and XCNEWVAR macros which add the
6021         needed casts.
6022
6023 2008-07-11  Richard Guenther  <rguenther@suse.de>
6024
6025         PR tree-optimization/36765
6026         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
6027         aliases from HEAP vars to SMTs.
6028
6029 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6030
6031         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
6032         * configure.ac (loose_warn): Move -Wc++-compat from here...
6033         (strict_warn): ...to here.
6034         * configure: Regenerate.
6035
6036 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
6037
6038         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
6039         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
6040         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
6041         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
6042         excluding more specific h8300-*-* and sh-*-* targets.
6043
6044 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
6045
6046         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
6047         (eliminate): Ditto.
6048         (execute_pre): Call loop_optimizer_finalize in early exit.
6049
6050 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
6051
6052         PR middle-end/36790
6053         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
6054         uids in the bitmap, not just VAR_DECL uids.
6055
6056         PR rtl-optimization/36419
6057         * combine-stack-adj.c (adjust_frame_related_expr): New function.
6058         (combine_stack_adjustments_for_block): Call it if needed.  Delete
6059         correct insn.
6060         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
6061         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
6062         prologue sp adjustment.
6063
6064 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
6065
6066         PR other/28322
6067         * opts.c (print_ignored_options): Report postponed diagnostics for
6068         unknown -Wno-* options as warnings, not errors.
6069         (postpone_unknown_option_error): Renamed to...
6070         (postpone_unknown_option_warning): ... this.
6071
6072 2008-07-09  Doug Kwan  <dougkwan@google.com>
6073
6074         Revert:
6075         2008-07-08  Doug Kwan  <dougkwan@google.com>
6076
6077         * config/arm/arm.opt (mandroid): New option.
6078         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
6079         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
6080         (CC1_SPEC): Same.
6081         (CC1PLUS_SPEC): Same.
6082         (LIB_SPEC): Same.
6083         (STARTFILE_SPEC): Same.
6084         (ENDFILE_SPEC): Same.
6085         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
6086         used.
6087
6088 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
6089
6090         PR target/35802
6091         * config/mips/mips.h (reg_class): Remove V1_REG.
6092         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
6093         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
6094         instead of V1_REGS.
6095         (mips_get_tp): New function.
6096         (mips_legitimize_tls_address): Use it.
6097         * config/mips/constraints.md (v): Delete.
6098         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
6099         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
6100         After reload, split into a move and ...
6101         (*tls_get_tp_<mode>_split): ...this new instruction.
6102
6103 2008-07-09  David Daney  <ddaney@avtrex.com>
6104
6105         * config/mips/driver-native.c: Include coretypes.h and tm.h.
6106
6107 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
6108
6109         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
6110         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
6111         Add c argument.
6112         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
6113         htab_delete should be called.  Don't free c.
6114         (lookup_tmp_var): Create temp_htab lazily.
6115         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
6116         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
6117         callers.
6118         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
6119         lower_omp_ordered, lower_omp_critical, lower_omp_for,
6120         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
6121         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
6122         * tree-sra.c (generate_element_init): Likewise.
6123         * tree-mudflap.c (execute_mudflap_function_ops,
6124         execute_mudflap_function_decls): Likewise.
6125         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
6126         * tree-gimple.h (struct gimplify_ctx): New type.
6127         (push_gimplify_context): Adjust prototype.
6128
6129 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
6130
6131         * tree-ssa-pre.c (phi_translate_1): Update placement of
6132         add_to_value calls.
6133
6134 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
6135
6136         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
6137         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
6138         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
6139         * targhooks.c (default_hard_regno_scratch_ok): New function.
6140         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
6141         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
6142         * recog.c:  Include "target.h".
6143         (peep2_find_free_register): Add check for global regs. Add target
6144         specific check.
6145         * Makefile.in (recog.o): Depend on target.h.
6146
6147 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
6148
6149         * config/sh/sh.c (sh_canonical_va_list_type): New.
6150         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
6151
6152 2008-07-09  Raksit Ashok <raksit@google.com>
6153
6154         * doc/invoke.texi (Option Summary): Mention new option
6155         -Wdisallowed-function-list=...
6156         (Warning Options): Document -Wdisallowed-function-list=...
6157         * common.opt (Wdisallowed-function-list=): New flag.
6158         * flags.h (warn_disallowed_functions): External definition of new
6159         boolean warning flag.
6160         (warn_if_disallowed_function_p): Declare new function.
6161         * opts.c (warning_disallowed_functions): New static variable.
6162         (warn_disallowed_functions): New boolean warning flag.
6163         (warn_if_disallowed_function_p): New function.
6164         (add_comma_separated_to_vector): Rename
6165         add_instrument_functions_exclude_list to this.
6166         (common_handle_option): Handle new option. Rename calls to
6167         add_instrument_functions_exclude_list into calls to
6168         add_comma_separated_to_vector.
6169         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
6170         based on flag warn_disallowed_functions.
6171
6172 2008-07-09  Christian Bruel  <christian.bruel@st.com>
6173
6174         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
6175          instead of get_attr_length.
6176
6177 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6178
6179         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
6180         keywords.
6181         * genemit.c (gen_insn): Likewise.
6182         * gengtype.c (note_def_vec): Likewise.
6183         * gengtype.h (note_def_vec): Likewise.
6184         * genoutput.c (struct data, output_insn_data, process_template,
6185         gen_expand, gen_split, note_constraint): Likewise.
6186         * genrecog.c (new_decision, add_to_sequence, factor_tests,
6187         make_insn_sequence): Likewise.
6188         * gensupport.c (record_insn_name): Likewise.
6189
6190 2008-07-08  Doug Kwan  <dougkwan@google.com>
6191
6192         * config/arm/arm.opt (mandroid): New option.
6193         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
6194         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
6195         (CC1_SPEC): Same.
6196         (CC1PLUS_SPEC): Same.
6197         (LIB_SPEC): Same.
6198         (STARTFILE_SPEC): Same.
6199         (ENDFILE_SPEC): Same.
6200         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
6201         used.
6202
6203 2008-07-08  Raksit Ashok  <raksit@google.com>
6204
6205         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
6206         (set_storage_via_setmem): Fix expected_align parameter.
6207         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
6208         missing from the list.
6209         * doc/md.texi (movmem): Explicitly state that expected alignment is
6210         to be expressed in bytes.
6211         (setmem): Explicitly state that expected alignment is to be expressed
6212         in bytes.
6213
6214 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
6215
6216         * reload.c (find_reloads_subreg_address): Do not require validity
6217         of address in original mode before reloading address.
6218
6219 2008-07-07  Tianwei Sheng  <tianweis@google.com>
6220
6221         * df-core.c (df_remove_problem): Adjust the access to avoid out of
6222         bounds array access.
6223
6224 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
6225
6226         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
6227
6228 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
6229
6230         Fix PR tree-optimization/23455
6231         Fix PR tree-optimization/35286
6232         Fix PR tree-optimization/35287
6233         * Makefile.in (OBJS-common): Remove tree-vn.o.
6234         (tree-vn.o): Remove.
6235         * dbgcnt.def: Add treepre_insert debug counter.
6236         * gcc/tree-flow.h (add_to_value): Updated for other changes.
6237         (debug_value_expressions): Ditto.
6238         (print_value_expressions): Ditto.
6239         * tree-pretty-print.c (dump_generic_node): Updated for
6240         VALUE_HANDLE removal.
6241         * tree-ssa-dom.c (record_equality): Ditto.
6242         (cprop_operand): Ditto.
6243         (lookup_avail_expr): Ditto.
6244         * tree-ssa-threadedge.c
6245         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
6246         (simplify_control_stmt_condition): Ditto.
6247         * tree.c (tree_code_size): Ditto.
6248         (tree_node_structure): Ditto.
6249         (iterative_hash_expr): Ditto.
6250         * tree.def: Ditto.
6251         * tree.h (VALUE_HANDLE_ID): Ditto.
6252         (VALUE_HANDLE_EXPR_SET): Ditto.
6253         (struct tree_value_handle): Ditto.
6254         (union tree_node): Ditto.
6255         * treestruct.def: Ditto.
6256         * tree-vn.c: Removed.
6257         * tree-ssa-pre.c: Rewritten entirely.
6258         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
6259         (constant_value_ids): Ditto.
6260         (vn_nary_op_t): Moved to header.
6261         (vn_phi_t): Ditto.
6262         (vn_reference_op_t): Ditto
6263         (vn_reference_t): Ditto.
6264         (next_value_id): New variable.
6265         (VN_INFO): Add an assert.
6266         (vn_constant_eq): New function.
6267         (vn_constant_hash): Ditto.
6268         (get_or_alloc_constant_value_id): Ditto.
6269         (value_id_constant_p): Ditto.
6270         (vn_reference_compute_hash): De-staticify.
6271         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
6272         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
6273         (valueize_refs): Update opcode if it changes from ssa name to constant.
6274         (vn_reference_lookup_1): Add new argument.
6275         (vn_reference_lookup):  Ditto.
6276         (vn_reference_lookup_pieces): New function.
6277         (vn_reference_insert): Add return type. Modify to deal with value ids.
6278         (vn_reference_insert_pieces):  New function.
6279         (vn_nary_op_compute_hash): De-staticify.
6280         (vn_nary_op_eq): Ditto.
6281         (vn_nary_op_lookup_pieces): New function.
6282         (vn_nary_op_lookup): Add new argument.
6283         (vn_nary_op_insert_pieces): New function.
6284         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
6285         (vn_phi_insert): Ditto.
6286         (visit_unary_op): Update for callee changes.
6287         (visit_binary_op): Ditto.
6288         (visit_reference_op_load): Ditto.
6289         (visit_reference_op_store): Ditto.
6290         (init_scc_vn): Init next_value_id, constant_to_value_id and
6291         constant_value_ids.
6292         (free_scc_vn): Free them.
6293         (set_hashtable_value_ids): New function.
6294         (run_scc_vn): Use it.
6295         (get_max_value_id): New function.
6296         (get_next_value_id): Ditto.
6297         (expressions_equal_p): Moved from tree-vn.c
6298         (sort_vuses): Ditto.
6299         (sort_vuses_heap): Ditto.
6300         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
6301         above).
6302         * tree.c (iterative_hash_hashval_t): Made non-static
6303         * tree.h (iterative_hash_hashval_t): Declare it.
6304
6305 2008-07-08  Martin Jambor  <mjambor@suse.cz>
6306
6307         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
6308         instead of ipa_create_node_params.
6309         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
6310         ipa_check_create_edge_args, free them with
6311         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
6312
6313         * ipa-prop.c: Include flags.h and tree-inline.h.
6314         (ipa_node_params_vector): New variable.
6315         (ipa_edge_args_vector): New variable.
6316         (edge_removal_hook_holder): New variable.
6317         (node_removal_hook_holder): New variable.
6318         (edge_duplication_hook_holder): New variable.
6319         (node_duplication_hook_holder): New variable.
6320         (ipa_detect_param_modifications): Check for presence of modified flags.
6321         (ipa_compute_jump_functions): Check for presence of jump functions.
6322         (ipa_free_edge_args_substructures): New function.
6323         (ipa_create_node_params): Removed.
6324         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
6325         (ipa_free_node_params_substructures): New function.
6326         (ipa_free_all_node_params): Changed to deallocate the on-the-side
6327         vector.
6328         (ipa_edge_removal_hook): New function.
6329         (ipa_node_removal_hook): New function.
6330         (duplicate_array): New function.
6331         (ipa_edge_duplication_hook): New function.
6332         (ipa_node_duplication_hook): New function.
6333         (ipa_register_cgraph_hooks): New function.
6334         (ipa_unregister_cgraph_hooks): New function.
6335         (free_all_ipa_structures_after_ipa_cp): New function.
6336
6337         * ipa-prop.h: Include vec.h.
6338         (ipa_node_params_t): New typedef with vector types for it.
6339         (ipa_edge_args_t):  New typedef with vector types for it.
6340         (IPA_NODE_REF): Changed to access an on-the-side vector.
6341         (IPA_EDGE_REF): Changed to access an on-the-side vector.
6342         (ipa_check_create_node_params): New function.
6343         (ipa_check_create_edge_args): New function.
6344
6345         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
6346         all users.
6347
6348 2008-07-07  Tom Tromey  <tromey@redhat.com>
6349
6350         * configure, config.in: Rebuilt.
6351         * configure.ac: Don't check for scandir or alphasort.
6352
6353 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
6354
6355         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
6356         types immediately after creating them.
6357
6358 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
6359
6360         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
6361
6362 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
6363
6364         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
6365         dump_constraint_graph.
6366         (dump_constraint_edge): New function.
6367         (dump_constraint_graph): New function.
6368         (debug_constraint_graph): New function.
6369         (dump_constraint): Removed useless comparison.
6370         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
6371         (dump_constraint_graph): Declare.
6372         (debug_constraint_graph): Declare.
6373         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
6374
6375 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
6376
6377         * config/i386/i386.c (is_va_list_char_pointer): New.
6378         (ix86_va_start): Replace compare with ms_va_list_type_node
6379         by is_va_list_char_pointer.
6380         (ix86_gimplify_va_arg): Likewise.
6381
6382 2008-07-07  Martin Jambor  <mjambor@suse.cz>
6383
6384         * cgraph.c (cgraph_edge_max_uid): New variable.
6385         (struct cgraph_edge_hook_list): New type.
6386         (struct cgraph_node_hook_list): New type.
6387         (struct cgraph_2edge_hook_list): New type.
6388         (struct cgraph_2node_hook_list): New type.
6389         (first_cgraph_edge_removal_hook): New variable.
6390         (first_cgraph_node_removal_hook): New variable.
6391         (first_cgraph_edge_duplicated_hook): New variable.
6392         (first_cgraph_node_duplicated_hook): New variable.
6393         (cgraph_add_edge_removal_hook): New function.
6394         (cgraph_remove_edge_removal_hook): New function.
6395         (cgraph_call_edge_removal_hooks):  New function.
6396         (cgraph_add_node_removal_hook):  New function.
6397         (cgraph_remove_node_removal_hook):  New function.
6398         (cgraph_call_node_removal_hooks):  New function.
6399         (cgraph_add_edge_duplication_hook):  New function.
6400         (cgraph_remove_edge_duplication_hook):  New function.
6401         (cgraph_call_edge_duplication_hooks):  New function.
6402         (cgraph_add_node_duplication_hook):  New function.
6403         (cgraph_remove_node_duplication_hook):  New function.
6404         (cgraph_call_node_duplication_hooks):  New function.
6405         (cgraph_create_edge): Assign to edge uid.
6406         (cgraph_remove_edge): Call edge removal hooks.
6407         (cgraph_node_remove_callees): Call edge removal hooks.
6408         (cgraph_node_remove_callers): Call edge removal hooks.
6409         (cgraph_remove_node): Call node removal hooks.
6410         (cgraph_clone_edge): Call edge duplication hooks.
6411         (cgraph_clone_node): Call node duplication hooks.
6412
6413         * cgraph.h (cgraph_edge): New field uid.
6414         (cgraph_edge_hook): New type.
6415         (cgraph_node_hook): New type.
6416         (cgraph_2edge_hook): New type.
6417         (cgraph_2node_hook): New type.
6418
6419 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
6420
6421         * config.in: Regenerate.
6422
6423 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
6424
6425         * gcc.c (print_sysroot): New.
6426         (option_map, display_help, process_command): Handle the
6427         -print-sysroot option.
6428         (main): Print the sysroot if requested.
6429         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
6430
6431 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6432
6433         PR target/34780
6434         * unwind-pe.h (size_of_encoded_value): add attribute unused.
6435
6436 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
6437
6438         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
6439         (assign_parm_setup_block_p): Also check mode of entry_parm.
6440
6441 2008-07-07  Richard Guenther  <rguenther@suse.de>
6442
6443         * tree-ssa-structalias.h (set_used_smts): Remove.
6444         * tree-ssa-structalias.c (used_smts): Likewise.
6445         (set_used_smts): Likewise.
6446         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
6447         call to set_used_smts.
6448
6449 2008-07-07  Richard Guenther  <rguenther@suse.de>
6450
6451         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
6452         (new_var_info): Set it to false.
6453         (solution_set_add): Correctly handle pointers outside a var and
6454         inside a field.
6455         (type_safe): Treat variables with is_full_var properly.
6456         (do_sd_constraint): Likewise.
6457         (do_ds_constraint): Likewise.
6458         (process_constraint): Remove zeroing offset for !use_field_sensitive.
6459         (get_constraint_for_ptr_offset): New function.
6460         (get_constraint_for_component_ref): For addresses at least include
6461         the last field of the variable.  Handle is_full_vars properly.
6462         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
6463         (handle_ptr_arith): Remove.
6464         (find_func_aliases): Simplify assignment handling.
6465         (create_function_info_for): For parameter and result varinfos set
6466         is_full_var flag.
6467         (create_variable_info_for): Set is_full_var flag whenever we
6468         just created a single varinfo for a decl.
6469         (init_alias_vars): Initialize use_field_sensitive from
6470         max-fields-for-field-sensitive parameter.
6471
6472 2008-07-07  Richard Guenther  <rguenther@suse.de>
6473
6474         PR tree-optimization/36713
6475         * tree-flow-inline.h (is_call_used): New function.
6476         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
6477         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
6478         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
6479
6480 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
6481
6482         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
6483
6484 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
6485
6486         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
6487
6488 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
6489             Nathan Sidwell  <nathan@codesourcery.com>
6490
6491         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
6492         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
6493         tmake_file.
6494         * config/m68k/t-linux: New.
6495         * doc/install.texi: Document m68k-*-linux is now multilibbed by
6496         default.
6497
6498 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
6499
6500         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
6501         * config/m68k/m68k-devices.def: Remove multilibs that only differ
6502         by MAC/EMAC.
6503
6504 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6505
6506         * gcc.c (execute): Fix -Wc++-compat warning.
6507
6508 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
6509
6510         PR target/36720
6511         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
6512         constant for little endian.
6513
6514 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
6515
6516         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
6517         mips_base_mips16 instead of TARGET_MIPS16.
6518         (mips_base_mips16): Declare.
6519         * config/mips/mips.c (mips_base_mips16): Make global.
6520         (was_mips16_p): Remove GTY marker.
6521         (was_mips16_pch_p): New variable.
6522         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
6523         (mips_override_options): Force to non-MIPS16 mode initially.
6524         Do not complain about MIPS16 PIC incompatibilities here.
6525         Only allow -mgpopt if -mexplicit-relocs is in force for
6526         non-MIPS16 code.
6527
6528 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
6529
6530         * configure.ac: Check for caddr_t, define to char * if not defined.
6531         * configure: Regenerate.
6532         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
6533         (mmap_gt_pch_use_address): Likewise.
6534         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
6535
6536 2008-07-06  Richard Guenther  <rguenther@suse.de>
6537
6538         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
6539         (new_var_info): Deal with it.
6540         (solution_set_add): Likewise.
6541         (bitpos_of_field): Make signed, fix.
6542         (struct fieldoff): Remove type and decl fields.  Make size field
6543         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
6544         flags.
6545         (fieldoff_compare): Deal with it.
6546         (push_fields_onto_fieldstack): Remove has_union argument, glob
6547         adjacent non-pointer fields together.
6548         (create_function_info_for): Do not set has_union.
6549         (create_variable_info_for): Simplify.
6550
6551 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
6552
6553         * config.gcc (extra_headers): Add cross-stdarg.h for target
6554         x86_64-*-* and i?86-*-*.
6555         * config/i386/cross-stdarg.h: New.
6556         * builtins.c (std_fn_abi_va_list): New.
6557         (std_canonical_va_list_type): New.
6558         (stabilize_va_list): Replace va_list_type_node use by
6559         mtarget.canonical_va_list_type.
6560         (gimplify_va_arg_expr): Likewise.
6561         (expand_builtin_va_copy): Replace va_list_type_node use by
6562         mtarget.fn_abi_va_list.
6563         * tree-sra.c (is_va_list_type): New helper.
6564         (decl_can_be_decomposed_p): Replace
6565         va_list_type_node use by is_va_list_type.
6566         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
6567         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
6568         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
6569         * config/i386/i386-protos.h (ix86_get_valist_type): New.
6570         (ix86_enum_va_list): New.
6571         * config/i386/i386.c (sysv_va_list_type_node): New.
6572         (ms_va_list_type_node): New.
6573         (ix86_function_type_abi): Remove sorry.
6574         (ix86_build_builtin_va_list_abi): New.
6575         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
6576         for 64-bit targets.
6577         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
6578         (ix86_init_builtins_va_builtins_abi): New.
6579         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
6580         for 64-bit targets.
6581         (ix86_handle_abi_attribute): New.
6582         (attribute_spec): Add sysv_abi and ms_abi.
6583         (ix86_fn_abi_va_list): New.
6584         (ix86_canonical_va_list_type): New.
6585         (ix86_enum_va_list): New.
6586         (TARGET_FN_ABI_VA_LIST): New.
6587         (TARGET_CANONICAL_VA_LIST_TYPE): New.
6588         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
6589         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
6590         (TARGET_CANONICAL_VA_LIST_TYPE): New.
6591         (TARGET_ENUM_VA_LIST): New.
6592         * expr.h (std_fn_abi_va_list): New.
6593         (std_canonical_va_list_type): New.
6594         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
6595         (TARGET_CANONICAL_VA_LIST_TYPE): New.
6596         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
6597         TARGET_CANONICAL_VA_LIST_TYPE.
6598         * target.h (struct gcc_target): Add fn_abi_va_list hook
6599         and canonical_va_list_type hook.
6600
6601 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6602
6603         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
6604         integral and pointer types.
6605
6606 2008-07-04  Roger Sayle  <roger@eyesopen.com>
6607
6608         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
6609         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
6610
6611 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
6612
6613         PR target/36684
6614         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
6615
6616 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
6617
6618         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
6619         build_gimple_modify_stmt.
6620         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
6621         gimple operand.  Use fold_build* instead of build*.
6622
6623 2008-07-04  Richard Guenther  <rguenther@suse.de>
6624
6625         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
6626         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
6627         properly to compute the reachability set if we do field-sensitive PTA.
6628         * invoke.texi (max-fields-for-field-sensitive): Document default.
6629         * opts.c (decode_options): Set max-fields-for-field-sensitive to
6630         100 for optimize >= 2.
6631
6632 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6633
6634         * ggc-zone.c (lookup_page_table_if_allocated,
6635         set_page_table_entry, zone_find_object_size, alloc_small_page,
6636         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
6637         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
6638         -Wc++-compat and/or -Wcast-qual warnings.
6639
6640 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
6641
6642         PR target/36634
6643         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
6644         pic_offset_table_rtx to be marked as used here.
6645         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
6646         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
6647         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
6648         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
6649         !TARGET_SECURE_PLT.
6650
6651 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6652
6653         * alloc-pool.c (hash_descriptor, eq_descriptor,
6654         alloc_pool_descriptor): Fix -Wc++-compat warnings.
6655         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
6656         Likewise.
6657         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
6658         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
6659         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
6660         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
6661         Likewise.
6662
6663 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
6664
6665         * tree-flow.h (loop_only_exit_p): Declare.
6666         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
6667         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
6668         the number of iterations if it is constant.  Otherwise, if this is the
6669         only possible exit of the loop, use the conservative estimate on the
6670         number of iterations of the entire loop if available.
6671
6672 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
6673
6674         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
6675         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
6676         Add synchronization functions.
6677         * config/sync.c: New file.
6678         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
6679         (LIBGCC_SYNC_CFLAGS): Likewise.
6680
6681 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
6682
6683         PR target/36710
6684         * config/i386/i386.md (mode): Add TF to "mode" attribute.
6685         (*pushtf_sse): New insn pattern.
6686         (pushtf splitters): New splitters.
6687
6688 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
6689
6690         PR middle-end/35736
6691         * predict.c (build_predict_expr): Use void_type_node for the tree
6692         type, instead of NULL_TREE.
6693
6694 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
6695
6696         * config/i386/i386.c (contains_aligned_value_p): Return true
6697         for TCmode.
6698         (ix86_data_alignment): Align TCmode to 128bits.
6699         (ix86_local_alignment): Likewise.
6700
6701 2008-07-03  Andrew Haley  <aph@redhat.com>
6702
6703         PR bootstrap/33304
6704         * vec.h (VEC_TA): New.
6705         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
6706         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
6707         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
6708         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
6709         (C_COMMON_FIXED_TYPES): Remove first arg.
6710         (C_COMMON_FIXED_MODE_TYPES): Likewise.
6711         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
6712         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
6713         not to use empty macro arguments.
6714
6715 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
6716
6717         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
6718         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
6719         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
6720         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
6721         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
6722         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
6723         config/ia64/crtn.asm, config/m68hc11/larith.asm,
6724         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
6725         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
6726         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
6727         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
6728         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
6729         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
6730         config/rs6000/e500crtres64gpr.asm,
6731         config/rs6000/e500crtres64gprctr.asm,
6732         config/rs6000/e500crtrest32gpr.asm,
6733         config/rs6000/e500crtrest64gpr.asm,
6734         config/rs6000/e500crtresx32gpr.asm,
6735         config/rs6000/e500crtresx64gpr.asm,
6736         config/rs6000/e500crtsav32gpr.asm,
6737         config/rs6000/e500crtsav64gpr.asm,
6738         config/rs6000/e500crtsav64gprctr.asm,
6739         config/rs6000/e500crtsavg32gpr.asm,
6740         config/rs6000/e500crtsavg64gpr.asm,
6741         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
6742         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
6743         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
6744         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
6745         config/sparc/sol2-cn.asm: Remove .file directives.
6746
6747 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
6748
6749         * resource.c (mark_referenced_resources): Look inside
6750         UNSPEC_VOLATILEs and ASM_INPUTs.
6751
6752 2008-07-02  Ian Lance Taylor  <iant@google.com>
6753
6754         * rtlanal.c (add_reg_note): New function.
6755         * rtl.h (add_reg_note): Declare.
6756         * auto-inc-dec.c (attempt_change): Use add_reg_note.
6757         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
6758         * builtins.c (expand_builtin_longjmp): Likewise.
6759         (expand_builtin_nonlocal_goto): Likewise.
6760         * calls.c (emit_call_1, expand_call): Likewise.
6761         * cfgexpand.c (add_reg_br_prob_note): Likewise.
6762         * cfglayout.c (fixup_reorder_chain): Likewise.
6763         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6764         (commit_one_edge_insertion): Likewise.
6765         * combine.c (move_deaths, distribute_notes): Likewise.
6766         * df-problems.c (df_set_note): Likewise.
6767         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
6768         (set_unique_reg_note): Likewise.
6769         (emit_copy_of_insn_after): Likewise.
6770         * expr.c (expand_expr_real): Likewise.
6771         * gcse.c (add_label_notes): Likewise.
6772         * haifa-sched.c (create_check_block_twin): Likewise.
6773         * jump.c (mark_jump_label_1): Likewise.
6774         * loop-doloop.c (add_test, doloop_modify): Likewise.
6775         * loop-unswitch.c (compare_and_jump_seq): Likewise.
6776         * lower-subreg.c (move_eh_region_note): Likewise.
6777         * optabs.c (emit_libcall_block): Likewise.
6778         * predict.c (predict_insn): Likewise.
6779         (combine_predictions_for_insn): Likewise.
6780         * recog.c (peephole2_optimize): Likewise.
6781         * regmove.c (try_auto_increment): Likewise.
6782         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
6783         * reload.c (find_reloads): Likewise.
6784         * reload1.c (fixup_eh_region_note): Likewise.
6785         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
6786         * reorg.c (delete_prior_computation): Likewise.
6787         (delete_computation, dbr_schedule): Likewise.
6788         * config/pa/pa.c (legitimize_pic_address): Likewise.
6789         * config/sh/sh.c (sh_reorg): Likewise.
6790
6791 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
6792
6793         PR target/36669
6794         * config/libgcc-glibc.ver: Add %exclude.
6795         * config/m32r/libgcc-glibc.ver: Likwise.
6796         * config/s390/libgcc-glibc.ver: Likwise.
6797         * config/sh/libgcc-glibc.ver: Likwise.
6798         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
6799
6800         * config/i386/libgcc-glibc.ver: New.
6801
6802         * config/i386/libgcc-x86_64-glibc.ver: Removed.
6803
6804 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
6805
6806         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
6807         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
6808         i[34567]86-*-linux*, x86_64-*-linux*.  Add
6809         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
6810         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
6811         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
6812         i[34567]86-*-linux*, x86_64-*-linux*.
6813
6814         * libgcc-std.ver: Add empty GCC_4.4.0.
6815
6816         * mkmap-symver.awk: Support multiple versions per symbol.
6817
6818         * config/i386/i386.c (ix86_init_builtins): Always define
6819         __builtin_fabsq and __builtin_copysignq with fallbacks.
6820         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
6821         and __builtin_copysignq if SSE2 isn't available.
6822
6823         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
6824         (LIBGCC2_TF_CEXT): Likwise.
6825         (TF_SIZE): Likwise.
6826
6827         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
6828
6829         * config/i386/sfp-machine.h: Moved to libgcc.
6830
6831         * config/i386/sfp-machine.h: New.
6832         * config/i386/t-linux: Likwise.
6833
6834         * config/i386/t-darwin: Remove softfp_wrap_start and
6835         softfp_wrap_end.
6836         * config/i386/t-darwin64: Likewise.
6837
6838         * config/i386/t-fprules-softfp64: Renamed to ...
6839         * config/i386/t-fprules-softfp: This.
6840
6841         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
6842         and softfp_wrap_end.
6843
6844 2008-07-02  Jason Merrill  <jason@redhat.com>
6845
6846         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
6847
6848         * tree.c (ctor_to_list): New fn.
6849         * tree.h: Declare it.
6850         (CONSTRUCTOR_ELT): New macro.
6851         (CONSTRUCTOR_NELTS): New macro.
6852
6853 2008-07-02  Richard Guenther  <rguenther@suse.de>
6854
6855         * tree-ssa-structalias.c (struct variable_info): Reorder
6856         to fill padding on 64bit hosts.  Make collapsed_to an int.
6857         (get_varinfo_fc): Deal with that.
6858         (new_var_info): Likewise.
6859         (collapse_rest_of_var): Likewise.
6860
6861 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
6862
6863         * doc/install.texi (--enable-java-home): Document.
6864         (--enable-aot-compile-rpm): Likewise.
6865         (--with-arch-directory): Likewise.
6866         (--with-os-directory): Likewise.
6867         (--with-origin-name): Likewise.
6868         (--with-arch-suffix): Likewise.
6869         (--with-jvm-root-dir): Likewise.
6870         (--with-jvm-jar-dir): Likewise.
6871         (--with-python-dir): Likewise.
6872
6873 2008-07-02  Richard Guenther  <rguenther@suse.de>
6874
6875         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
6876         from decls explicitly.  Merge operand checking from tuples.
6877
6878 2008-07-02  Martin Jambor  <mjambor@suse.cz>
6879
6880         * tree-switch-conversion.c: Included timevar.h which I forgot before.
6881
6882 2008-07-02  Martin Jambor  <mjambor@suse.cz>
6883
6884         * tree-switch-conversion.c: Included timevar.h
6885         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
6886
6887         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
6888
6889 2008-07-02  Martin Jambor  <mjambor@suse.cz>
6890
6891         * tree-switch-conversion.c: Corrected various comments and
6892         whitespace issues
6893         (build_constructors): Fixed minor formatting mistakes.
6894
6895         * invoke.texi (Optimize Options): Corrected the
6896         switch-conversion-max-branch-ratio parameter.
6897
6898 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
6899
6900         * final.c (asm_insn_count): Return zero for an empty asm body.
6901
6902 2008-07-02  Richard Guenther  <rguenther@suse.de>
6903
6904         * bitmap.h (bitmap_set_bit): Return bool.
6905         (bitmap_clear_bit): Likewise.
6906         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
6907         write to the bitmap if it would.
6908         (bitmap_clear_bit): Likewise.
6909         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
6910         bitmap_set_bit return value.
6911         (add_pred_graph_edge): Likewise.
6912         (add_graph_edge): Likewise.
6913         (do_sd_constraint): Likewise.
6914         (do_ds_constraint): Likewise.
6915
6916 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6917
6918         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
6919         Fix -Wc++-compat and/or -Wcast-qual warnings.
6920         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
6921         gen_regparm_prefix): Likewise.
6922         * vmsdbgout.c (write_modbeg, lookup_filename,
6923         vmsdbgout_source_line, vmsdbgout_init): Likewise.
6924
6925 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
6926
6927         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
6928         defaults.h definition apply.
6929
6930 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
6931
6932         * function.c (assign_parm_remove_parallels): New.
6933         (assign_parm_setup_block_p): Do not return true for non-BLKmode
6934         PARALLELs.
6935         (assign_parm_setup_block): Do not handle them.
6936         (assign_parm_setup_reg, assign_parm_setup_stack): Call
6937         assign_parm_remove_parallels.
6938
6939 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
6940
6941         * c-typeck.c (convert_for_assignment): Use
6942         vector_targets_convertible_p.
6943         * c-common.c (vector_targets_convertible_p): New.
6944         * c-common.h (vector_targets_convertible_p): New prototype.
6945         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
6946         opaque_p_V2SI_type_node.
6947
6948 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
6949
6950         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
6951         RFmode constants.
6952
6953 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
6954
6955         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
6956         TFmode constants via two element DImode vector for hosts with
6957         HOST_BITS_PER_WIDE_INT < 64.
6958         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
6959         also for HOST_BITS_PER_WIDE_INT < 64.
6960
6961 2008-07-01  Richard Guenther  <rguenther@suse.de>
6962
6963         PR tree-optimization/36666
6964         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
6965         (get_constraint_exp_from_ssa_var): Split into ...
6966         (get_constraint_exp_for_temp): ... this ...
6967         (get_constraint_for_ssa_var): ... and that.
6968         Return constraint expressions for all touched sub-fields
6969         if the results address is not taken.
6970         (process_constraint): Remove assertion that aggregate
6971         assignments do not happen at this place.
6972         (get_constraint_for_component_ref): Add address_p argument.
6973         Return constraint expressions for all touched sub-fields
6974         if the results address is not taken.
6975         (do_deref): Use get_constraint_exp_for_temp.
6976         (get_constraint_for_1): Rename from ...
6977         (get_constraint_for): ... this.  Add the old function as wrapper.
6978         (do_structure_copy): Use get_constraint_for_1.
6979
6980 2008-07-01  Martin Jambor  <mjambor@suse.cz>
6981
6982         * Makefile.in (tree-switch-conversion.o): Add.
6983         (OBJS-common): Add tree-swtch-conversion.o.
6984         * passes.c (init_optimization_passes): Add pass_convert_switch.
6985         * tree-pass.h: (pass_convert_switch): Add.
6986         * tree-switch-conversion.c: New file.
6987         * gcc.dg/tree-ssa/cswtch.c: New testcase.
6988         * common.opt (ftree-cswtch): New option.
6989         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
6990         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
6991         * opts.c (decode_options): Set flag_tree_switch_conversion when
6992         optimization level is >= 2.
6993         * doc/invoke.texi (Optimize Options): Added description of
6994         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
6995
6996 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6997
6998         * config/darwin-driver.c (darwin_default_min_version): Fix
6999         -Wc++-compat warnings.
7000
7001 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
7002
7003         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
7004         of operand 0.
7005
7006 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7007
7008         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
7009
7010 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7011
7012         PR rtl-optimization/34744
7013         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
7014         (df_scan_free_internal): Free data structures not
7015         allocated in storage pools.
7016         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
7017         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
7018         df_scan_free_mws_vec.
7019         * dse.c (dse_step6): Free offset_map_p and offset_map_n
7020         unconditionally.
7021
7022 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
7023
7024         * config/i386/i386.c (contains_aligned_value_p): Return true
7025         for __float128.
7026         (ix86_function_arg_boundary): Return its natural boundary
7027         for __float128.
7028         (return_in_memory_32): Don't check TDmode.
7029         (ix86_split_to_parts): Support splitting into 4 parts and
7030         support TFmode for 32bit target.
7031         (ix86_split_long_move): Support splitting into 4 parts.
7032         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
7033         for SSE2.
7034         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
7035         (ix86_init_builtins): Here.
7036         (ix86_scalar_mode_supported_p): Always return true for TFmode.
7037         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
7038         'q' and 'w', respectively.
7039
7040         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
7041         TARGET_64BIT.
7042         (movtf_internal): Likewise.
7043         (<code>tf2): Likewise.
7044         (*absnegtf2_sse): Likewise.
7045         (copysign<mode>3): Likewise.
7046         (copysign<mode>3_const): Likewise.
7047         (copysign<mode>3_var): Likewise.
7048         (define_split UNSPEC_COPYSIGN): Likewise.
7049         * config/i386/sse.md (*nandtf3): Likewise.
7050         (<code>tf3): Likewise.
7051         (*<code>tf3): Likewise.
7052
7053 2008-06-30  Joey Ye  <joey.ye@intel.com>
7054             H.J. Lu  <hongjiu.lu@intel.com>
7055
7056         * global.c (compute_regsets): Set frame_pointer_needed here.
7057         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
7058
7059 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7060
7061         * doc/install.texi (specific): Expand Windows build notes.
7062
7063 2008-06-30  Ira Rosen  <irar@il.ibm.com>
7064
7065         PR tree-optimization/36648
7066         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
7067         number of prolog iterations by step. Fix the comment.
7068
7069 2008-06-30  Richard Guenther  <rguenther@suse.de>
7070
7071         PR middle-end/36671
7072         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
7073         handle calls from ECF_MALLOC functions.
7074         (handle_pure_call): ECF_MALLOC functions do not return
7075         call-used memory.
7076         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
7077
7078 2008-06-29  Andreas Schwab  <schwab@suse.de>
7079
7080         * config/m68k/m68k.c (print_operand): Always print a float
7081         constant in hex.
7082         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
7083         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
7084         Remove macros.
7085
7086         * config/rs6000/x-linux64: Remove never used file.
7087
7088 2008-06-29  Richard Guenther  <rguenther@suse.de>
7089
7090         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
7091         prototype.
7092         (struct alias_info): Move ...
7093         * tree-ssa-alias.c: ... here.
7094         (update_alias_info): Declare.
7095         (compute_may_aliases): Call it.
7096         (update_alias_info): New function.
7097         * tree-ssa-structalias.c (update_alias_info): Move ...
7098         * tree-ssa-alias.c (update_alias_info_1): ... here.
7099         * tree-ssa-structalias.c (process_constraint_1): Remove
7100         unused from_call argument.  Rename to ...
7101         (process_constraint): ... this.  Delete old wrapper.
7102         (make_constraint_to): Adjust callers.
7103         (handle_const_call): Likewise.
7104         (handle_pure_call): Likewise.
7105         (init_base_vars): Likewise.
7106         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
7107         (find_func_aliases): We don't need structure copies for
7108         complex types.
7109         (make_constraint_from_anything): Remove.
7110         (create_variable_info_for): For globals make constraints
7111         from escaped, not from anything.
7112         (compute_points_to_sets): Do not call update_alias_info.
7113         (ipa_pta_execute): Use make_constraint_from.
7114
7115 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7116
7117         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
7118         (bitmap.o-warn, dominance.o-warn): New.
7119         * configure.ac (cxx_compat_warn): Delete.
7120         (loose_warn): Add -Wcast-qual and -Wc++-compat.
7121         * system.h: Remove #pragma diagnostic for -Wcast-qual and
7122         -Wc++-compat.
7123         * configure: Regenerate.
7124
7125         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
7126         warnings.
7127
7128 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7129
7130         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
7131         * df-scan.c (df_notes_rescan): Likewise.
7132         * ggc-page.c (set_page_table_entry): Likewise.
7133         * intl.c (gcc_gettext_width): Likewise.
7134         * varasm.c (get_unnamed_section, get_noswitch_section,
7135         get_section): Likewise.
7136
7137 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
7138
7139         * regrename.c (build_def_use): Don't copy RTX.
7140
7141 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
7142
7143         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
7144         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
7145         punctuation.  Use @ref instead of @xref.
7146         (Function Names): Remove stray @display/@end display.
7147         (C++ Attributes): Use @ref instead of @xref.
7148         (Deprecated Features): Fix punctuation around @xref.
7149         (Backwards Compatibility): Likewise.
7150         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
7151
7152 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
7153
7154         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
7155         constants for E500 double.
7156
7157 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7158
7159         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
7160         element type of const_vector.
7161
7162 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
7163
7164         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
7165         Remove FLAGS_REG clobber from expander pattern.
7166         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
7167         (anddi3, andsi3, andhi3, andqi3): Ditto.
7168         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
7169         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
7170         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
7171         (ashlsi3, ashlhi3, ashlqi3): Ditto.
7172         (ashrsi3, ashrhi3, ashrqi3): Ditto.
7173         (lshrsi3, lshrhi3, lshrqi3): Ditto.
7174         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
7175         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
7176
7177 2008-06-28  Richard Guenther  <rguenther@suse.de>
7178
7179         * tree-ssa-structalias.c (callused_id, var_callused,
7180         callused_tree): Add.
7181         (handle_pure_call): New function.
7182         (find_func_aliases): Call it.
7183         (find_what_p_points_to): Handle the call-used set.
7184         (clobber_what_escaped): Likewise.
7185         (compute_call_used_vars): New function.
7186         (init_base_vars): Init the call-used variable.
7187         (do_sd_constraint): Do not propagate the solution from CALLUSED
7188         but use CALLUSED as a placeholder.
7189         (solve_graph): Likewise.
7190         * tree-flow-inline.h (gimple_call_used_vars): New function.
7191         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
7192         (compute_call_used_vars): Declare.
7193         * tree-ssa-alias.c (set_initial_properties): Call
7194         compute_call_used_vars.
7195         (reset_alias_info): Clear call-used variables.
7196         (add_call_clobber_ops): Assert we are not called for const/pure
7197         functions.  Remove handling of them.
7198         (add_call_read_ops): Handle pure functions by adding the
7199         call-used set of variables as VUSEs.
7200         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
7201         (delete_tree_ssa): Free it.
7202         * tree-dfa.c (remove_referenced_var): Clear the var from the
7203         call-used bitmap.
7204
7205 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
7206
7207         * tree.c (build_varargs_function_type_list): New.
7208         (build_function_type_list_1): New.
7209         (build_function_type_list): Use build_function_type_list_1.
7210         * tree.h (build_varargs_function_type_list): New.
7211
7212 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7213
7214         PR target/34856
7215         * config/spu/spu.c (spu_builtin_splats): Do not generate
7216         invalid CONST_VECTOR expressions.
7217         (spu_expand_vector_init): Likewise.
7218
7219 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
7220
7221         * optabs.c (libfunc_decls): New variable.
7222         (libfunc_decl_hash, libfunc_decl_eq): New functions.
7223         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
7224         for the same function twice.
7225
7226 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
7227
7228         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
7229         ix86_expand_binary_operator directly.
7230         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
7231         for operand 2.
7232         (*ashrti3_1): Ditto.
7233         (*lshrti3_1): Ditto.
7234         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
7235         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
7236         using only one splitter.  Conditionaly execute splitter before or
7237         after peephole2 pass.
7238         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
7239         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
7240         Use only one alternative in asm template.
7241         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
7242         in asm template.
7243         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
7244         "J" operand constraint for operand 2.
7245         (*ashldi3_cconly_rex64): Ditto.
7246         (*ashrdi3_cmp_rex64): Ditto.
7247         (*ashrdi3_cconly_rex64): Ditto.
7248         (*lshrdi3_cmp_rex64): Ditto.
7249         (*lshrdi3_cconly_rex64): Ditto.
7250         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
7251         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
7252         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
7253         gen_x86_shrd_1.
7254
7255 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
7256
7257         * gimplify.c (omp_is_private): Don't return true if decl is not
7258         already private on #pragma omp for or #pragma omp parallel for.
7259
7260         PR debug/36617
7261         * tree-cfg.c (struct move_stmt_d): Replace block field with
7262         orig_block and new_block fields.
7263         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
7264         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
7265         (move_block_to_fn): Replace vars_map and new_label_map arguments
7266         with struct move_stmt_d pointer.
7267         (replace_block_vars_by_duplicates): New function.
7268         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
7269         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
7270         all subblocks of ORIG_BLOCK to the new function.  Call
7271         replace_block_vars_by_duplicates.
7272         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
7273         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
7274         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
7275         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
7276         (expand_omp): Temporarily set input_location to the location of
7277         region's controlling stmt.
7278         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
7279         BIND_EXPR, push ctx->block_vars and gimplification vars into
7280         the BIND_EXPR and its block's BLOCK_VARS instead of directly
7281         into dest function.
7282         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
7283         there are any BLOCK_VARS.
7284         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
7285         OMP_PARALLEL or OMP_TASK stmt.
7286         (lower_omp): Save and restore input_location around the lower_omp_1
7287         call.
7288
7289 2008-06-27  Richard Guenther  <rguenther@suse.de>
7290
7291         PR tree-optimization/36400
7292         PR tree-optimization/36373
7293         PR tree-optimization/36344
7294         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
7295         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
7296         (update_alias_info): Remove call clobbering code.
7297         (make_constraint_to): New helper function.
7298         (make_escape_constraint): Likewise.
7299         (handle_rhs_call): Use it on all pointer containing arguments.
7300         Also mark the static chain escaped.
7301         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
7302         instead of ANYTHING.
7303         (make_constraint_from): New helper split out from ...
7304         (make_constraint_from_anything): ... here.
7305         (find_func_aliases): Add constraints for escape sites.
7306         (intra_create_variable_infos): Make constraints from NONLOCAL
7307         for parameters.
7308         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
7309         as ANYTHING.
7310         (clobber_what_p_points_to): Remove.
7311         (clobber_what_escaped): New function.
7312         (init_base_vars): Init NONLOCAL and ESCAPED.
7313         (do_sd_constraint): Do not propagate the solution from ESCAPED
7314         but use ESCAPED as a placeholder.
7315         (solve_graph): Likewise.
7316         * tree-flow.h (clobber_what_p_points_to): Remove.
7317         (clobber_what_escaped): Declare.
7318         * tree-ssa-alias.c (set_initial_properties): Call it.
7319         Remove code clobbering escaped pointers.
7320
7321 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
7322
7323         * function.c (allocate_struct_function): Only allocate a unique
7324         funcdef_no if the decl is nonzero.
7325
7326 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
7327
7328         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
7329         * config/mips/mips.c (mips_split_const_insns): New function.
7330         * config/mips/mips.md (move_type): New attribute.
7331         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
7332         (dword_mode): New attribute.
7333         (type): Avoid long line.  Map "move_type"s to "type"s,
7334         choosing "multi" for doubleword moves if appropriate.
7335         Swap MTC/MFC comments to match their declaration order.
7336         (extended_mips16): Default to "yes" if "move_type" is "sll0",
7337         "type" is "branch" or "jal" is "direct".
7338         (length): Handle "extended_mips16" first.  Make the default
7339         "0" for "ghost" instructions.  Set the length from "move_type".
7340         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
7341         of "type", with "sll0" for the register alternative.  Remove the
7342         "extended_mips16" attribute.
7343         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
7344         of "type", with "shift_shift" for the register alternative.
7345         Remove the "length" attribute.
7346         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
7347         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
7348         of "type", with "andi" for the register alternative.
7349         (*zero_extendqihi2): Likewise.
7350         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
7351         of "andi" instead of a "type" of "arith".
7352         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
7353         instead of "type".
7354         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
7355         (mov_<store>r, *mov<mode>_ra): Likewise.
7356         (extendsidi2): Use "move_type" instead of "type", with "move"
7357         for the register alternative.
7358         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
7359         of "type", with "signext" for the register alternative.
7360         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
7361         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
7362         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
7363         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
7364         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
7365         (unnamed branch insn): Likewise.
7366         (*movdi_gp32_fp64): Fold into...
7367         (*movdi_32bit): ...here.
7368         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
7369         (*movdf_hardfloat): ...this new pattern.
7370         (*movdf_softfloat): Remove redundant FPR alternatives.
7371         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
7372         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
7373         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
7374         the "move" attribute.
7375         (*movdi_32bit): Use "move_type" instead of "type" and remove the
7376         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
7377         and "store" for COP loads and stores.
7378         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
7379         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
7380         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
7381         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
7382         (*movtf_mips16, *movv2sf): Likewise.
7383         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
7384         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
7385         (mfhc1<mode>): Use "move_type" instead of "move".
7386         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
7387         (loadgp_blockage): Remove the "length" attribute.
7388         (blockage, set_got_version, update_got_version): Likewise.
7389         (call_internal): Remove the "extended_mips16" attribute.
7390         (call_value_internal, call_value_multiple_internal): Likewise.
7391         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
7392         instead of "move".
7393         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
7394         the "length" attribute.
7395
7396 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7397
7398         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
7399         -Wcast-qual warnings.
7400         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
7401         handle_pragma_pop_macro): Likewise.
7402         * collect2.c (resolve_lib_name): Likewise.
7403         * config/arc/arc.c (arc_init): Likewise.
7404         * config/arm/arm.c (neon_builtin_compare,
7405         locate_neon_builtin_icode): Likewise.
7406         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
7407         * config/bfin/bfin.c (bfin_init_machine_status,
7408         bfin_optimize_loop): Likewise.
7409         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
7410         * config/cris/cris.c (cris_init_expanders): Likewise.
7411         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
7412         * config/darwin.c (machopic_indirection_eq,
7413         machopic_indirection_name, machopic_output_indirection): Likewise.
7414         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
7415         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
7416         frv_optimize_membar): Likewise.
7417         * config/i386/cygwin.h (mingw_scan,
7418         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
7419         * config/i386/cygwin1.c (mingw_scan): Likewise.
7420         * config/i386/i386.c (machopic_output_stub): Likewise.
7421         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
7422         i386_pe_unique_section): Likewise.
7423         * config/ia64/ia64.c (ia64_init_machine_status,
7424         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
7425         Likewise.
7426         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
7427         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
7428         * config/m68k/m68k.c (m68k_handle_option,
7429         m68k_sched_md_init_global): Likewise.
7430         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
7431         mcore_unique_section): Likewise.
7432         * config/mips/mips.c (mips_block_move_straight,
7433         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
7434         Likewise.
7435         * config/mmix/mmix.c (mmix_init_machine_status,
7436         mmix_encode_section_info): Likewise.
7437         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
7438         * config/rs6000/rs6000.c (rs6000_init_machine_status,
7439         print_operand_address, output_toc, redefine_groups,
7440         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
7441         * config/s390/s390.c (s390_init_machine_status): Likewise.
7442         * config/score/score.c (score_block_move_straight,
7443         score_block_move_loop_body): Likewise.
7444         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
7445         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
7446         * emit-rtl.c (find_auto_inc): Likewise.
7447         * gcc.c (translate_options, process_command): Likewise.
7448         * reorg.c (dbr_schedule): Likewise.
7449         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
7450         * xcoffout.c (xcoffout_declare_function): Likewise.
7451
7452 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
7453
7454         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
7455         ipa-pta working again.
7456
7457 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
7458
7459         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
7460         genautomata.
7461
7462 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
7463
7464         * config.gcc (powerpc*-*-*): Add new core e500mc.
7465         * config/rs6000/e500mc.md: New file.
7466         * config/rs6000/rs6000.c (processor_costs): Add new costs for
7467         e500mc.
7468         (rs6000_override_options): Add e500mc case to
7469         processor_target_table. Altivec and Spe options not allowed
7470         with e500mc. Add isel instruction to e500mc by
7471         default. Initialize rs6000_cost for e500mc.
7472         (rs6000_issue_rate): Set issue rate for e500mc.
7473         * config/rs6000/rs6000.h (processor_type): Add
7474         PROCESSOR_PPCE500MC.
7475         (ASM_CPU_SPEC): Add e500mc.
7476         Set TARGET_ISEL to rs6000_isel.
7477         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
7478         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
7479         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
7480         Include e500mc.md.
7481         * doc/invoke.texi: Add e500mc to list of cpus.
7482
7483 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7484
7485         PR c/34867
7486         * c-lex.c (lex_charconst): Initialize unsignedp.
7487
7488 2008-06-27  Olivier Hainque  <hainque@adacore.com>
7489
7490         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
7491         documented assumptions.
7492
7493 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
7494
7495         * dwarf2out.c: Remove trailing white spaces.  Break long line
7496         in comments.
7497
7498 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
7499
7500         * libfuncs.h (LTI_synchronize): New libfunc_index.
7501         (synchronize_libfunc): Declare.
7502         * builtins.c (expand_builtin_synchronize): Consider using
7503         synchronize_libfunc before falling back on an asm blockage.
7504         * config/mips/mips.c: Include libfuncs.h
7505         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
7506
7507 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
7508
7509         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
7510         parameter.  Copy stack_reg to r11 where appropriate.
7511         (no_global_regs_above): Add gpr parameter.
7512         (rs6000_stack_info): Only add padding for SPE save area if we
7513         are saving SPE GPRs and CR.
7514         (saveres_routine_syms): New variable.
7515         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
7516         Define.
7517         (rs6000_savres_routine_sym): New function.
7518         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
7519         split out of...
7520         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
7521         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
7522         Tweak FPR out-of-line saving.
7523         (rs6000_make_savres_rtx): New function.
7524         (rs6000_use_multiple_p): New function.
7525         (rs6000_savres_strategy): New function.
7526         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
7527         out-of-line if appropriate.
7528         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
7529         if we are optimizing for size.
7530         (GP_SAVE_INLINE): Define.
7531         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
7532         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
7533         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
7534         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
7535         (*save_fpregs_<mode>): Add use of r11.
7536         (*restore_gpregs_<mode>): New insn.
7537         (*return_and_restore_gpregs_<mode>): New insn.
7538         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
7539         use r11.
7540         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
7541         (*restore_gpregs_spe): New insn.
7542         (*return_and_restore_gpregs_spe): New insn.
7543         * config/rs6000/predicates.md (save_world_operation): Fix check.
7544
7545 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
7546
7547         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
7548         this point, so assert that.
7549
7550 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
7551
7552         * cfganal.c: Include vec.h and vecprim.h.
7553         (compute_idf): Import from...
7554         * tree-into-ssa (compute_idf): ...here.
7555         * basic-block.h (compute_idf): Export.
7556
7557 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
7558
7559         * c-decl.c (merge_decls): Use !current_function_decl to check for
7560         extern declaration of C99 inline function being at file scope.
7561
7562 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
7563
7564         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
7565
7566 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7567
7568         * alias.c (record_alias_subset, init_alias_analysis): Fix
7569         -Wc++-compat and/or -Wcast-qual warnings.
7570         * attribs.c (lookup_attribute_spec): Likewise.
7571         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
7572         copy_bb, connect_traces,
7573         find_rarely_executed_basic_blocks_and_cr): Likewise.
7574         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
7575         note_btr_set, migrate_btr_defs): Likewise.
7576         * builtins.c (result_vector, expand_builtin_memcpy,
7577         expand_builtin_mempcpy_args, expand_builtin_strncpy,
7578         builtin_memset_read_str, expand_builtin_printf,
7579         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
7580         Likewise.
7581         * caller-save.c (mark_set_regs): Likewise.
7582         * calls.c (expand_call, emit_library_call_value_1): Likewise.
7583         * cgraph.c (cgraph_edge): Likewise.
7584         * combine.c (likely_spilled_retval_1): Likewise.
7585         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
7586         htab_counts_entry_del, get_coverage_counts): Likewise.
7587         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
7588         new_cselib_val): Likewise.
7589         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
7590         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
7591         Likewise.
7592         * df-core.c (df_compact_blocks): Likewise.
7593         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
7594         * df-scan.c (df_grow_reg_info, df_ref_create,
7595         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
7596         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
7597         df_record_entry_block_defs, df_record_exit_block_uses,
7598         df_bb_verify): Likewise.
7599         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
7600         DF_REF_EXTRACT_MODE_CONST): New.
7601         * dominance.c (get_immediate_dominator, get_dominated_by,
7602         nearest_common_dominator, root_of_dom_tree,
7603         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
7604         -Wc++-compat and/or -Wcast-qual warnings.
7605         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
7606         record_store, replace_read, check_mem_read_rtx, scan_insn,
7607         dse_step1, dse_record_singleton_alias_set): Likewise.
7608         * dwarf2asm.c (dw2_force_const_mem): Likewise.
7609
7610 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7611
7612         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
7613         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
7614         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
7615         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
7616         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
7617         add_ranges_num, add_ranges_by_labels, file_info_cmp,
7618         file_name_acquire, output_file_names, add_const_value_attribute,
7619         premark_used_types_helper, file_table_eq, file_table_hash,
7620         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
7621         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
7622         -Wcast-qual warnings.
7623         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
7624         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
7625         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
7626         gen_reg_rtx, start_sequence, init_emit): Likewise.
7627         * et-forest.c (et_new_occ, et_new_tree): Likewise.
7628         * except.c (init_eh_for_function, gen_eh_region,
7629         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
7630         arh_to_landing_pad, arh_to_label, add_action_record,
7631         add_call_site, switch_to_exception_section): Likewise.
7632         * expmed.c (synth_mult): Likewise.
7633         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
7634         store_expr): Likewise.
7635         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
7636         Likewise.
7637         * function.c (assign_stack_temp_for_type,
7638         allocate_struct_function, match_asm_constraints_1): Likewise.
7639         * gcov-io.c (gcov_allocate): Likewise.
7640         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
7641         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
7642         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
7643         record_one_set, insert_expr_in_table, insert_set_in_table,
7644         dump_hash_table, compute_hash_table_work, alloc_hash_table,
7645         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
7646         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
7647         -Wcast-qual warnings.
7648
7649 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7650
7651         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
7652         -Wcast-qual warnings.
7653         * gcc.c (process_command): Likewise.
7654         * genattrtab.c (oballoc): Use XOBNEW.
7655         (oballocvec): Define.
7656         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
7657         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
7658         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
7659         -Wc++-compat and/or -Wcast-qual warnings.
7660         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
7661         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
7662         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
7663         gen_presence_absence_set, gen_automaton, gen_regexp_el,
7664         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
7665         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
7666         add_excls, process_presence_absence_names,
7667         process_presence_absence_patterns, add_presence_absence,
7668         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
7669         get_free_state, add_arc, get_free_automata_list_el,
7670         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
7671         transform_3, cache_presence, create_ainsns, create_automata,
7672         create_state_ainsn_table, dfa_insn_code_enlarge,
7673         output_trans_func, output_min_issue_delay_func,
7674         output_dead_lock_func, output_reset_func,
7675         output_get_cpu_unit_code_func, output_dfa_start_func,
7676         expand_automata): Likewise.
7677         * genextract.c (gen_insn): Likewise.
7678         * gengtype-lex.l: Likewise.
7679         * gengtype.c (read_input_list, adjust_field_type,
7680         process_gc_options): Likewise.
7681         * genoutput.c (note_constraint): Likewise.
7682         * genpreds.c (mangle, add_constraint): Likewise.
7683         * genrecog.c (process_define_predicate, new_decision,
7684         add_to_sequence): Likewise.
7685         * gensupport.c (record_insn_name): Likewise.
7686
7687 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7688
7689         * config/i386/driver-i386.c (detect_caches_amd,
7690         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
7691         and/or -Wcast-qual warnings.
7692         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
7693         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
7694         gt_pch_save): Likewise.
7695         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
7696         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
7697         * global.c (compute_regsets): Likewise.
7698         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
7699         finish_graph_dump_file): Likewise.
7700         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
7701         unlink_bb_notes): Likewise.
7702         * integrate.c (get_hard_reg_initial_val): Likewise.
7703         * ipa-prop.c (ipa_push_func_to_list): Likewise.
7704         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
7705         * local-alloc.c (update_equiv_regs): Likewise.
7706         * loop-invariant.c (check_invariant_table_size,
7707         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
7708         Likewise.
7709         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
7710         altered_reg_used, mark_altered): Likewise.
7711         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
7712         insert_var_expansion_initialization,
7713         combine_var_copies_in_loop_exit, apply_opt_in_copies,
7714         release_var_copies): Likewise.
7715         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
7716         analyze_matrix_decl, add_allocation_site, analyze_transpose,
7717         analyze_accesses_for_phi_node, check_var_notmodified_p,
7718         check_allocation_function, find_sites_in_func,
7719         record_all_accesses_in_func, transform_access_sites,
7720         transform_allocation_sites): Likewise.
7721         * omp-low.c (new_omp_region, create_omp_child_function_name,
7722         check_omp_nesting_restrictions, check_combined_parallel,
7723         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
7724         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
7725         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
7726         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
7727         Likewise.
7728         * opts-common.c (prune_options): Likewise.
7729         * opts.c (add_input_filename, print_filtered_help,
7730         get_option_state): Likewise.
7731         * params.c (add_params): Likewise.
7732         * passes.c (set_pass_for_id, next_pass_1,
7733         do_per_function_toporder, pass_fini_dump_file): Likewise.
7734         * postreload.c (reload_cse_simplify_operands): Likewise.
7735         * predict.c (tree_predicted_by_p, tree_predict_edge,
7736         clear_bb_predictions, combine_predictions_for_bb): Likewise.
7737
7738 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7739
7740         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
7741         warnings.
7742         * recog.c (check_asm_operands, validate_change_1): Likewise.
7743         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
7744         subst_asm_stack_regs): Likewise.
7745         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
7746         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
7747         * regmove.c (reg_is_remote_constant_p): Likewise.
7748         * regrename.c (regrename_optimize, scan_rtx_reg,
7749         kill_clobbered_value, kill_set_value, kill_autoinc_value):
7750         Likewise.
7751         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
7752         regstat_compute_calls_crossed): Likewise.
7753         * reload1.c (init_reload, new_insn_chain,
7754         has_nonexceptional_receiver, reload, copy_reloads,
7755         calculate_needs_all_insns, init_elim_table): Likewise.
7756         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
7757         * rtl.c (shallow_copy_rtx_stat): Likewise.
7758         * rtlanal.c (parms_set): Likewise.
7759         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
7760         sbitmap_resize, sbitmap_vector_alloc): Likewise.
7761         * sched-ebb.c (earliest_block_with_similiar_load,
7762         add_deps_for_risky_insns): Likewise.
7763         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
7764         schedule_region): Likewise.
7765         * see.c (eq_descriptor_pre_extension,
7766         hash_descriptor_pre_extension, hash_del_pre_extension,
7767         eq_descriptor_properties, hash_descriptor_properties,
7768         hash_del_properties, see_seek_pre_extension_expr,
7769         see_initialize_data_structures, see_print_register_properties,
7770         see_print_pre_extension_expr, see_delete_merged_def_extension,
7771         see_delete_unmerged_def_extension, see_emit_use_extension,
7772         see_pre_delete_extension, see_map_extension, see_commit_changes,
7773         see_analyze_merged_def_local_prop,
7774         see_analyze_merged_def_local_prop,
7775         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
7776         see_set_prop_merged_def, see_set_prop_unmerged_def,
7777         see_set_prop_unmerged_use, see_print_one_extension,
7778         see_merge_one_use_extension, see_merge_one_def_extension,
7779         see_store_reference_and_extension, see_update_uses_relevancy,
7780         see_update_defs_relevancy): Likewise.
7781         * statistics.c (hash_statistics_hash, hash_statistics_eq,
7782         hash_statistics_free, curr_statistics_hash): Likewise.
7783         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
7784         expand_asm_operands, expand_return, case_bit_test_cmp,
7785         expand_case): Likewise.
7786         * stor-layout.c (start_record_layout): Likewise.
7787         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
7788         gt_pch_save_stringpool): Likewise.
7789         * tree-data-ref.c (hash_stmt_vertex_info,
7790         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
7791         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
7792
7793 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
7794
7795         PR target/36627
7796         * config/i386/i386.md : Change constraints of HImode and QImode
7797         immediate operands from "i" to "n".  Change SImode "ni" constraint to
7798         "i" and SImode "rmi" constraint to "g".  Remove all constraints
7799         from const0_operand and const1_operand predicated operands.
7800         (i): Change QImode and HImode attribute from "i" to "n".
7801         (*subqi_2): Change HImode operands to QImode.
7802         (*subqi_3): Ditto.
7803
7804 2008-06-25  Olivier Hainque  <hainque@adacore.com>
7805
7806         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
7807         sed substitutions.
7808
7809 2008-06-25  Richard Guenther  <rguenther@suse.de>
7810
7811         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
7812         not overflow the result type.
7813
7814 2008-06-25  Richard Guenther  <rguenther@suse.de>
7815
7816         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
7817         (vn_lookup): Likewise.
7818
7819 2008-06-25  Richard Guenther  <rguenther@suse.de>
7820
7821         PR tree-optimization/35518
7822         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
7823         * tree-sra.c (instantiate_element): Use fold_build3 to build
7824         BIT_FIELD_REFs.
7825         (try_instantiate_multiple_fields): Likewise.
7826
7827 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7828
7829         * config/rs6000/rs6000.md: Change all string instruction's clobber to
7830         be early clobbers.
7831
7832 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7833
7834         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
7835         use_backchain_to_restore_sp to true
7836         if the offset of the link register save area would go over the 32k - 1
7837         offset limit of the load
7838         instructions.
7839
7840 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
7841
7842         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
7843         anchor for the type-punning blurb.  Cross-reference "Structures
7844         unions enumerations and bit-fields implementation".  Provide a
7845         cast-through-pointer example.  Make final sentence self-contained.
7846         * doc/implement-c.texi (Structures unions enumerations and
7847         bit-fields implementation): Cross-reference the type-punning blurb
7848         in the -fstrict-aliasing documentation.
7849
7850 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7851
7852         PR middle-end/36594
7853         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
7854         the memory instead of the memory itself for the save area.
7855
7856 2008-06-24  Olivier Hainque  <hainque@adacore.com>
7857             Nicolas Roche  <roche@adacore.com>
7858
7859         * gengtype.c (srcdir_len): size_t instead of int.
7860         (get_file_realbasename): New function.  For F a filename, the real
7861         basename of F, with all the path components stripped.
7862         (get_file_srcdir_relative_path): New function.  For F a filename, the
7863         relative path to F from $(srcdir).
7864         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
7865         get_file_realbasename.  Adjust the head comment.
7866         (get_prefix_langdir_index): New function. For F a filename, return the
7867         lang_dir_names[] relative index of the language directory that is
7868         a prefix in F.
7869         (get_file_langdir): For F a filename, return the name of the language
7870         directory where F is located.
7871         (get_file_gtfilename): New function. The gt- output file name for an
7872         input filename F.
7873         (get_output_file_with_visibility): Replace in-line computations with
7874         uses of get_file_gtfilename and get_prefix_langdir_index.
7875         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
7876
7877 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
7878
7879         PR tree-optimization/36504
7880         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
7881         references without base address.
7882
7883 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
7884
7885         PR middle-end/36584
7886         * calls.c (expand_call): Increase alignment for recursive functions.
7887
7888 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
7889
7890         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
7891         (TARGET_FUNCTION_VALUE): New define.
7892         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
7893         * config/avr/avr.h (FUNCTION_VALUE): Remove.
7894
7895 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
7896
7897         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
7898         (fmod<mode>3): Ditto.
7899         (remainderxf3): Ditto.
7900         (remainder<mode>3): Ditto.
7901
7902 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
7903
7904         PR target/36533
7905         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
7906         REG is a hard register.
7907
7908         PR tree-optimization/36508
7909         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
7910         499, don't check it at all in release compilers.
7911
7912 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
7913
7914         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
7915         together with SSE_TARGET_MATH to disable insn pattern.
7916         (*fop_<MODEF:mode>_2_i387): Ditto.
7917         (*fop_<MODEF:mode>_3_i387): Ditto.
7918
7919 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
7920
7921         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
7922
7923 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7924
7925         PR middle-end/34906
7926         * gimplify.c (gimplify_asm_expr): Check the return code of
7927         parse_output_constraint call, set function return and is_inout
7928         value if it failed.
7929
7930 2008-06-22  Ian Lance Taylor  <iant@google.com>
7931
7932         * c-lex.c (narrowest_unsigned_type): Change itk to int.
7933         (narrowest_signed_type): Likewise.
7934         * c-typeck.c (c_common_type): Change local variable mclass to enum
7935         mode_class, twice.
7936         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
7937         tcc_comparison, not the tree code itself.
7938         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
7939         (c_expand_expr): Cast modifier to enum expand_modifier.
7940         * c-common.h (C_RID_CODE): Add casts.
7941         (C_SET_RID_CODE): Define.
7942         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
7943         (c_lex_one_token): Add cast to avoid warning.
7944         (c_parser_objc_type_name): Rename local typename to type_name.
7945         (check_no_duplicate_clause): Change code parameter to enum
7946         omp_clause_code.
7947         (c_parser_omp_var_list_parens): Change kind parameter to enum
7948         omp_clause_code.
7949         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
7950         c_parser_omp_list_var_parens.
7951         (c_parser_omp_threadprivate): Likewise.
7952         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
7953         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
7954         * c-format.c (NO_FMT): Define.
7955         (printf_length_specs): Use NO_FMT.
7956         (asm_fprintf_length_specs): Likewise.
7957         (gcc_diag_length_specs): Likewise.
7958         (scanf_length_specs): Likewise.
7959         (strfmon_length_specs): Likewise.
7960         (gcc_gfc_length_specs): Likewise.
7961         (printf_flag_specs): Change 0 to STD_C89.
7962         (asm_fprintf_flag_specs): Likewise.
7963         (gcc_diag_flag_specs): Likewise.
7964         (gcc_cxxdiag_flag_specs): Likewise.
7965         (scanf_flag_specs): Likewise.
7966         (strftime_flag_specs): Likewise.
7967         (strfmon_flag_specs): Likewise.
7968         (print_char_table): Likewise.
7969         (asm_fprintf_char_table): Likewise.
7970         (gcc_diag_char_table): Likewise.
7971         (gcc_tdiag_char_table): Likewise.
7972         (gcc_cdiag_char_table): Likewise.
7973         (gcc_cxxdiag_char_table): Likewise.
7974         (gcc_gfc_char_table): Likewise.
7975         (scan_char_table): Likewise.
7976         (time_char_table): Likewis.
7977         (monetary_char_table): Likewise.
7978         * c-format.h (BADLEN): Likewise.
7979
7980 2008-06-21  Ian Lance Taylor  <iant@google.com>
7981
7982         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
7983         Define END_OF_BASE_TREE_CODES around inclusion.
7984         * tree.c (tree_code_type): New global array.
7985         (tree_code_length, tree_code_name): Likewise.
7986         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
7987         $(lang_tree_files).
7988         (all-tree.def, s-alltree): New targets.
7989         (gencheck.h, s-gencheck): Remove.
7990         (tree.o): Depend upon all-tree.def.
7991         (build/gencheck.o): Remove gencheck.h dependency.
7992         (mostlyclean): Don't remove gencheck.h.
7993         * c-common.h (enum c_tree_code): Remove.
7994         * c-lang.c (tree_code_type): Remove.
7995         (tree_code_length, tree_code_name): Remove.
7996         * gencheck.c (tree_codes): Include all-tree.def, rather than
7997         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
7998         after it is used.
7999         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
8000         than tree.def.
8001         * cp/cp-tree.h (enum cplus_tree_code): Remove.
8002         (operator_name_info): Size to MAX_TREE_CODES.
8003         (assignment_operator_name_info): Likewise.
8004         * cp/cp-lang.c (tree_code_type): Remove.
8005         (tree_code_length, tree_code_name): Remove.
8006         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
8007         (assignment_operator_name_info): Likewise.
8008         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
8009         MAX_TREE_CODES.
8010         * cp/mangle.c (write_expression): Likewise.
8011         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
8012         * fortran/f95-lang.c (tree_code_type): Remove.
8013         (tree_code_length, tree_code_name): Remove.
8014         * java/java-tree.h (enum java_tree_code): Remove.
8015         * java/lang.c (tree_code_type): Remove.
8016         (tree_code_length, tree_code_name): Remove.
8017         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
8018         * objc/objc-act.h (enum objc_tree_code): Remove.
8019         * objc/objc-lang.c (tree_code_type): Remove.
8020         (tree_code_length, tree_code_name): Remove.
8021         * objcp/objcp-lang.c (tree_code_type): Remove.
8022         (tree_code_length, tree_code_name): Remove.
8023         * ada/ada-tree.h (enum gnat_tree_code): Remove.
8024         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
8025         * ada/misc.c (tree_code_type): Remove.
8026         (tree_code_length, tree_code_name): Remove.
8027
8028 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
8029
8030         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
8031         the grand_bitmap_obstack.
8032
8033 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8034
8035         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
8036         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
8037         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
8038         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
8039         move_stmt_r, new_label_mapper): Likewise.
8040         * tree-complex.c (cvc_lookup): Likewise.
8041         * tree-dfa.c (create_function_ann): Likewise.
8042         * tree-dump.c (dump_register): Likewise.
8043         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
8044         find_phi_replacement_condition): Likewise.
8045         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
8046         tree_function_versioning): Likewise.
8047         * tree-into-ssa.c (cmp_dfsnum): Likewise.
8048         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
8049         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
8050         get_nonlocal_debug_decl, convert_nonlocal_reference,
8051         convert_nonlocal_omp_clauses, get_local_debug_decl,
8052         convert_local_reference, convert_local_omp_clauses,
8053         convert_nl_goto_reference, convert_nl_goto_receiver,
8054         convert_tramp_reference, convert_call_expr): Likewise.
8055         * tree-outof-ssa.c (contains_tree_r): Likewise.
8056         * tree-parloops.c (reduction_phi, initialize_reductions,
8057         eliminate_local_variables_1, add_field_for_reduction,
8058         add_field_for_name, create_phi_for_local_result,
8059         create_call_for_reduction_1, create_loads_for_reductions,
8060         create_stores_for_reduction, create_loads_and_stores_for_name):
8061         Likewise.
8062         * tree-phinodes.c (allocate_phi_node): Likewise.
8063         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
8064         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
8065         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
8066         * tree-ssa-coalesce.c (compare_pairs): Likewise.
8067         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
8068         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
8069         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
8070         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
8071         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
8072         vn_nary_op_insert): Likewise.
8073         * tree-ssa.c (redirect_edge_var_map_add,
8074         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
8075         * tree-vectorizer.c (vectorize_loops): Likewise.
8076         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
8077         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
8078         tree_cons_stat, build1_stat, build_variant_type_copy,
8079         decl_init_priority_lookup, decl_fini_priority_lookup,
8080         decl_priority_info, decl_restrict_base_lookup,
8081         decl_restrict_base_insert, decl_debug_expr_lookup,
8082         decl_debug_expr_insert, decl_value_expr_lookup,
8083         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
8084         type_hash_add, get_file_function_name, tree_check_failed,
8085         tree_not_check_failed, tree_range_check_failed,
8086         omp_clause_range_check_failed, build_omp_clause,
8087         build_vl_exp_stat): Likewise.
8088         * value-prof.c (gimple_histogram_value,
8089         gimple_duplicate_stmt_histograms): Likewise.
8090         * var-tracking.c (attrs_list_insert, attrs_list_copy,
8091         unshare_variable, variable_union_info_cmp_pos, variable_union,
8092         dataflow_set_different_1, dataflow_set_different_2,
8093         vt_find_locations, variable_was_changed, set_variable_part,
8094         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
8095         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
8096         section_entry_hash, object_block_entry_eq,
8097         object_block_entry_hash, create_block_symbol,
8098         initialize_cold_section_name, default_function_rodata_section,
8099         strip_reg_name, set_user_assembler_name, const_desc_eq,
8100         build_constant_desc, output_constant_def, lookup_constant_def,
8101         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
8102         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
8103         default_internal_label): Likewise.
8104         * varray.c (varray_init, varray_grow): Likewise.
8105         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
8106
8107 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
8108
8109         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
8110         operators for "test" insn.  Macroize insn using SWI mode macro.
8111         (*jcc_fused_2): Ditto.
8112         (*jcc_fused_3): Macroize insn using SWI mode macro.
8113         (*jcc_fused_4): Ditto.
8114
8115 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
8116
8117         * tree-ssa-pre.c: Fix typo in comment.
8118         (init_antic, fini_antic): Add explicit funtions for
8119         initializing and deinitializing ANTIC and AVAIL sets.
8120         (create_expression_by_pieces): Fix typo in comment.
8121         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
8122         (execute_pre): Eventually dump details about ANTIC_IN.
8123
8124 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8125
8126         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
8127         * gcc.c (translate_options, init_spec, store_arg, read_specs,
8128         add_to_obstack, file_at_path, find_a_file, execute,
8129         add_preprocessor_option, add_assembler_option, add_linker_option,
8130         process_command, insert_wrapper, do_option_spec, do_self_spec,
8131         spec_path, do_spec_1, is_directory, main, used_arg,
8132         getenv_spec_function): Likewise.
8133         * tlink.c (symbol_hash_lookup, file_hash_lookup,
8134         demangled_hash_lookup, symbol_push, file_push, frob_extension):
8135         Likewise.
8136
8137 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
8138
8139         * doc/rtl.texi: Updated subreg section.
8140
8141 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
8142
8143         PR c++/36523
8144         * cgraphunit.c (cgraph_process_new_functions): Don't clear
8145         node->needed and node->reachable.
8146         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
8147         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
8148         (expand_task_call): Don't call expand_task_copyfn.
8149         (expand_task_copyfn): Renamed to...
8150         (finalize_task_copyfn): ... this.
8151
8152 2008-06-19  Jan Hubicka  <jh@suse.cz>
8153
8154         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
8155         clobbering framepointer.
8156
8157 2008-06-19  Jan Hubicka  <jh@suse.cz>
8158
8159         * tree-optimize.c (execute_early_local_optimizations): Set
8160         cgraph_state only at first invocation.
8161
8162 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8163
8164         * system.h (-Wc++-compat): Activate as a warning, no an error.
8165
8166 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
8167
8168         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
8169         instead of "#" in insn asm template.
8170         (*jcc_fused_2): Ditto.
8171
8172 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
8173
8174         * config/i386/i386.h (ix86_tune_indices)
8175         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
8176         (TARGET_FUSE_CMP_AND_BRANCH): New define.
8177         * config/i386/i386.md (*jcc_fused_1): New insn pattern
8178         (*jcc_fused_2): Ditto.
8179         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
8180         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
8181         (print operand): Handle 'E' and 'e' code.
8182
8183 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
8184
8185         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
8186         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
8187         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8188
8189 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
8190
8191         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
8192         node->decl.
8193         (cgraph_expand_function): Use local copy of decl.
8194         (cgraph_expand_all_functions): Remove redundant initialization of
8195         order_pos.
8196         (cgraph_optimize): Reword internal_error message.
8197
8198 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
8199
8200         * arm-protos.h (arm_return_in_memory): Remove public
8201         arm_return_in_memory() prototype.
8202         * arm.c (arm_return_in_memory): Add static prototype, add target
8203         hook macro, change definition and comments.
8204         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
8205
8206 2008-06-19  Ben Elliston  <bje@au.ibm.com>
8207
8208         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
8209         real.c: Remove references to IEEE 754R.
8210         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
8211         * doc/libgcc.texi (Decimal float library routines): Likewise.
8212
8213 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8214
8215         * targhooks.h (struct gcc_target): New member unwind_word_mode.
8216         (default_unwind_word_mode): Add prototype.
8217         * targhooks.c (default_unwind_word_mode): New function.
8218         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
8219         instead of word_mode.
8220         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
8221         (TARGET_INITIALIZER): Use it.
8222
8223         * c-common.c (handle_mode_attribute): Support "unwind_word"
8224         mode attribute.
8225         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
8226
8227         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
8228         word_mode to access SjLj_Function_Context member "data".
8229         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
8230         conversion from targetm.eh_return_filter_mode () to
8231         targetm.unwind_word_mode () if they differ.
8232
8233         * builtin-types.def (BT_UNWINDWORD): New primitive type.
8234         (BT_FN_UNWINDWORD_PTR): New function type.
8235         (BT_FN_WORD_PTR): Remove.
8236         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
8237         * except.c (expand_builtin_extend_pointer): Convert pointer to
8238         targetm.unwind_word_mode () instead of word_mode.
8239
8240         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
8241         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
8242         (spu_unwind_word_mode): New function.
8243         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
8244         (TARGET_UNWIND_WORD_MODE): Define.
8245         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
8246
8247 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8248
8249         * config/spu/spu.c (reg_align): Remove.
8250         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
8251         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
8252         (spu_split_store): Likewise.
8253
8254 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
8255
8256         * gcc/tree-vn.c: Fix typo in comment.
8257
8258 2008-06-18  Jan Hubicka  <jh@suse.cz>
8259
8260         * cgraphunit.c (cgraph_optimize): Output debug info when doing
8261         toplevel reorder too.
8262
8263 2008-06-18  Jan Hubicka  <jh@suse.cz>
8264
8265         * c-opts.c (c_common_post_options): PCH is not compatible with
8266         no-unit-at-a-time.
8267         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
8268         -fno-toplevel-reorder by default now.
8269
8270 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8271
8272         PR documentation/30739
8273         * doc/install.texi (Prerequisites): Document dependency on awk.
8274
8275 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
8276             Ian Lance Taylor  <iant@google.com>
8277
8278         PR rtl-optimization/35604
8279         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
8280         only want to change jump destinations, not eventual label comparisons.
8281
8282 2008-06-16  Jan Hubicka  <jh@suse.cz>
8283
8284         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
8285         syntax errors.
8286         (cgraph_analyze_function): Likewise.
8287
8288 2008-06-16  Jan Hubicka  <jh@suse.cz>
8289
8290         * cgraph.h (cgraph_mark_if_needed): New function.
8291         * cgraphunit.c (cgraph_mark_if_needed): New function.
8292         * c-decl.c (duplicate_decl): Use it.
8293
8294 2008-06-16  Jan Hubicka  <jh@suse.cz>
8295
8296         * cgraph.c (cgraph_add_new_function): When in expansion state, do
8297         lowering.
8298
8299 2008-06-16  Jan Hubicka  <jh@suse.cz>
8300
8301         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
8302
8303 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
8304             Kazu Hirata  <kazu@codesourcery.com>
8305             Maxim Kuvyrkov  <maxim@codesourcery.com
8306
8307         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
8308         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
8309         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
8310         EXTRA_SPEC_FUNCTIONS.
8311         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
8312         (DRIVER_SELF_SPECS): Adjust.
8313         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
8314         * config/mips/st.h, config/mips/t-st: New.
8315         * config/mips/driver-native.c, config/mips/x-native: New.
8316         * doc/invoke.texi (MIPS): Document 'native' value for -march and
8317         -mtune options.
8318
8319 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
8320
8321         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
8322         from it.
8323         (ISA_HAS_FP_CONDMOVE): New macro.
8324         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
8325         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
8326         (ISA_HAS_NMADD3_NMSUB3): New macro.
8327         * config/mips/mips.c (mips_rtx_costs): Update.
8328         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
8329         compiling for ST Loongson 2E/2F.
8330         (madd<mode>): Rename to madd4<mode>.  Update.
8331         (madd3<mode>): New pattern.
8332         (msub<mode>): Rename to msub4<mode>.  Update.
8333         (msub3<mode>): New pattern.
8334         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
8335         (nmadd3<mode>): New pattern.
8336         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
8337         (nmadd3<mode>_fastmath): New pattern.
8338         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
8339         (nmsub3<mode>): New pattern.
8340         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
8341         (nmsub3<mode>_fastmath): New pattern.
8342         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
8343
8344 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
8345
8346         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
8347         (DF_REF_INSN_INFO): New.
8348         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
8349         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
8350         with a NULL DF_REF_INSN_INFO.
8351         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
8352         DF_INSN_SET.
8353         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
8354         DF_INSN_INFO_EQ_USES): New.
8355         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
8356         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
8357         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
8358         * df-core.c: Update comment for above changes.
8359         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
8360         DF_INSN_UID_* macros.
8361         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
8362         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
8363         insn rtx.  Update all callers.
8364         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
8365         df_ref_create_structure, df_insn_refs_collect): Likewise.
8366         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
8367         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
8368         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
8369         macros to access the insn refs.
8370         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
8371         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
8372         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
8373         for accessing the refs.
8374         (try_fwprop_subst): Likewise.
8375         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
8376         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
8377         for accessing the refs.
8378         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
8379         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
8380         to look at the insn refs.
8381         (record_uses): Likewise.
8382         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
8383         function anymore.
8384         (mark_artificial_uses): Don't mark_insn for artificial refs.
8385         (mark_reg_rependencies): Likewise.
8386
8387         * doc/rtl.texi: Remove documentation of ADDRESSOF.
8388
8389 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8390
8391         * configure: Regenerate.
8392
8393 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
8394
8395         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
8396         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8397         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8398
8399 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
8400
8401         * config/avr/avr.c (avr_mcu_t): Add attiny167.
8402         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8403         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8404
8405 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
8406
8407         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
8408         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8409         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8410
8411 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
8412
8413         * tree-ssa-sccvn.c: Fix format of comments.
8414
8415 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
8416
8417         * cgraph.c: Remove unneeded forward declarations of eq_node()
8418         and hash_node().
8419
8420 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
8421
8422         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
8423         REG_RETVAL notes.
8424         (see_update_relevancy): Likewise.
8425         * fwprop.c (try_fwprop_subst): Likewise.
8426         * rtlanal.c (noop_move_p): Likewise.
8427         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
8428         notes to non-existing libcall blocks.
8429         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
8430         Remove orig_set.
8431         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
8432         (dead_libcall_p): Remove.
8433         (delete_trivially_dead_insns): Don't use it.
8434         * web.c (union_defs): Remove comment about keeping nops.
8435         * gcse.c (hash_scan_insn): Don't take libcall pointers.
8436         (compute_hash_table_work): Don't track libcall notes.
8437         (do_local_cprop): Don't take libcall pointers.  Don't update
8438         libcall notes.
8439         (adjust_libcall_notes): Deleted.
8440         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
8441         ever have existed in the first place).
8442         (replace_store_insn): Don't try to remove libcall notes.
8443         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
8444         (resolve_reg_notes): Don't call them.
8445         (resolve_simple_move): Likewise.
8446         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
8447         Don't remove REG_RETVAL notes.
8448         * emit-rtl.c (try_split): Don't update libcall notes.
8449         (emit_copy_of_insn_after): Dito.
8450         * cselib.c (cselib_current_insn_in_libcall): Remove.
8451         (cselib_process_insn): Don't set/clear it.
8452         (new_elt_loc_list): Don't record it.
8453         (cselib_init): Don't initialize it.
8454         * cselib.c (struct elt_loc_list): Remove in_libcall field.
8455         * loop-invariant.c (find_invariant_insn): Don't look for libcall
8456         notes.
8457         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
8458         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
8459         (init_deps): Don't initialize it.
8460         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
8461         * combine.c (delete_noop_moves): Don't update libcall notes.
8462         (can_combine_p): Remove now pointless #if 0 block.
8463         (try_combine): Remove another obsolete #if 0 block.
8464         (distribute_notes): Don't distribute libcall notes.
8465         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
8466         * dce.c (libcall_dead_p): Remove.
8467         (delete_unmarked_insns): Don't handle libcall blocks.
8468         (preserve_libcall_for_dce): Remove.
8469         (prescan_insns_for_dce): Don't special-case libcall block insns.
8470         * reload1 (reload): Don't handle libcall notes.
8471         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
8472         documentation.
8473
8474 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
8475
8476         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
8477         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8478         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8479
8480 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
8481
8482         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
8483         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
8484         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
8485
8486 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8487
8488         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
8489
8490 2008-06-16  Ira Rosen  <irar@il.ibm.com>
8491
8492         PR tree-optimization/36493
8493         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
8494         the arguments list. Use VECTYPE to create vector pointer.
8495         (vectorizable_store): Fail if accesses through a pointer to vectype
8496         do not alias the original memory reference operands.
8497         Call vect_create_data_ref_ptr without the removed argument.
8498         (vectorizable_load): Likewise.
8499         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
8500         removed argument.
8501
8502 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
8503
8504         PR target/36336
8505         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
8506         reg_equiv_constant.
8507
8508 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8509
8510         * config/mips/loongson2ef.md: New file.
8511         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
8512         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
8513         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
8514         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
8515         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
8516         and loongson_2f.
8517         (loongson2ef.md): New include.
8518         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
8519         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
8520         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
8521         (loongson_gt_<mode>, loongson_extract_halfword)
8522         (loongson_insert_halfword_0, loongson_insert_halfword_2)
8523         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
8524         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
8525         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
8526         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
8527         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
8528         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
8529         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
8530         (vec_interleave_low<mode>): Define type attribute.
8531         * config/mips/mips.c (mips_ls2): New static variable.
8532         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
8533         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
8534         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
8535         Implement target scheduling hooks.
8536         (mips_multipass_dfa_lookahead): Update to handle tuning for
8537         Loongson 2E/2F.
8538         (mips_sched_init): Initialize data for Loongson scheduling.
8539         (mips_ls2_variable_issue): New static function.
8540         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
8541         Add sanity check.
8542         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
8543         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
8544         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
8545         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
8546         Handle ST Loongson 2E/2F cores.
8547         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
8548
8549 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8550
8551         * omp-low.c (extract_omp_for_data): Fix comment typo.
8552         * c.opt: Fix typo.
8553
8554 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8555
8556         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
8557         FIXME note about gcc/config.guess.
8558         * doc/options.texi (Option file format): Remove non-ASCII bytes.
8559         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
8560         * doc/cppopts.texi: Likewise.
8561         * doc/extend.texi: Likewise.
8562         * doc/gcc.texi: Likewise.
8563         * doc/gccint.texi: Likewise.
8564         * doc/gcov.texi: Likewise.
8565         * doc/gty.texi: Likewise.
8566         * doc/hostconfig.texi: Likewise.
8567         * doc/install.texi: Likewise.
8568         * doc/invoke.texi: Likewise.
8569         * doc/loop.texi: Likewise.
8570         * doc/makefile.texi: Likewise.
8571         * doc/md.texi: Likewise.
8572         * doc/passes.texi: Likewise.
8573         * doc/tm.texi: Likewise.
8574         * doc/tree-ssa.texi: Likewise.
8575         * doc/trouble.texi: Likewise.
8576
8577 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
8578             Nathan Sidwell  <nathan@codesourcery.com>
8579             Maxim Kuvyrkov  <maxim@codesourcery.com>
8580             Richard Sandiford  <rdsandiford@googlemail.com>
8581
8582         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
8583         * config/mips/mips-protos.h (mips_expand_vector_init): New.
8584         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
8585         builtins.
8586         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
8587         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
8588         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
8589         V8QImode cases.
8590         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
8591         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
8592         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
8593         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
8594         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
8595         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
8596         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
8597         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
8598         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
8599         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
8600         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
8601         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
8602         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
8603         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
8604         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
8605         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
8606         (mips_builtins): Add Loongson builtins.
8607         (mips_loongson_2ef_bdesc): New.
8608         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
8609         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
8610         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
8611         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
8612         New.
8613         (mips_expand_vector_init): New.
8614         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
8615         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
8616         if appropriate.
8617         * config/mips/mips.md: Add unspec numbers for Loongson
8618         builtins.  Include loongson.md.
8619         (MOVE64): Include Loongson vector modes.
8620         (SPLITF): Include Loongson vector modes.
8621         (HALFMODE): Handle Loongson vector modes.
8622         * config/mips/loongson.md: New.
8623         * config/mips/loongson.h: New.
8624         * config.gcc: Add loongson.h header for mips*-*-* targets.
8625         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
8626
8627 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
8628
8629         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
8630         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
8631         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
8632         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
8633         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
8634         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
8635         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
8636         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
8637         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
8638         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
8639         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
8640         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
8641         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
8642         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
8643         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
8644         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
8645         Remove use_fixproto=yes.
8646         (ia64*-*-hpux*): Remove comment about using fixproto.
8647         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
8648
8649 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8650
8651         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
8652         library rebuilds.
8653         * configure: Regenerate.
8654
8655 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
8656
8657         PR middle-end/36520
8658         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
8659         before evaluating it.
8660
8661 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
8662
8663         PR c/36507
8664         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
8665         nested inline functions.
8666         (start_decl, start_function): Don't invert DECL_EXTERNAL
8667         for nested inline functions.
8668
8669 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
8670
8671         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
8672         splits that must be made for correctness.
8673
8674 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
8675
8676         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
8677         (AVAIL_NON_MIPS16): Likewise.
8678         (mips_builtin_description): Replace target_flags with a predicate.
8679         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
8680         (dspr2_32): New availability predicates.
8681         (MIPS_BUILTIN): New macro.
8682         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
8683         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
8684         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
8685         Replace the TARGET_FLAGS parameters with AVAIL parameters.
8686         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
8687         (mips_dsp_32only_bdesc): Merge into...
8688         (mips_builtins): ...this new array.
8689         (mips_bdesc_map, mips_bdesc_arrays): Delete.
8690         (mips_init_builtins): Update after above changes.
8691         (mips_expand_builtin_1): Merge into...
8692         (mips_expand_builtin): ...here and update after above changes.
8693
8694 2008-06-12  Paul Brook  <paul@codesourcery.com>
8695
8696         * longlong.h (__arm__): Define count_leading_zeros.
8697         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
8698         (clzsi2, clzdi2): New functions.
8699         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
8700         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
8701         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
8702         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
8703         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
8704         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
8705         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
8706         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
8707         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
8708         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
8709
8710 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
8711
8712         * config/m68k/m68k.c (m68k_tune_flags): New.
8713         (override_options): Compute m68k_tune_flags.
8714         (MULL_COST, MULW_COST): Update for various variants of CFV2.
8715         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
8716
8717 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
8718
8719         PR middle-end/36506
8720         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
8721
8722 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8723
8724         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
8725         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
8726
8727 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
8728
8729         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
8730         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
8731
8732 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
8733
8734         PR middle-end/36506
8735         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
8736         reductions.
8737
8738 2008-06-12  Richard Guenther  <rguenther@suse.de>
8739
8740         PR tree-optimization/36345
8741         * tree-flow.h (struct ptr_info_def): Align escape_mask,
8742         add memory_tag_needed flag.
8743         (may_alias_p): Declare.
8744         * tree-ssa-alias.c (may_alias_p): Export.
8745         (set_initial_properties): Use memory_tag_needed flag.
8746         (update_reference_counts): Likewise.
8747         (reset_alias_info): Reset memory_tag_needed flag.
8748         (create_name_tags): Check memory_tag_needed flag.
8749         (dump_points_to_info_for): Dump it.
8750         * tree-ssa-structalias.c (struct variable_info): Remove
8751         directly_dereferenced flag.
8752         (new_var_info): Do not initialize it.
8753         (process_constraint_1): Do not set it.
8754         (update_alias_info): Set is_dereferenced flag.
8755         (set_uids_in_ptset): Use may_alias_p.
8756         (set_used_smts): Check memory_tag_needed flag.
8757         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
8758         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
8759         memory_tag_needed flag.
8760         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
8761         from broken design.
8762
8763 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
8764
8765         * config/i386/i386.c (ix86_compute_frame_layout): Disable
8766         red zone for w64 abi.
8767         (ix86_expand_prologue): Likewise.
8768         (ix86_force_to_memory): Likewise.
8769         (ix86_free_from_memory): Likewise.
8770
8771 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
8772
8773         PR target/36425
8774         * config/rs6000/rs6000.c (rs6000_override_options): Set
8775         rs6000_isel conditionally to the absence of comand line override.
8776         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
8777         Remove duplicate rs6000_isel setting.
8778         * config/rs6000/eabispe.h: Ditto.
8779
8780 2008-06-11  Richard Guenther  <rguenther@suse.de>
8781
8782         * alias.c (get_alias_set): Use the element alias-set for arrays.
8783         (record_component_aliases): For arrays and vectors do nothing.
8784         * c-common.c (strict_aliasing_warning): Handle the cases
8785         of alias set zero explicitly.
8786         * Makefile.in (dfp.o-warn): Add -Wno-error.
8787
8788 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
8789
8790         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
8791         tune_32 tune_64.
8792         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
8793         tune_32 tune_64 to supported_defaults.  Allow values not
8794         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
8795         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
8796         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
8797         with_cpu_64 to generic for 64-bit-supporting configurations, not
8798         with_cpu.  Remove FIXMEs.
8799         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
8800         --with-arch-64, --with-tune-32, --with-tune-64): Document.
8801         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
8802         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
8803         arch_32 and arch_64.
8804
8805 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
8806             Olivier Hainque  <hainque@adacore.com>
8807
8808         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
8809         Use DECL_SIZE_UNIT to retrieve the size of the field.
8810
8811 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
8812
8813         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
8814         with function calls after declarations.  Lay out
8815         neon_float_type_node before further use.
8816
8817 2008-06-11  Richard Guenther  <rguenther@suse.de>
8818
8819         * tree-flow.h (may_point_to_global_var): Declare.
8820         * tree-ssa-alias.c (may_point_to_global_var): New function.
8821         * tree-ssa-sink.c (is_hidden_global_store): Use it.
8822
8823 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
8824
8825         * configure.ac: Teach that fido supports .debug_line.
8826         * configure: Regenerate.
8827
8828 2008-06-10  Tom Tromey  <tromey@redhat.com>
8829
8830         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
8831         debug hook.
8832
8833 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
8834
8835         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
8836         (encode_decimal64, decode_decimal64, encode_decimal128,
8837         decode_decimal128): Reverse order of 32-bit parts of value if host
8838         and target endianness differ.
8839
8840 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
8841
8842         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
8843         Avoid division by 0.
8844         (tree_mod_pow2_value_transform): Likewise.
8845         (tree_ic_transform): Likewise.
8846         (tree_stringops_transform): Likewise.
8847         (tree_mod_subtract_transform): Likewise.
8848         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
8849         (copy_edges_for_bb): Likewise.
8850         (initialize_cfun): Likewise.
8851
8852 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
8853
8854         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
8855         nonmemory_operand. Add "N" operand constraint.
8856         (*btsi): Ditto.
8857         (*jcc_btdi_mask_rex64): New instruction and split pattern.
8858         (*jcc_btsi_mask): Ditto.
8859         (*jcc_btsi_mask_1): Ditto.
8860
8861 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
8862
8863         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
8864         TYPE_CANONICAL for copied element type.
8865
8866 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
8867
8868         PR target/36473
8869         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
8870         Add m_CORE2 and m_GENERIC.
8871         * config/i386/predicates.md (bt_comparison_operator): New predicate.
8872         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
8873         (*btsi): Ditto.
8874         (*jcc_btdi_rex64): New instruction and split pattern.
8875         (*jcc_btsi): Ditto.
8876         (*jcc_btsi_1): Ditto.
8877         (*btsq): Fix Intel asm dialect operand order.
8878         (*btrq): Ditto.
8879         (*btcq): Ditto.
8880
8881 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
8882
8883         PR middle-end/36447
8884         * simplify-rtx.c (simplify_subreg): Add check for shift count
8885         greater than size.
8886
8887 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
8888
8889         * doc/md.texi: Synchronize with later constraints.md change.
8890         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
8891         with a C implementation.
8892         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
8893         MFLO handling.
8894         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
8895         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
8896         when moving to and from MD_REGNUM.
8897         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
8898         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
8899         Handle byte and halfword moves.
8900         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
8901         separately.
8902         * config/mips/constraints.md (h): Turn into NO_REGS.
8903         (l, x): Update documentation.
8904         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
8905         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
8906         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
8907         (HILO): New mode iterator.
8908         (MOVE128): Add TI.
8909         (any_div): New code iterator.
8910         (u): Extend code attribute to div and udiv.
8911         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
8912         d_operand in the splitters.  Remove redundant CONST_INT checks.
8913         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
8914         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
8915         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
8916         accordingly, using normal moves instead of unspecs to move LO into
8917         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
8918         (<u>mulsidi3): Handle expansion in C code.
8919         (<u>mulsidi3_32bit_internal): Rename to...
8920         (<u>mulsidi3_32bit): ...this.
8921         (<u>mulsidi3_32bit_r4000): Fix insn separator.
8922         (*<u>mulsidi3_64bit): Rename to...
8923         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
8924         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
8925         to set LO and HI to the multiplication result.  Use a normal move
8926         for MFLO and an unspec for MFHI.
8927         (*<u>mulsidi3_64bit_parts): Replace with...
8928         (<u>mulsidi3_64bit_hilo): ...this new instruction.
8929         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
8930         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
8931         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
8932         instead of HI.  Split the instruction into a separate multiplication
8933         and MFHI if !TARGET_FIX_R4000.
8934         (<su>muldi3_highpart): Likewise.
8935         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
8936         and the "=h" clobber.
8937         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
8938         (<u>mulditi3): New expander.
8939         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
8940         (madsi): Remove "=h" clobber.
8941         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
8942         Force the modulus result to be a GPR and split the instruction into
8943         a division followed by an MFHI after reload.
8944         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
8945         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
8946         the MIPS16 HIGH define_split.
8947         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
8948         of acc<->gpr moves to "multi".
8949         (*movdi_64bit): Replace the single "x" alternative with
8950         alternatives for moving into and out of "a".
8951         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
8952         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
8953         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
8954         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
8955         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
8956         (movti): New expander.
8957         (*movti, *movti_mips16): New insns.
8958         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
8959         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
8960         (mthi<GPR:mode>_<HILO:mode>): Likewise.
8961         * config/mips/predicates.md (fpr_operand): Delete.
8962         (d_operand): New predicate.
8963
8964 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
8965
8966         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
8967         failure on some Bourne shells.
8968         (x86_64-*-*): Ditto.
8969
8970 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
8971
8972         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
8973
8974 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
8975
8976         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
8977         (sparc-sun-solaris2*): Likewise.
8978
8979 2008-06-09  Arnaud Charlet  <charlet@adacore.com
8980
8981         * doc/install.texi: Update requirements to build the Ada compiler.
8982
8983 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
8984
8985         * df-scan.c (struct df_scan_problem_data): Remove the
8986         mw_link_pool alloc pool.
8987         (df_scan_free_internal): Don't free it.
8988         (df_scan_alloc): Don't allocate it.
8989         * df.h (struct df_link): Update comment.
8990
8991 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
8992
8993         * except.h: Correct checks for when SJLJ exceptions must be used.
8994
8995 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8996
8997         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
8998         default.
8999
9000 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
9001
9002         PR tree-optimization/36218
9003         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
9004         configure for the build system.
9005         (BUILD_LDFLAGS): Define.
9006         * configure: Regenerate.
9007         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
9008
9009 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
9010
9011         PR target/36424
9012         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
9013         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
9014         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
9015
9016 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
9017
9018         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
9019
9020 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
9021
9022         * config.gcc (Obsolete configurations): Remove list of
9023         configurations.
9024         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
9025         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
9026         targets matched by those patterns.
9027         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
9028         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
9029         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
9030         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
9031         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
9032         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
9033         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
9034         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
9035         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
9036         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
9037         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
9038         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
9039         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
9040         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
9041         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
9042         Make code for Solaris 7 and greater unconditional for Solaris.
9043         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
9044         Remove --with-* handling.
9045         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
9046         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
9047         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
9048         LINK_OS_WINDISS_SPEC): Remove.
9049         * config/rs6000/sysv4.opt (mwindiss): Remove.
9050         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
9051         * configure: Regenerate.
9052         * doc/cpp.texi: Don't mention BeOS.
9053         * doc/extend.texi (interrupt): Don't mention MS1.
9054         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
9055         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
9056         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
9057         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
9058         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
9059         Remove.
9060         * doc/invoke.texi (MT Options): Remove.
9061         (-mwindiss): Remove.
9062         (CRIS Options): Remove cris-axis-aout references.
9063         (HPPA Options): Don't mention hppa1.1-*-pro.
9064         * doc/md.texi: (MorphoTech family): Remove.
9065         * libgcc2.c: Don't handle UWIN.
9066         * config/alpha/t-unicosmk: Remove.
9067         * config/alpha/unicosmk.h: Remove.
9068         * config/arm/kaos-arm.h: Remove.
9069         * config/arm/kaos-strongarm.h: Remove.
9070         * config/arm/strongarm-coff.h: Remove.
9071         * config/arm/strongarm-elf.h: Remove.
9072         * config/arm/strongarm-pe.h: Remove.
9073         * config/arm/t-strongarm-pe: Remove.
9074         * config/arm/t-xscale-coff: Remove.
9075         * config/arm/t-xscale-elf: Remove.
9076         * config/arm/xscale-coff.h: Remove.
9077         * config/arm/xscale-elf.h: Remove.
9078         * config/chorus.h: Remove.
9079         * config/cris/aout.h: Remove.
9080         * config/cris/aout.opt: Remove.
9081         * config/cris/t-aout: Remove.
9082         * config/i386/beos-elf.h: Remove.
9083         * config/i386/kaos-i386.h: Remove.
9084         * config/i386/ptx4-i.h: Remove.
9085         * config/i386/sco5.h: Remove.
9086         * config/i386/sco5.opt: Remove.
9087         * config/i386/sysv4-cpp.h: Remove.
9088         * config/i386/sysv5.h: Remove.
9089         * config/i386/t-beos: Remove.
9090         * config/i386/t-sco5: Remove.
9091         * config/i386/t-uwin: Remove.
9092         * config/i386/uwin.asm: Remove.
9093         * config/i386/uwin.h: Remove.
9094         * config/kaos.h: Remove.
9095         * config/mips/windiss.h: Remove.
9096         * config/mt: Remove directory.
9097         * config/pa/pa-osf.h: Remove.
9098         * config/pa/pa-pro-end.h: Remove.
9099         * config/pa/t-pro: Remove.
9100         * config/ptx4.h: Remove.
9101         * config/rs6000/beos.h: Remove.
9102         * config/rs6000/kaos-ppc.h: Remove.
9103         * config/rs6000/t-beos: Remove.
9104         * config/rs6000/windiss.h: Remove.
9105         * config/sh/kaos-sh.h: Remove.
9106         * config/sol2-6.h: Remove.
9107         * config/sparc/sol26-sld.h: Remove.
9108         * config/sparc/sysv4-only.h: Remove.
9109         * config/vax/bsd.h: Remove.
9110         * config/vax/t-memfuncs: Remove.
9111         * config/vax/ultrix.h: Remove.
9112         * config/vax/vaxv.h: Remove.
9113         * config/windiss.h: Remove.
9114
9115 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
9116
9117         PR rtl-optimization/36438
9118         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
9119         for vector shifts with constant scalar shift operands.
9120
9121 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
9122
9123         * doc/invoke.texi: Document -march=xlr.
9124         * config/mips/xlr.md: New file.
9125         * config/mips/mips.md: Include it.
9126         (cpu): Add "xlr".
9127         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
9128         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
9129         (mips_rtx_cost_data): Likewise.
9130
9131 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
9132
9133         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
9134         PRE_INC and PRE_DEC cases.
9135
9136 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
9137
9138         PR rtl-optimization/36419
9139         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
9140         the emitting jump insn.
9141
9142         PR target/36362
9143         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
9144         is not bool, boolify the whole *expr_p and convert to the desired type.
9145
9146 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
9147
9148         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
9149         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
9150         Add omp_private_outer_ref hook, add another argument to
9151         omp_clause_default_ctor hook.
9152         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
9153         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
9154         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
9155         hook_tree_tree_tree_tree_null.
9156         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
9157         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
9158         * hooks.c (hook_tree_tree_tree_tree_null): New function.
9159         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
9160         * tree.def (OMP_TASK): New tree code.
9161         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
9162         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
9163         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
9164         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
9165         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
9166         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
9167         OMP_CLAUSE_COLLAPSE_EXPR): Define.
9168         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
9169         (OMP_DIRECTIVE_P): Add OMP_TASK.
9170         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
9171         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
9172         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
9173         and OMP_CLAUSE_UNTIED entries.
9174         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
9175         num_ops to 2.
9176         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9177         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
9178         * tree-pretty-print.c (dump_omp_clause): Handle
9179         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
9180         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
9181         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
9182         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
9183         warning about unsigned iterators.  Change decl/init/cond/incr
9184         arguments to TREE_VECs, check arguments for all collapsed loops.
9185         (c_finish_omp_taskwait): New function.
9186         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
9187         ws_clauses.
9188         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
9189         default_function_array_conversion on init.  Add par_clauses argument.
9190         If decl is present in parallel's lastprivate clause, change it to
9191         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
9192         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
9193         collapse count in clauses.
9194         (c_parser_omp_for, c_parser_omp_parallel): Adjust
9195         c_parser_omp_for_loop callers.
9196         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
9197         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
9198         (c_parser_omp_clause_name): Handle collapse and untied clauses.
9199         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
9200         functions.
9201         (c_parser_omp_clause_schedule): Handle schedule(auto).
9202         Include correct location in the error message.
9203         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
9204         and PRAGMA_OMP_CLAUSE_UNTIED.
9205         (OMP_TASK_CLAUSE_MASK): Define.
9206         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
9207         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
9208         * tree-nested.c (convert_nonlocal_omp_clauses,
9209         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
9210         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
9211         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9212         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
9213         OMP_CLAUSE_DECL.
9214         (conver_nonlocal_reference, convert_local_reference,
9215         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
9216         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
9217         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
9218         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
9219         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
9220         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
9221         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
9222         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
9223         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
9224         OMP_CLAUSE_UNTIED.
9225         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
9226         * c-common.h (c_finish_omp_taskwait): New prototype.
9227         * gimple-low.c (lower_stmt): Handle OMP_TASK.
9228         * tree-parloops.c (create_parallel_loop): Create 1 entry
9229         vectors for OMP_FOR_{INIT,COND,INCR}.
9230         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
9231         (make_edges): Handle OMP_TASK.
9232         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
9233         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9234         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
9235         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
9236         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
9237         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
9238         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
9239         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
9240         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
9241         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
9242         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
9243         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
9244         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
9245         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
9246         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
9247         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
9248         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
9249         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
9250         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
9251         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
9252         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
9253         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
9254         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
9255         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
9256         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
9257         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
9258         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
9259         original iterator is present in lastprivate clause or if
9260         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
9261         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9262         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
9263         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
9264         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
9265         if it is set, lookup var in outer contexts too.  Handle
9266         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
9267         to be implicitly determined firstprivate for task regions.
9268         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
9269         if it is set, lookup var in outer contexts too.  Set
9270         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
9271         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
9272         OMP_CLAUSE_UNTIED.  Take region_type as last argument
9273         instead of in_parallel and in_combined_parallel.
9274         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
9275         Adjust callers.
9276         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
9277         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
9278         (new_omp_context): Set default_kind to
9279         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
9280         (omp_region_type): New enum.
9281         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
9282         fields, add region_type.
9283         (new_omp_context): Take region_type as argument instead of is_parallel
9284         and is_combined_parallel.
9285         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
9286         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
9287         ctx->is_combined_parallel checks.
9288         (gimplify_omp_task): New function.
9289         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
9290         OMP_CLAUSE_UNTIED.
9291         * omp-low.c (extract_omp_for_data): Use schedule(static)
9292         for schedule(auto).  Handle pointer and unsigned iterators.
9293         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
9294         Add loops argument.  Extract data for collapsed OMP_FOR loops.
9295         (expand_parallel_call): Assert sched_kind isn't auto,
9296         map runtime schedule to index 3.
9297         (struct omp_for_data_loop): New type.
9298         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
9299         Add loop, loops, collapse and iter_type fields.
9300         (workshare_safe_to_combine_p): Disallow combined for if
9301         iter_type is unsigned long long.  Don't combine collapse > 1 loops
9302         unless all bounds and steps are constant.  Adjust extract_omp_for_data
9303         caller.
9304         (expand_omp_for_generic): Handle pointer, unsigned and long long
9305         iterators.  Handle collapsed OMP_FOR loops.  Adjust
9306         for struct omp_for_data changes.  If libgomp function doesn't return
9307         boolean_type_node, add comparison of the return value with 0.
9308         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
9309         pointer, unsigned and long long iterators.  Adjust for struct
9310         omp_for_data changes.
9311         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
9312         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
9313         unsigned long long.  Allocate loops array, pass it to
9314         extract_omp_for_data.  For collapse > 1 loops use always
9315         expand_omp_for_generic.
9316         (omp_context): Add sfield_map and srecord_type fields.
9317         (is_task_ctx, lookup_sfield): New functions.
9318         (use_pointer_for_field): Use is_task_ctx helper.  Change first
9319         argument's type from const_tree to tree.  Clarify comment.
9320         In OMP_TASK disallow copy-in/out sharing.
9321         (build_sender_ref): Call lookup_sfield instead of lookup_field.
9322         (install_var_field): Add mask argument.  Populate both record_type
9323         and srecord_type if needed.
9324         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
9325         in srecord_type.
9326         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
9327         and DECL_FIELD_OFFSET.
9328         (scan_sharing_clauses): Adjust install_var_field callers.  For
9329         firstprivate clauses on explicit tasks allocate the var by value in
9330         record_type unconditionally, rather than by reference.
9331         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
9332         Use is_taskreg_ctx instead of is_parallel_ctx.
9333         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
9334         (create_omp_child_function_name): Add task_copy argument, use
9335         *_omp_cpyfn* names if it is true.
9336         (create_omp_child_function): Add task_copy argument, if true create
9337         *_omp_cpyfn* helper function.
9338         (scan_omp_parallel): Adjust create_omp_child_function callers.
9339         Rename parallel_nesting_level to taskreg_nesting_level.
9340         (scan_omp_task): New function.
9341         (lower_rec_input_clauses): Don't run constructors for firstprivate
9342         explicit task vars which are initialized by *_omp_cpyfn*.
9343         Pass outer var ref to omp_clause_default_ctor hook if
9344         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
9345         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
9346         OMP_CLAUSE_REDUCTION_INIT.
9347         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
9348         avoid duplicate setting of fields.  Handle
9349         OMP_CLAUSE_PRIVATE_OUTER_REF.
9350         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
9351         copy-out if TREE_READONLY, only copy-in.
9352         (expand_task_copyfn): New function.
9353         (expand_task_call): New function.
9354         (struct omp_taskcopy_context): New type.
9355         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
9356         New functions.
9357         (lower_omp_parallel): Rename to...
9358         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
9359         Call create_task_copyfn if srecord_type is needed.  Adjust
9360         sender_decl type.
9361         (task_shared_vars): New variable.
9362         (check_omp_nesting_restrictions): Warn if work-sharing,
9363         barrier, master or ordered region is closely nested inside OMP_TASK.
9364         Add warnings for barrier if closely nested inside of work-sharing,
9365         ordered, or master region.
9366         (scan_omp_1): Call check_omp_nesting_restrictions even for
9367         GOMP_barrier calls.  Rename parallel_nesting_level to
9368         taskreg_nesting_level.  Handle OMP_TASK.
9369         (lower_lastprivate_clauses): Even if some lastprivate is found on a
9370         work-sharing construct, continue looking for them on parent parallel
9371         construct.
9372         (lower_omp_for_lastprivate): Add lastprivate clauses
9373         to the beginning of dlist rather than end.  Adjust for struct
9374         omp_for_data changes.
9375         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
9376         not after it.  Handle collapsed OMP_FOR loops, adjust for
9377         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
9378         (get_ws_args_for): Adjust extract_omp_for_data caller.
9379         (scan_omp_for): Handle collapsed OMP_FOR
9380         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
9381         (lower_omp_single_simple): If libgomp function doesn't return
9382         boolean_type_node, add comparison of the return value with 0.
9383         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
9384         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
9385         (parallel_nesting_level): Rename to...
9386         (taskreg_nesting_level): ... this.
9387         (is_taskreg_ctx): New function.
9388         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
9389         of is_parallel_ctx.
9390         (execute_lower_omp): Rename parallel_nesting_level to
9391         taskreg_nesting_level.
9392         (expand_omp_parallel): Rename to...
9393         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
9394         Call omp_task_call for OMP_TASK regions.
9395         (expand_omp): Adjust caller, handle OMP_TASK.
9396         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
9397
9398         * bitmap.c (bitmap_default_obstack_depth): New variable.
9399         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
9400         if argument is NULL and bitmap_default_obstack is already initialized.
9401         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
9402         at the end.
9403         * matrix-reorg.c (matrix_reorg): Likewise.
9404
9405 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
9406
9407         * config/i386/i386.md (*indirect_jump): Macroize using P
9408         mode iterator.  Remove !TARGET_64BIT from insn constraints.
9409         (*tablejump_1): Ditto.
9410         (*indirect_jump_rex64): Remove insn pattern.
9411         (*tablejump_1_rex64): Ditto.
9412         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
9413         and eh_return_si insn patterns.
9414
9415 2008-06-06  Richard Guenther  <rguenther@suse.de>
9416
9417         * tree-ssa-structalias.c (merge_smts_into): Remove.
9418         (find_what_p_points_to): Do not bother to compute the
9419         points-to set for pt_anything pointers.
9420         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
9421         for pt_anything pointers is ok.
9422
9423 2008-06-06  Jan Hubicka  <jh@suse.cz>
9424
9425         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
9426
9427 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9428
9429         * cgraph.c: Fix typos in comments.
9430         (cgraph_availability_names): Fix string typo.
9431         * fold-const.c: Fix typos in comments.
9432         (fold_binary): Fix typo in warning.
9433         * genautomata.c: Fix typos in comments.
9434         (check_presence_pattern_sets): Fix typo in local variable.
9435         (output_description): Fix typo in output.
9436         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
9437         * hwint.h: Likewise.
9438         * matrix-reorg.c (check_allocation_function): Likewise.
9439         * omega.c (smooth_weird_equations): Likewise.
9440         * auto-inc-dec.c: Fix typos in comments.
9441         * bb-reorder.c: Likewise.
9442         * builtins.c: Likewise.
9443         * c-common.c: Likewise.
9444         * c-cppbuiltin.c: Likewise.
9445         * c-parser.c: Likewise.
9446         * c-pretty-print.c: Likewise.
9447         * cfgcleanup.c: Likewise.
9448         * cfgexpand.c: Likewise.
9449         * cfghooks.c: Likewise.
9450         * cfglayout.c: Likewise.
9451         * cfgloopmanip.c: Likewise.
9452         * cgraphunit.c: Likewise.
9453         * coverage.c: Likewise.
9454         * dbxout.c: Likewise.
9455         * df-byte-scan.c: Likewise.
9456         * df-core.c: Likewise.
9457         * df-problems.c: Likewise.
9458         * df-scan.c: Likewise.
9459         * dfp.c: Likewise.
9460         * dominance.c: Likewise.
9461         * domwalk.c: Likewise.
9462         * dse.c: Likewise.
9463         * dwarf2out.c: Likewise.
9464         * emit-rtl.c: Likewise.
9465         * et-forest.c: Likewise.
9466         * function.c: Likewise.
9467         * function.h: Likewise.
9468         * gcc.c: Likewise.
9469         * gcov-io.c: Likewise.
9470         * gcov.c: Likewise.
9471         * gcse.c: Likewise.
9472         * genattrtab.c: Likewise.
9473         * ggc-page.c: Likewise.
9474         * gimplify.c: Likewise.
9475         * gthr-lynx.h: Likewise.
9476         * haifa-sched.c: Likewise.
9477         * ipa-cp.c: Likewise.
9478         * ipa-inline.c: Likewise.
9479         * ipa-prop.h: Likewise.
9480         * ipa-pure-const.c: Likewise.
9481         * ipa-struct-reorg.c: Likewise.
9482         * ipa-struct-reorg.h: Likewise.
9483         * ipa-type-escape.c: Likewise.
9484         * ipa.c: Likewise.
9485         * loop-doloop.c: Likewise.
9486         * mips-tfile.c: Likewise.
9487         * mkmap-flat.awk: Likewise.
9488         * mkmap-symver.awk: Likewise.
9489         * modulo-sched.c: Likewise.
9490         * omp-low.c: Likewise.
9491         * optabs.c: Likewise.
9492         * optabs.h: Likewise.
9493         * opts.c: Likewise.
9494         * passes.c: Likewise.
9495         * postreload-gcse.c: Likewise.
9496         * postreload.c: Likewise.
9497         * predict.c: Likewise.
9498         * pretty-print.h: Likewise.
9499         * profile.c: Likewise.
9500         * protoize.c: Likewise.
9501         * ra-conflict.c: Likewise.
9502         * real.c: Likewise.
9503         * recog.c: Likewise.
9504         * regclass.c: Likewise.
9505         * regs.h: Likewise.
9506         * reload.c: Likewise.
9507         * rtl-error.c: Likewise.
9508         * rtlanal.c: Likewise.
9509         * scan.h: Likewise.
9510         * sched-rgn.c: Likewise.
9511         * see.c: Likewise.
9512         * stmt.c: Likewise.
9513         * target.h: Likewise.
9514         * tree-dfa.c: Likewise.
9515         * tree-eh.c: Likewise.
9516         * tree-flow-inline.h: Likewise.
9517         * tree-inline.c: Likewise.
9518         * tree-into-ssa.c: Likewise.
9519         * tree-loop-distribution.c: Likewise.
9520         * tree-nested.c: Likewise.
9521         * tree-parloops.c: Likewise.
9522         * tree-pass.h: Likewise.
9523         * tree-pretty-print.c: Likewise.
9524         * tree-profile.c: Likewise.
9525         * tree-scalar-evolution.c: Likewise.
9526         * tree-sra.c: Likewise.
9527         * tree-ssa-alias-warnings.c: Likewise.
9528         * tree-ssa-ccp.c: Likewise.
9529         * tree-ssa-coalesce.c: Likewise.
9530         * tree-ssa-dom.c: Likewise.
9531         * tree-ssa-dse.c: Likewise.
9532         * tree-ssa-forwprop.c: Likewise.
9533         * tree-ssa-live.c: Likewise.
9534         * tree-ssa-live.h: Likewise.
9535         * tree-ssa-loop-im.c: Likewise.
9536         * tree-ssa-loop-ivopts.c: Likewise.
9537         * tree-ssa-loop-niter.c: Likewise.
9538         * tree-ssa-loop-prefetch.c: Likewise.
9539         * tree-ssa-phiopt.c: Likewise.
9540         * tree-ssa-phiprop.c: Likewise.
9541         * tree-ssa-sccvn.c: Likewise.
9542         * tree-ssa-ter.c: Likewise.
9543         * tree-ssa-threadupdate.c: Likewise.
9544         * tree-ssa.c: Likewise.
9545         * tree-vect-analyze.c: Likewise.
9546         * tree-vect-transform.c: Likewise.
9547         * tree-vectorizer.c: Likewise.
9548         * tree-vn.c: Likewise.
9549         * tree-vrp.c: Likewise.
9550         * tree.c: Likewise.
9551         * tree.def: Likewise.
9552         * tree.h: Likewise.
9553         * unwind-dw2-fde.c: Likewise.
9554         * unwind.inc: Likewise.
9555         * value-prof.c: Likewise.
9556         * vmsdbgout.c: Likewise.
9557
9558 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
9559
9560         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
9561         always place FP constants in the TOC for TARGET_POWERPC64.
9562         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
9563
9564 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
9565
9566         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
9567         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
9568         enable for TARGET_E500_DOUBLE.
9569         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
9570         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
9571         floating-point modes like integer modes for E500 double.
9572         (rs6000_legitimate_offset_address_p): Likewise.
9573         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
9574         addressing for DDmode for E500 double.
9575         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
9576         modes as using 64-bits of registers for E500 double.
9577         (spe_build_register_parallel): Do not handle DDmode or TDmode.
9578         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
9579         specially for E500 double.
9580         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
9581         TDmode for E500 double.
9582         (rs6000_gimplify_va_arg): Only handle SDmode in registers
9583         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
9584         (rs6000_split_multireg_move): Do not handle TDmode specially for
9585         E500 double.
9586         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
9587         using 64-bit registers for E500 double.
9588         (emit_frame_save): Do not handle DDmode specially for E500 double.
9589         (gen_frame_mem_offset): Likewise.
9590         (rs6000_function_value): Do not call spe_build_register_parallel
9591         for DDmode or TDmode.
9592         (rs6000_libcall_value): Likewise.
9593         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
9594         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
9595         for E500 double.
9596
9597 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
9598
9599         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
9600         in comments.
9601
9602 2008-06-04  Junjie Gu <jgu@tensilica.com>
9603
9604         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
9605         comparison for frame pointers.
9606
9607 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
9608
9609         PR target/27386
9610         * config/avr/avr.h (PUSH_ROUNDING): Remove.
9611
9612 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
9613
9614         PR target/30243
9615         * builtins.c (expand_builtin_signbit): Don't take lowpart when
9616         register is already smaller or equal to required mode.
9617
9618 2008-06-04  Xinliang David Li  <davidxl@google.com>
9619
9620         * tree-call-cdce.c: New file.
9621         (cond_dead_built_in_calls): New static variable.
9622         (input_domain): New struct.
9623         (check_pow): New function.
9624         (check_builtin_call): Ditto.
9625         (check_target_format): Ditto.
9626         (is_call_dce_candidate): Ditto.
9627         (gen_one_condition): Ditto.
9628         (gen_conditions_for_domain): Ditto.
9629         (get_domain): Ditto.
9630         (gen_conditions_for_pow_cst_base): Ditto.
9631         (gen_conditions_for_pow_int_base): Ditto.
9632         (gen_conditions_for_pow): Ditto.
9633         (get_no_error_domain): Ditto.
9634         (gen_shrink_wrap_conditions): Ditto.
9635         (shrink_wrap_one_built_in_call): Ditto.
9636         (shink_wrap_conditional_dead_built_in_calls): Ditto.
9637         (tree_call_cdce): Ditto.
9638         (gate_call_cdce): Ditto.
9639         (pass_call_cdce): New gimple pass.
9640         * passes.c: (init_optimization_passes): New pass.
9641         * tree-pass.h: New pass declaration.
9642         * opts.c (decode_options): New flag setting.
9643         * common.opt: Add -ftree-builtin-call-dce flag.
9644         * Makefile.in: Add new source file.
9645         * tempvar.def: New tv_id.
9646         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
9647
9648 2008-06-04  Richard Guenther  <rguenther@suse.de>
9649
9650         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
9651         (is_call_clobbered): Always check var_ann->call_clobbered.
9652         (mark_call_clobbered): Always set var_ann->call_clobbered.
9653         (clear_call_clobbered): Always clear var_ann->call_clobbered.
9654         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
9655         (reset_alias_info): Clear call clobbering info on MTAGs and
9656         globals as well.
9657         (set_pt_anything): Set pt_global_mem.
9658         (create_tag_raw): Adjust comment.
9659         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
9660
9661 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
9662             Maxim Kuvyrkov  <maxim@codesourcery.com>
9663
9664         * config/m68k/m68k.opt (mxgot): New option.
9665         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
9666         (m68k_output_addr_const_extra): New.
9667         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
9668         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
9669         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
9670         * doc/invoke.texi (M680x0 Options): Document -mxgot.
9671
9672 2008-06-04  Richard Guenther  <rguenther@suse.de>
9673
9674         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
9675         negative or non-representable offsets.
9676
9677 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
9678
9679         * config/i386/i386.c (ix86_gen_leave): New.
9680         (ix86_gen_pop1): Likewise.
9681         (ix86_gen_add3): Likewise.
9682         (ix86_gen_sub3): Likewise.
9683         (ix86_gen_sub3_carry): Likewise.
9684         (ix86_gen_one_cmpl2): Likewise.
9685         (ix86_gen_monitor): Likewise.
9686         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
9687         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
9688         ix86_gen_one_cmpl2 and ix86_gen_monitor.
9689         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
9690         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
9691         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
9692         (ix86_expand_epilogue): Updated.
9693         (print_operand): Handle integer register operand for 'z'.
9694         (ix86_expand_strlensi_unroll_1): Likewise.
9695         (ix86_expand_strlen): Likewise.
9696         (ix86_expand_builtin): Likewise.
9697         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
9698         mov{q}/mov{l} and add{q}/add{l}.
9699
9700 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
9701
9702         * config/i386/i386.md (P): New mode iterator.
9703         (SFmode push_operand splitter): Macroize DImode and SImode pushes
9704         using P mode iterator.
9705         (DFmode push_operand splitter): Ditto.
9706         (XFmode push_operand splitter): Ditto.
9707         (DFmode float_extend SFmode push_operand splitter): Ditto.
9708         (XFmode float_extend SFmode push_operand splitter): Do not generate
9709         SImode pushes for 64bit target.  Macroize Dimode and SImode
9710         pushes using P mode iterator.
9711         (XFmode float_extend DFmode push_operand splitter): Ditto.
9712
9713 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
9714
9715         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
9716         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
9717         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
9718         return type to int.
9719         (ix86_call_abi_override): Remove check for call_used_regs.
9720
9721 2008-06-03  Richard Guenther  <rguenther@suse.de>
9722
9723         * tree-ssa-structalias.c (find_func_aliases): Add constraints
9724         for the lhs of calls if the return type contains pointers.
9725
9726 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
9727
9728         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
9729         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
9730         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
9731         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
9732         of cfun and DEFAULT_ABI to deceide abi mode.
9733         (DEFAULT_ABI): New.
9734         (REG_PARM_STACK_SPACE): Removed.
9735         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
9736         (STACK_BOUNDARY): Use default target to deceide stack boundary.
9737         * config/i386/i386-protos.h (ix86_cfun_abi): New.
9738         (ix86_function_abi): Likewise.
9739         (ix86_function_type_abi): Likewise.
9740         (ix86_call_abi_override): Likewise.
9741         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
9742         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
9743         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
9744         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
9745         specific defines.
9746         (X86_64_REGPARM_MAX): New.
9747         (X86_64_SSE_REGPARM_MAX): New.
9748         (X64_REGPARM_MAX): New.
9749         (X64_SSE_REGPARM_MAX): New.
9750         (X86_32_REGPARM_MAX): New.
9751         (X86_32_SSE_REGPARM_MAX): New.
9752         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
9753         (ix86_function_regparm): Handle user calling abi.
9754         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
9755         by DEFAULT_ABI versus SYSV_ABI check.
9756         (ix86_reg_parm_stack_space): New.
9757         (ix86_function_type_abi): New.
9758         (ix86_call_abi_override): New.
9759         (ix86_function_abi): New.
9760         (ix86_cfun_abi): New.
9761         (init_cumulative_args): Call abi specific initialization.
9762         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
9763         (function_arg_64): Extend SSE_REGPARM_MAX check.
9764         (function_arg (): Remove TARGET_64BIT_MS_ABI.
9765         (ix86_pass_by_reference): Likewise.
9766         (ix86_function_value_regno_p): Likewise.
9767         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
9768         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
9769         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
9770         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
9771         (setup_incoming_varargs_64): Adjust regparm for call abi.
9772         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
9773         (ix86_va_start): Likewise.
9774         (ix86_gimplify_va_arg): Likewise.
9775         (ix86_expand_prologue): Likewise.
9776         (output_pic_addr_const): Likewise.
9777         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
9778         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
9779         (x86_output_mi_thunk): Likewise.
9780         (x86_function_profiler): Likewise.
9781         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
9782         (SYSV_ABI, MS_ABI): New constants.
9783         (DEFAULT_ABI): New.
9784         (init_regs): Add prototype of function in regclass.c file.
9785         (OVERRIDE_ABI_FORMAT): New.
9786         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
9787         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
9788         (OUTGOING_REG_PARM_STACK_SPACE): New.
9789         (ix86_reg_parm_stack_space): New prototype.
9790         (CUMULATIVE_ARGS): Add call_abi member.
9791         (machine_function): Add call_abi member.
9792         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
9793         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
9794
9795 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
9796
9797         PR target/34879
9798         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
9799         (avr_builtin_setjmp_frame_value): New function.
9800         * config/avr/avr.md (nonlocal_goto_receiver): Define.
9801         (nonlocal_goto): Define.
9802
9803 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
9804
9805         * config/mips/mips.c (mips_emit_loadgp): Return early if
9806         there is nothing do to, otherwise emit a blockage if
9807         !TARGET_EXPLICIT_RELOCS || crtl->profile.
9808         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
9809
9810 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9811
9812         * configure.ac: Drop unneeded backslash ending up in config.in.
9813         * acinclude.m4: Likewise.
9814         * config.in: Regenerate.
9815
9816 2008-05-26  Jan Hubicka  <jh@suse.cz>
9817
9818         * predict.c (maybe_hot_frequency_p): Break out of...
9819         (maybe_hot_bb_p): ... here.
9820         (maybe_hot_edge_p): New.
9821         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
9822         * basic-block.h (maybe_hot_edge_p): Declare.
9823
9824 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
9825
9826         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
9827         (*cmpfp_<mode>_cc): Ditto.
9828         (*fp_jcc_8<mode>_387): Ditto.
9829         (*fop_<MODEF:mode>_2_i387): Ditto.
9830         (*fop_<MODEF:mode>_3_i387): Ditto.
9831         (*fop_xf_2_i387): Ditto.
9832         (*fop_xf_3_i387): Ditto.
9833
9834 2008-06-02  Tomas Bily  <tbily@suse.cz>
9835
9836         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
9837
9838 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
9839
9840         * config/mips/mips.c (mips_valid_offset_p): New function.
9841         (mips_valid_lo_sum_p): Likewise.
9842         (mips_classify_address): Use them.
9843         (mips_force_address): New function.
9844         (mips_legitimize_address): Use it.
9845         * config/mips/mips.md (MOVE128): New mode iterator.
9846         (movtf): Require TARGET_64BIT.  Remove empty strings.
9847         (*movtf_internal): Rename to...
9848         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
9849         of "R" and use {,fp}{load,store} attributes instead of "multi".
9850         Use a separate define_split.
9851         (*movtf_mips16): New pattern.
9852
9853 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
9854
9855         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
9856         * config/mips/mips.c (mips_expand_before_return): New function.
9857         (mips_expand_epilogue): Call it.
9858         * config/mips/mips.md (return): Turn into a define_expand.
9859         (*return): New insn.
9860
9861 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
9862
9863         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
9864         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
9865         functions.  Do not emit uses and clobbers of CONCATs; individually
9866         use and clobber their operands.
9867         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
9868         gen_clobber, emit_use and gen_use.
9869         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
9870         (expand_builtin_return): Likewise.
9871         * cfgbuild.c (count_basic_blocks): Likewise.
9872         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
9873         * explow.c (emit_stack_restore): Likewise.
9874         * expmed.c (extract_bit_field_1): Likewise.
9875         * expr.c (convert_move, emit_move_complex_parts): Likewise.
9876         (emit_move_multi_word, store_constructor): Likewise.
9877         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
9878         (thread_prologue_and_epilogue_insns): Likewise.
9879         * lower-subreg.c (resolve_simple_move): Likewise.
9880         * optabs.c (widen_operand, expand_binop): Likewise.
9881         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
9882         * reload.c (find_reloads): Likewise.
9883         * reload1.c (eliminate_regs_in_insn): Likewise.
9884         * stmt.c (expand_nl_goto_receiver): Likewise.
9885         * config/alpha/alpha.md (builtin_longjmp): Likewise.
9886         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
9887         * config/arm/arm.c (arm_load_pic_register): Likewise.
9888         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
9889         * config/arm/arm.md (untyped_return): Likewise.
9890         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
9891         * config/avr/avr.c (expand_prologue): Likewise.
9892         * config/bfin/bfin.c (do_unlink): Likewise.
9893         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
9894         * config/cris/cris.c (cris_expand_prologue): Likewise.
9895         * config/darwin.c (machopic_indirect_data_reference): Likewise.
9896         (machopic_legitimize_pic_address): Likewise.
9897         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
9898         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
9899         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
9900         (ix86_expand_convert_uns_didf_sse): Likewise.
9901         (ix86_expand_vector_init_general): Likewise.
9902         * config/ia64/ia64.md (eh_epilogue): Likewise.
9903         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
9904         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
9905         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
9906         (config/iq2000/iq2000.c): Likewise.
9907         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
9908         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
9909         (builtin_longjmp): Likewise.
9910         * config/mn10300/mn10300.md (call, call_value): Likewise.
9911         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
9912         * config/pdp11/pdp11.md (abshi2): Likewise.
9913         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
9914         * config/s390/s390.c (s390_emit_prologue): Likewise.
9915         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
9916         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
9917         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
9918         * config/sh/sh.c (prepare_move_operands): Likewise.
9919         (output_stack_adjust, sh_expand_epilogue): Likewise.
9920         (sh_set_return_address, sh_expand_t_scc): Likewise.
9921         * config/sparc/sparc.c (load_pic_register): Likewise.
9922         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
9923         * config/spu/spu.c (spu_expand_epilogue): Likewise.
9924         * config/v850/v850.c (expand_epilogue): Likewise.
9925
9926 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
9927
9928         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
9929         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
9930         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
9931         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
9932         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
9933         stack pointer register.
9934         (output_movhi): Remove code for interrupt specific writing to the
9935         stack pointer register.
9936
9937 2008-05-31  Richard Guenther  <rguenther@suse.de>
9938
9939         PR tree-optimization/34244
9940         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
9941         (tree_expr_nonzero_warnv_p): Likewise.
9942         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
9943         ssa_name_nonnegative_p.
9944         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
9945         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
9946         not tree_expr_nonzero_warnv_p.
9947
9948         PR tree-optimization/36262
9949         Revert
9950         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
9951
9952         PR tree-optimization/34244
9953         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
9954         (record_numbers_of_iterations): New function.
9955         (execute_vrp): Cache the numbers of iterations of loops.
9956         * tree-scalar-evolution.c (scev_reset_except_niters):
9957         New function.
9958         (scev_reset): Use scev_reset_except_niters.
9959         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
9960
9961 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9962
9963         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
9964         __WORKAROUND_RETS when appropriate.
9965
9966 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
9967
9968         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
9969         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
9970         mode iterator.
9971         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
9972         *fop_df_comm_sse insn patterns using MODEF mode iterator.
9973         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
9974         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
9975         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
9976         *fop_df_1_mixed insn patterns using MODEF mode iterator.
9977         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
9978         *fop_df_1_sse insn patterns using MODEF mode iterator.
9979         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
9980         *fop_df_1_i387 insn patterns using MODEF mode iterator.
9981         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
9982         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
9983         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
9984         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
9985         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
9986         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
9987         (*fop_xf_4_i387): Use <MODE> for mode attribute.
9988         (*fop_xf_5_i387): Ditto.
9989         (*fop_xf_6_i387): Ditto.
9990
9991 2008-05-30  Richard Guenther  <rguenther@suse.de>
9992
9993         * builtins.c (build_string_literal): Avoid generating
9994         a non-gimple_val result.
9995
9996 2008-05-30  DJ Delorie  <dj@redhat.com>
9997
9998         * exec-tool.in: Use an environment variable (private) instead of a
9999         file (shared) as a semaphore, so as to not break parallel builds.
10000
10001 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
10002
10003         * optabs.c (maybe_encapsulate_block): Remove.
10004         (emit_libcall_block): Adjust accordingly.
10005         * optabs.h (maybe_encapsulate_block): Remove prototype.
10006
10007         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
10008         Don't use maybe_encapsulate_block.
10009
10010 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
10011
10012         * config/rs6000/rs6000.c (rs6000_legitimize_address,
10013         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
10014         rtx is a SYMBOL_REF before calling get_pool_constant.
10015
10016 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
10017
10018         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
10019
10020 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
10021
10022         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
10023         rather than OS names to choose INO_T_EQ definition.
10024         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
10025         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
10026
10027 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
10028
10029         PR target/36348
10030         * config/darwin-f.c: New.
10031         * config/t-darwin: Added rule to build darwin-f.o.
10032         * config.gcc: Defined new variable, fortran_target_objs.
10033         (*-*-darwin*): Set fortran_target_objs.
10034         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
10035         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
10036         * configure: Regenerated.
10037
10038 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
10039
10040         PR target/35771
10041         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
10042         canonical type if needed.
10043
10044 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
10045
10046         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
10047
10048 2008-05-29  Richard Guenther  <rguenther@suse.de>
10049
10050         PR tree-optimization/36343
10051         PR tree-optimization/36346
10052         PR tree-optimization/36347
10053         * tree-flow.h (clobber_what_p_points_to): Declare.
10054         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
10055         pointed-to variable is dereferenced is irrelevant to whether
10056         the pointer can access the pointed-to variable.
10057         (clobber_what_p_points_to): New function.
10058         * tree-ssa-alias.c (set_initial_properties): Use it.
10059         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
10060         call clobber check for NMTs.
10061
10062 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
10063
10064         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
10065         for printing gcov_type.
10066
10067 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
10068
10069         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
10070         and the eh region information.
10071         * value-prof.c (gimple_move_stmt_histograms): New function.
10072         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
10073
10074 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
10075
10076         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
10077
10078 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
10079
10080         * value-prof.c (tree_ic_transform): Print counts.
10081         * tree-profile.c (tree_gen_ic_func_profiler):
10082         Clear __gcov_indreict_call_callee variable to avoid misattribution
10083         of the profile.
10084
10085 2008-05-28  Rafael Espindola  <espindola@google.com>
10086
10087         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
10088         invalid sharing.
10089
10090 2008-05-28  Richard Guenther  <rguenther@suse.de>
10091
10092         PR tree-optimization/36339
10093         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
10094         and clobbering code out of the loop.
10095
10096 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
10097
10098         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
10099         letters defined.
10100
10101         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
10102         s390_contiguous_bitmask_p, s390_symref_operand_p,
10103         s390_check_symref_alignment, s390_reload_larl_operand,
10104         s390_reload_symref_address): New functions.
10105         (s390_branch_condition_mnemonic): Support compare and branch
10106         instructions.
10107         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
10108         and 'W' constraints.
10109         (s390_secondary_reload): Add secondary reloads for unaligned
10110         symbol refs or symbol refs to floating point or QI/TI mode
10111         integer values.
10112         (legitimate_address_p): Accept symbol references as addresses.
10113         (s390_expand_insv): Use rotate and insert selected bits
10114         instruction for insv when building for z10.
10115         (print_operand_address): Handle symbol ref addresses.
10116         (print_operand): Output modifier 'c' added for signed byte values.
10117         (s390_encode_section_info): Mark symbol refs with
10118         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
10119
10120         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
10121         (length attribute): RRF, RRR have 4 byte length.
10122         (FPALL, INTALL): New mode iterators added.
10123         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
10124         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
10125         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
10126         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
10127         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
10128         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
10129         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
10130         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
10131         instructions.
10132         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
10133         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
10134         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
10135         reload<INTALL:mode><P:mode>_toreg_z10,
10136         reload<FPALL:mode><P:mode>_tomem_z10,
10137         reload<FPALL:mode><P:mode>_toreg_z10,
10138         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
10139         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
10140         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
10141         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
10142         definition.
10143         (movmem, clrmem, cmpmem): New splitters added.
10144
10145         * config/s390/predicates.md (larl_operand): Use
10146         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
10147         SYMBOL_REF_ALIGN1_P.
10148         (s390_signed_integer_comparison,
10149         s390_unsigned_integer_comparison): New predicates.
10150
10151         * config/s390/s390-protos.h (s390_check_symref_alignment,
10152         s390_contiguous_bitmask_p, s390_reload_larl_operand,
10153         s390_reload_symref_address,
10154         s390_compare_and_branch_condition_mask): Prototypes added.
10155
10156         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
10157         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
10158         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
10159
10160 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
10161
10162         * config/s390/s390.c (z10_cost): New cost function for z10.
10163         (s390_handle_arch_option, override_options): Support -march=z10 switch.
10164         (s390_issue_rate): Adjust issue rate for z10.
10165         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
10166         (processor_flags): Add PF_Z10.
10167         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
10168         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
10169         * gcc/config.gcc: Add z10.
10170
10171 2008-05-28  Richard Guenther  <rguenther@suse.de>
10172
10173         PR tree-optimization/36291
10174         * tree-flow. h (struct gimple_df): Remove var_anns member.
10175         * tree-flow-inline.h (gimple_var_anns): Remove.
10176         (var_ann): Simplify.
10177         * tree-dfa.c (create_var_ann): Simplify.
10178         (remove_referenced_var): Clear alias info from var_anns of globals.
10179         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
10180         (delete_tree_ssa): Clear alias info from var_anns of globals.
10181         Do not free var_anns.
10182         (var_ann_eq): Remove.
10183         (var_ann_hash): Likewise.
10184
10185 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
10186
10187         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
10188         and loongson2f entries.
10189         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
10190         * config/mips/mips.h (processor_type): Add Loongson-2E
10191         and Loongson-2F entries.
10192         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
10193         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
10194         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
10195         * doc/invoke.texi (MIPS Options): Document loongson2e
10196         and loongson2f processor names.
10197
10198 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10199
10200         PR target/35767
10201         PR target/35771
10202         * config/i386/i386.c (ix86_function_arg_boundary): Use
10203         alignment of canonical type.
10204         (ix86_expand_vector_move): Check unaligned memory access for
10205         all SSE modes.
10206
10207 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10208
10209         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
10210         Moved to the front of file.
10211
10212 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
10213             H.J. Lu  <hongjiu.lu@intel.com>
10214
10215         * dwarf2out.c (current_fde): New.
10216         (add_cfi): Use it.
10217         (lookup_cfa:): Likewise.
10218         (dwarf2out_end_epilogue): Likewise.
10219         (dwarf2out_note_section_used): Likewise.
10220
10221 2008-05-27  Michael Matz  <matz@suse.de>
10222
10223         PR c++/27975
10224         * c.opt (Wenum-compare): New warning option.
10225         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
10226
10227 2008-05-27  Michael Matz  <matz@suse.de>
10228
10229         PR middle-end/36326
10230         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
10231         non-BLKmode types.
10232         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
10233         into memory as tail calls.
10234
10235 2008-05-27  Richard Guenther  <rguenther@suse.de>
10236
10237         PR tree-optimization/36339
10238         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
10239         pointers cause all addressable variables to be call clobbered.
10240
10241 2008-05-27  Richard Guenther  <rguenther@suse.de>
10242
10243         PR tree-optimization/36245
10244         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
10245
10246 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10247
10248         * config/s390/s390.md: Replace all occurences of the 'm'
10249         constraint with 'RT'.
10250
10251 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10252
10253         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
10254         definitions added.
10255         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
10256         "*movdi_64".
10257         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
10258         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
10259         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
10260
10261 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10262
10263         * reload.c: (find_reloads): Skip alternatives according to the
10264         "enabled" attribute. Constify the constraint variable.
10265         * recog.c (get_attr_enabled): Add default implementation.
10266         (extract_insn): Set the alternative_enabled_p array
10267         in the recog_data struct.
10268         (preprocess_constraints, constrain_operands): Skip
10269         alternatives according to the "enabled" attribute
10270         * recog.h (struct recog_data): New field alternative_enabled_p.
10271         (skip_alternative): New inline function.
10272         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
10273         (record_reg_classes): Skip alternative according to the
10274         "enabled" attribute.
10275
10276         * doc/md.texi: Add documention for the "enabled" attribute.
10277
10278 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
10279
10280         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
10281         * postreload.c (reload_cse_simplify_operands): Replace 'm'
10282         constraint with TARGET_MEM_CONSTRAINT.
10283         * recog.c (asm_operand_ok, preprocess_constraints,
10284         constrain_operands): Likewise.
10285         * regclass.c (record_reg_classes): Likewise.
10286         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
10287         * reload1.c (maybe_fix_stack_asms): Likewise.
10288         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
10289         * recog.h: Adjust comment.
10290         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
10291         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
10292         * doc/md.texi: Add a note to description of 'm' constraint.
10293         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
10294
10295 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
10296
10297         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
10298         that the bitfield is of integral type before testing its precision.
10299
10300 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10301             Sa Liu  <saliu@de.ibm.com>
10302
10303         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
10304         __modti3, __udivti3, __umodti3 and __udivmodti4.
10305         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
10306         that implement TImode mul and div functions.
10307         * config/spu/multi3.c: New. Implement __multi3.
10308         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
10309         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
10310         functions on SPU.
10311
10312 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
10313
10314         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
10315         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
10316         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
10317         tls_sysv_suffix): New mode and mode attribute iterators.
10318         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
10319         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
10320         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
10321         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
10322         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
10323         iterators.
10324
10325 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
10326
10327         PR tree-optimization/36329
10328         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
10329         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
10330         * cgraphbuild.c (initialize_inline_failed): Use the latter
10331         macro in lieu of the former.
10332         * ipa-inline.c (cgraph_mark_inline): Likewise.
10333         (cgraph_decide_inlining_of_small_function): Likewise.
10334         (cgraph_decide_inlining): Likewise.
10335         (cgraph_decide_inlining_incrementally): Likewise.
10336
10337 2008-05-26  Tristan Gingold  <gingold@adacore.com>
10338             Anatoly Sokolov  <aesok@post.ru>
10339
10340         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
10341         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
10342         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
10343         optimization for 'avr6' architecture.
10344
10345 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
10346
10347         PR target/34932
10348         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
10349
10350 2008-05-26  Richard Guenther  <rguenther@suse.de>
10351
10352         * tree-ssa-sccvn.c (expr_has_constants): Declare.
10353         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
10354
10355 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
10356
10357         PR middle-end/36253
10358         * caller-save.c (insert_restore): Verify alignment of spill space.
10359         (insert_save): Likewise.
10360         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
10361         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
10362         (STACK_SLOT_ALIGNMENT): Likewise.
10363         * function.c (LOCAL_ALIGNMENT): Removed.
10364         (get_stack_local_alignment): New.
10365         (assign_stack_local): Use it.  Set alignment on stack slot.
10366         (assign_stack_temp_for_type): Use get_stack_local_alignment.
10367         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
10368         (STACK_SLOT_ALIGNMENT): New.
10369         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
10370         stack slot in XFmode.
10371
10372         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
10373
10374 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
10375
10376         PR/36321
10377         * config/i386/i386.md (allocate_stack_worker_64): Make sure
10378         argument operand in rax isn't removed.
10379
10380 2008-05-26  Richard Guenther  <rguenther@suse.de>
10381
10382         PR middle-end/36300
10383         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
10384         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
10385
10386 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
10387
10388         PR bootstrap/36331
10389         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
10390
10391 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
10392
10393         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
10394         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
10395
10396 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
10397
10398         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
10399         build a trampoline if we don't want one.
10400         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
10401         return zero for nested functions if we don't want a trampoline.
10402
10403 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
10404
10405         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
10406
10407 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
10408
10409         PR fortran/18428
10410         * c.opt: Removed undocumented option '-lang-fortran'.
10411         * c-common.h: Removed global variable 'lang_fortran'.
10412         * c-opts.c (c_common_handle_option): Removed code to handle
10413         option '-lang-fortran'. Updated includes.
10414         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
10415         definition of '__GFORTRAN__'.
10416         (define__GNUC__): Reimplemented to use BASEVER and
10417         cpp_define_formatted.
10418         (builtin_define_with_value_n): Removed.
10419         * c-incpath.h: Renamed to ...
10420         * incpath.h: ... this.
10421         * c-incpath.c: Renamed to ...
10422         * incpath.c: ... this. Updated includes.
10423         * fix-header.c: Updated includes.
10424         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
10425         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
10426         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
10427
10428 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
10429
10430         * tree.h: Update the table of flags used on tree nodes.
10431         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
10432         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
10433         (FORCED_LABEL): Add access check.
10434         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
10435         (ASM_INPUT_P): Likewise.
10436         (ASM_VOLATILE_P): Likewise.
10437         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
10438         (OMP_SECTION_LAST): Access private_flag directly.
10439         (OMP_RETURN_NOWAIT): Likewise.
10440         (OMP_PARALLEL_COMBINED): Likewise.
10441         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
10442         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
10443         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
10444         deprecated_flag directly.
10445
10446 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10447
10448         * final.c (frame_pointer_needed): Removed.
10449         * flags.h (frame_pointer_needed): Likewise.
10450
10451         * function.h (rtl_data): Add frame_pointer_needed.
10452         (frame_pointer_needed): New.
10453
10454 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
10455
10456         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
10457
10458 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
10459
10460         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
10461         SRC is a REG.
10462
10463 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
10464
10465         * c-common.c (strip_array_types): Move function to..
10466         * tree.c: ..here.
10467         (get_inner_array_type): Delete.
10468         * c-common.h (strip_array_types): Move declaration to..
10469         * tree.h: ..here.
10470         (get_inner_array_type): Delete.
10471         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
10472         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
10473         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
10474         * config/pa/pa.c (emit_move_sequence): Likewise.
10475
10476 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10477
10478         * config/i386/i386.md (*sse_prologue_save_insn): Set length
10479         attribute to 34.
10480
10481 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
10482
10483         * function.c: Include target hook for nonlocal_goto frame value.
10484
10485 2008-05-24  Richard Guenther  <rguenther@suse.de>
10486
10487         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
10488         variable can be only accessed through a pointer or a union.
10489
10490 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10491
10492         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
10493         * doc/extend.texi: Likewise.
10494
10495 2008-05-23  DJ Delorie  <dj@redhat.com>
10496
10497         * config/m32c/jump.md (untyped_call): Add.
10498
10499         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
10500         for A24 to PSImode.
10501         (m32c_address_cost): Detail costs for indirect offsets.
10502
10503 2008-05-23  Rafael Espindola  <espindola@google.com>
10504
10505         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
10506         if a node is a SUBREG.
10507         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
10508         is a SUBREG.
10509
10510 2008-05-23  Paul Brook  <paul@codesourcery.com>
10511             Carlos O'Donell  <carlos@codesourcery.com>
10512
10513         * doc/extend.texi: Clarify use of __attribute__((naked)).
10514         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
10515         * target.h (gcc_target): Add allocate_stack_slots_for_args.
10516         * function.c (use_register_for_decl): Use
10517         targetm.calls.allocate_stack_slots_for_args.
10518         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
10519         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
10520         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
10521
10522 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
10523
10524         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
10525
10526 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
10527
10528         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
10529         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
10530         is only rounded once.
10531
10532 2008-05-23  Richard Guenther  <rguenther@suse.de>
10533
10534         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
10535
10536 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
10537             Jakub Jelinek  <jakub@redhat.com>
10538
10539         PR target/36079
10540         * configure.ac: Handle --enable-cld.
10541         * configure: Regenerated.
10542         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
10543         * config/i386/i386.h (struct machine_function): Add needs_cld field.
10544         (ix86_current_function_needs_cld): New define.
10545         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
10546         (cld): New isns pattern.
10547         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
10548         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
10549         * config/i386/i386.opt (mcld): New option.
10550         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
10551         TARGET_CLD and ix86_current_function_needs_cld.
10552         (override_options): Use -mcld by default for 32-bit code if
10553         USE_IX86_CLD.
10554
10555         * doc/install.texi (Options specification): Document --enable-cld.
10556         * doc/invoke.texi (Machine Dependent Options)
10557         [i386 and x86-64 Options]: Add -mcld option.
10558         (Intel 386 and AMD x86-64 Options): Document -mcld option.
10559
10560 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
10561         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
10562         (return_in_memory_64): Likewise.
10563         (return_in_memory_ms_64): Likewise.
10564
10565 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10566
10567         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
10568         * builtins.c (fold_builtin_fpclassify): New.
10569         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
10570         * builtins.def (BUILT_IN_FPCLASSIFY): New.
10571         * c-common.c (handle_type_generic_attribute): Adjust to accept
10572         fixed arguments before an elipsis.
10573         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
10574         * doc/extend.texi: Document __builtin_fpclassify.
10575
10576 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
10577
10578         * omp-low.c (gate_expand_omp_ssa): Remove.
10579         (pass_expand_omp_ssa): Remove.
10580         (gate_expand_omp): Do not check for flag_openmp_ssa.
10581         * common.opt (-fopenmp-ssa): Remove.
10582         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
10583
10584 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10585
10586         * config/sh/sh.opt (mfixed-range): New option.
10587         * config/sh/sh-protos.h (sh_fix_range): Declare.
10588         * config/sh/sh.c (sh_fix_range): New function.
10589         * config/sh/sh.h (sh_fixed_range_str): Declare.
10590         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
10591         is not empty.
10592         * doc/invoke.texi (SH Options): Document -mfixed-range.
10593
10594 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
10595
10596         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
10597         it before the redeclaration.
10598
10599 2008-05-22  Anatoly Sokolov <aesok@post.ru>
10600
10601         * config/avr/avr.c (get_sequence_length): Add new function.
10602         (expand_prologue, expand_epilogue): Remove duplicate code.
10603
10604 2008-05-22  Rafael Espindola  <espindola@google.com>
10605
10606         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
10607         sharing.
10608
10609 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
10610
10611         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
10612         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
10613
10614         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
10615         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
10616         (vect_update_misalignment_for_peel): Likewise.
10617         (vector_alignment_reachable_p): Likewise.
10618         * tree-vect-transform.c (vectorizable_load): Likewise.
10619         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
10620         (get_vectype_for_scalar_type): Pass mode of scalar_type
10621         to UNITS_PER_SIMD_WORD.
10622
10623         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
10624         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
10625         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
10626         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
10627         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
10628
10629 2008-05-22  Ira Rosen  <irar@il.ibm.com>
10630
10631         PR tree-optimization/36293
10632         * tree-vect-transform.c (vect_transform_strided_load): Don't check
10633         if the first load must be skipped because of a gap.
10634
10635 2008-05-22  Richard Guenther  <rguenther@suse.de>
10636
10637         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
10638         more cases of offset disambiguation that is possible if
10639         strict-aliasing rules apply.
10640         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
10641         for basic offset and type-based disambiguation.
10642
10643 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10644
10645         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
10646         ix86_expand_vector_set on V16QImode for SSE4.1.
10647
10648 2008-05-21  Tom Tromey  <tromey@redhat.com>
10649
10650         * c.opt (Wimport): Mark as undocumented.
10651         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
10652         -Wno-import.
10653         (Warning Options): Likewise.
10654         * doc/cppopts.texi: Don't mention -Wimport.
10655
10656 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
10657
10658         PR tree-optimization/36287
10659         PR tree-optimization/36286
10660         * lambda-code.c (build_access_matrix): Do not use the loop->num
10661         for computing the number of induction variables: use the loop depth
10662         instead.
10663
10664 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
10665
10666         PR/36280
10667         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
10668         option -f(no-)leading-underscore.
10669
10670 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10671
10672         * config/i386/i386.c (ix86_expand_vector_init_general): Use
10673         GET_MODE_NUNITS (mode).
10674
10675 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
10676
10677         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
10678         (-mmulhw): Add 464 to description.
10679         (-mdlmzb): Likewise.
10680         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
10681         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
10682         464fp entries.
10683         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
10684         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
10685         * config/rs6000/rs6000.md: Update comments for 464.
10686
10687 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
10688
10689         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
10690
10691 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10692
10693         * config/i386/sse.md (vec_extractv4sf): Removed.
10694         (vec_extractv2df): Likewise.
10695         (vec_extractv2di): Likewise.
10696         (vec_extractv4si): Likewise.
10697         (vec_extractv8hi): Likewise.
10698         (vec_extractv16qi): Likewise.
10699         (vec_extract<mode>): New.
10700
10701 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10702
10703         * config/i386/sse.md (vec_setv4sf): Removed.
10704         (vec_setv2df): Likewise.
10705         (vec_setv2di): Likewise.
10706         (vec_setv4si): Likewise.
10707         (vec_setv8hi): Likewise.
10708         (vec_setv16qi): Likewise.
10709         (vec_set<mode>): New.
10710
10711 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10712
10713         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
10714         goto for vec_concat and vec_interleave.
10715
10716 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
10717
10718         * config/i386/sse.md (vec_initv4sf): Removed.
10719         (vec_initv2df): Likewise.
10720         (vec_initv2di): Likewise.
10721         (vec_initv4si): Likewise.
10722         (vec_initv8hi): Likewise.
10723         (vec_initv16qi): Likewise.
10724         (vec_init<mode>): New.
10725
10726 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
10727
10728         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
10729
10730 2008-05-21  Tom Tromey  <tromey@redhat.com>
10731
10732         * ggc-zone.c (lookup_page_table_if_allocated): New function.
10733         (zone_find_object_offset): Likewise.
10734         (gt_ggc_m_S): Likewise.
10735         (highest_bit): Likewise.
10736         * ggc-page.c (gt_ggc_m_S): New function.
10737         * stringpool.c (string_stack): Remove.
10738         (init_stringpool): Update.
10739         (ggc_alloc_string): Use ggc_alloc.
10740         (maybe_delete_ident): New function.
10741         (ggc_purge_stringpool): Likewise.
10742         (gt_ggc_m_S): Remove.
10743         * ggc-common.c (ggc_protect_identifiers): New global.
10744         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
10745         ggc_protect_identifiers.
10746         * ggc.h (ggc_protect_identifiers): Declare.
10747         (gt_ggc_m_S): Update.
10748         (ggc_purge_stringpool): Declare.
10749         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
10750         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
10751         special case.
10752         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
10753
10754 2008-05-21  David S. Miller  <davem@davemloft.net>
10755
10756         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
10757         tmake_file.
10758
10759 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
10760
10761         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
10762         once finished.
10763
10764 2008-05-20  David Daney  <ddaney@avtrex.com>
10765
10766         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
10767         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
10768         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
10769         UNSPEC_UPDATE_GOT_VERSION): Renumber.
10770         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
10771         (atomic_hiqi_op): New define_code_iterator.
10772         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
10773         mips_expand_compare_and_swap_12.
10774         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
10775         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
10776         (sync_<optab><mode>, sync_old_<optab><mode>,
10777         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
10778         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
10779         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
10780         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
10781         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
10782         (test_and_set_12): New insn.
10783         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
10784         sync_new_<optab><mode>, sync_old_nand<mode>,
10785         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
10786         clobber to operand 0 for SI and DI mode insns.
10787         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
10788         mips_gen_fn_4): New typedefs.
10789         (mips_gen_fn_ptrs): Define new union type.
10790         (mips_expand_compare_and_swap_12): Remove declaration.
10791         (mips_expand_atomic_qihi): Declare function.
10792         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
10793         (mips_expand_atomic_qihi): ... this.  Use new generator function
10794         parameter.
10795         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
10796         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
10797         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
10798         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
10799         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
10800         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
10801         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
10802         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
10803         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
10804         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
10805         New macros.
10806
10807 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
10808
10809         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
10810         the missing break.
10811
10812 2008-05-20  Anatoly Sokolov <aesok@post.ru>
10813
10814         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
10815         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
10816         (avr_attribute_table): Add 'OS_main' function attribute.
10817         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
10818         functions with 'OS_main' attribute.
10819
10820 2008-05-20  Richard Guenther  <rguenther@suse.de>
10821
10822         PR tree-optimization/35204
10823         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
10824         helper, split out from ...
10825         (DFS): ... here.  Make the DFS walk non-recursive.
10826
10827 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
10828             Jan Sjodin  <jan.sjodin@amd.com>
10829
10830         PR tree-optimization/36181
10831         * tree-parloops.c (loop_has_vector_phi_nodes): New.
10832         (parallelize_loops): Don't parallelize when the loop has vector
10833         phi nodes.
10834
10835 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
10836             Sebastian Pop  <sebastian.pop@amd.com>
10837
10838         * tree-loop-linear.c (gather_interchange_stats): Look in the access
10839         matrix, and never look at the tree representation of the memory
10840         accesses.
10841         (linear_transform_loops): Computes parameters and access matrices.
10842         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
10843         when fails.
10844         (access_matrix_get_index_for_parameter): New.
10845         * tree-data-ref.h (struct access_matrix): New.
10846         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
10847         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
10848         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
10849         am_vector_index_for_loop): New.
10850         (struct data_reference): Add field access_matrix.
10851         (DR_ACCESS_MATRIX): New.
10852         (compute_data_dependences_for_loop): Update declaration.
10853         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
10854         * lambda.h (lambda_vector_vec_p): Declared.
10855         * lambda-code.c: Depend on pointer-set.h.
10856         (lambda_collect_parameters_from_af, lambda_collect_parameters,
10857         av_for_af_base, av_for_af, build_access_matrix,
10858         lambda_compute_access_matrices): New.
10859         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
10860
10861 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
10862
10863         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
10864         $SOURCEDIR/include.
10865
10866 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
10867             Sebastian Pop  <sebastian.pop@amd.com>
10868
10869         PR tree-optimization/36206
10870         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
10871         FOLD_CONVERSIONS.
10872         (instantiate_scev_1): Rename flags to fold_conversions.
10873         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
10874         outeside instantiation_loop.
10875         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
10876         (evolution_function_is_affine_or_constant_p): Removed.
10877         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
10878         instantiate_scev.
10879         (analyze_siv_subscript): Pass in the loop nest number.
10880         Call evolution_function_is_affine_in_loop instead of
10881         evolution_function_is_affine_p.
10882         (analyze_overlapping_iterations): Pass in the loop nest number.
10883
10884 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
10885             Sebastian Pop  <sebastian.pop@amd.com>
10886
10887         PR tree-optimization/36206
10888         * tree-chrec.h (chrec_fold_op): New.
10889         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
10890         and other trees.
10891
10892 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
10893
10894         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
10895         (DIRS_EQ): New.
10896         (remove_duplicates): Do not set inode on non-inode systems.
10897         Use DIRS_EQ.
10898
10899 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
10900
10901         * config.gcc (tm_file): Update comments about relative pathnames.
10902
10903 2008-05-20  Richard Guenther  <rguenther@suse.de>
10904
10905         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
10906         * tree-ssa-sccvn.c (process_scc): Likewise.
10907         * tree-ssa-sink.c (execute_sink_code): Likewise.
10908         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
10909         * tree-vrp.c (process_assert_insertions): Likewise.
10910         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
10911         (perform_tree_ssa_dce): Likewise.
10912         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
10913         (dump_dominator_optimization_stats): Likewise.
10914         * tree-vectorizer.c (vectorize_loops): Likewise.
10915
10916 2008-05-20  Richard Guenther  <rguenther@suse.de>
10917
10918         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
10919
10920 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
10921
10922         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
10923         (ix86_i386elf_return_in_memory): Likewise.
10924         (ix86_i386interix_return_in_memory): Likewise.
10925         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
10926         (SUBTARGET_RETURN_IN_MEMORY): New.
10927         * config/i386/i386elf.h: Likewise.
10928         * config/i386/ptx4-i.h: Likewise.
10929         * config/i386/sol2-10.h: Likewise.
10930         * config/i386/sysv4.h: Likewise.
10931         * config/i386/vx-common.h: Likewise.
10932         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
10933         * config/i386/i386.c (ix86_return_in_memory): Made static and
10934         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
10935         (ix86_i386elf_return_in_memory): Removed.
10936         (ix86_i386interix_return_in_memory): Removed.
10937         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
10938         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
10939
10940 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
10941
10942         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
10943
10944 2008-05-19  Xinliang David Li  <davidxl@google.com>
10945
10946         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
10947         * opts.c: Ditto.
10948         * common.opt: Ditto.
10949         * doc/invoke.texi: Ditto.
10950
10951 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
10952
10953         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
10954         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
10955
10956 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
10957
10958         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
10959         sizes of operand array from 8/4 to 4/2.
10960         (ix86_expand_vector_init_general): Change size of operand array
10961         from 32 to 16.  Remove op0, op1 and half_mode.
10962
10963 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
10964
10965         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
10966         (ix86_expand_vector_init_interleave): Likewise.
10967         (ix86_expand_vector_init_general): Use them.  Assert
10968         word_mode == SImode when n_words == 4.
10969
10970 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
10971
10972         * config/i386/i386.c (ix86_secondary_reload): New static function.
10973         (TARGET_SECONDARY_RELOAD): New define.
10974         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
10975         * config/i386/i386.md (reload_outqi): Remove.
10976
10977 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10978
10979         PR middle-end/35509
10980         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
10981         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
10982         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
10983         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
10984         (fold_builtin_1): Likewise.
10985         * builtins.def (BUILT_IN_ISINF_SIGN): New.
10986         c-common.c (check_builtin_function_arguments): Handle
10987         BUILT_IN_ISINF_SIGN.
10988         * doc/extend.texi: Document __builtin_isinf_sign.
10989         * fold-const.c (operand_equal_p): Handle COND_EXPR.
10990
10991 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
10992
10993         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
10994         EH cleanup at the end of the pass, search for those that have been
10995         turned into forwarder blocks and do the cleanup on their successor.
10996
10997 2008-05-18  Richard Guenther  <rguenther@suse.de>
10998
10999         * tree-cfg.c (verify_gimple_expr): Allow conversions from
11000         pointers to sizetype and vice versa.
11001
11002 2008-05-18 Xinliang David Li   <davidxl@google.com>
11003
11004         * gcc/tree-ssa-dce.c: Coding style fix.
11005         (check_pow): Documentation comment.
11006         (check_log): Documenation comment. Coding style fix.
11007         (is_unnecessary_except_errno_call): Ditto.
11008         (gen_conditions_for_pow): Ditto.
11009         (gen_conditions_for_log): Ditto.
11010         (gen_shrink_wrap_conditions): Ditto.
11011         (shrink_wrap_one_built_in_calls): Ditto.
11012         * gcc/doc/invoke.texi: Better documentation string.
11013         * ChangeLog: Fix wrong change log entries from
11014         May 17 checkin on function call DCE.
11015
11016 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
11017
11018         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
11019
11020 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
11021
11022         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
11023         * df-problems.c (simulation routines): Fixed block comment to
11024         properly say how to add forwards scanning functions.
11025
11026 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
11027
11028         * tree-inline.c (setup_one_parameter): Remove dead code.
11029
11030 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
11031
11032         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
11033         a BIT_AND_EXPR only for an INTEGER_TYPE.
11034
11035 2008-05-17 Xinliang David Li   <davidxl@google.com>
11036
11037         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
11038         (check_pow, check_log, is_unnecessary_except_errno_call): New
11039         functions to check for eliminating math functions that are pure
11040         except for setting errno.
11041         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
11042         general condition expressions for shrink-wrapping pow/log calls.
11043         (gen_shrink_wrap_conditions): Ditto.
11044         (shrink_wrap_one_built_in_call): Ditto.
11045         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
11046         (mark_operand_necessary): If debugging, output if OP is necessary.
11047         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
11048         unnecessary.
11049         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
11050         opt level >= 2.
11051         * gcc/common.opt: New user flag -ftree-builtin-dce.
11052         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
11053
11054 2008-05-16  David S. Miller  <davem@davemloft.net>
11055
11056         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
11057         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
11058
11059 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
11060
11061         PR target/36246
11062         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
11063
11064 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11065
11066         * ifcvt.c (dead_or_predicable): Rename
11067         df_simulate_one_insn_backwards to df_simulate_one_insn.
11068         * recog.c (peephole2_optimize): Ditto.
11069         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
11070         Ditto.
11071         * df.h: Rename df_simulate_one_insn_backwards to
11072         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
11073         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
11074         scanning of defs and uses.
11075         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
11076         (df_simulate_one_insn_forwards): Removed.
11077
11078 2008-05-16  Doug Kwan  <dougkwan@google.com>
11079
11080         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
11081         QNaN & SNaN.
11082         (real_from_string): Handle NaNs and Inf as approriate.
11083
11084 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
11085
11086         * doc/gty.texi (Source Files Containing Type Information): Note
11087         that headers should appear first in the gtfiles list.
11088
11089 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11090
11091         * tree.def (COND_EXEC): Properly documented this code.
11092
11093 2008-05-16  Diego Novillo  <dnovillo@google.com>
11094
11095         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
11096         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
11097         the new field.
11098
11099 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11100
11101         * tree-ssa-dse (max_stmt_uid): Removed.
11102         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
11103         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
11104         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
11105         * function.h (cfun.last_stmt_uid): New field.
11106         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
11107         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
11108         New functions.
11109         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
11110         (create_stmt_ann): Initialize the ann->uid field.
11111         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
11112         with new calls.
11113         * tree-flow.h (renumber_gimple_stmt_uids): New function.
11114
11115 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
11116
11117         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
11118         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
11119         (init_empty_tree_cfg): Call it.
11120
11121 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11122
11123         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
11124         Update all users.
11125
11126 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
11127
11128         * doc/invoke.text (-fdump-tree-*-verbose): New option.
11129         * tree-dump.c (dump_options): New verbose option.
11130         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
11131         Add verbose dump.
11132         * tree-pass.h (TDF_VERBOSE): New dump flag.
11133         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
11134         (tree-flow.h): Added include.
11135         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
11136
11137 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
11138
11139         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
11140
11141         From Jie Zhang  <jie.zhang@analog.com>
11142         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
11143         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
11144         mcpu=bf561-none and mcpu=bf561-0.2.
11145         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
11146         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
11147         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
11148         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
11149         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
11150         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
11151         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
11152         option.
11153         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
11154         (cputype_selected): Remove.
11155         (bfin_handle_option): Don't use cputype_selected.
11156         (override_options): When no mcpu option, enable all workarounds.
11157         Don't use bfin_workarounds.
11158         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
11159         processor type.
11160         (DEFAULT_CPU_TYPE): Don't define.
11161
11162 2008-05-16  Richard Guenther  <rguenther@suse.de>
11163
11164         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
11165         on deletion of the last stmt.
11166
11167 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
11168
11169         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
11170         V8HImode for SSE2 and V16QImode for SSE4.1.
11171
11172 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
11173
11174         * cgraph.h (compute_inline_parameters): Made public.
11175         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
11176         variable_generate_summary, function_write_summary,
11177         variable_write_summary, variable_read_summary.  Added generate_summary,
11178         write_summary, read_summary.
11179         * cgraphunit.c (cgraph_process_new_functions): Changed call from
11180         pass_ipa_inline.function_generate_summary, to
11181         compute_inline_parameters.
11182         * ipa-inline.c (compute_inline_parameters): Made public and added
11183         node parameter.
11184         (compute_inline_parameters_for_current): New function.
11185         (pass_inline_param): Now calls compute_inline_parameters_for_current.
11186         (inline_generate_summary): Removed parameter and made to loop over
11187         all cgraph nodes.
11188         (pass_ipa_inline): Updated for new IPA_PASS structure.
11189         * passes.c (execute_ipa_summary_passes): Now is called once per
11190         pass rather than once per node*pass.
11191
11192 2008-05-15  Anatoly Sokolov <aesok@post.ru>
11193
11194         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
11195         avr_have_mul_p, avr_asm_only_p): Remove variables.
11196         (avr_override_options): Remove initialization of removed variables.
11197         (avr_file_start):  Convert removed variables to fields of
11198         'struct base_arch_s *avr_current_arch'.
11199         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
11200         (AVR_HAVE_MUL): (Ditto.).
11201         (AVR_HAVE_MOVW): (Ditto.).
11202         (AVR_HAVE_LPMX): (Ditto.).
11203         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
11204         avr_asm_only_p): Remove declaration.
11205
11206 2008-05-15  Diego Novillo  <dnovillo@google.com>
11207
11208         * config/arm/arm.c (arm_return_in_memory): Fix return type.
11209         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
11210
11211 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
11212
11213         PR middle-end/36194
11214         * combine.c (check_conversion): Rename back to check_promoted_subreg.
11215         Don't call record_truncated_value from here.
11216         (record_truncated_value): Turn it into a for_each_rtx callback.
11217         (record_truncated_values): New function.
11218         (combine_instructions): Call note_uses with record_truncated_values.
11219         Change name of check_conversion to check_promoted_subreg.
11220
11221 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
11222
11223         * doc/sourcebuild.texi: Document support for torture tests.
11224
11225 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
11226
11227         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
11228         to alternative 4 of operand 2.
11229
11230 2008-05-15  Richard Guenther  <rguenther@suse.de>
11231
11232         * tree-pass.h (current_pass): Declare.
11233         (get_pass_for_id): Likewise.
11234         * passes.c (passes_by_id, passes_by_id_size): New globals.
11235         (set_pass_for_id): New function.
11236         (get_pass_for_id): Likewise.
11237         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
11238         (execute_function_todo): Flush per function statistics.
11239         * toplev.c (compile_file): Init statistics.
11240         (general_init): Do early statistics initialization.
11241         (finalize): Finish statistics.
11242         * statistics.h (statistics_early_init): Declare.
11243         (statistics_init): Likewise.
11244         (statistics_fini): Likewise.
11245         (statistics_fini_pass): Likewise.
11246         (statistics_counter_event): Likewise.
11247         (statistics_histogram_event): Likewise.
11248         * statistics.c: New file.
11249         * Makefile.in (OBJS-common): Add statistics.o.
11250         (statistics.o): Add dependencies.
11251         * doc/invoke.texi (-fdump-statistics): Document.
11252
11253         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
11254         (insert): Likewise.
11255         (execute_pre): Use statistics_counter_event.
11256         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
11257         (substitute_and_fold): Increment it.  Use statistics_counter_event.
11258
11259 2008-05-15  Diego Novillo  <dnovillo@google.com>
11260
11261         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
11262
11263         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
11264         * tree-ssa-alias.c (new_type_alias): Remove references to
11265         sub-variables from comment.
11266         * tree-ssa-operands.c (swap_tree_operands): Likewise.
11267
11268 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
11269
11270         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
11271         attribute to 1 only for insertps alternative.
11272
11273 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
11274
11275         * config/bfin/bfin.md (loadbytes): New pattern.
11276         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
11277         (bfin_init_builtins): Initialize it.
11278         (bdesc_1arg): Add it.
11279
11280 2008-05-15  Sa Liu  <saliu@de.ibm.com>
11281
11282         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
11283         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
11284         * testsuite/lib/target-supports.exp: Add
11285         check_effective_target_fortran_integer_16.
11286
11287 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
11288
11289         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
11290         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
11291         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
11292         (TARGET_RETURN_IN_MEMORY): Define.
11293
11294 2008-05-15  Richard Guenther  <rguenther@suse.de>
11295
11296         PR middle-end/36244
11297         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
11298         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
11299         represent unmodifiable vars.
11300
11301 2008-05-15  Richard Guenther  <rguenther@suse.de>
11302
11303         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
11304         INDIRECT_REF and TARGET_MEM_REF.
11305         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
11306         TARGET_MEM_REF.
11307
11308 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
11309             H.J. Lu  <hongjiu.lu@intel.com>
11310
11311         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
11312         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
11313         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
11314         insn alternatives.  Add missing alternatives.
11315         (*vec_concatv2di_rex64_sse4_1): Likewise.
11316         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
11317         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
11318         Require TARGET_SSE.
11319
11320 2008-05-15  Richard Guenther  <rguenther@suse.de>
11321
11322         PR tree-optimization/36009
11323         PR tree-optimization/36204
11324         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
11325         (determine_invariantness_stmt): Record the loop a store is
11326         always executed in.
11327         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
11328         dependency.
11329
11330 2008-05-15  Richard Guenther  <rguenther@suse.de>
11331
11332         PR tree-optimization/34330
11333         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
11334         through the pointer will alias the SMT.
11335
11336 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
11337
11338         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
11339
11340 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
11341
11342         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
11343
11344 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
11345             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11346
11347         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
11348         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
11349         (vashl_optab): New optab for vector/vector shifts.
11350         (vashr_optab): Ditto.
11351         (vlshr_optab): Ditto.
11352         (vrotl_optab): Ditto.
11353         (vrotr_optab): Ditto.
11354         (optab_subtype): New enum for optab_for_tree_code call.
11355         (optab_for_tree_code): Add enum optab_subtype argument.
11356
11357         * optabs.c (optab_for_tree_code): Take an additional argument to
11358         distinguish between a vector shift by a scalar and vector shift by
11359         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
11360         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
11361         vector shift by a vector.
11362         (expand_widen_pattern_expr): Pass additional argument to
11363         optab_for_tree_code.
11364
11365         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
11366         vrotl_optab, vrotr_optab.
11367
11368         * expr.c (expand_expr_real_1): Update calls to
11369         optab_for_tree_code to distinguish between vector shifted by a
11370         scalar and vector shifted by a vector.
11371         * tree-vectorizer.c (supportable_widening_operation): Ditto.
11372         (supportable_narrowing_operation): Ditto.
11373         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
11374         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
11375         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
11376         (vect_create_epilog_for_reduction): Ditto.
11377         (vectorizable_reduction): Ditto.
11378         (vectorizable_operation): Ditto.
11379         (vect_strided_store_supported): Ditto.
11380         (vect_strided_load_supported): Ditto.
11381         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
11382         * expmed.c (expand_shift): Ditto.
11383
11384         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
11385         scalar type.
11386         (ashr@var{m}3): Ditto.
11387         (vashl@var{m}3): Document new vector/vector shift standard name.
11388         (vashr@var{m}3): Ditto.
11389         (vlshr@var{m}3): Ditto.
11390         (vrotl@var{m}3): Ditto.
11391         (vrotr@var{m}3): Ditto.
11392
11393         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
11394         (PPERM_INVERT): Ditto.
11395         (PPERM_REVERSE): Ditto.
11396         (PPERM_REV_INV): Ditto.
11397         (PPERM_ZERO): Ditto.
11398         (PPERM_ONES): Ditto.
11399         (PPERM_SIGN): Ditto.
11400         (PPERM_INV_SIGN): Ditto.
11401         (PPERM_SRC1): Ditto.
11402         (PPERM_SRC2): Ditto.
11403
11404         * config/i386/sse.md (mulv2di3): Add SSE5 support.
11405         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
11406         allows a memory operand to be the value being added, and split it
11407         to improve vectorization.
11408         (sse5_pmacsdqh_mem): Ditto.
11409         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
11410         (sse5_mulv2div2di3_high): Ditto.
11411         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
11412         (vec_pack_trunc_v4si): Ditto.
11413         (vec_pack_trunc_v2di): Ditto.
11414         (sse5_pcmov_<mode>): Remove code that tried to use use
11415         andps/andnps instead of pcmov.
11416         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
11417         pmacsdqh instructions.
11418         (vec_widen_smult_lo_v4si): Ditto.
11419
11420         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
11421         (PPERM_INVERT): Ditto.
11422         (PPERM_REVERSE): Ditto.
11423         (PPERM_REV_INV): Ditto.
11424         (PPERM_ZERO): Ditto.
11425         (PPERM_ONES): Ditto.
11426         (PPERM_SIGN): Ditto.
11427         (PPERM_INV_SIGN): Ditto.
11428         (PPERM_SRC1): Ditto.
11429         (PPERM_SRC2): Ditto.
11430         (ix86_expand_sse_movcc): Move the SSE5 test after the if
11431         true/false tests.
11432         (ix86_expand_int_vcond): If SSE5 generate all possible integer
11433         comparisons.
11434         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
11435         says ignore whether the last reference is a memory operand.
11436
11437 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
11438             Paolo Bonzini <bonzini at gnu dot org>
11439
11440         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
11441         shift patterns.
11442
11443         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
11444         (vlshr<mode>3): Rename from vlshr<mode>3.
11445         (vashr<mode>3): Rename from vashr<mode>3.
11446         (mulv4sf3): Change the names of vector shift patterns.
11447         (mulv4si3): Ditto.
11448         (negv4sf2): Ditt.
11449
11450         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
11451         shift insns.
11452
11453         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
11454         (SI_SHLHI): Ditto.
11455         (SI_SHL): Ditto.
11456         (SI_SHLI): Ditto.
11457         (SI_ROTH): Ditto.
11458         (SI_ROTHI): Ditto.
11459         (SI_ROT): Ditto.
11460         (SI_ROTI): Ditto.
11461         (SPU_RL_0): Ditto.
11462         (SPU_RL_1): Ditto.
11463         (SPU_RL_2): Ditto.
11464         (SPU_RL_3): Ditto.
11465         (SPU_RL_4): Ditto.
11466         (SPU_RL_5): Ditto.
11467         (SPU_RL_6): Ditto.
11468         (SPU_RL_7): Ditto.
11469         (SPU_SL_0): Ditto.
11470         (SPU_SL_1): Ditto.
11471         (SPU_SL_2): Ditto.
11472         (SPU_SL_3): Ditto.
11473         (SPU_SL_4): Ditto.
11474         (SPU_SL_5): Ditto.
11475         (SPU_SL_6): Ditto.
11476         (SPU_SL_7): Ditto.
11477
11478         * config/spu/spu.md (v): New iterator macro to add v for vector types.
11479         (floatunssidf2_internal): Change vector/vector shift names.
11480         (floatunsdidf2_internal): Ditto.
11481         (mulv8hi3): Ditto.
11482         (ashrdi3): Ditto.
11483         (ashrti3): Ditto.
11484         (cgt_df): Ditto.
11485         (cgt_v2df): Ditto.
11486         (dftsv): Ditto.
11487         (vashl<mode>3): Rename from ashl<mode>3.
11488         (vashr<mode>3): Rename from ashr<mode>3.
11489         (vlshr<mode>3): Rename from lshr<mode>3.
11490         (vrotl<mode>3): Rename from rotl<mode>3.
11491
11492 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
11493
11494         PR target/36224
11495         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
11496         multiply gives the wrong value when doing widening multiplies.
11497         (vec_widen_smult_lo_v4si): Ditto.
11498
11499 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
11500
11501         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
11502         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
11503         emit_library_call_value.
11504         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
11505         * tree.h (ECF_LIBCALL_BLOCK): Removed.
11506         * calls.c (initialize_argument_information, precompute_arguments,
11507         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
11508         (precompute_arguments): Removed flags parameter.
11509         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
11510
11511 2008-05-14  Richard Guenther  <rguenther@suse.de>
11512
11513         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
11514         Make sure to register the store if the use is a PHI_NODE.
11515
11516 2008-05-14  Olivier Hainque  <hainque@adacore.com>
11517
11518         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
11519         memory if the component is to be referenced in BLKmode according
11520         to get_inner_reference.
11521
11522 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
11523
11524         * calls.c (emit_library_call_value_1): Restore code clearing
11525         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
11526
11527 2008-05-14  Olivier Hainque  <hainque@adacore.com>
11528             Nicolas Roche  <roche@adacore.com>
11529
11530         * configure.ac: Add support for a "gcc_subdir" variable in
11531         config-lang.in, to denote a subdirectory where the language/GCC
11532         integration files are to be found.
11533         * configure: Regenerate.
11534
11535 2008-05-14  Ira Rosen  <irar@il.ibm.com>
11536
11537         PR tree-optimization/36098
11538         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
11539         value for the first load in the group in case of a gap.
11540         (vect_build_slp_tree): Check that there are no gaps in loads.
11541
11542 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
11543
11544         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
11545         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
11546         expand_copysign_bit, ): Change call to emit_no_conflict_block to
11547         emit_insn and remove unneeded code to construct extra args.
11548         (emit_no_conflict_block): Removed.
11549         * optabls.h: (emit_no_conflict_block): Removed.
11550         * cse.c (cse_extended_basic_block): Remove search for
11551         REG_NO_CONFLICT note.
11552         * global.c: Removed incorrect comment added in revision 117.
11553         * expr.c (convert_move): Change call to emit_no_conflict_block to
11554         emit_insn.
11555         * recog.c: Change comments so that they do not mention
11556         REG_NO_CONFLICT.
11557         * local_alloc.c (combine_regs): Removed last parameter.
11558         (no_conflict_p): Removed.
11559         (block_alloc): Removed note, no_conflict_combined_regno and set
11560         local vars. Removed all code to process REG_NO_CONFLICT blocks.
11561         (combine_regs): Removed already_dead and code to look for
11562         REG_NO_CONFLICT notes.
11563         * lower_subreg (remove_retval_note): Removed code to look for
11564         REG_NO_CONFLICT block.
11565         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
11566         (resolve_clobber): Remove code to process libcalls that have
11567         REG_NO_CONFLICT notes.
11568         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
11569         case.
11570         * combine.c (can_combine_p, distribute_notes):  Removed
11571         REG_NO_CONFLICT case.
11572         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
11573         to emit_insns.
11574         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
11575         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
11576         Ditto.
11577         * reg-notes.def (NO_CONFLICT): Removed.
11578
11579 2008-05-14  David S. Miller  <davem@davemloft.net>
11580
11581         * config/sparc/sparc.c (sparc_profile_hook): If
11582         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
11583         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
11584         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
11585
11586 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
11587
11588         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
11589
11590 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
11591
11592         PR target/36222
11593         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
11594         and op1 expansion before vector concat to have less live pseudos.
11595
11596 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
11597
11598         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
11599         ix86_expand_vector_set if supported.
11600
11601 2008-05-13  Diego Novillo  <dnovillo@google.com>
11602             Kenneth Zadeck  <zadeck@naturalbridge.com>
11603
11604         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
11605
11606         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
11607         phinodes_print_statistics, init_ssanames, fini_ssanames,
11608         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
11609         release_ssa_name, release_defs, replace_ssa_name_symbol,
11610         ssanames_print_statistics): Move ...
11611         * tree-flow.h: ... here.
11612         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
11613         Use FN instead of cfun.
11614         (make_ssa_name_fn): Rename from make_ssa_name.
11615         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
11616         * tree-flow-inline.h (make_ssa_name): Move from
11617         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
11618         * omp-low.c (expand_omp_parallel):
11619         * tree-flow-inline.h (redirect_edge_var_map_result):
11620         * tree-ssa.c (init_tree_ssa): Add argument FN.
11621         Use it instead of cfun.  Update all users.
11622
11623 2008-05-13  Tom Tromey  <tromey@redhat.com>
11624
11625         PR preprocessor/22168:
11626         * doc/cpp.texi (Top): Update menu.
11627         (Alternatives to Wrapper #ifndef): New node.
11628         (Other Directives): Document deprecation.
11629         (Obsolete Features): Remove menu.
11630         (Assertions): Merge node into Obsolete Features.
11631         (Obsolete once-only headers): Move earlier; rename to Alternatives
11632         to Wrapper #ifndef.
11633         * doc/cppopts.texi: Update.
11634         * c.opt (Wdeprecated): Enable for C and ObjC.
11635         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
11636         (C++ Dialect Options): Move -Wno-deprecated from here to...
11637         (Warning Options): ... here.
11638
11639 2008-05-13  Richard Guenther  <rguenther@suse.de>
11640
11641         PR middle-end/36227
11642         * fold-const.c (fold_sign_changed_comparison): Do not allow
11643         changes in pointer-ness.
11644
11645 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11646
11647         PR target/24713
11648         * config/sh/sh.c (sh_expand_prologue): Don't clear
11649         RTX_FRAME_RELATED_P for push insns.
11650
11651 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
11652
11653         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
11654
11655 2008-05-12  Anatoly Sokolov <aesok@post.ru>
11656
11657         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
11658         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
11659         Use 'machine->is_leaf' instead of 'leaf_func_p'.
11660
11661 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
11662
11663         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
11664         (*vec_concatv4sf_sse): This.
11665         (*sse2_concatv2si): Renamed to ...
11666         (*vec_concatv2si_sse2): This.
11667         (*sse1_concatv2si): Renamed to ...
11668         (*vec_concatv2si_sse): This.
11669         (*vec_concatv2di_rex): Renamed to ...
11670         (*vec_concatv2di_rex64): This.
11671         (*vec_concatv2si_sse4_1): New.
11672         (*vec_concatv2di_rex64_sse4_1): Likewise.
11673
11674 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
11675
11676         PR rtl-optimization/36111
11677         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
11678         that was created for swappable operands.
11679
11680 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
11681
11682         PR ada/36001
11683         * Makefile.in: Substitute GNATMAKE and GNATBIND.
11684         * configure.ac: Add call to ACX_PROG_GNAT.
11685
11686 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
11687
11688         * optc-gen.awk: Fix comment typo.
11689
11690 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
11691
11692         * pretty-print.c (pp_integer_with_precision): Use
11693         HOST_LONG_LONG_FORMAT.
11694
11695 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
11696
11697         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
11698
11699 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
11700
11701         * config/i386/i386.c (bdesc_ptest): Removed.
11702         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
11703         (bdesc_args): Add __builtin_ia32_ptestz128,
11704         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
11705         (ix86_init_mmx_sse_builtins): Updated.
11706         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
11707         (ix86_expand_builtin): Updated.
11708
11709 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
11710
11711         * tree-cfg.c (valid_fixed_convert_types_p): New function.
11712         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
11713
11714 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
11715
11716         * value-prof.c (interesting_stringop_to_profile): Do not
11717         return early for BUILT_IN_MEMPCPY.
11718
11719 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
11720
11721         * calls.c (expand_call): Don't use callgraph to increase
11722         preferred_stack_boundary.
11723
11724         * cgraph.h (cgraph_rtl_info): Use unsigned on
11725         preferred_incoming_stack_boundary.
11726
11727         * final.c (rest_of_clean_state): Use unsigned on
11728         preferred_stack_boundary.
11729
11730 2008-05-09  Tom Tromey  <tromey@redhat.com>
11731
11732         PR preprocessor/22231:
11733         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
11734         proceeding.
11735
11736 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
11737
11738         PR tree-optimization/36129
11739         * tree-ssa-ccp.c: Include value-prof.h.
11740         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
11741         built-in function was folded to a constant.
11742         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
11743
11744 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
11745             Sebastian Pop  <sebastian.pop@amd.com>
11746
11747         * tree-scalar-evolution.c: Document instantiate_scev.
11748         (instantiate_parameters_1): Renamed instantiate_scev_1.
11749         Don't use the same loop for instantiation_loop and evolution_loop.
11750         (instantiate_scev): New.
11751         (instantiate_parameters): Moved...
11752         (resolve_mixers): Update call to instantiate_scev_1 to pass the
11753         same loop twice.  Maintains the semantics for this function.
11754         * tree-scalar-evolution.h (instantiate_scev): Declare.
11755         (instantiate_parameters): ...here.  Now static inline.
11756         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
11757         instead of resolve_mixers.
11758
11759 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
11760
11761         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
11762
11763 2008-05-09  Tomas Bily  <tbily@suse.cz>
11764
11765         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
11766         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
11767         * tree-ssa-structalias.c (get_constraint_for): Likewise.
11768         * c-common.c (c_common_truthvalue_conversion): Likewise.
11769         * tree-object-size.c (compute_object_offset): Likewise.
11770         * tree-inline.c (estimate_num_insns_1): Likewise.
11771         * varasm.c (const_hash_1, compare_constant, copy_constant)
11772         (compute_reloc_for_constant, output_addressed_constants)
11773         (initializer_constant_valid_p): Likewise.
11774         * c-omp.c (check_omp_for_incr_expr): Likewise.
11775         * gimplify.c (gimplify_expr): Likewise.
11776         * c-typeck.c (c_finish_return): Likewise.
11777         * tree-vectorizer.c (supportable_widening_operation)
11778         (supportable_narrowing_operation): Likewise.
11779         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
11780         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
11781         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
11782         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
11783         (descr_info_loc): Likewise.
11784         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
11785         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
11786         (fold_unary): Likewise.
11787         * builtins.c (get_pointer_alignment): Likewise.
11788         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
11789         (instantiate_parameters_1): Likewise.
11790         * tree.c (expr_align, stabilize_reference): Likewise.
11791         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
11792         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
11793         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
11794         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
11795         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
11796         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
11797         Likewise.
11798         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
11799         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
11800         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
11801         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
11802         (forward_propagate_comparison)
11803         (tree_ssa_forward_propagate_single_use_vars): Likewise.
11804         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
11805         * emit-rtl.c (component_ref_for_mem_expr)
11806         (set_mem_attributes_minus_bitpos): Likewise.
11807         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
11808         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
11809         Likewise.
11810         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
11811         (build_function_call, pointer_diff, build_compound_expr)
11812         (c_finish_return): Likewise.
11813         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
11814         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
11815         Likewise.
11816         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
11817         * expr.c (is_aligning_offset): Likewise.
11818         * tree-ssa-alias.c (is_escape_site): Likewise.
11819         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
11820         (check_all_va_list_escapes): Likewise.
11821         * tree-ssa-loop-ivopts.c (determine_base_object)
11822         (determine_common_wider_type): Likewise.
11823         * dojump.c (do_jump): Likewise.
11824         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
11825         * tree-gimple.c (is_gimple_cast): Likewise.
11826         * fold-const.c (decode_field_reference, )
11827         (fold_sign_changed_comparison, fold_unary, fold_comparison)
11828         (fold_binary): Likewise.
11829         * tree-ssa-alias-warnings.c (find_alias_site_helper)
11830         (already_warned_in_frontend_p): Likewise.
11831         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
11832         * tree.c (really_constant_p, get_unwidened): Likewise.
11833         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
11834         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
11835         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
11836         Likewise.
11837         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
11838         CONVERT_EXPR_P.
11839         (CONVERT_EXPR_P): Define.
11840         (CASE_CONVERT): Define.
11841
11842 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
11843
11844         PR middle-end/36117
11845         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
11846         (delete_unmarked_insns): When deleting a call, call
11847         delete_unreachable_blocks.
11848         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
11849         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
11850
11851 2008-05-08  Richard Guenther  <rguenther@suse.de>
11852
11853         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
11854         (-ftree-salias): Likewise.
11855         (salias-max-implicit-fields): Remove param documentation.
11856         (salias-max-array-elements): Likewise.
11857         * tree-pass.h (pass_create_structure_vars): Remove.
11858         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
11859         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
11860         * tree-ssa-alias.c (create_structure_vars): Remove.
11861         (gate_structure_vars): Likewise.
11862         (pass_create_structure_vars): Likewise.
11863         (gate_build_alias): Likewise.
11864         (pass_build_alias): Adjust to run always and dump the function.
11865         * common.opt (ftree-salias): Hide.
11866         * passes.c (init_optimization_passes): Remove
11867         pass_create_structure_vars, adjust comment.
11868         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
11869         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
11870         * opts.c (decode_options): Do not set flag_tree_salias.
11871         (common_handle_option): Add OPT_ftree_salias to the backward
11872         compatibility section.
11873
11874 2008-05-08  Richard Guenther  <rguenther@suse.de>
11875
11876         * tree-flow-inline.h (var_can_have_subvars): Move ...
11877         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
11878         * tree-flow.h (var_can_have_subvars): Remove.
11879         (push_fields_onto_fieldstack): Remove.
11880         (sort_fieldstack): Likewise.
11881         (struct fieldoff): Move ...
11882         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
11883         alias_set and base_for_components fields.
11884         (sort_fieldstack): Make static.
11885         (push_fields_onto_fieldstack): Likewise.  Remove code that
11886         handles anything but RECORD_TYPEs.  Remove alias_set and
11887         base_for_components handling.
11888         (create_variable_info_for): Adjust.
11889
11890 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
11891
11892         * common.opt (Wframe-larger-than=): Shorten the help message
11893         to one line.
11894         * doc/invoke.texi (Wframe-larger-than=): Add more description.
11895
11896 2008-05-08  Rafael Espindola  <espindola@google.com>
11897
11898         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
11899         trap.
11900         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
11901         trap and that both operands are gimple values.
11902         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
11903         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
11904         is a fp operation.
11905
11906 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
11907
11908         * read-rtl.c (join_c_conditions): Return the first string if the
11909         two strings are equal.
11910
11911 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
11912
11913         * gensupport.h (pred_data): Add a "num_codes" field.
11914         (add_predicate_code): Declare.
11915         * gensupport.c (add_predicate_code): New function.
11916         (std_pred_table): Add an "allows_const_p" field.
11917         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
11918         Remove the (incomplete) list of such codes from the codes field.
11919         (init_predicate_table): Use add_predicate_code.  Add all
11920         RTX_CONST_OBJs if allows_const_p is true.
11921         * genrecog.c (process_define_predicate): Use add_predicate_code.
11922
11923 2008-05-08  David Daney  <ddaney@avtrex.com>
11924             Richard Sandiford  <rsandifo@nildram.co.uk>
11925
11926         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
11927         special case of constant zero operands.
11928         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
11929         old and new values.  Special case constant zero values.
11930         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
11931         fails.
11932         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
11933         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
11934
11935 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
11936
11937         PR target/36090
11938         * simplify-rtx.c (simplify_plus_minus): Create CONST of
11939         similar RTX_CONST_OBJ before CONST_INT.
11940
11941 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
11942
11943         * stmt.c (expand_stack_restore): Change sa mode if needed.
11944
11945 2008-05-08  Richard Guenther  <rguenther@suse.de>
11946
11947         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
11948         return type to bool.
11949         (ix86_sol10_return_in_memory): Likewise.
11950         (ix86_i386elf_return_in_memory): Likewise.
11951         (ix86_i386interix_return_in_memory): Likewise.
11952         * config/i386/i386.c (ix86_return_in_memory): Likewise.
11953         (ix86_sol10_return_in_memory): Likewise.
11954         (ix86_i386elf_return_in_memory): Likewise.
11955         (ix86_i386interix_return_in_memory): Likewise.
11956
11957 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
11958
11959         PR bootstrap/36180
11960         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
11961         fndecl argument.
11962         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
11963         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
11964         declared in front.
11965
11966 2008-05-08  Richard Guenther  <rguenther@suse.de>
11967
11968         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
11969         * tree-data-ref.h (struct dr_alias): Remove subvars field.
11970         (DR_SUBVARS): Remove.
11971         * tree-dfa.c (dump_subvars_for): Remove.
11972         (debug_subvars_for): Likewise.
11973         (dump_variable): Do not dump subvars.
11974         (remove_referenced_var): Do not remove subvars.
11975         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
11976         (lookup_subvars_for_var): Remove.
11977         (get_subvars_for_var): Likewise.
11978         (get_subvars_at): Likewise.
11979         (get_first_overlapping_subvar): Likewise.
11980         (overlap_subvar): Likewise.
11981         * tree-flow.h (subvar_t): Remove.
11982         (struct var_ann_d): Remove subvars field.
11983         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
11984         argument.  Remove special handling of SFTs.
11985         (compute_tag_properties): Likewise.
11986         (set_initial_properties): Likewise.
11987         (compute_call_clobbered): Likewise.
11988         (count_mem_refs): Likewise.
11989         (compute_memory_partitions): Likewise.
11990         (compute_flow_insensitive_aliasing): Likewise.
11991         (setup_pointers_and_addressables): Likewise.
11992         (new_type_alias): Likewise.
11993         (struct used_part): Remove.
11994         (used_portions): Likewise.
11995         (struct used_part_map): Likewise.
11996         (used_part_map_eq): Likewise.
11997         (used_part_map_hash): Likewise.
11998         (free_used_part_map): Likewise.
11999         (up_lookup): Likewise.
12000         (up_insert): Likewise.
12001         (get_or_create_used_part_for): Likewise.
12002         (create_sft): Likewise.
12003         (create_overlap_variables_for): Likewise.
12004         (find_used_portions): Likewise.
12005         (create_structure_vars): Likewise.
12006         * tree.def (STRUCT_FIELD_TAG): Remove.
12007         * tree.h (MTAG_P): Adjust.
12008         (struct tree_memory_tag): Remove base_for_components and
12009         unpartitionable flags.
12010         (struct tree_struct_field_tag): Remove.
12011         (SFT_PARENT_VAR): Likewise.
12012         (SFT_OFFSET): Likewise.
12013         (SFT_SIZE): Likewise.
12014         (SFT_NONADDRESSABLE_P): Likewise.
12015         (SFT_ALIAS_SET): Likewise.
12016         (SFT_UNPARTITIONABLE_P): Likewise.
12017         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
12018         (union tree_node): Remove sft field.
12019         * alias.c (get_alias_set): Remove special handling of SFTs.
12020         * print-tree.c (print_node): Remove handling of SFTs.
12021         * tree-dump.c (dequeue_and_dump): Likewise.
12022         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
12023         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
12024         * tree-predcom.c (set_alias_info): Do not set subvars.
12025         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
12026         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
12027         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
12028         (add_vars_for_offset): Remove.
12029         (add_virtual_operand): Remove special handling of SFTs.
12030         (add_call_clobber_ops): Likewise.
12031         (add_call_read_ops): Likewise.
12032         (get_asm_expr_operands): Likewise.
12033         (get_modify_stmt_operands): Likewise.
12034         (get_expr_operands): Likewise.
12035         (add_to_addressable_set): Likewise.
12036         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
12037         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
12038         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
12039         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
12040         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
12041         (tree_node_structure): Likewise.
12042         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
12043         handling of SFTs.
12044         (find_what_p_points_to): Likewise.
12045
12046 2008-05-08  Sa Liu  <saliu@de.ibm.com>
12047
12048         * config/spu/spu.md: Fixed subti3 pattern.
12049
12050 2008-05-08  Richard Guenther  <rguenther@suse.de>
12051
12052         PR middle-end/36154
12053         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
12054         sure to create a representative for trailing arrays for PTA.
12055
12056 2008-05-08  Richard Guenther  <rguenther@suse.de>
12057
12058         PR middle-end/36172
12059         * fold-const.c (operand_equal_p): Two objects which types
12060         differ in pointerness are not equal.
12061
12062 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
12063
12064         * calls.c (compute_argument_block_size): Add argument tree fndecl.
12065         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
12066         (emit_library_call_value_1): Add new variable fndecl initialized by
12067         NULL_TREE. It should be the decl type of orgfun, but this information
12068         seems not to be available here, so it uses the default calling abi.
12069         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
12070         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
12071         by TARGET_RETURN_IN_MEMORY.
12072         * config/i386/i386-interix.h: Likewise.
12073         * config/i386/i386.h: Likewise.
12074         * config/i386/i386elf.h: Likewise.
12075         * config/i386/ptx4-i.h: Likewise.
12076         * config/i386/sol2-10.h: Likewise.
12077         * config/i386/sysv4.h: Likewise.
12078         * config/i386/vx-common.h: Likewise.
12079         * config/cris/cris.h: Removed #if 0 clause.
12080         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
12081         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
12082         argument.
12083         (ix86_sol10_return_in_memory): Likewise.
12084         (ix86_i386elf_return_in_memory): New.
12085         (ix86_i386interix_return_in_memory): New.
12086         * config/mt/mt-protos.h (mt_return_in_memory): New.
12087         * config/mt/mt.c: Likewise.
12088         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
12089         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
12090         * config/bfin/bfin.h: Likewise.
12091         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
12092         argument.
12093         * config/bfin/bfin.c: Likewise.
12094         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
12095         * config/alpha/unicosmk.h: Likewise.
12096         * config/i386/cygming.h: Likewise.
12097         * config/iq2000/iq2000.h: Likewise.
12098         * config/mips/mips.h: Likewise.
12099         * config/mn10300/mn10300.h: Likewise.
12100         * config/rs6000/rs6000.h: Likewise.
12101         * config/score/score.h: Likewise.
12102         * config/spu/spu.h: Likewise.
12103         * config/v850/v850.h: Likewise.
12104         * defaults.h: Likewise.
12105         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
12106         * expr.c (emit_block_move): Adjust use of
12107         OUTGOING_REG_PARM_STACK_SPACE.
12108         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
12109         OUTGOING_REG_PARM_STACK_SPACE.
12110         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
12111
12112 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
12113
12114         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
12115         on OMP_RETURN for OMP_FOR.
12116
12117         PR debug/35896
12118         * dwarf2out.c (dw_expand_expr, common_check): Removed.
12119         (fortran_common): New function.
12120         (gen_variable_die): Call fortran_common instead of common_check,
12121         adjust for it returning tree instead of rtx.  Formatting.
12122
12123 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
12124
12125         PR rtl/7335
12126         PR rtl/33826
12127         * see.c (see_copy_insn): Copy new pure const attributes for new call.
12128         * c-decl.c (merge_decls): Ditto.
12129         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
12130         to RTL_CONST_OR_PURE_CALL_P.
12131         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
12132         Initialized DECL_LOOPING_CONST_PURE.
12133         (process_call_operands): Set tree_side_effects properly.
12134         * tree.h (TREE_READONLY_DECL_P): Removed.
12135         (DECL_IS_PURE): Renamed to DECL_PURE_P.
12136         (DECL_LOOPING_OR_CONST_P): New macro.
12137         (struct tree_function_decl): Added looping_const_or_pure_p.
12138         (ECF_*) Renumbered.
12139         (ECF_LOOPING_OR_CONST_P): New macro.
12140         * rtlanal.c (pure_const_p): Removed.
12141         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
12142         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
12143         to RTL_CONST_CALL_P.
12144         * ipa-pure-const.c (pure_const_state_e): Added looping field.
12145         (check_decl, check_tree, check_call, scan_function): Initialize
12146         looping.
12147         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
12148         (static_execute): Set looping true for recursive functions.
12149         Undo setting state to IPA_NEITHER for recursive functions.
12150         * cse.c (cse_insn):
12151         * ifcvt.c (noce_can_store_speculate_p): Changed
12152         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
12153         RTL_CONST_OR_PURE_CALL_P.
12154         * dse.c (scan_insn): Ditto.
12155         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
12156         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
12157         RTL_CONST_OR_PURE_CALL_P.
12158         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
12159         pure_call_p to RTL_CONST_CALL_P.
12160         * gimplify.c (gimplify_call_expr): Clear side effects for
12161         non-looping pure and constant calls.
12162         * calls.c (emit_call_1): Set rtl flags from ecf flags.
12163         (flags_from_decl_or_type): Set ecf flags from decl flags.
12164         (initialize_argument_information): Turn off
12165         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
12166         Change const to pure if callee_copies is true rather than just
12167         turning off const.
12168         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
12169         way of marking pure calls.
12170         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
12171         Remove hack that was supposed to fix pr7335 and remove old
12172         way of marking pure calls.
12173         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
12174         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
12175         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
12176         RTL_CONST_OR_PURE_CALL_P.
12177         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
12178         * loop-invariant.c (find_exits, find_invariant_bb): Changed
12179         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
12180         * sched-deps.c (schedule_analyze): Ditto.
12181         * rtl.h (struct rtx_def): Use call field, unchanging field, and
12182         return_val field of calls to represent pure and const function info.
12183         (CONST_OR_PURE_CALL_P): Deleted macro.
12184         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
12185         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
12186         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
12187         TREE_READONLY.
12188         * tree-optimize.c (execute_fixup_cfg): Added test for
12189         ECF_LOOPING_CONST_OR_PURE.
12190         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
12191         DECL_PURE_P.
12192         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
12193         effects for looping pure or const calls.
12194         (verify_gimple_expr): Added verification code.
12195         * config/alpha/alpha.c (alpha_legitimize_address,
12196         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
12197         RTL_CONST_CALL_P.
12198         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
12199         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
12200         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
12201         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
12202         RTL_CONST_OR_PURE_CALL_P.
12203         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
12204         and const calls to be deleted.
12205
12206 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
12207
12208         PR target/35714
12209         * config/i386/mmx.md (mmx_subv2sf3): New expander.
12210         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
12211         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
12212         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12213         to handle nonimmediate operands.
12214         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
12215         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
12216         to handle nonimmediate operands.
12217         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
12218         (mmx_pmulhrwv4hi3): New expander.  Use
12219         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12220         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
12221         (sse2_umulv1siv1di3): New expander.  Use
12222         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12223         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
12224         (mmx_eq<mode>3): New expander.  Use
12225         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12226         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
12227         (mmx_uavgv8qi3): New expander.  Use
12228         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12229         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
12230         (mmx_uavgv4hi3): New expander.  Use
12231         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12232
12233         * config/i386/sse.md
12234         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
12235         to handle nonimmediate operands.
12236         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
12237         to handle nonimmediate operands.
12238         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
12239         to handle nonimmediate operands.
12240         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
12241         to handle nonimmediate operands.
12242         (sse2_unpckhpd_exp): New expander.  Use
12243         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12244         (sse2_unpcklpd_exp): New expander.  Use
12245         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12246         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
12247         to handle nonimmediate operands.
12248         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
12249         to handle nonimmediate operands.
12250         (*sse2_<plusminus_insn><mode>3): Rename from
12251         sse2_<plusminus_insn><mode>3 insn pattern.
12252         (sse2_<plusminus_insn><mode>3): New expander.  Use
12253         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12254         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
12255         (sse2_umulv2siv2di3): New expander.  Use
12256         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12257         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
12258         (sse4_1_mulv2siv2di3): New expander.  Use
12259         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12260         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
12261         (sse2_pmaddwd): New expander.  Use
12262         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12263         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
12264         (sse2_eq<mode>3): New expander.  Use
12265         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12266         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
12267         (sse4_1_eqv2di3): New expander.  Use
12268         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12269         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
12270         (sse2_uavgv16qi3): New expander.  Use
12271         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12272         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
12273         (sse2_uavgv16qi3): New expander.  Use
12274         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12275         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
12276         (sse2_uavgv8hi3): New expander.  Use
12277         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12278         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
12279         (ssse3_pmulhrswv8hi3): New expander.  Use
12280         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12281         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
12282         (ssse3_pmulhrswv4hi3): New expander.  Use
12283         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12284
12285         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
12286         (<sse>_vmmul<mode>3): Ditto.
12287         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
12288         (divv2df3): Ditto.
12289         (ssse3_pmaddubsw128): Use register_operand for operand 1.
12290         (ssse3_pmaddubsw): Ditto.
12291
12292         * config/i386/i386.c (struct_builtin_description)
12293         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
12294         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
12295         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
12296         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
12297         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
12298         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
12299         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
12300         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
12301         (ix86_fixup_binary_operands): Assert that src1
12302         and src2 must have the same mode when swapped.
12303         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
12304         and ix86_binary_operator_ok.  Do not force operands in registers
12305         when optimizing.
12306
12307 2008-05-07  Jan Hubicka  <jh@suse.cz>
12308
12309         * cgraph.c (dump_cgraph_node): Update.
12310         * cgraph.h (cgraph_local_info): Break out inline summary.
12311         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
12312         hook.
12313         * ipa-inline (inline_summary): New accestor function.
12314         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
12315         cgraph_decide_inlining, compute_inline_parameters): Update.
12316         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
12317
12318 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12319
12320         Cleanup ColdFire scheduling support and add V4 pipeline model.
12321
12322         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
12323         (define_attr cpu): Add cfv4 value.
12324         (define_attr type, define_attr type1): Merge into a single 'type'
12325         attribute.  Update all uses.
12326         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
12327         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
12328         Update all uses.
12329         (define_attr opx_mem, define_attr opy_mem): Remove.
12330         (define_attr op_mem): Clean up, update comment.
12331         (define_attr size): Use specific values instead of general int.
12332         (define_attr guess, define_attr split): Remove.  Update all uses.
12333         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
12334         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
12335         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
12336         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
12337         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
12338         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
12339         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
12340         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
12341         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
12342         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
12343         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
12344         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
12345         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
12346         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
12347         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
12348         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
12349         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
12350         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
12351         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
12352         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
12353         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
12354         Update or set attributes.
12355         (stack_tie): New fake instruction.
12356
12357         * config/m68k/m68k.h (TUNE_CFV4): New macro.
12358         (m68k_sched_attr_size): Update declaration.
12359         (m68k_sched_attr_type2): Remove.
12360         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
12361         Declare new bypass predicates.
12362
12363         * config/m68k/m68k.c (m68k_sched_issue_rate,
12364         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
12365         implementations.
12366         (TARGET_SCHED_ISSUE_RATE,
12367         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
12368         (override_options): Handle scheduling for ColdFire V4 core.
12369         (m68k_expand_prologue): Emit stack_tie.
12370         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
12371         'OP_TYPE_FPN'.  Update all uses.
12372         (sched_guess_p): Remove.
12373         (sched_address_type): Handle symbolic addresses.
12374         (sched_get_operand): New static function.
12375         (sched_operand_type): Merge into sched_attr_op_type.
12376         (sched_attr_op_type): Handle FP registers, handle quick constants,
12377         update.
12378         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
12379         (m68k_sched_attr_size): Update.  Move logic to ...
12380         (sched_get_attr_size_int): New static function.
12381         (sched_get_opxy_mem_type): New static function.
12382         (m68k_sched_attr_op_mem): Update.
12383         (m68k_sched_attr_type2): Remove.
12384         (sched_cfv4_bypass_data): New static variable.
12385         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
12386         (m68k_sched_issue_rate): Implement scheduler hook.
12387         (struct _sched_ib: enabled_p): New field.
12388         (m68k_sched_variable_issue): Update.  Handle V4.
12389         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
12390         sched_dump_class_func_t, sched_dump_split_class,
12391         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
12392         sched_dump_dfa_class, m68k_sched_dump): Remove.
12393         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
12394         hook.
12395         (m68k_sched_init_global): Remove statisctics dumping, introduce
12396         sanity check that all instructions have pipeline reservations.  Handle
12397         ColdFire V4 core.
12398         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
12399         Handle ColdFire V4 core.
12400         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
12401         New static functions.
12402         (m68k_sched_address_bypass_p): New bypass predicate.
12403         (sched_get_indexed_address_scale): New static function.
12404         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
12405
12406         * cf.md: Update comments.
12407         (define_attr type2): Remove.  Use 'type' attribute instead.
12408         Update all uses.
12409         (cf_ib): Rename to cfv123_ib.  Update all uses.
12410         (cf_oep): Rename to cfv123_oep.  Update all uses.
12411         (cf_chr): Rename to cfv123_chr.  Update all uses.
12412         (cf_mem): Rename to cfv123_mem.  Update all uses.
12413         (cf_mac): Move to more appropriate place.
12414         (cfv123_guess): New automaton and cpu_unit.
12415         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
12416         Update uses of 'size' attribute.  Handle before reload scheduling.
12417         (cfv123_guess): New dummy reservation for unhandled instructions.
12418         (cfv4_*): Pipeline description of ColdFire V4 core.
12419         (ignore): New reservation to handle 'ignore' type.
12420
12421 2008-05-07  Ian Lance Taylor  <iant@google.com>
12422
12423         PR middle-end/36013
12424         * gimplify.c (find_single_pointer_decl_1): Don't look through
12425         indirections.
12426         (find_single_pointer_decl): Adjust comments.
12427
12428 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
12429
12430         PR middle-end/36137
12431         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
12432         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
12433
12434         PR middle-end/36106
12435         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
12436         integral type rather than floating point, then VIEW_CONVERT_EXPR
12437         to the floating point type.
12438
12439 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
12440
12441         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
12442         TFmode op0 to register.
12443
12444 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
12445
12446         * c-decl.c (grokdeclarator): Comment typo.
12447
12448 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
12449
12450         * tree-flow.h: Remove prototype for computed_goto_p.
12451         * tree-cfg.c (computed_goto_p): Make static.
12452
12453 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
12454
12455         PR target/35657
12456         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
12457         (contains_aligned_value_p): This.  Handle _Decimal128.
12458         (ix86_function_arg_boundary): Only align _Decimal128 to its
12459         natural boundary and handle it properly.
12460
12461 2008-05-06  Martin Jambor  <mjambor@suse.cz>
12462
12463         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
12464         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
12465         (ipcp_method_set_orig_node): Removed.
12466         (ipcp_cval_get_cvalue_type): Removed.
12467         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
12468         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
12469         (ipcp_cval_set_cvalue_type): Removed.
12470         (ipcp_cval_get_cvalue): Removed.
12471         (ipcp_cval_set_cvalue): Removed.
12472         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
12473         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
12474         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
12475         (ipcp_cval_meet): Renamed to ipa_lattice_meet
12476         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
12477         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
12478         (ipcp_get_ith_lattice): Changed parameters.
12479         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
12480         (ipcp_lattice_from_jfunc): Changed parameters.
12481         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
12482         (ipcp_method_cval_print): Added temporary variable info.
12483         (ipcp_redirect): Removed already unused local variable caller.
12484         (ipcp_redirect): New temporary variable orig_callee_info
12485         (ipcp_redirect): Removed newly unused local variable callee.
12486         (ipcp_redirect): Removed (a bit confusing) local variable type.
12487         (ipcp_insert_stage): Added local variable info.
12488         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
12489         renamed too
12490         (ipcp_formal_create): Removed.
12491         (ipcp_method_cval_set): Removed.
12492         (ipcp_propagate_stage): Renamed lattice variables.
12493         (ipcp_method_cval_set_cvalue_type): Removed.
12494         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
12495         (ipcp_print_all_lattices): Changed printed strings to refer to
12496         lattices rather than cvals.
12497         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
12498         (ipcp_propagate_const): Changed formal parameters.
12499         (build_const_val): Changed formal parameters.
12500         (ipcp_insert_stage): Removed useless variable cvalue
12501         (build_const_val): Changed formal parameters.
12502         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
12503         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
12504         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
12505         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
12506         (ipcp_print_func_profile_counts): Changed string from "method" to
12507         "function"
12508         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
12509         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
12510         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
12511         (ipcp_structures_print): Renamed to ipcp_print_all_structures
12512         (ipcp_profile_print): Renamed to ipcp_print_profile_data
12513         (ipcp_lat_is_const): Changed parameters and made inline.
12514         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
12515         (ipcp_redirect): Renamed to ipcp_need_redirect_p
12516         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
12517         the predicate condition directly
12518         (ipcp_propagate_stage): Added local variable args. Removed local
12519         variable callee.  (Both are mere code simplifications.)
12520         (ipcp_method_dont_insert_const): Renamed to
12521         ipcp_node_not_modifiable_p.
12522         (ipcp_node_not_modifiable_p): Made inline.
12523         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
12524         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
12525         (ipcp_print_all_lattices): Removed variable cvalue
12526         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
12527         Updated comments.
12528
12529 2008-05-06  Olivier Hainque  <hainque@adacore.com>
12530
12531         * tree-sra.c (try_instantiate_multiple_fields): Early return
12532         if field has POINTER_TYPE.
12533
12534 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
12535
12536         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
12537         by using 'q' specifier for instruction.
12538         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
12539
12540 2008-05-06  Anatoly Sokolov <aesok@post.ru>
12541
12542         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
12543         Change mode of zero_extract from QImode to HImode.
12544         (sign bit tests peepholes): (Ditto.).
12545
12546 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
12547
12548         * config/i386/mmx.md: Remove double backslashes from asm templates.
12549         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
12550         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12551         to handle nonimmediate operands.
12552         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
12553         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
12554         to handle nonimmediate operands.
12555         (*mmx_<code>v2sf3_finite): New insn pattern.
12556         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
12557         (mmx_<code>v2sf3): New expander.  Use
12558         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12559         (mmx_<plusminus_insn><mode>3): New expander.  Use
12560         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12561         (*mmx_<plusminus_insn><mode>3): New insn pattern.
12562         (mmx_add<mode>3): Removed.
12563         (mmx_ssadd<mode>3): Ditto.
12564         (mmx_usadd<mode>3): Ditto.
12565         (mmx_sub<mode>3): Ditto.
12566         (mmx_sssub<mode>3): Ditto.
12567         (mmx_ussub<mode>3): Ditto.
12568         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
12569         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
12570         to handle nonimmediate operands.
12571         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
12572         insn pattern.
12573         (mmx_smulv4hi3_highpart): New expander.  Use
12574         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12575         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
12576         insn pattern.
12577         (mmx_umulv4hi3_highpart): New expander.  Use
12578         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12579         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
12580         (mmx_<code>v4hi3): New expander.  Use
12581         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12582         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
12583         (mmx_<code>v8qi3): New expander.  Use
12584         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12585         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
12586         (mmx_<code><mode>3): New expander.  Use
12587         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
12588
12589 2008-05-05  Jan Hubicka  <jh@suse.cz>
12590
12591         PR tree-optimization/36118
12592         * passes.c (pass_init_dump_file): Fix dump header.
12593
12594 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12595
12596         PR middle-end/36141
12597         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
12598         VCE for function decls.
12599
12600 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
12601
12602         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
12603
12604 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
12605
12606         * config/i386/i386.md (sat_plusminus): New.
12607         (plusminus_insn): Likewise.
12608         (plusminus_mnemonic): Likewise.
12609         (addsub): Removed.
12610         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
12611         (*<addsub><mode>3_cc_overflow): Renamed to ...
12612         (*<plusminus_insn><mode>3_cc_overflow): This.
12613         (*<addsub>si3_zext_cc_overflow): Renamed to ...
12614         (*<plusminus_insn>si3_zext_cc_overflow): This.
12615
12616         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
12617         (<plusminus_insn><mode>3): This.
12618         (*<addsub><mode>3): Renamed to ...
12619         (*<plusminus_insn><mode>3): This.
12620         (<sse>_vm<addsub><mode>3): Renamed to ...
12621         (<sse>_vm<plusminus_insn><mode>3): This.
12622         (sse3_h<addsub>v4sf3): Renamed to ...
12623         (sse3_h<plusminus_insn>v4sf3): This.
12624         (sse3_h<addsub>v2df3): Renamed to ...
12625         (sse3_h<plusminus_insn>v2df3): This.
12626         (<plusminus_insn><mode>3): New.
12627         (*<plusminus_insn><mode>3): Likewise.
12628         (sse2_<plusminus_insn><mode>3): Likewise.
12629         (add<mode>): Removed.
12630         (*add<mode>3): Likewise.
12631         (sse2_ssadd<mode>3): Likewise.
12632         (sse2_usadd<mode>3): Likewise.
12633         (sub<mode>3): Likewise.
12634         (*sub<mode>3): Likewise.
12635         (sse2_sssub<mode>3): Likewise.
12636         (sse2_ussub<mode>3): Likewise.
12637
12638 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
12639
12640         * gthr-single.h: Add in required interface elements as per gthr.h.
12641         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
12642         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
12643         Generalize UNUSED macro.
12644         (__gthread_once): Add.
12645         (__gthread_key_create): Add.
12646         (__gthread_key_delete): Add.
12647         (__gthread_getspecific): Add.
12648         (__gthread_setspecific): Add.
12649
12650 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
12651
12652         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
12653         the same size types for the indirect reference on the rhs, then
12654         create a VCE.
12655
12656 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
12657
12658         * config/i386/i386.md
12659         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
12660         one insn template instead of template series.
12661         (*xordi_1_rex64): Ditto.
12662         (*xordi_2_rex64): Ditto.
12663
12664 2008-05-05  Ira Rosen  <irar@il.ibm.com>
12665
12666         PR tree-optimization/36119
12667         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
12668         in case of SLP.
12669
12670 2008-06-04  Jan Hubicka  <jh@suse.cz>
12671
12672         tree-optimization/36100
12673         * tree-pass.h (pass_O0_always_inline): Declare.
12674         * ipa-inline.c (inline_transform): Remove dead code.
12675         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
12676         pass_O0_always_inline): New.
12677         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
12678
12679 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
12680
12681         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
12682         mnemonic in this_param move for TARGET_64BIT.
12683
12684 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
12685
12686         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
12687         (*strmovsi_rex_1): Ditto.
12688         (*strsetsi_1): Ditto.
12689         (*strsetsi_rex_1): Ditto.
12690
12691         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
12692         adddicc expanders using SWI mode iterator.
12693
12694 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
12695
12696         PR target/36121
12697         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
12698         argument handling.
12699
12700 2008-05-04  David S. Miller  <davem@davemloft.net>
12701
12702         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
12703         (sparc*-*-linux*): Use linux.h in tm_file.
12704         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
12705         compiler defaulting to 32-bit.
12706         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
12707         no longer needed.
12708         * config/sparc/linux.h: Remove definitions now obtained
12709         properly from linux.h
12710         * config/sparc/linux64.h: Likewise.
12711         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
12712         don't want this setting for 32-bit builds in a biarch compiler.
12713         * doc/install.texi: Add sparc-linux to list of targets
12714         supporting --enable-targets=all.
12715
12716 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
12717
12718         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
12719
12720 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
12721
12722         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
12723         after V4SI_FTYPE_V8HI.
12724         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
12725         case V4SI_FTYPE_V2DF.
12726
12727 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
12728
12729         * doc/invoke.texi (max-flow-memory-locations): Removed.
12730         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
12731
12732 2008-05-03  Richard Guenther  <rguenther@suse.de>
12733
12734         PR middle-end/34973
12735         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
12736
12737 2008-05-02  David S. Miller  <davem@davemloft.net>
12738
12739         * config.gcc (need_64bit_hwint): Document libcpp dependency.
12740
12741 2008-05-02  Simon Baldwin <simonb@google.com>
12742
12743         PR bootstrap/36108
12744         * c-common.h (warn_array_subscript_range): Removed.
12745         * c-common.c (warn_array_subscript_range): Ditto.
12746         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
12747         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
12748
12749 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
12750
12751         * config/i386/i386.c (ix86_special_builtin_type): New.
12752         (bdesc_special_args): Likewise.
12753         (ix86_expand_special_args_builtin): Likewise.
12754         (ix86_init_mmx_sse_builtins): Updated.
12755         (ix86_expand_builtin): Updated.
12756         (ix86_expand_store_builtin): Removed.
12757         (ix86_expand_unop_builtin): Likewise.
12758
12759         * config/i386/mm3dnow.h (__v2sf): Moved to ...
12760         * config/i386/mmintrin.h (__v2sf): Here.
12761
12762         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
12763         const __v2sf.
12764         (_mm_loadl_pi): Likewise.
12765         (_mm_storeh_pi): Replace __v2si with __v2sf.
12766         (_mm_storel_pi): Likewise.
12767
12768         * doc/extend.texi: Correct __builtin_ia32_loadhps,
12769         __builtin_ia32_loadlps, __builtin_ia32_storehps,
12770         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
12771         __builtin_ia32_loadlpd.
12772
12773 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
12774
12775         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
12776         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
12777         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
12778         (ix86_init_mmx_sse_builtins): Updated.
12779         (ix86_expand_args_builtin): Likewise.
12780         (ix86_expand_builtin): Likewise.
12781         (ix86_expand_unop1_builtin): Renamed to ...
12782         (ix86_expand_unop_vec_merge_builtin): This.
12783
12784 2008-05-01  Jan Hubicka  <jh@suse.cz>
12785
12786         PR bootstrap/36100
12787         * ipa-inline.c (inline_generate_summary): Make static.
12788         (inline_transform): Do not call inlining at -O0; make static.
12789         * passes.c (execute_todo): Add sanity check.
12790         (execute_one_ipa_transform_pass): Execute proper flags.
12791
12792 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
12793
12794         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
12795         (DECL_NONADDRESSABLE_P): Likewise.
12796         * alias.c (record_component_aliases): Fix comment.
12797
12798 2008-05-01  Simon Baldwin <simonb@google.com>
12799
12800         * c-common.h (warn_array_subscript_range): New function.
12801         * c-common.c (warn_array_subscript_range): Ditto.
12802         * tree-vrp.c (check_array_ref): Corrected code to agree with
12803         comment, ignoring only arrays of size 0 or size 1.
12804         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
12805
12806 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12807
12808         * config/i386/i386.c (ix86_builtin_type): Replace
12809         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
12810         (bdesc_args): Updated.
12811         (ix86_init_mmx_sse_builtins): Likewise.
12812         (ix86_expand_args_builtin): Likewise.
12813
12814         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
12815         with __v1di.
12816
12817         * doc/extend.texi: Correct __builtin_ia32_palignr.
12818
12819 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12820
12821         PR target/36095
12822         * config/i386/i386.c (bdesc_crc32): Removed.
12823         (ix86_expand_crc32): Likewise.
12824         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
12825         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
12826         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
12827         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
12828         UINT_FTYPE_UINT_UCHAR.
12829         (bdesc_args): Updated. Add crc32 builtins.
12830         (ix86_init_mmx_sse_builtins): Updated.
12831         (ix86_expand_args_builtin): Updated to support subreg.
12832
12833         * doc/extend.texi: Correct __builtin_ia32_crc32di.
12834
12835 2008-05-01  Jan Hubicka  <jh@suse.cz>
12836
12837         * tree-pass.h (opt_pass): Add IPA_PASS.
12838         (varpool_node, cgraph_node): Forward declare.
12839         (ipa_opt_pass): Define.
12840         (pass_ipa_inline): Turn into ipa_opt_pass.
12841         (pass_apply_inline): Remove.
12842         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
12843         (apply_inline): Turn into ....
12844         (inline_transform): ... this one.
12845         (inline_generate_summary): New function.
12846         (pass_apply_inline): Remove.
12847         * function.h (ipa_opt_pass): Forward declare structure; typedef;
12848         vector.
12849         (struct function): Add ipa_transforms_to_apply.
12850         * passes.c (register_one_dump_file): Work on IPA_PASS.
12851         (init_optimization_passes): Remove pass_inline_parameters and
12852         pass_apply_inline.
12853         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
12854         (execute_one_pass) ... here; apply transforms when possible.
12855         (add_ipa_transform_pass, execute_ipa_summary_asses,
12856         execute_one_ipa_transform_pass): New.
12857         (execute_ipa_pass_list): Update for IPA_PASS type.
12858
12859 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12860
12861         * config/i386/i386.c (ix86_builtin_type): Add
12862         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
12863         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
12864         (bdesc_args): Add SSE4a builtins.
12865         (ix86_init_mmx_sse_builtins): Updated.
12866         (ix86_expand_args_builtin): Likewise.
12867         (ix86_expand_builtin): Likewise.
12868
12869 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12870
12871         * config/i386/i386.c (ix86_builtin_type): Add
12872         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
12873         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
12874         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
12875         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
12876         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
12877         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
12878         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
12879         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
12880         and DI_FTYPE_DI_DI_INT.
12881         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
12882         (ix86_init_mmx_sse_builtins): Updated.
12883         (ix86_expand_args_builtin): Likewise.
12884         (ix86_expand_builtin): Likewise.
12885         (ix86_expand_binop_imm_builtin): Removed.
12886
12887         * doc/extend.texi: Correct __builtin_ia32_palignr128.
12888
12889 2008-04-30  Richard Guenther  <rguenther@suse.de>
12890
12891         PR tree-optimization/32921
12892         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
12893
12894 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
12895
12896         * config/arm/arm.c (arm_unwind_emit): Use
12897         crtl->all_throwers_are_sibcalls instead of
12898         cfun->all_throwers_are_sibcalls.
12899         (arm_output_fn_unwind): Likewise.
12900         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
12901         instead of cfun->uses_pic_offset_table.
12902         (frv_expand_prologue): Likewise.
12903         (frv_frame_pointer_required): Likewise.
12904         (frv_expand_fdpic_call): Likewise.
12905         (frv_emit_movsi): Likewise.
12906         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
12907         cfun->returns_pcc_struct instead of
12908         current_function_returns_pcc_struct.
12909         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
12910         instead of cfun->calls_eh_return.
12911         (m32c_pushm_popm): Likewise.
12912         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
12913         "extern" declaration.
12914
12915 2008-04-30  Richard Guenther  <rguenther@suse.de>
12916
12917         PR tree-optimization/21636
12918         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
12919         constant address.
12920         (evaluate_stmt): Print the likely value.
12921         (ccp_visit_stmt): Avoid excessive vertical spacing.
12922
12923 2008-04-30  Rafael Espindola  <espindola@google.com>
12924
12925         * builtins.c (fold_call_expr): Return realret.
12926         * tree-ssa-threadedge.c
12927         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
12928         __builtin_object_size.
12929
12930 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
12931
12932         * gcc.c (wrapper_string): New variable.
12933         (insert_wrapper): New function.
12934         (execute): New option -wrapper.
12935         * doc/invoke.texi (Overall Options): New driver option -wrapper.
12936
12937 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
12938
12939         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
12940         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
12941         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
12942         from...
12943         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
12944         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
12945         config/rs6000/e500crtres64gprctr.asm,
12946         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
12947         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
12948         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
12949         config/rs6000/e500crtsav64gprctr.asm,
12950         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
12951         config/rs6000/e500crtsavg64gprctr.asm: New files.
12952         * config/rs6000/t-ppccomm: Add build rules for new files.
12953         (LIB2FUNCS_STATIC_EXTRA): Add new files.
12954         * config/rs6000/t-netbsd: Add build rules for new files.
12955         (LIB2FUNCS_STATIC_EXTRA): New variable.
12956         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
12957         (CRTSAVRES_DEFAULT_SPEC): Likewise.
12958         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
12959
12960 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
12961
12962         * config/i386/i386.c (ix86_builtin_type): Add
12963         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
12964         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
12965         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
12966         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
12967         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
12968         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
12969         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
12970         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
12971         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
12972         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
12973         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
12974         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
12975         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
12976         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
12977         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
12978         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
12979         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
12980         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
12981         V1DI_FTYPE_V2SI_V2SI.
12982         (bdesc_2arg): Moved to ...
12983         (bdesc_args): Here.
12984         (ix86_init_mmx_sse_builtins): Updated.
12985         (ix86_expand_args_builtin): Updated.  Take a pointer
12986         to const struct builtin_description.  Handle comparison
12987         builtin functions.
12988         (ix86_expand_sse_compare): Take a new argument for swapping operands.
12989         (ix86_expand_builtin): Updated.
12990
12991         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
12992         (ssse3_pmaddubsw128): This.
12993         (ssse3_pmaddubswv4hi3): Renamed to ...
12994         (ssse3_pmaddubsw): This.
12995
12996         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
12997         (__builtin_ia32_packssdw128): Likewise.
12998         (__builtin_ia32_packuswb128): Likewise.
12999         (__builtin_ia32_pmaddubsw): Likewise.
13000         (__builtin_ia32_pmaddubsw128): Likewise.
13001
13002 2008-04-30  Richard Guenther  <rguenther@suse.de>
13003
13004         PR tree-optimization/14847
13005         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
13006         (recognize_bits_test): Use it.
13007         (recognize_single_bit_test): Likewise.
13008
13009 2008-04-30  Martin Jambor  <mjambor@suse.cz>
13010
13011         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
13012         instead of setting number of formal parameters to zero.
13013         (ipcp_init_stage): Do not set the number of actual parameters to zero
13014         either.
13015         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
13016         which are called with variable number of arguments.
13017         (ipcp_insert_stage): Explicitely skipping all nodes which are
13018         called with variable number of arguments.
13019         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
13020         number of parameters.
13021
13022         * ipa-prop.h (struct ipa_node_params): Added flag
13023         called_with_var_arguments
13024         (ipa_set_param_count): Added.  Changed sole setter to use it.
13025         (ipa_get_param_count): Added.  All readers of param_count
13026         converted to use it instead.
13027         (ipa_set_called_with_variable_arg): Added.
13028         (ipa_is_called_with_var_arguments): Added.
13029         (ipa_get_ith_param): Added.  All readers of param_decls converted
13030         to use it instead.
13031         (ipa_set_cs_argument_count): Added, sole writer to argument_count
13032         changed to use it.
13033         (ipa_get_cs_argument_count): Added, all readers of argument_count
13034         changed to cal it.
13035         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
13036         to use it.
13037
13038         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
13039         (struct ipcp_lattice): Renamed cval_type to type
13040         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
13041
13042         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
13043         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
13044         (ipcp_insert_stage): Changed the type of variable cvalue to tree
13045         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
13046         (build_const_val): Changed the type of parameter cvalue to tree
13047         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
13048         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
13049
13050         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
13051         constant
13052
13053         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
13054         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
13055         (ipa_add_method): Renamed to ipa_push_func_to_list
13056         (ipa_remove_method): Renamed to ipa_pop_func_from_list
13057         (ipa_callsite_param_count): Removed.
13058         (ipa_callsite_param_count_set): Removed.
13059         (ipa_callsite_param): Removed.
13060         (ipa_callsite_callee): Removed.
13061         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
13062         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
13063         (ipa_method_formal_count): Removed.
13064         (ipa_method_formal_count_set): Removed.
13065         (ipa_method_get_tree): Removed.
13066         (ipa_method_tree_map_create): Removed.
13067         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
13068         (ipa_create_param_decls_array): Creates the array itself
13069         (ipa_create_param_decls_array): Temporary variable info instead of
13070         a few dereferences.
13071         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
13072         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
13073         (get_type): Removed.
13074         (ipa_jf_get_info_type): Removed.
13075         (ipa_node_create): Renamed to ipa_create_node_params
13076         (ipa_free): Renamed to ipa_free_all_node_params
13077         (ipa_nodes_create): Renamed to ipa_create_all_node_params
13078         (ipa_edges_create): Renamed to ipa_create_all_edge_args
13079         (ipa_edges_free): Renamed to ipa_free_all_edge_args
13080         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
13081         (ipa_free_all_node_params): Deallocation to jump_functions moved to
13082         ipa_free_all_edge_args
13083         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
13084         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
13085         (ipa_create_methodlist_node): Removed.
13086         (ipa_methodlist_method): Removed.
13087         (ipa_methodlist_method_set): Removed.
13088         (ipa_methodlist_next_method): Removed.
13089         (ipa_methodlist_next_method_set): Removed.
13090         (ipa_method_is_modified): Removed.
13091         (ipa_method_modify_create): Removed.
13092         (ipa_method_modify_init): Temporary variable info instead of a few
13093         dereferences.
13094         (ipa_detect_param_modifications): Temporary variable info instead of
13095         a few dereferences.
13096         (ipa_compute_jump_functions): Temporary variable info instead of
13097         a few dereferences.
13098         (ipa_method_modify_set): Removed.
13099         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
13100         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
13101         than craph_node as the first parameter.
13102         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
13103         (ipa_method_modify_init): Removed.
13104         (ipa_compute_jump_functions): Added a temp variable instead of
13105         repeatadly dereferencing the cgraph_edge.aux pointer
13106         (ipa_callsite_param_set_type): Removed.
13107         (ipa_compute_jump_functions): i renamed to index and moved to
13108         an inner block
13109         (ipa_callsite_param_set_info_type_formal): Removed.
13110         (ipa_callsite_param_set_info_type): Removed.
13111         (ipa_callsite_param_map_create): Removed.
13112         (ipa_callsite_tree): Removed.
13113         (ipa_callsite_caller): Removed.
13114         (ipa_pop_func_from_list): return_method removed to return_func
13115
13116         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
13117         prefixed all values with IPA_. Changed all users.
13118         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
13119         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
13120         and FORMAL_IPATYPE IPA_PASS_THROUGH.
13121         (union parameter_info): Renamed to jump_func_value.
13122         (union jump_func_value): Renamed value to constant
13123         (struct ipa_jump_func): Renamed info_type to value
13124         (struct ipa_node): Renamed to ipa_node_params
13125         (struct ipa_node_params): Renamed ipa_arg_num to param_count
13126         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
13127         (struct ipa_node_params): Renamed ipa_mod to modified_flags
13128         (struct ipa_edge): Renamed to ipa_edge_args
13129         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
13130         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
13131         (struct ipa_methodlist): Renamed to ipa_func_list
13132         (struct ipa_func_list): method_p renamed to node, next_method
13133         renamed to next
13134         (ipa_methodlist_p): Removed, switched all users to struct pointer
13135         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
13136
13137 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
13138
13139         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
13140         (rs6000_emit_epilogue): Use backchain to restore only when we
13141         have a large frame.  Make use of frame pointer to restore if we
13142         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
13143
13144 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
13145
13146         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
13147         Add mode to zero_extract.
13148         (sign bit tests peepholes): (Ditto.).
13149
13150 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
13151
13152         * config/i386/i386.c (ix86_builtins): Replace Prescott New
13153         Instructions in comments with SSE3.
13154         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
13155         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
13156         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
13157         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
13158         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
13159         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
13160         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
13161         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
13162         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
13163         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
13164         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
13165         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
13166         (bdesc_sse_args): Renamed to ...
13167         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
13168         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
13169         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
13170         IX86_BUILTIN_FABSQ.
13171         (bdesc_1arg): Moved to ...
13172         (bdesc_args): Here.
13173         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
13174         Instructions in comments with SSE3.
13175         (ix86_expand_sse_operands_builtin): Renamed to ...
13176         (ix86_expand_args_builtin): This.  Updated.
13177         (ix86_expand_unop1_builtin): Update comments.
13178         (ix86_expand_builtin): Updated.
13179
13180 2008-04-29  Richard Guenther  <rguenther@suse.de>
13181
13182         PR tree-optimization/36078
13183         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
13184         Update virtual SSA form after cleaning up the CFG.
13185
13186 2008-04-29  Richard Guenther  <rguenther@suse.de>
13187
13188         PR middle-end/15255
13189         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
13190
13191 2008-04-29  Richard Guenther  <rguenther@suse.de>
13192
13193         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
13194         (compute_may_aliases): Do not call finalize_ref_all_pointers.
13195         (compute_flow_insensitive_aliasing): Do not treat
13196         PTR_IS_REF_ALL pointers special.
13197         (get_smt_for): Likewise.
13198         (may_alias_p): Re-structure.
13199         (is_escape_site): A ref-all pointer conversion is not an escape site.
13200         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
13201         PTR_IS_REF_ALL pointers special.
13202         * tree-ssa-structalias.h (struct alias_info): Remove
13203         ref_all_symbol_mem_tag field.
13204         (PTR_IS_REF_ALL): Remove.
13205
13206 2008-04-29  Richard Guenther  <rguenther@suse.de>
13207
13208         PR middle-end/36077
13209         * fold-const.c (extract_muldiv_1): In combining division constants
13210         make sure to never overflow.
13211
13212 2008-04-29  Nick Clifton  <nickc@redhat.com>
13213
13214         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
13215
13216 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13217
13218         PR bootstrap/35169
13219         * optc-gen.awk: Work around HP-UX/IA awk bug.
13220
13221 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
13222
13223         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
13224         2008-04-25 commit.
13225
13226 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
13227
13228         PR target/36073
13229         * config/i386/i386.md
13230         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
13231         Change operand 1 predicate to nonimmediate_operand.
13232
13233 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
13234
13235         PR debug/36060
13236         * dwarf2out.c (struct die_struct): Mark as chain_circular through
13237         die_sub field.
13238         * gengtype.c (walk_type, write_func_for_structure): Handle
13239         chain_circular.
13240         * doc/gty.texi: Document chain_circular.
13241
13242 2008-04-28  Richard Guenther  <rguenther@suse.de>
13243
13244         PR tree-optimization/36066
13245         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
13246         SCEV and loop.
13247
13248 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
13249
13250         PR target/36064
13251         * config/i386/i386.md
13252         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
13253         Use match_scratch instead of match_operand for operands 3 and 4.
13254
13255 2008-04-27  Richard Guenther  <rguenther@suse.de>
13256
13257         PR tree-optimization/18754
13258         PR tree-optimization/34223
13259         * tree-pass.h (pass_complete_unrolli): Declare.
13260         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
13261         loop size before and after unconditionally of UL_NO_GROWTH in effect.
13262         Rewrite loop into loop closed SSA form if it is not already.
13263         (tree_unroll_loops_completely): Re-structure to iterate over
13264         innermost loops with intermediate CFG cleanups.
13265         Unroll outermost loops only if requested or the code does not grow
13266         doing so.
13267         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
13268         loops are available.
13269         (tree_vectorize): Instead do so here.
13270         (tree_complete_unroll): Also unroll outermost loops.
13271         (tree_complete_unroll_inner): New function.
13272         (gate_tree_complete_unroll_inner): Likewise.
13273         (pass_complete_unrolli): New pass.
13274         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
13275         uses outside of the loop.
13276         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
13277         form if it is available.
13278         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
13279         * passes.c (init_optimization_passes): Schedule complete inner
13280         loop unrolling pass before the first CCP pass after final inlining.
13281
13282 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
13283
13284         * targhooks.h (default_emutls_var_fields,
13285         default_emutls_var_init): Declare.
13286         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
13287         * target.h (struct gcc_target): Add struct emutls member.
13288         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
13289         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
13290         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
13291         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
13292         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
13293         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
13294         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
13295         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
13296         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
13297         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
13298         emit debug information.
13299         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
13300         * varasm.c: Include targhooks.h.
13301         (emutls_object_section, emutls_tmpl_section): New.
13302         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
13303         (EMUTLS_SEPARATOR): New.
13304         (prefix_name): New.
13305         (get_emutls_object_name): New.
13306         (default_emutls_var_fields): New, broken out of ...
13307         (get_emutls_object_type): ... here.  Adjust to use target hooks.
13308         (get_emutls_init_templ_addr): Adjust to use target hooks.
13309         (emutls_decl): Adjust to use target hooks.
13310         (emutls_finish): Likewise.
13311         (default_emutls_var_init): New, broken out of ...
13312         (assemble_variable): ... here.  Adjust to use target hooks.
13313         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
13314         SECCAT_EMUTLS_TMPL.
13315         * c-common.c (handle_section_attribute): Prevent overriding
13316         sections for emulated tls with special sections.
13317         * config/i386/i386.c (x86_64_elf_select_section): Add
13318         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
13319         (x86_64_elf_unique_section): Likewise.
13320         * config/vxworks.c: Include tree.h.
13321         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
13322         (vxworks_override_options): Set TLS scheme.
13323         * doc/tm.texi (Emulated TLS): New node.
13324
13325 2008-04-26  Simon Baldwin <simonb@google.com>
13326
13327         PR c/35652
13328         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
13329         with propagated string constants.
13330
13331 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
13332
13333         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
13334         constraint for operand 2 when operand 0 is memory operand.
13335         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
13336         operand 0 is memory operand.
13337         (fix_trunc<mode>_i387_with_temp): Ditto.
13338         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
13339         operand 2 when operand 1 is memory operand.
13340         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
13341         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
13342         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
13343         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
13344         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
13345         operands 2,3 and 4 when operand 1 is memory operand.
13346         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
13347         is memory operand.
13348         (fistdi2_floor_with_temp): Ditto.
13349         (fist<mode>2_floor_with_temp): Ditto.
13350         (fistdi2_ceil_with_temp): Ditto.
13351         (fist<mode>2_ceil_with_temp): Ditto.
13352         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
13353
13354 2008-04-26  David Daney  <ddaney@avtrex.com>
13355
13356         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
13357         unspec_volitile.
13358         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
13359         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
13360         UNSPEC_UPDATE_GOT_VERSION): Renumber.
13361         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
13362         (compare_and_swap_12): New insn.
13363         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
13364         * config/mips/mips.c (mips_force_binary): New function.
13365         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
13366         (mips_expand_compare_and_swap_12): New function.
13367         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
13368
13369 2008-04-25  Jan Hubicka  <jh@suse.cz>
13370
13371         PR testsuite/35843
13372         * cfgexpand.c (pass_expand): Turn into RTL pass.
13373         * passes.c (execute_one_pass): Do pass typechecking after execution.
13374         * tree-pass.h (pass_expand): Turn into RTL pass.
13375
13376         * function.h (struct rtl_data): Move here fields
13377         accesses_prior_frames, calls_eh_return, saves_all_registers,
13378         has_nonlocal_goto, has_asm_statement, is_thunk,
13379         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
13380         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
13381         arg_pointer_save_area_init from struct function; turn into bool.
13382         (struct function): Move
13383         calls_eh_return, saves_all_registers, has_nonlocal_goto,
13384         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
13385         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
13386         tail_call_emit, arg_pointer_save_area_init
13387         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
13388         (current_function_returns_struct, current_function_returns_pcc_struct,
13389         current_function_calls_setjmp, current_function_calls_alloca,
13390         current_function_accesses_prior_frames,
13391         current_function_calls_eh_return, current_function_is_thunk,
13392         current_function_stdarg, current_function_profile,
13393         current_function_limit_stack, current_function_uses_pic_offset_table,
13394         current_function_uses_const_pool, current_function_has_nonlocal_label,
13395         current_function_saves_all_registers,
13396         current_function_has_nonlocal_goto,
13397         current_function_has_asm_statement): Remove accesor macros.
13398         * ra-conflict.c (global_conflicts): Update.
13399         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
13400         (suitable_for_tail_call_opt_p): Update.
13401         * builtins.c (expand_builtin_return_addr): Update.
13402         (expand_builtin_setjmp_setup): Update.
13403         (expand_builtin_nonlocal_goto): Update.
13404         * final.c (final_start_function): Update.
13405         (profile_function): Update.
13406         (leaf_function_p): Update.
13407         (only_leaf_regs_used): Update.
13408         * df-scan.c (df_get_exit_block_use_set): Update.
13409         * dojump.c (clear_pending_stack_adjust): Update.
13410         * tree-stdarg.c (gate_optimize_stdarg): Update.
13411         * gimple-low.c (lower_function_body): Update.
13412         * global.c (compute_regsets): Update.
13413         (global_alloc): Update.
13414         * dwarf2out.c (dwarf2out_begin_prologue): Update.
13415         * expr.c (expand_assignment): Update.
13416         * dse.c (dse_step0): Update.
13417         (dse_step1): Update.
13418         * c-decl.c (store_parm_decls): Update.
13419         * local-alloc.c (combine_regs): Update.
13420         (find_free_reg): Update.
13421         * function.c (assign_parms_augmented_arg_list): Update.
13422         (assign_parm_find_data_types): Update.
13423         (assign_parms): Update.
13424         (allocate_struct_function): Update.
13425         (expand_function_start): Update.
13426         (expand_function_end): Update.
13427         (get_arg_pointer_save_area): Update.
13428         (thread_prologue_and_epilogue_insns): Update.
13429         (rest_of_match_asm_constraints): Update.
13430         * stor-layout.c (variable_size): Update.
13431         * gcse.c (gcse_main): Update.
13432         (bypass_jumps): Update.
13433         * gimplify.c (gimplify_function_tree): Update.
13434         * calls.c (emit_call_1): Update.
13435         (expand_call): Update.
13436         * bt-load.c (compute_defs_uses_and_gen): Update.
13437         * except.c (sjlj_assign_call_site_values): Update.
13438         (sjlj_emit_function_enter): Update.
13439         (can_throw_external): Update.
13440         (set_nothrow_function_flags): Update.
13441         (expand_builtin_unwind_init): Update.
13442         (expand_eh_return): Update.
13443         (convert_to_eh_region_ranges): Update.
13444         (output_function_exception_table): Update.
13445         * emit-rtl.c (gen_tmp_stack_mem): Update.
13446         * cfgexpand.c (expand_used_vars): Update.
13447         (tree_expand_cfg): Update.
13448         * cfgcleanup.c (rest_of_handle_jump): Update.
13449         * explow.c (allocate_dynamic_stack_space): Update.
13450         * varasm.c (assemble_start_function): Update.
13451         (force_const_mem): Update.
13452         (mark_constant_pool): Update.
13453         * tree-optimize.c (tree_rest_of_compilation): Update.
13454         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
13455         * tree-cfg.c (notice_special_calls): Update.
13456         (is_ctrl_altering_stmt): Update.
13457         (tree_can_make_abnormal_goto): Update.
13458         (tree_purge_dead_abnormal_call_edges): Update.
13459         * config/alpha/predicates.md: Update.
13460         * config/alpha/alpha.c (alpha_sa_mask): Update.
13461         (alpha_sa_size): Update.
13462         (alpha_does_function_need_gp): Update.
13463         (alpha_expand_prologue): Update.
13464         (alpha_start_function): Update.
13465         (alpha_output_function_end_prologue): Update.
13466         (alpha_expand_epilogue): Update.
13467         * config/frv/frv.c (frv_stack_info): Update.
13468         (frv_expand_epilogue): Update.
13469         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
13470         (s390_register_info): Update.
13471         (s390_frame_info): Update.
13472         (s390_init_frame_layout): Update.
13473         (s390_can_eliminate): Update.
13474         (save_gprs): Update.
13475         * config/spu/spu.c (spu_split_immediate): Update.
13476         (need_to_save_reg): Update.
13477         (spu_expand_prologue): Update.
13478         (spu_expand_epilogue): Update.
13479         * config/sparc/sparc.md: Update.
13480         * config/sparc/sparc.c (eligible_for_return_delay): Update.
13481         (sparc_tls_got): Update.
13482         (legitimize_pic_address): Update.
13483         (sparc_emit_call_insn): Update.
13484         (sparc_expand_prologue): Update.
13485         (output_return): Update.
13486         (print_operand): Update.
13487         (sparc_function_ok_for_sibcall): Update.
13488         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
13489         * config/m32r/m32r.md: Update.
13490         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
13491         (m32r_compute_frame_size): Update.
13492         (m32r_expand_prologue): Update.
13493         (m32r_expand_epilogue): Update.
13494         (m32r_legitimize_pic_address): Update.
13495         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
13496         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
13497         * config/i386/i386.c (ix86_frame_pointer_required): Update.
13498         (gen_push): Update.
13499         (ix86_save_reg): Update.
13500         (ix86_compute_frame_layout): Update.
13501         (ix86_expand_prologue): Update.
13502         (ix86_expand_epilogue): Update.
13503         * config/sh/sh.c (output_stack_adjust): Update.
13504         (calc_live_regs): Update.
13505         (sh5_schedule_saves): Update.
13506         (sh_expand_prologue): Update.
13507         (sh_expand_epilogue): Update.
13508         (sh_setup_incoming_varargs): Update.
13509         (sh_allocate_initial_value): Update.
13510         (sh_get_pr_initial_val): Update.
13511         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
13512         * config/sh/sh.md (label:): Update.
13513         * config/avr/avr.c (out_movhi_mr_r): Update.
13514         * config/crx/crx.h (enum): Update.
13515         * config/xtensa/xtensa.h (along): Update.
13516         * config/stormy16/stormy16.c Update.
13517         (xstormy16_compute_stack_layout): Update.
13518         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
13519         (fr30_expand_prologue): Update.
13520         * config/cris/cris.c (cris_conditional_register_usage): Update.
13521         (cris_reg_saved_in_regsave_area): Update.
13522         (cris_initial_frame_pointer_offset): Update.
13523         (cris_simple_epilogue): Update.
13524         (cris_expand_prologue): Update.
13525         (cris_expand_epilogue): Update.
13526         (cris_expand_pic_call_address): Update.
13527         (cris_asm_output_symbol_ref): Update.
13528         (cris_asm_output_label_ref): Update.
13529         * config/cris/cris.md Update.
13530         * config/iq2000/iq2000.c (compute_frame_size): Update.
13531         (iq2000_expand_epilogue): Update.
13532         * config/mt/mt.h (save_direction): Update.
13533         * config/mn10300/mn10300.c (mn10300_function_value): Update.
13534         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
13535         (ia64_secondary_reload_class): Update.
13536         * config/m68k/m68k.c (m68k_save_reg): Update.
13537         (m68k_expand_prologue): Update.
13538         (m68k_expand_epilogue): Update.
13539         (legitimize_pic_address): Update.
13540         * config/rs6000/rs6000.c (rs6000_got_register): Update.
13541         (first_reg_to_save): Update.
13542         (first_altivec_reg_to_save): Update.
13543         (compute_vrsave_mask): Update.
13544         (compute_save_world_info): Update.
13545         (rs6000_stack_info): Update.
13546         (spe_func_has_64bit_regs_p): Update.
13547         (rs6000_ra_ever_killed): Update.
13548         (rs6000_emit_eh_reg_restore): Update.
13549         (rs6000_emit_allocate_stack): Update.
13550         (rs6000_emit_prologue): Update.
13551         (rs6000_emit_epilogue): Update.
13552         (rs6000_output_function_epilogue): Update.
13553         (output_profile_hook): Update.
13554         (rs6000_elf_declare_function_name): Update.
13555         * config/rs6000/rs6000.h (rs6000_args): Update.
13556         * config/rs6000/rs6000.md: Update.
13557         * config/mcore/mcore.c (mcore_expand_prolog): Update.
13558         * config/arc/arc.c (arc_output_function_epilogue): Update.
13559         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
13560         * config/darwin.c (machopic_function_base_name): Update.
13561         * config/score/score3.c (score3_compute_frame_size): Update.
13562         (rpush): Update.
13563         (rpop): Update.
13564         (score3_epilogue): Update.
13565         * config/score/score7.c (score7_compute_frame_size): Update.
13566         (score7_prologue): Update.
13567         (score7_epilogue): Update.
13568         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
13569         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
13570         * config/arm/arm.c (use_return_insn): Update.
13571         (require_pic_register): Update.
13572         (arm_load_pic_register): Update.
13573         (arm_compute_save_reg0_reg12_mask): Update.
13574         (arm_compute_save_reg_mask): Update.
13575         (thumb1_compute_save_reg_mask): Update.
13576         (output_return_instruction): Update.
13577         (arm_output_function_prologue): Update.
13578         (arm_output_epilogue): Update.
13579         (arm_get_frame_offsets): Update.
13580         (arm_expand_prologue): Update.
13581         (thumb_pushpop): Update.
13582         (thumb_exit): Update.
13583         (thumb1_expand_prologue): Update.
13584         (thumb1_expand_epilogue): Update.
13585         (arm_unwind_emit): Update.
13586         (arm_output_fn_unwind): Update.
13587         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
13588         * config/arm/arm.md: Update.
13589         * config/pa/pa.md: Update.
13590         * config/pa/pa.c (legitimize_pic_address): Update.
13591         (compute_frame_size): Update.
13592         (hppa_expand_prologue): Update.
13593         (hppa_expand_epilogue): Update.
13594         (borx_reg_operand): Update.
13595         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
13596         (HARD_REGNO_RENAME_OK): Update.
13597         * config/mips/mips.c (mips_global_pointer): Update.
13598         (mips_save_reg_p): Update.
13599         (mips_compute_frame_info): Update.
13600         (mips_frame_pointer_required): Update.
13601         (mips_expand_prologue): Update.
13602         (mips_expand_epilogue): Update.
13603         (mips_can_use_return_insn): Update.
13604         (mips_reorg_process_insns): Update.
13605         * config/v850/v850.c (compute_register_save_size): Update.
13606         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
13607         * config/mmix/mmix.c (along): Update.
13608         (mmix_expand_epilogue): Update.
13609         * config/bfin/bfin.c (legitimize_pic_address): Update.
13610         (must_save_p): Update.
13611         (stack_frame_needed_p): Update.
13612         (add_to_reg): Update.
13613         (bfin_expand_prologue): Update.
13614         * stmt.c (expand_asm_operands): Update.
13615         * reload1.c (reload): Update.
13616         (init_elim_table): Update.
13617
13618 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
13619
13620         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
13621
13622 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
13623
13624         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
13625         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
13626         (mov<mode>): Removed.
13627         (*movv4sf_internal): Likewise.
13628         (*movv2df_internal): Likewise.
13629
13630 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
13631
13632         * config.gcc (crx-*-elf): Remove deprecation.
13633
13634 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
13635
13636         * config/i386/cygming-crtend.c (register_frame_ctor): Register
13637         __gcc_deregister_frame with atexit.
13638         (deregister_frame_dtor): Remove.
13639
13640 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
13641             Nathan Sidwell  <nathan@codesourcery.com>
13642
13643         * config/rs6000/rs6000.opt (mspe): Remove Var property.
13644         (misel): Likewise.
13645         * config/rs6000/rs6000.h (rs6000_spe): Declare.
13646         (rs6000_isel): Likewise.
13647         * config/rs6000/rs6000.c (rs6000_spe): New variable.
13648         (rs6000_isel): New variable.
13649         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
13650
13651 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
13652
13653         PR c++/35758
13654         * c-common.c (handle_vector_size_attribute): Call
13655         lang_hooks.types.reconstruct_complex_type instead of
13656         reconstruct_complex_type.
13657         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
13658         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
13659         * langhooks.h (struct lang_hooks_for_types): Add
13660         reconstruct_complex_type hook.
13661         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
13662         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
13663
13664 2008-04-24  Richard Guenther  <rguenther@suse.de>
13665
13666         * c-common.h (check_builtin_function_arguments): Declare.
13667         * c-common.c (validate_nargs): New function.
13668         (check_builtin_function_arguments): Likewise.
13669         * c-typeck.c (build_function_call): Call
13670         check_builtin_function_arguments.
13671         * builtins.c (fold_builtin_classify): Remove error reporting code.
13672         (fold_builtin_unordered_cmp): Likewise.
13673         (fold_builtin_1): Likewise.
13674         (fold_builtin_n): Likewise.
13675
13676 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
13677
13678         PR tree-optimization/36008
13679         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
13680         the original op1, rather than delta by step.
13681
13682 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
13683             Sebastian Pop  <sebastian.pop@amd.com>
13684
13685         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
13686         eliminate_local_variables_stmt, eliminate_local_variables,
13687         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
13688         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
13689         of code delimited by two edges in the CFG.
13690         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
13691         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
13692         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
13693         the case of parallelisation of reductions.
13694         (expr_invariant_in_region_p): New.
13695
13696         * tree-flow.h (gather_blocks_in_sese_region): Declared.
13697         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
13698
13699 2008-04-24  Ira Rosen  <irar@il.ibm.com>
13700             Richard Guenther  <rguenther@suse.de>
13701
13702         PR tree-optimization/36034
13703         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
13704         incapable of dealing with loads with gaps.
13705
13706 2008-04-24  Rafael Espindola  <espindola@google.com>
13707
13708         * tree-flow.h (vrp_evaluate_conditional): Change signature.
13709         * tree-ssa-propagate.c (fold_predicate_in): Update call to
13710         vrp_evaluate_conditional.
13711         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
13712         (vrp_evaluate_conditional): Split the cond argument.
13713         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
13714         (simplify_stmt_for_jump_threading): Update call to
13715         vrp_evaluate_conditional.
13716
13717 2008-04-24  Ira Rosen  <irar@il.ibm.com>
13718
13719         PR tree-optimization/35982
13720         * tree-vect-analyze.c (vect_check_interleaving): Check that the
13721         interleaved data-refs are of the same type.
13722
13723 2008-04-24  Danny Smith  <dannysmith@users.net>
13724
13725         * c-format.c (check_format_info_main): Use strncmp rather than a
13726         magic prefix to handle multichar length specs.
13727         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
13728         Don't prefix "I64" and "I32" with '\0'.
13729
13730 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
13731
13732         PR target/36015
13733         * config/i386/i386.c (init_cumulative_args): Don't pass anything
13734         in registers for -m32 only if stdarg_p (fntype).
13735
13736 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
13737
13738         PR rtl-optimization/36006
13739         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
13740         temp to op0 in order to avoid invalid rtx sharing.
13741
13742 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
13743
13744         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
13745         check TREE_INVARIANT.
13746         * tree-gimple.c (is_gimple_address): New.
13747         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
13748         * tree-gimple.h (is_gimple_address): New.
13749         * tree.h (decl_address_invariant_p): New.
13750         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
13751         (build_string): Likewise.
13752         (decl_address_invariant_p): New, from is_gimple_invariant_address.
13753         (tree_invariant_p_1): Likewise.
13754         (save_expr): Use it.
13755         (tree_invariant_p): New.
13756         (skip_simple_arithmetic): Use it.
13757         (stabilize_reference_1): Use it.
13758         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
13759         simplify.
13760         (build1_stat): Drop code to compute TREE_INVARIANT.
13761         (build2_stat): Drop code to compute TREE_INVARIANT.
13762         (build3_stat): Drop code to compute TREE_INVARIANT.
13763         (build4_stat): Drop code to compute TREE_INVARIANT.
13764         (build5_stat): Drop code to compute TREE_INVARIANT.
13765         (build7_stat): Drop code to compute TREE_INVARIANT.
13766         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
13767         * tree.h (struct tree_base): Remove invariant_flag.
13768         (TREE_INVARIANT): Remove.
13769         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
13770         (fold_builtin_expect): Check TREE_CONSTANT.
13771         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
13772         * c-tree.h (c_expr_to_decl): Drop third parameter.
13773         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
13774         (build_c_cast): Don't set TREE_INVARIANT.
13775         (pop_init_level): Don't set TREE_INVARIANT.
13776         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
13777         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
13778         TREE_CONSTANT.
13779         (gimplify_init_constructor): Don't set TREE_INVARIANT.
13780         (gimplify_addr_expr): Adjust comment.
13781         * tree-mudflap.c (mf_build_string):
13782         * print-tree.c (print_node): Don't print TREE_INVARIANT.
13783         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
13784         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
13785         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
13786         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
13787         * langhooks.h (struct lang_hooks): Drop third parameter from
13788         expr_to_decl.
13789
13790 2008-04-23  Richard Guenther  <rguenther@suse.de>
13791
13792         PR tree-optimization/27799
13793         PR tree-optimization/32921
13794         PR tree-optimization/32624
13795         * tree-ssa-structalias.c (merge_smts_into): Only merge the
13796         SMTs aliases and the tag itself into the solution.
13797         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
13798         merge the points-to solution back into the SMT aliases.
13799         (may_alias_p): Use alias_set_subset_of instead of
13800         aliases_conflict_p.  A pointer which points to
13801         memory with alias set zero may access any variable.
13802
13803 2008-04-23  Richard Guenther  <rguenther@suse.de>
13804
13805         * alias.c (alias_set_subset_of): Correctly handle asking
13806         if zero is a subset of an alias set with zero child.
13807         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
13808         (compute_flow_insensitive_aliasing): Correctly walk all
13809         pointers.  Do not unnecessarily union sets.
13810
13811 2008-04-23  Richard Guenther  <rguenther@suse.de>
13812
13813         PR middle-end/36021
13814         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
13815
13816 2008-04-22  Tomas Bily  <tbily@suse.cz>
13817
13818         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
13819         unreachable case.
13820         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
13821         NON_LVALUE_EXPR.
13822         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
13823         * tree-ssa-structalias.c (get_constraint_for): Likewise.
13824         * tree-inline.c (estimate_num_insns_1): Likewise.
13825         * varasm.c (const_hash_1, compare_constant, copy_constant)
13826         (compute_reloc_for_constant, output_addressed_constants): Likewise.
13827         * emit-rtl.c (component_ref_for_mem_expr)
13828         (set_mem_attributes_minus_bitpos): Likewise.
13829         * expr.c (highest_pow2_factor, expand_expr_real_1, )
13830         (is_aligning_offset): Likewise.
13831         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
13832         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
13833         * dojump.c (do_jump): Likewise.
13834         * builtins.c (get_pointer_alignment, get_memory_rtx)
13835         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
13836         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
13837
13838 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
13839
13840         PR rtl-optimization/36017
13841         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
13842         expanding the library call.
13843
13844 2008-04-22  Ian Lance Taylor  <iant@google.com>
13845
13846         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
13847         than size_in_bytes.
13848
13849 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
13850
13851         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
13852         of LR/CTR moves for Power6.
13853
13854 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
13855
13856         PR middle-end/36003
13857         * passes.c (init_optimization_passes): Remove
13858         pass_fast_rtl_byte_dce.
13859
13860 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
13861
13862         PR target/29096
13863         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
13864         builtin functions to generate faster code.
13865         (_mm_cvtpu16_ps): Ditto.
13866         (_mm_cvtpi32x2_ps): Ditto.
13867
13868 2008-04-22  Nick Clifton  <nickc@redhat.com>
13869
13870         * common.opt (ftree-loop-distribution): Add Optimization
13871         attribute.
13872
13873         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
13874         (frv_expand_builtin_va_start): Likewise.
13875
13876         * config/arm/arm.c (thumb_find_work_register): Fix location of
13877         argument register count.
13878
13879 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
13880
13881         Support scheduling for ColdFire V1 and V3 microarchitecture.
13882         Improve scheduling of multiplication instructions.
13883
13884         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
13885         (mac): New instruction attribute.
13886         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
13887         (m68k_sched_mac): New variable.
13888         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
13889         Handle cfv1 and cfv3.
13890         (max_insn_size): New static variable.
13891         (struct _sched_ib): New type.
13892         (sched_ib): New static variable.
13893         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
13894         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
13895         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
13896         Update.
13897         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
13898         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
13899         new variables.  Update.
13900         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
13901         Add modeling of cfv3 instruction buffer.  Update.
13902         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
13903         * config/m68k/m68k.h (TUNE_CFV3): New macro.
13904         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
13905         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
13906         a particular reservation applies to.
13907         (type2): Reorganize attribute values.  Rename alu to alu_reg,
13908         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
13909         to mul_l and mul_w.
13910         (cf_ib_*): Simplify description of instruction buffer.
13911         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
13912         (cf_mem): Split into cf_mem1 and cf_mem2.
13913         (cf_v2_move_??): Rename to cfv12_alu_??.
13914         (cf_v2_move_l_??): Rename to cfv12_omove_??.
13915         (cf_v2_mul_??): Remove reservations.
13916         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
13917         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
13918         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
13919         appropriate place.
13920         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
13921         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
13922         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
13923         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
13924         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
13925         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
13926         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
13927         expansions of the above reservations for instructions of sizes
13928         1, 2 and 3 words.
13929
13930 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
13931
13932         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
13933
13934 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
13935
13936         * coverage.c: Include tree-pass.h.
13937         (coverage_counter_alloc): Print da_file_name to the dump file.
13938
13939 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
13940
13941         * sbitmap.c (sbitmap_range_empty_p): New function.
13942         * sbitmap.h (sbitmap_range_empty_p): New function.
13943         * bitmap.h: Now includes obstack.h.
13944
13945 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
13946             Kenneth Zadeck  <zadeck@naturalbridge.com>
13947
13948         * dbgcnt.def (ra_byte_scan): Added.
13949         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
13950         when the last hit happens for a counter.
13951         * timevar.def (TV_DF_BYTE_LR): New variable.
13952         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
13953         * passes.c (pass_fast_rtl_byte_dce): New pass.
13954         * fwprop.c (update_df): Added mode to call df_ref_create.
13955         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
13956         DF_REF_EXTRACT_OFFSET.
13957         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
13958         DF_BYTE_LR_OUT, df_byte_lr): New macro.
13959         (df_mm): New enum.
13960         (df_ref_extract): Added mode field.
13961         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
13962         DF_REF_EXTRACT_OFFSET.
13963         (DF_REF_EXTRACT_MODE): New macro.
13964         (df_byte_lr_bb_info): New structure.
13965         (df_print_byte_regset, df_compute_accessed_bytes,
13966         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
13967         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
13968         df_byte_lr_simulate_uses,
13969         df_byte_lr_simulate_artificial_refs_at_top,
13970         df_byte_lr_simulate_artificial_refs_at_end,
13971         df_compute_accessed_bytes): New function.
13972         (df_ref_create): Add parameter.
13973         (df_byte_lr_get_bb_info): New inline function.
13974         * df-scan.c (df_ref_record, df_uses_record,
13975         df_ref_create_structure): Added mode parameter.
13976         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
13977         df_defs_record, df_uses_record, df_get_conditional_uses,
13978         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
13979         df_entry_block_defs_collect, df_exit_block_uses_collect):
13980         Added mode parameter to calls to df_ref_record, df_uses_record,
13981         df_ref_create_structure.
13982         (df_ref_equal_p, df_ref_compare): Added test for modes.
13983         (df_ref_create_structure): Added code to set mode.  Renamed
13984         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
13985         DF_REF_EXTRACT_OFFSET.
13986         * df-core.c (df_print_byte_regset): New function.
13987         * df-byte-scan.c: New file.
13988         * df-problems.c (df_rd_transfer_function): Removed unnecessary
13989         calls to BITMAP_FREE.
13990         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
13991         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
13992         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
13993         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
13994         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
13995         df_byte_lr_local_compute, df_byte_lr_init,
13996         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
13997         df_byte_lr_transfer_function, df_byte_lr_free,
13998         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
13999         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
14000         df_byte_lr_simulate_uses,
14001         df_byte_lr_simulate_artificial_refs_at_top,
14002         df_byte_lr_simulate_artificial_refs_at_end): New function.
14003         * dce.c (byte_dce_process_block): New function.
14004         (dce_process_block): au is now passed in rather than computed
14005         locally.  Changed loops that look at artificial defs to not look
14006         for conditional or partial ones, because there never are any.
14007         (fast_dce): Now is able to drive byte_dce_process_block or
14008         dce_process_block depending on the kind of dce being done.
14009         (rest_of_handle_fast_dce): Add parameter to fast_dce.
14010         (rest_of_handle_fast_byte_dce): New function.
14011         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
14012         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
14013
14014 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
14015
14016         PR fortran/35019
14017         * gcc.h: Added fortran options that take arguments to
14018         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
14019         macros.
14020
14021 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
14022
14023         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
14024         scalarization if on the LHS and not a full access.
14025
14026 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14027
14028         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
14029
14030 2008-04-18  Rafael Espindola  <espindola@google.com>
14031
14032         * tree-vrp.c (find_case_label_index): Fix the binary search.
14033         (find_case_label_range): New.
14034         (vrp_visit_switch_stmt): Use find_case_label_range.
14035         (simplify_switch_using_ranges): Use find_case_label_range.
14036
14037 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
14038
14039         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
14040         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
14041
14042 2008-04-18  Tom Tromey  <tromey@redhat.com>
14043
14044         PR libcpp/15500:
14045         * doc/cpp.texi (Implementation-defined behavior): Mention
14046         -finput-charset.
14047
14048 2008-04-18  Ian Lance Taylor  <iant@google.com>
14049
14050         * fold-const.c (pointer_may_wrap_p): New static function.
14051         (fold_comparison): Add another test for pointer overflow.  Use
14052         pointer_may_wrap_p to disable some false positives.
14053
14054 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
14055
14056         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
14057         (fname_as_string): Match updated cpp_interpret_string prototype.
14058         (fix_string_type): Support char16_t* and char32_t*.
14059         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
14060         derivative) nodes.  Register as builtin if C++0x.
14061         (c_parse_error): Support CPP_CHAR{16,32}.
14062         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
14063         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
14064         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
14065         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
14066         CTI_CHAR32_ARRAY_TYPE>: New elements.
14067         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
14068         char32_type_node, signed_char32_type_node, char16_array_type_node,
14069         char32_array_type_node): New defines.
14070         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
14071         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
14072         (lex_string): Support CPP_STRING{16,32}, match updated
14073         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
14074         (lex_charconst): Support CPP_CHAR{16,32}.
14075         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
14076         and CPP_STRING{16,32}.
14077
14078 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
14079
14080         PR bootstrap/35457
14081         * aclocal.m4: Regenerate.
14082         * configure: Regenerate.
14083
14084 2008-04-18  Jan Hubicka  <jh@suse.cz>
14085
14086         * except.c (dw2_size_of_call_site_table,
14087         sjlj_size_of_call_site_table): Use vector API for call_site_record.
14088
14089         * cgraphbuild.c (build_cgraph_edges): Update.
14090         * tree-pass.h: Update comment.
14091         * final.c (leaf_function_p): Update.
14092         (leaf_renumber_regs): Update.
14093         (rest_of_clean_state): Update.
14094         * omp-low.c (expand_omp_parallel): Update.
14095         * ipa-reference.c (analyze_function): Update.
14096         * reorg.c (find_end_label): Update.
14097         (optimize_skip): Update.
14098         (fill_simple_delay_slots): Update.
14099         (fill_simple_delay_slots): Update.
14100         (make_return_insns): Update.
14101         (dbr_schedule): Update.
14102         * gimple-low.c (record_vars_into): Update.
14103         * cfgbuild.c (make_edges): Update.
14104         * function.c (assign_stack_local): Update.
14105         (assign_parm_adjust_stack_rtl): Update.
14106         (locate_and_pad_parm): Update.
14107         (allocate_struct_function): Do not initialize stack_alignment_needed
14108         and preferred_stack_boundary here.
14109         (stack_protect_prologue): Update.
14110         (stack_protect_epilogue): Update.
14111         (expand_function_start): Initialize stack_alignment_needed,
14112         preferred_stack_boundary and max_jumptable_ents.
14113         (expand_function_end): Update.
14114         (free_after_compilation): Do not NULLify epilogue_delay_list.
14115         * function.h (struct rtl_data): Add stack_protect_guard,
14116         stack_alignment_needed,
14117         preferred_stack_boundary, epilogue_delay_list.
14118         (struct function): Remove value_histograms, stack_alignment_needed,
14119         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
14120         last_label_uid,
14121         unexpanded_var_list, stack_protect_guard.
14122         (current_function_epilogue_delay_list): Remove.
14123         * ipa-type-escape.c (analyze_function): Update.
14124         * gimplify.c (pop_gimplify_context): Update comment.
14125         * calls.c (expand_call): Update.
14126         (emit_library_call_value_1): Update.
14127         * except.c (set_nothrow_function_flags): Update.
14128         * cfgexpand.c (get_decl_align_unit): Update.
14129         (create_stack_guard): Update.
14130         (estimated_stack_frame_size): Update.
14131         (expand_used_vars): Update.
14132         (tree_expand_cfg): Free histogram earliers, init expansion variables.
14133         * explow.c (allocate_dynamic_stack_space): Update.
14134         * tree-ssa-live.c (remove_unused_locals): Update.
14135         * varasm.c (mark_constant_pool): Update.
14136         * tree-inline.c (remap_decls): Update.
14137         (initialize_cfun): Update.
14138         (declare_return_variable): Update.
14139         (inline_forbidden_p): Update.
14140         (expand_call_inline): Update.
14141         (declare_inline_vars): Update.
14142         (tree_function_versioning): Update.
14143         * tree-flow.h (value_histograms): New.
14144         (VALUE_HISTOGRAMS): New macro.
14145         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
14146         last_label_uid.
14147         * tree-cfg.c (set_bb_for_stmt): Update.
14148         (replace_by_duplicate_decl): Update.
14149         (move_block_to_fn): Update.
14150         (new_label_mapper): Update.
14151         (dump_function_to_file): Update.
14152         * ipa-struct-reorg.c (build_data_structure): Update.
14153         * cfgrtl.c (print_rtl_with_bb): Update.
14154         * reload1.c (reload): Update.
14155         (reload): Update.
14156         * config/i386/i386.c (setup_incoming_varargs_64,
14157         ix86_compute_frame_layout): Update.
14158         * config/arc/arc.c (arc_output_function_epilogue): Update.
14159
14160 2008-04-18  Marius Strobl <marius@FreeBSD.org>
14161
14162         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
14163         for FreeBSD as well.
14164         * gthr-posix95.h: Likewise.
14165
14166 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
14167
14168         PR rtl-optimization/35838
14169         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
14170         out the byte offset of the first subreg.
14171
14172 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
14173
14174         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
14175         to split_ti instead of three separate calls with single member arrays.
14176         (subti3 splitter): Ditto.
14177         (adddi3 splitter): Ditto with split_di.
14178         (subdi3 splitter): Ditto.
14179         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
14180         two separate calls with single member arrays.  Swap match_dup
14181         operands 1 and 2 to better fit into the array.
14182         (negdi2 splitter): Ditto with split_di.
14183         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
14184         two separate calls with single member arrays.  Swap match_dup operands
14185         6 and 7 to better fit into the array.
14186
14187 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
14188
14189         * config/i386/i386.c (sse_builtin_type): New.
14190         (bdesc_sse_args): Likewise.
14191         (bdesc_sse_3arg): Removed.
14192         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
14193         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
14194         IX86_BUILTIN_ROUNDPS.
14195         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
14196         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
14197         IX86_BUILTIN_ROUNDPS.
14198         (ix86_expand_sse_4_operands_builtin): Removed.
14199         (ix86_expand_sse_operands_builtin): New.
14200         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
14201         and CODE_FOR_sse4_1_roundps.
14202         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
14203         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
14204
14205 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
14206
14207         PR target/35907
14208         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
14209         regs before frame pop when needed.  If use_backchain_to_restore_sp
14210         then load backchain into a temp reg to restore vr and vrsave.  Add
14211         code to restore vr after frame pop if possible.
14212
14213 2008-04-17  Richard Guenther  <rguenther@suse.de>
14214
14215         * tree-vn.c (expressions_equal_p): Do not check type
14216         equality or compatibility before calling operand_equal_p.
14217         * fold-const.c (operand_equal_p): Check equivalence of
14218         integer constants before bailing out due to signedness or
14219         precision differences.
14220         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
14221         spurious differences in type qualification.  Ignore types
14222         for COMPONENT_REFs at all.
14223
14224 2008-04-17  Christian Bruel  <christian.bruel@st.com>
14225
14226         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
14227         msw_skip comparison.
14228
14229 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
14230
14231         PR c/35739
14232         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
14233         reg type.
14234
14235         PR tree-optimization/35899
14236         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
14237         rather than TREE_OPERAND.
14238
14239 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
14240
14241         PR target/35944
14242         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
14243         temporary registers.  Change operand predicate to general_operand.
14244         (remainderxf3): Ditto.
14245
14246 2008-04-16  Richard Guenther  <rguenther@suse.de>
14247
14248         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
14249         * tree-affine.c (aff_combination_expand): Look through some
14250         conversions.
14251
14252 2008-04-15  Doug Kwan  <dougkwan@google.com>
14253
14254         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
14255         for hex printing.
14256         * tree-pretty-print.c (dump_generic_node): Ditto.
14257         * final.c (output_addr_const): Ditto.
14258         * dwarf2out.c (output_cfi): Ditto.
14259         * c-pretty-print.c (pp_c_integer_constant): Ditto.
14260         * print-rtl.c (print_rtx): Ditto.
14261         * print-tree.c (print_node_brief, print_node): Ditto.
14262         * c-common.c (match_case_to_enum_1): Ditto.
14263         * sched-vis.c (print_value): Ditto.
14264         * config/i386/i386.c (print_operand): Cast to long unsigned int
14265         for hex printing.
14266
14267 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
14268         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
14269         MS Windows VirtualProtect function.
14270
14271 2008-04-15  Jan Hubicka  <jh@suse.cz>
14272
14273         * gengtype.c (write_root): Param_is argument is OK.
14274         * expr.c (expand_expr_real_1): Update call of get_exception_*.
14275         * function.h: Include varray.h
14276         (rtl_eh): New stucture based on except.c one.
14277         (call_site_record): New forward declaration and vector type.
14278         * calls.c (emit_call_1): Do not call
14279         note_current_region_may_contain_throw.
14280         * except.c (eh_status): Remove cur_region, try_region since they are
14281         unused.
14282         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
14283         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
14284         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
14285         Remove call_site_data_used, call_site_data_size.
14286         Turn call_site_record into vector in function.h.
14287         (note_current_region_may_contain_throw): Remove.
14288         (get_exception_pointer, get_exception_filter): Do not take struct
14289         function argument; update.
14290         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
14291         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
14292         build_post_landing_pads, dw2_build_landing_pads,
14293         sjlj_assign_call_site_values, sjlj_mark_call_sites,
14294         sjlj_emit_function_enter, sjlj_emit_function_enter,
14295         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
14296         sjlj_build_landing_pads, finish_eh_generation,
14297         remove_exception_handler_label, remove_eh_handler,
14298         maybe_remove_eh_handler, add_reachable_handler,
14299         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
14300         add_action_record, collect_one_action_chain, add_call_site,
14301         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
14302         sjlj_output_call_site_table, output_function_exception_table,
14303         * except.h (note_current_region_may_contain_throw): Remove
14304         (get_exception_pointer, get_exception_filter): Do not take struct
14305         function argument.
14306         * Makefile.in (GTFILES): Put varargs before struct function.
14307
14308 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
14309
14310         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
14311         punt for STRING_CST.
14312         (get_constraint_for): Deal with STRING_CST here instead.
14313
14314 2008-04-15  Richard Guenther  <rguenther@suse.de>
14315
14316         * tree-ssa-propagate.c (substitute_and_fold): Substitute
14317         statements in a basic-block with a backward walk.  Do not
14318         substitute into dead statements but instead remove those.
14319
14320 2008-04-15  Richard Guenther  <rguenther@suse.de>
14321
14322         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
14323         to zero, thus disable creation of SFTs.
14324
14325 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
14326
14327         * tree-predcom.c (suitable_reference_p): Return false if the
14328         reference can throw.
14329
14330 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
14331
14332         PR c/35751
14333         * c-decl.c (finish_decl): If extern or static var has variable
14334         size, set TREE_TYPE (decl) to error_mark_node.
14335
14336 2008-04-15  Rafael Espindola  <espindola@google.com>
14337
14338         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
14339         variable arg1.
14340
14341 2008-04-15  Richard Guenther  <rguenther@suse.de>
14342
14343         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
14344         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
14345         (visit_reference_op_load): Do walk vuse-vdef chains on
14346         vn_reference_lookup.
14347         (visit_reference_op_store): But do not here.
14348         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
14349         vn_reference_lookup.
14350         (vn_lookup_with_vuses): But do so here.
14351
14352 2008-04-14  Ian Lance Taylor  <iant@google.com>
14353
14354         * fold-const.c (fold_overflow_warning): Remove assertion.
14355
14356 2008-04-15  Ben Elliston  <bje@au.ibm.com>
14357
14358         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
14359         temp1 local variables.
14360
14361 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
14362
14363         PR target/35661
14364         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
14365         ".text.unlikely" section as executable.
14366
14367 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
14368
14369         * config/ia64/ia64.c (rtx_needs_barrier): Handle
14370         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
14371         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
14372         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
14373         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
14374         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
14375         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
14376
14377 2008-04-14  Ian Lance Taylor  <iant@google.com>
14378
14379         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
14380         * fold-const.c (fold_comparison): If appropriate, test
14381         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
14382         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
14383         reassociating a pointer type.
14384         * doc/invoke.texi (Optimize Options): Document that
14385         -fstrict-overflow applies to pointer wraparound.
14386
14387 2008-04-13  Jan Hubicka  <jh@suse.cz>
14388
14389         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
14390
14391 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
14392
14393         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
14394         we are going to "save the world".
14395
14396 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
14397
14398         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
14399         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
14400         operand 0 constraint, not "=".
14401
14402 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
14403
14404         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
14405
14406 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
14407
14408         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
14409         of size of positions_needed * CHAR_BIT.
14410
14411 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
14412
14413         PR middle-end/35897
14414         * dse.c (store_info): Change positions_needed to unsigned
14415         HOST_WIDE_INT.
14416         (lowpart_bitmask): New.
14417         (record_store): Cast to unsigned HOST_WIDE_INT for
14418         positions_needed.  Assert width <= size of positions_needed *
14419         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
14420         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
14421         lowpart_bitmask to set mask.
14422
14423 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14424
14425         * config/bfin/constraints.md: New file.
14426         * config/bfin/bfin.md: Include it.
14427         (adddi3): Use satisfies_constraint functions instead of the old macros.
14428         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
14429         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
14430         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
14431         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
14432         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
14433         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
14434         EXTRA_CONSTRAINT): Delete.
14435         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
14436         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
14437         of the old macros.
14438         * config/bfin/bfin.c: Include "tm-constrs.h".
14439         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
14440         Use satisfies_constraint functions instead of the old macros.
14441         * doc/md.texi (Blackfin Constraints): Update file name reference.
14442
14443 2008-04-11  Richard Guenther  <rguenther@suse.de>
14444
14445         PR tree-optimization/35869
14446         * tree-vrp.c (execute_vrp): Move switch statement update after
14447         jump threading.  Schedule another cfg cleanup run.
14448
14449 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
14450
14451         PR c/35744
14452         * attribs.c (decl_attributes): Return early on errorneous node.
14453
14454 2008-04-10  Oleg Ryjkov  <olegr@google.com>
14455
14456         * tree.h (struct tree_base): Added a new flag default_def_flag.
14457         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
14458
14459 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
14460
14461         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
14462
14463 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14464
14465         PR target/35768
14466         * pa.md: Define mode iterator P.  Define mode attribute dwc.
14467         (dcacheflush): Update pattern to use iterator P and attribute dwc.
14468         (icacheflush): Likewise.
14469         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
14470         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
14471
14472 2008-04-11  Ben Elliston  <bje@au.ibm.com>
14473
14474         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
14475
14476 2008-04-10  Rafael Espindola  <espindola@google.com>
14477
14478         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
14479         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
14480         (extract_range_from_expr): The same.
14481
14482 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
14483
14484         * config/mips/mips.md (GPR2): New mode iterator.
14485         (seq): Add comment.
14486         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
14487         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
14488         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
14489         Rewrite these to take two modes, the mode of comparison and the
14490         mode of the destination.
14491         * config/mips/mips.c (mips_expand_scc): Instead of having
14492         paradoxical subreg as destination, expand "narrowing" scc if mode
14493         of comparison is SI and target is requested in DI mode.
14494         (mips_emit_int_order_test): Update comment.  Make mode of
14495         comparison match CMP0 rather than TARGET.  When creating inverse
14496         target use mode of TARGET.
14497
14498 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
14499
14500         * gcov-dump.c (tag_summary): Only print summaries for the first
14501         GCOV_COUNTERS_SUMMABLE counters.
14502
14503 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
14504
14505         * config/i386/i386.md (absneg): New code iterator.
14506         (absnegprefix): New code attribute.
14507         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
14508         patterns using absneg code iterator.
14509         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
14510         using absneg code iterator.
14511         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
14512         *neg<mode>2 patterns using absneg code iterator.
14513         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
14514         *negextendsfdf2 patterns using absneg code iterator.
14515         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
14516         *negextendsfxf2 patterns using absneg code iterator.
14517         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
14518         *negextendsfdf2 patterns using absneg code iterator.
14519         * config/i386/sse.md (<code><mode>2): Macroize expander from
14520         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
14521
14522 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
14523
14524         * config/s390/s390.h: Remove the remains of the recent search
14525         & replace action of current_function_outgoing_args_size.
14526
14527 2008-04-10  Ira Rosen  <irar@il.ibm.com>
14528
14529         PR tree-optimization/35821
14530         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
14531         NEW_STMT_LIST is not NULL.
14532
14533 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
14534
14535         PR libstdc++/35597
14536         * toplev.c (process_options): Remove -ffunction-sections debugging
14537         warning.
14538
14539 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
14540
14541         PR middle-end/PR28690
14542         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
14543         than gen_rtx_fmt_ee to perform more canonicalizations.
14544
14545 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14546
14547         PR driver/35665
14548         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
14549
14550 2008-04-09  Richard Guenther  <rguenther@suse.de>
14551
14552         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
14553         (dump_function_to_file): Dump function arguments with types.
14554
14555 2008-04-08  Richard Guenther  <rguenther@suse.de>
14556
14557         * fold-const.c (fold_widened_comparison): Do not allow
14558         sign-changes that change the result.
14559
14560 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
14561
14562         PR target/35839
14563         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
14564         kinds of indirect references.
14565
14566 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
14567
14568         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
14569         GNU Fortran language string.
14570
14571 2008-04-08  Rafael Espindola  <espindola@google.com>
14572
14573         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
14574         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
14575         * tree.h (tree_call_nonnegative_warnv_p): New.
14576
14577 2008-04-08  Jan Hubicka  <jh@suse.cz>
14578
14579         * function.c (free_after_compilation): Clear out regno_reg_rtx
14580         pointer.
14581
14582 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
14583
14584         Revert
14585         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
14586
14587         PR middle-end/PR28690
14588         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
14589         same precedence as REG_POINTER and MEM_POINTER operands.
14590
14591 2008-04-08  Richard Guenther  <rguenther@suse.de>
14592
14593         PR middle-end/35834
14594         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
14595         for adding index to base.
14596
14597 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
14598
14599         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
14600         (MINGW_ENABLE_EXECUTE_STACK): New.
14601         (IN_LIBGCC2): For libgcc include windows.h file for
14602         function declarations.
14603
14604 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
14605
14606         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
14607         and tem2 if tem1 is not a REG or MULT.
14608
14609 2008-04-08  Jan Hubicka  <jh@suse.cz>
14610
14611         * function.h (incomming_args): Break out of struct function.
14612         (function_subsections): Break out of struct function.
14613         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
14614         return_rtx and hard_reg_initial_vals from struct function.
14615         Kill inl_max_label_num.
14616         (current_function_pops_args, current_function_args_info,
14617         current_function_args_size, current_function_args_size,
14618         current_function_pretend_args_size,
14619         current_function_outgoing_args_size,
14620         current_function_internal_arg_pointer, current_function_return_rtx):
14621         Kill compatibility accestor macros.
14622         * builtins.c (expand_builtin_apply_args_1): Update.
14623         (expand_builtin_next_arg): Update.
14624         * df-scan.c (df_get_call_refs): Update.
14625         * dbxout.c (dbxout_function_end): Update.
14626         * dwarf2out.c (dwarf2out_switch_text_section): Update.
14627         (output_line_info): Update.
14628         (secname_for_decl): Update.
14629         (dwarf2out_var_location): Update.
14630         * function.c (free_after_compilation): Update.
14631         (assign_parm_find_stack_rtl): Update.
14632         (assign_parms): Update.
14633         (expand_dummy_function_end): Update.
14634         (expand_function_end): Update.
14635         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
14636         (expand_call): Update.
14637         (emit_library_call_value_1): Update.
14638         (store_one_arg): Update.
14639         * varasm.c (initialize_cold_section_name): Update.
14640         (unlikely_text_section): Update.
14641         (unlikely_text_section_p): Update.
14642         (assemble_start_function): Update.
14643         (assemble_end_function): Update.
14644         (default_section_type_flags): Update.
14645         (switch_to_section): Update.
14646         * integrate.c (set_decl_abstract_flags): Update.
14647         (get_hard_reg_initial_val): Update.
14648         (has_hard_reg_initial_val): Update.
14649         (allocate_initial_values): Update.
14650         * resource.c (init_resource_info): Update.
14651         * config/alpha/alpha.c (NUM_ARGS): Update.
14652         (direct_return): Update.
14653         (alpha_va_start): Update.
14654         (alpha_sa_size): Update.
14655         (alpha_initial_elimination_offset): Update.
14656         (alpha_expand_prologue): Update.
14657         (alpha_start_function): Update.
14658         (alpha_expand_epilogue): Update.
14659         (unicosmk_initial_elimination_offset):
14660         * config/alpha/alpha.md (call expander): Update.
14661         * config/s390/s390.c (s390_register_info): Update.
14662         (s390_register_info): Update.
14663         (s390_frame_info): Update.
14664         (s390_initial_elimination_offset): Update.
14665         (s390_build_builtin_va_list): Update.
14666         (s390_va_start): Update.
14667         * config/spu/spu.c (direct_return): Update.
14668         (spu_expand_prologue): Update.
14669         (spu_initial_elimination_offset): Update.
14670         (spu_build_builtin_va_list): Update.
14671         (spu_va_start): Update.
14672         * config/sparc/sparc.c (sparc_init_modes): Update.
14673         (sparc_compute_frame_size): Update.
14674         (function_value): Update.
14675         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
14676         * config/i386/i386.md (return expander): Update.
14677         * config/i386/i386.c (ix86_va_start): Update.
14678         (ix86_can_use_return_insn_p): Update.
14679         (ix86_compute_frame_layout): Update.
14680         (ix86_expand_epilogue): Update.
14681         * config/sh/sh.c (output_stack_adjust): Update.
14682         (calc_live_regs): Update.
14683         (sh_expand_prologue): Update.
14684         (sh_builtin_saveregs): Update.
14685         (sh_va_start): Update.
14686         (initial_elimination_offset): Update.
14687         (sh_allocate_initial_value): Update.
14688         (sh_function_ok_for_sibcall): Update.
14689         (sh_get_pr_initial_val): Update.
14690         * config/sh/sh.md (return expander): Update.
14691         * config/avr/avr.c (frame_pointer_required_p): UPdate.
14692         * config/crx/crx.c (crx_compute_frame): UPdate.
14693         (crx_initial_elimination_offset): UPdate.
14694         * config/xtensa/xtensa.c (compute_frame_size): Update
14695         (xtensa_builtin_saveregs): Update.
14696         (xtensa_va_start): Update.
14697         (order_regs_for_local_alloc): Update.
14698         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
14699         (xstormy16_expand_builtin_va_start): Update.
14700         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
14701         * config/m68hc11/m68hc11.md (return expanders): Update.
14702         * config/m68hc11/m68hc11.c (expand_prologue): Update.
14703         (expand_epilogue): Update.
14704         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
14705         (cris_simple_epilogue): Update.
14706         (cris_expand_prologue): Update.
14707         (cris_expand_epilogue): Update.
14708         * config/iq2000/iq2000.c (iq2000_va_start): Update.
14709         (compute_frame_size): Update.
14710         * config/mt/mt.c (mt_compute_frame_size): Update.
14711         * config/mn10300/mn10300.c (expand_prologue): Update.
14712         (expand_epilogue): Update.
14713         (initial_offset): Update.
14714         (mn10300_builtin_saveregs):
14715         * config/mn10300/mn10300.md (return expander): Update.
14716         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
14717         (ia64_initial_elimination_offset): Update.
14718         (ia64_initial_elimination_offset): Update.
14719         (ia64_expand_prologue): Update.
14720         * config/m68k/m68k.md (return expander): Update.
14721         * config/rs6000/rs6000.c (rs6000_va_start): Update.
14722         (rs6000_stack_info): Update.
14723         * config/mcore/mcore.c (layout_mcore_frame): Update.
14724         (mcore_expand_prolog): Update.
14725         * config/arc/arc.c (arc_compute_frame_size): Update.
14726         * config/score/score3.c (score3_compute_frame_size): Update.
14727         * config/score/score7.c (score7_compute_frame_size): Update.
14728         * config/arm/arm.c (use_return_insn): Update.
14729         (thumb_find_work_register): Update.
14730         (arm_compute_save_reg_mask): Update.
14731         (arm_output_function_prologue): Update.
14732         (arm_output_epilogue): Update.
14733         (arm_size_return_regs): Update.
14734         (arm_get_frame_offsets): Update.
14735         (arm_expand_prologue): Update.
14736         (thumb_exit): Update.
14737         (thumb_unexpanded_epilogue): Update.
14738         (thumb1_output_function_prologue): Update.
14739         * config/pa/pa.md (return expander): Update.
14740         * config/pa/pa.c (compute_frame_size): Update.
14741         (hppa_builtin_saveregs): Update.
14742         * config/mips/mips.c (mips_va_start): Update.
14743         (mips16_build_function_stub): Update.
14744         (mips_compute_frame_info): Update.
14745         (mips_restore_gp): Update.
14746         (mips_output_function_prologue): Update.
14747         (mips_expand_prologue): Update.
14748         * config/v850/v850.c (compute_frame_size): Update.
14749         (expand_prologue): * config/mmix/mmix.c (along): update.
14750         (mmix_initial_elimination_offset): update.
14751         (mmix_reorg): update.
14752         (mmix_use_simple_return): update.
14753         (mmix_expand_prologue): update.
14754         (mmix_expand_epilogue): Update.
14755         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
14756         (emit_link_insn): Update.
14757
14758 2008-04-08  Anatoly Sokolov <aesok@post.ru>
14759
14760         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
14761         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
14762         instructions.
14763         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
14764         atmega103 device.
14765
14766 2008-04-07  Jan Hubicka  <jh@suse.cz>
14767
14768         * function.h (rtl): Rename to x_rtl.
14769         (crtl): New define.
14770         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
14771         frame_offset, stack_check_probe_note, arg_pointer_save_area,
14772         used_temp_slots avail_temp_slots, temp_slot_level,
14773         nonlocal_goto_handler_labels): Update accesstors.
14774         (rtl): New global variable.
14775         (struct function): Move some fileds to rtl_data.
14776         (get_arg_pointer_save_area): Update prototype.
14777         * builtins.c (expand_builtin_setjmp_receiver): Update call of
14778         get_arg_pointer_save_area.
14779         * expr.c (init_expr): Update
14780         * function.c (get_frame_size): Update
14781         (assign_stack_local): Update
14782         (expand_function_end): Update.
14783         (get_art_pointer_save_area): Update
14784         * function.h
14785         * emit-rtl.c (rtl): Declare.
14786         (regno_reg_rtx): Declare.
14787         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
14788         Update.
14789         (gen_reg_rtx): Update.
14790         * varasm.c (n_deferred_constatns): Update accestor.
14791         (init_varasm_status): Do not allocate varasm_status.
14792         (force_const_mem, get_pool_size, output_constant_pool): Update.
14793         * stmt.c (force_label_rtx): Do not use x_ prefixes.
14794         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
14795         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
14796         * sparc/sparc.h (INIT_EXPANDERS): Update.
14797         * ia64/ia64.h (INIT_EXPANDERS): Update.
14798
14799 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
14800
14801         * reload.c (push_secondary_reload): Add missing break to for loop.
14802
14803 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
14804
14805         PR middle-end/PR28690
14806         * rtlanal.c: Update copyright years.
14807         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
14808         as REG_POINTER and MEM_POINTER operands.
14809         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
14810         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
14811         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
14812         * gcse.c: Update copyright years.
14813         (pre_delete): Call gen_reg_rtx_and_attrs.
14814         (hoist_code): Likewise.
14815         (build_store_vectors): Likewise.
14816         (delete_store): Likewise.
14817         * loop-invariant.c (move_invariant_reg): Likewise.
14818         Update copyright years.
14819
14820 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
14821
14822         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
14823         control string instead of quoted.
14824
14825 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
14826
14827         * doc/rtl.texi: Rewrite of subreg section.
14828
14829 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
14830
14831         PR/35842
14832         * config/i386/i386.c (legitimize_pic_address): Add treating
14833         of dllimport SYM_REF's.
14834         (legitimize_dllimport_symbol): Add prototype.
14835
14836 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
14837
14838         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
14839         reference in constructor with non self-referential type.
14840
14841 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
14842
14843         Removal of Return with Depressed Stack Pointer support
14844         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
14845         (ECF_SP_DEPRESSED): Likewise.
14846         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
14847         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
14848         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
14849         (expand_call): Do not test ECF_SP_DEPRESSED.
14850         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
14851         * function.c (keep_stack_depressed): Delete.
14852         (handle_epilogue_set): Likewise.
14853         (update_epilogue_consts): Likewise.
14854         (emit_equiv_load): Likewise.
14855         (thread_prologue_and_epilogue_insns): Remove support for Return with
14856         Depressed Stack Pointer.
14857         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
14858
14859 2008-04-06  Richard Guenther  <rguenther@suse.de>
14860
14861         PR tree-optimization/35400
14862         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
14863         information from SSA_NAMEs.
14864
14865 2008-04-06  Anatoly Sokolov <aesok@post.ru>
14866
14867         * config/avr/avr.h (avr_mega_p): Remove declaration.
14868         (AVR_MEGA): Remove macro.
14869         * config/avr/avr.c (avr_mega_p): Remove variable.
14870         (avr_override_options): Remove inicializion of avr_mega_p.
14871         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
14872         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
14873         (avr_jump_mode): (Ditto.).
14874         (avr_output_progmem_section_asm_op): (Ditto.).
14875         (avr_asm_init_sections): (Ditto.).
14876         (avr_asm_init_sections): (Ditto.).
14877         (avr_rtx_costs): (Ditto.).
14878         * config/avr/avr.md: (Ditto.).
14879         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
14880         '__AVR_MEGA__'.
14881
14882 2008-04-06  Richard Guenther  <rguenther@suse.de>
14883
14884         PR tree-optimization/35842
14885         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
14886         is_gimple_invariant_address.
14887
14888 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
14889
14890         * gcc.c (default_compilers): Sync Fortran extensions list with
14891         that in fortran/lang-specs.h.
14892         * doc/invoke.texi: Likewise.
14893         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
14894         * dwarf2out.c (gen_compile_unit_die): Likewise.
14895
14896 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
14897
14898         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
14899
14900 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
14901
14902         PR target/12329
14903         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
14904         attribute is used for nested functions.
14905
14906 2008-04-05  Jan Hubicka  <jh@suse.cz>
14907
14908         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
14909
14910         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
14911         letter argument.
14912         (dump_files): Update.
14913         (enable_rtl_dump_file): Do not accept letter argument.
14914         * tree-pass.h (dump_file_info): Remove letter argument.
14915         * toplev.c (decode_d_option): Update -da handling.
14916         * toplev.h (enable_rtl_dump_file): Update prototype.
14917         * passes.c (register_one_dump_file): Do not accept IPA argument; work
14918         it out based on pass type.
14919         (register_dump_files_1): Likewise.
14920         (init_optimization_passes): Update register_one_dump_file calls.
14921         (execute_one_pass): Sanity check that IPA passes are called at IPA
14922         level and RTL passes at RTL level.
14923         (execute_pass_list): IPA pass can not be after or subpass of
14924         GIMPLE/RTL pass.
14925         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
14926         disallov RTL subpasses of IPA subpasses.
14927
14928 2008-04-05  Ben Elliston  <bje@au.ibm.com>
14929
14930         * tree-cfg.c (need_fake_edge_p): Return false for calls to
14931         builtins that return exactly once and do not throw. Cache call to
14932         call_expr_flags.
14933
14934 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
14935
14936         PR rtl-optimization/34916
14937         PR middle-end/35519
14938         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
14939         between instruction pairs.
14940
14941 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
14942
14943         * doc/invoke.texi: Document -mbitops for SH.
14944         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
14945         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
14946         * config/sh/sh.c (print_operand): Add %t operand code.
14947         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
14948         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
14949         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
14950         (extendqihi2): Likewise.
14951         (movqi_i): Likewise.
14952         (insv): Use bset, bclr and bst instructions for SH2A if possible.
14953         (extv): Use bld instruction for SH2A if possible.
14954         (extzv): Likewise.
14955         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
14956         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
14957         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
14958         (bset.b, bclr.b): Define peepholes.
14959         * config/sh/sh.opt (mbitops): New option.
14960
14961 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
14962
14963         PR target/35620
14964         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
14965         and view convert expression.
14966
14967 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
14968
14969         PR target/35364
14970         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
14971
14972 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
14973
14974         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
14975
14976         * config/i386/cpuid.h (bit_AES): New.
14977         (bit_PCLMUL): Likewise.
14978
14979         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
14980         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
14981         SSE2 if AES or PCLMUL is enabled.
14982         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
14983         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
14984         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
14985         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
14986         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
14987         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
14988         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
14989         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
14990         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
14991         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
14992         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
14993         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
14994         __builtin_ia32_aeskeygenassist128 and
14995         __builtin_ia32_pclmulqdq128.
14996         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
14997         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
14998         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
14999
15000         * config/i386/i386.h (TARGET_AES): New.
15001         (TARGET_PCLMUL): Likewise.
15002         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
15003
15004         * config/i386/i386.md (UNSPEC_AESENC): New.
15005         (UNSPEC_AESENCLAST): Likewise.
15006         (UNSPEC_AESDEC): Likewise.
15007         (UNSPEC_AESDECLAST): Likewise.
15008         (UNSPEC_AESIMC): Likewise.
15009         (UNSPEC_AESKEYGENASSIST): Likewise.
15010         (UNSPEC_PCLMUL): Likewise.
15011
15012         * config/i386/i386.opt (maes): New.
15013         (mpclmul): Likewise.
15014
15015         * config/i386/sse.md (aesenc): New pattern.
15016         (aesenclast): Likewise.
15017         (aesdec): Likewise.
15018         (aesdeclast): Likewise.
15019         (aesimc): Likewise.
15020         (aeskeygenassist): Likewise.
15021         (pclmulqdq): Likewise.
15022
15023         * config/i386/wmmintrin.h: New.
15024
15025         * doc/extend.texi: Document AES and PCLMUL built-in function.
15026
15027         * doc/invoke.texi: Document -maes and -mpclmul.
15028
15029 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
15030
15031         * function.c (free_after_parsing): Replace with
15032         cxx_push_function_context from C++ front-end.
15033         (allocate_struct_function): Don't call langhook.
15034         * langhooks.h (struct lang_hooks_for_functions): Delete.
15035         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
15036         member "function".
15037         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
15038         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
15039         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
15040         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
15041         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
15042         remove LANG_HOOKS_FUNCTION_INITIALIZER.
15043         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
15044
15045         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
15046         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
15047
15048 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
15049
15050         PR c/35440
15051         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
15052         for all types.
15053
15054 2008-04-04  Richard Guenther  <rguenther@suse.de>
15055
15056         PR middle-end/35823
15057         * fold-const.c (optimize_minmax_comparison): Use the correct
15058         type for the constant in the simplified comparison.
15059
15060 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
15061
15062         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
15063         Pass L2 size as "--param l2-cache-size" to the compiler.
15064         (decode_l2_cache): New function to decode L2 cache parameters using
15065         0x8000006 extended cpuid function.
15066         (detect_caches_amd): Determine parameters of L2 cache using
15067         decode_l2_caches function.
15068         (decode_caches_intel): Decode L2 cache parameters.
15069         (detect_caches_intel): Determine L2 cache parameters using
15070         decode_caches_intel and decode_l2_caches functions.
15071
15072 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
15073
15074         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
15075         secondary input reload for subword loads from the constant pool.
15076
15077 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
15078
15079         PR target/35713
15080         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
15081           constants of the appropriate size for runtime calculations.
15082
15083         PR c/35712
15084         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
15085           decimal-float literal constant zero.
15086
15087 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
15088
15089         PR c/35738
15090         * c-parser.c (c_parser_omp_atomic): Call
15091         default_function_array_conversion on the RHS.
15092
15093         PR middle-end/35818
15094         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
15095         call is_variable_sized if decl has incomplete type.
15096
15097 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
15098
15099         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
15100
15101 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
15102
15103         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
15104         iterators.
15105         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
15106         (sgt<u>): Merge sgt and sgtu into new expander.
15107         (sgt, sgtu): Remove expanders.
15108         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
15109         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
15110         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
15111         *sgtu_<mode>_mips16 into new pattern.
15112         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
15113         (sge<u>): Merge sge and sgeu into new expander.
15114         (sge, sgeu): Remove expanders.
15115         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
15116         new pattern.
15117         (*sge_<mode>, second *sge_<mode>): Remove patterns.
15118         (slt<u>): Merge slt and sltu into new expander.
15119         (slt, sltu): Remove expanders.
15120         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
15121         (*slt_<mode>, *sltu_<mode>): Remove patterns.
15122         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
15123         *sltu_<mode>_mips16 into new pattern.
15124         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
15125         (sle<u>): Merge sle and sleu into new expander.
15126         (sle, sleu): Remove expanders.
15127         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
15128         (*sle_<mode>, *sleu_<mode>): Remove patterns.
15129         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
15130         *sleu_<mode>_mips16 into new pattern.
15131         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
15132
15133 2008-04-03  Jan Hubicka  <jh@suse.cz>
15134
15135         PR tree-optimization/35795
15136         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
15137         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
15138         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
15139         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
15140         * score/score3.c (score3_output_mi_thunk): Likewise.
15141         * score/score7.c (score7_output_mi_thunk): Likewise.
15142         * mips/mips.c (mips_output_mi_thunk): Likewise.
15143
15144 2008-04-03  Richard Guenther  <rguenther@suse.de>
15145
15146         * tree-vrp.c (extract_range_from_unary_expr): Handle all
15147         conversions.  Simplify code.
15148
15149 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
15150
15151         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
15152
15153 2008-04-03  Tom Tromey  <tromey@redhat.com>
15154             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15155
15156         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
15157         * config/bfin/t-bfin-linux (generated_files): Add
15158         linux-sysroot-suffix.h.
15159         * doc/install.texi (Prerequisites): Require make 3.80.
15160         * doc/sourcebuild.texi (Front End Directory): Document new
15161         variable.
15162         * Makefile.in (generated_files): New variable.
15163         (ALL_HOST_OBJS): New variable.
15164         ($(ALL_HOST_OBJS)): New target.
15165
15166 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
15167
15168         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
15169         (remap_block): Call id->transform_lang_insert_block instead
15170         of langhook.
15171         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
15172         Set id.transform_lang_insert_block to NULL.
15173         (clone_body): Move to cp/optimize.c
15174         * tree-inline.h (struct copy_body_data): Change
15175         transform_lang_insert_block to function pointer.
15176         (copy_generic_body, copy_decl_no_change): Export.
15177         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
15178         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
15179         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
15180
15181         * c-tree.h (insert_block): Kill.
15182         * c-decl.c (insert_block): Kill.
15183
15184 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
15185
15186         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
15187         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
15188         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
15189         argument.
15190         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
15191         argument, call {push,pop}_function_context from here.
15192         * c-parser.c: Use c_{push,pop}_function_context.
15193
15194         * function.c (push_function_context_to): Move meat ...
15195         (push_function_context): ... here.  Simplify.
15196         * function.c (pop_function_context_from): Move meat ...
15197         (pop_function_context): ... here.  Simplify.
15198         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
15199         leave_nested).
15200         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
15201         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
15202         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
15203         * tree.h (push_function_context_to, pop_function_context_from): Remove.
15204
15205 2008-04-03  Ben Elliston  <bje@au.ibm.com>
15206
15207         * expmed.c (extract_force_align_mem_bit_field): Remove.
15208
15209 2008-04-03  Richard Guenther  <rguenther@suse.de>
15210
15211         PR middle-end/35800
15212         * expr.h (try_casesi): Adjust prototype.
15213         * expr.c (try_casesi): Take fallback label as extra parameter.
15214         Use that for gen_casesi if default_label is NULL.
15215         * stmt.c (expand_case): Pass fallback label to try_casesi,
15216         make sure to fill gaps with a fallback label if default_label
15217         is not present.
15218
15219 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
15220
15221         PR target/35801
15222         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
15223
15224 2008-04-03  Ben Elliston  <bje@au.ibm.com>
15225
15226         * expmed.c (extract_split_bit_field): Remove if (0) code.
15227         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
15228         (do_ds_constraint): Likewise.
15229
15230 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
15231
15232         * doc/cppopts.texi (-dU): Document.
15233         * c-common.h (flag_dump_macros): Update comment.
15234         * c-opts.c (handle_OPT_d): Handle -dU.
15235         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
15236         dump_queued_macros, cb_used_define, cb_used_undef): New.
15237         (init_pp_output): Handle -dU.
15238         (cb_line_change): Call dump_queued_macros.
15239         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
15240
15241 2008-04-02  Anatoly Sokolov <aesok@post.ru>
15242
15243         * config/avr/predicates.md (io_address_operand): New predicate.
15244         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
15245         * config/avr/avr.c (avr_io_address_p): Remove function.
15246         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
15247         'avr_io_address_p' function.
15248         (out_movhi_r_mr): (Ditto.).
15249         (out_movqi_mr_r): (Ditto.).
15250         (out_movhi_mr_r): (Ditto.).
15251         (avr_address_cost): (Ditto.).
15252
15253 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
15254
15255         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
15256         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
15257         in 32bit mode when XMM registers are available to avoid store
15258         forwarding stalls.
15259         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
15260         corresponding post-reload splitters.
15261
15262 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15263
15264         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
15265         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
15266         __builtin_ia32_roundss.
15267         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
15268         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
15269         __builtin_ia32_roundss.
15270         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
15271         IX86_BUILTIN_SHUFPD here.
15272
15273 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15274
15275         * config/i386/i386.md (plogic): New.
15276         (plogicprefix): Likewise.
15277
15278         * config/i386/mmx.md (mmx_<code><mode>3): New.
15279         (mmx_and<mode>3): Removed.
15280         (mmx_ior<mode>3): Likewise.
15281         (mmx_xor<mode>3): Likewise.
15282
15283         * config/i386/sse.md (<code><mode>3): New.
15284         (*<code><mode>3): Likewise.
15285         (*<code><mode>3): Likewise.
15286         (<code><mode>3): Likewise.
15287         (*sse_<code><mode>3): Likewise.
15288         (*sse2_<code><mode>3): Likewise.
15289         (<code>tf3): Likewise.
15290         (*<code>tf3): Likewise.
15291         (and<mode>3): Likewise.
15292         (*and<mode>3): Likewise.
15293         (ior<mode>3): Removed.
15294         (*ior<mode>3): Likewise.
15295         (xor<mode>3): Likewise.
15296         (*xor<mode>3): Likewise.
15297         (*and<mode>3): Likewise.
15298         (*ior<mode>3): Likewise.
15299         (*xor<mode>3): Likewise.
15300         (and<mode>3): Likewise.
15301         (*sse_and<mode>3): Likewise.
15302         (*sse2_and<mode>3): Likewise.
15303         (andtf3): Likewise.
15304         (*andtf3): Likewise.
15305         (ior<mode>3): Likewise.
15306         (*sse_ior<mode>3): Likewise.
15307         (*sse2_ior<mode>3): Likewise.
15308         (iortf3): Likewise.
15309         (*iortf3): Likewise.
15310         (xor<mode>3): Likewise.
15311         (*sse_xor<mode>3): Likewise.
15312         (*sse2_xor<mode>3): Likewise.
15313         (xortf3): Likewise.
15314         (*xortf3): Likewise.
15315
15316 2008-04-02  Richard Guenther  <rguenther@suse.de>
15317
15318         PR tree-optimization/14495
15319         PR tree-optimization/34793
15320         * tree-vrp.c (struct switch_update): New structure.
15321         (to_remove_edges, to_update_switch_stmts): New VECs.
15322         (simplify_switch_using_ranges): New function.  Remove not taken
15323         case labels and edges.
15324         (simplify_stmt_using_ranges): Call it.
15325         (identify_jump_threads): Mark edges we have queued for removal
15326         so we don't thread them.
15327         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
15328         case label vector.
15329         * tree-cfg.c (group_case_labels): Deal with missing default label.
15330         (tree_verify_flow_info): Allow missing default label.
15331         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
15332         (emit_case_nodes): Likewise.
15333         (expand_case): Do not rely on the default label to be present.
15334         * expr.c (try_casesi): Deal with NULL default_label.
15335         (do_tablejump): Likewise.
15336
15337 2008-04-02  Richard Guenther  <rguenther@suse.de>
15338
15339         PR tree-optimization/14495
15340         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
15341         SWITCH_EXPR here ...
15342         (vrp_visit_switch_stmt): ... but here (new function).
15343         (find_case_label_index): New helper function.
15344         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
15345
15346 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15347
15348         * fwprop.c: Fix ISO-C99ism.
15349
15350 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15351
15352         PR bootstrap/35752
15353         * Makefile.in (objdir): Set it here.
15354         * configure.ac: Not here.  Find dynamic linker characteristics.
15355         * exec-tool.in: Use them.
15356         * aclocal.m4: Regenerate.
15357         * configure: Regenerate.
15358
15359 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15360
15361         * expr.c (expand_var): Delete it.
15362         * expr.h (expand_var): Delete prototype.
15363         * function.c (expand_function_start): Use expand_decl instead.
15364         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
15365         langhook.
15366
15367 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
15368
15369         PR rtl-optimization/35542
15370         * fwprop.c (forward_propagate_and_simplify): Replace
15371         loc_reg_mentioned_in_p with reg_mentioned_p.
15372
15373 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
15374
15375         PR rtl-optimization/35281
15376         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
15377         (propagate_rtx_1): Handle PR_HANDLE_MEM.
15378         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
15379         (varying_mem_p): Move above propagate_rtx.
15380         (all_uses_available_at): Do not check MEMs.
15381
15382 2008-04-02  Rafael Espindola  <espindola@google.com>
15383
15384         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
15385         (register_edge_assert_for_2): Split the cond argument.
15386         (register_edge_assert_for_1): Adjust for the change in
15387         register_edge_assert_for_2.
15388         (register_edge_assert_for): Split the cond argument.
15389         (find_switch_asserts): Adjust for the change in
15390         register_edge_assert_for.
15391
15392 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
15393
15394         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
15395         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
15396         offsets for 64-bit mingw.
15397         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
15398         abi for x86_64-pc-mingw.
15399
15400 2008-04-02  Richard Guenther  <rguenther@suse.de>
15401
15402         * tree-vrp.c (extract_range_from_assert): Make sure to not
15403         produce range min/max with TREE_OVERFOW set.
15404         If merging a anti-range and a range keep the anti-range if
15405         the range covers all values of the type.
15406         (register_edge_assert_for_2): Only allow sign-changing
15407         conversions in detecting canonical range checks.  Also
15408         register an assert for the unsigned name if useful.
15409
15410         PR tree-optimization/35787
15411         * tree-vrp.c (vrp_val_max): New function.
15412         (vrp_val_min): Likewise.
15413         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
15414         (vrp_val_is_min): Likewise.
15415         (supports_overflow_infinity): Use vrp_val_{min,max}.
15416         (negative_overflow_infinity): Likewise.
15417         (positive_overflow_infinity): Likewise.
15418         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
15419         (is_positive_overflow_infinity): Likewise.
15420         (is_overflow_infinity): Likewise.
15421         (avoid_overflow_infinity): Use vrp_val_{min,max} and
15422         vrp_val_is_{min,max}.
15423         (set_and_canonicalize_value_range): Canonicalize anti-ranges
15424         to ranges if possible.  Avoid empty ranges.
15425
15426 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15427
15428         PR middle-end/35705
15429         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
15430         the expression is a function address.
15431
15432 2008-04-01  George Helffrich  <george@gcc.gnu.org>
15433
15434         PR fortran/35154, fortran/23057
15435         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
15436         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
15437         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
15438         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
15439         in common.
15440         (dbxout_syms): Check for COMMON-based symbol and wrap in
15441         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
15442         in bracket for efficiency.
15443
15444         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
15445         using DW_TAG_common_block + member offset.
15446         (add_pubname_string): New function.
15447         (dw_expand_expr): New function to find block name and offset for
15448         COMMON var.
15449         (common_check): New function to check whether symbol in Fortran COMMON.
15450         (gen_variable_die): If COMMON, use DW_TAG_common_block.
15451
15452 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
15453
15454         PR c/35436
15455         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
15456
15457 2008-04-02  Ben Elliston  <bje@au.ibm.com>
15458
15459         * config/v850/v850.md (casesi): Remove if (0) code.
15460         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
15461         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
15462
15463 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
15464
15465         * config/i386/i386.md (rex64suffix): New mode attribute.
15466         (floathi<mode>2): Disable expander for SSE math.
15467         (*floathi<mode>2_1): New insn insn_and_split pattern.
15468         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
15469         corresponding post-reload splitters.
15470         (*floathi<mode>2_i387): New macroized insn pattern.
15471         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
15472         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
15473         insn_and_split pattern.
15474         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
15475         New macroized instruction patterns and corresponding post-reload
15476         splitters.
15477         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
15478         and corresponding post-reload splitters.
15479         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
15480         New macroized instruction patterns.
15481         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
15482         macroized instruction patterns and corresponding post-reload splitters.
15483         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
15484         corresponding post-reload splitters.
15485         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
15486         New macroized instruction patterns.
15487         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
15488         corresponding post-reload splitters.
15489         (*floatsi<mode>2_i387): New macroized instruction patterns.
15490
15491 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
15492
15493         * config/i386/i386.md (smaxmin): New.
15494         (umaxmin): Likewise.
15495         (maxminiprefix): Likewise.
15496         (maxminfprefix): Likewise.
15497         (<code><mode>3): Likewise.
15498         (smin<mode>3): Removed.
15499         (smax<mode>3): Likewise.
15500
15501         * config/i386/mmx.md (mmx_<code>v2sf3): New.
15502         (mmx_<code>v4hi3): Likewise.
15503         (mmx_<code>v8qi3): Likewise.
15504         (mmx_smaxv2sf3): Removed.
15505         (mmx_sminv2sf3): Likewise.
15506         (mmx_umaxv8qi3): Likewise.
15507         (mmx_smaxv4hi3): Likewise.
15508         (mmx_uminv8qi3): Likewise.
15509         (mmx_sminv4hi3): Likewise.
15510
15511         * config/i386/sse.md (<addsub><mode>3): New.
15512         (*<addsub><mode>3): Likewise.
15513         (<sse>_vm<addsub><mode>3): Likewise.
15514         (<maxmin><mode>3): Likewise.
15515         (*<maxmin><mode>3_finite): Likewise.
15516         (*<maxmin><mode>3): Likewise.
15517         (<sse>_vm<maxmin><mode>3): Likewise.
15518         (sse3_h<addsub>v4sf3): Likewise.
15519         (sse3_h<addsub>v2df3): Likewise.
15520         (<maxmin>v16qi3): Likewise.
15521         (*<maxmin>v16qi3): Likewise.
15522         (<maxmin>v8hi3): Likewise.
15523         (*<maxmin>v8hi3): Likewise.
15524         (*sse4_1_<maxmin><mode>3): Likewise.
15525         (*sse4_1_<maxmin><mode>3): Likewise.
15526         (add<mode>3): Removed.
15527         (*add<mode>3): Likewise.
15528         (<sse>_vmadd<mode>3): Likewise.
15529         (sub<mode>3): Likewise.
15530         (*sub<mode>3): Likewise.
15531         (<sse>_vmsub<mode>3): Likewise.
15532         (smin<mode>3): Likewise.
15533         (*smin<mode>3_finite): Likewise.
15534         (*smin<mode>3): Likewise.
15535         (<sse>_vmsmin<mode>3): Likewise.
15536         (smax<mode>3): Likewise.
15537         (*smax<mode>3_finite): Likewise.
15538         (*smax<mode>3): Likewise.
15539         (<sse>_vmsmax<mode>3): Likewise.
15540         (sse3_haddv4sf3): Likewise.
15541         (sse3_haddv2df3): Likewise.
15542         (sse3_hsubv4sf3): Likewise.
15543         (sse3_hsubv2df3): Likewise.
15544         (umaxv16qi3): Likewise.
15545         (*umaxv16qi3): Likewise.
15546         (smaxv8hi3): Likewise.
15547         (*smaxv8hi3): Likewise.
15548         (*sse4_1_smax<mode>3): Likewise.
15549         (*sse4_1_umax<mode>3): Likewise.
15550         (uminv16qi3): Likewise.
15551         (*uminv16qi3): Likewise.
15552         (sminv8hi3): Likewise.
15553         (*sminv8hi3): Likewise.
15554         (*sse4_1_smin<mode>3): Likewise.
15555         (*sse4_1_umin<mode>3): Likewise.
15556
15557 2008-04-01  Rafael Espindola  <espindola@google.com>
15558
15559         * tree-cfg.c (verify_expr): remove in_phi.
15560         (verify_stmt): Don't call walk_tree with verify_expr. Use
15561         is_gimple_min_invariant instead of is_gimple_val.
15562
15563 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
15564
15565         * doc/include/gpl_v3.texi: Update for manpage generation.
15566         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
15567         gpl.texi.
15568         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
15569         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
15570         gpl_v3.texi instead of gpl.texi.
15571         (gpl.pod): New.
15572
15573 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
15574
15575         PR pch/13675
15576         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
15577
15578 2008-04-01  Rafael Espindola  <espindola@google.com>
15579
15580         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
15581         (extract_code_and_val_from_cond): Use
15582         extract_code_and_val_from_cond_with_ops.
15583
15584 2008-04-01  Jan Hubicka  <jh@suse.cz>
15585
15586         * function.c (free_after_compilation): Free epilogue_delay_list.
15587         (prepare_function_start): Assert that previous compilation was freed.
15588
15589 2008-04-01  Jan Hubicka  <jh@suse.cz>
15590             Jim Wilson  <wilson@tuliptree.org>
15591             Andreas Tobler <andreast@gcc.gnu.org>
15592
15593         PR middle-end/35781
15594         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
15595         rtl.emit instead cfun->emit.
15596         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
15597         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
15598
15599 2008-04-01  Ben Elliston  <bje@au.ibm.com>
15600
15601         * doc/c-tree.texi (Function Basics): Fix grammatical error.
15602
15603 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
15604
15605         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
15606         New options
15607         (fprofile-use): Add var flag_profile_use
15608         * coverage.c (coverage_begin_output): Do not open a gcno file for
15609         output only if -ftest-coverage is set.
15610         Do not add getpwd() to gcda file path.
15611         (build_gcov_info): Check the new flag
15612         flag_profile_datafile_relative_path.
15613         (coverage_init): Use profile_data_prefix.
15614         Read profile counter only if flag_profile_use is set.
15615         * opts.c (common_handle_option): New option fprofile-use=,
15616         fprofile-dir=, fprofile-generate=.
15617         * toplev.c (profile_data_prefix): New variable definition.
15618         * toplev.h (profile_data_prefix): New declaration.
15619         * doc/invoke.tex (Option Summary, Optimization Options):
15620         Add new options.
15621
15622 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
15623
15624         * varasm.c (output_constant_pool_1): In LABEL_REF check,
15625         use tmp consistently.
15626
15627         PR target/35695
15628         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
15629         * config/ia64/ia64.c (rtx_needs_barrier): Handle
15630         UNSPEC_FR_RECIP_APPROX_RES.
15631         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
15632
15633 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
15634
15635         PR c/35750
15636         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
15637
15638 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15639
15640         PR middle-end/30186
15641         * fold-const.c (fold_indirect_ref_1): Support accessing non first
15642         element of the vector via a pointer.
15643
15644 2008-03-31  Ian Lance Taylor  <iant@google.com>
15645
15646         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
15647
15648 2008-03-31  Jan Hubicka  <jh@suse.cz>
15649
15650         * builtins.c (expand_builtin_setjmp_receiver): Update call of
15651         get_arg_pointer_save_area.
15652         * expr.c (init_expr): Just clear out rtl.expr.
15653         * function.c (free_after_compilation): Clear out whole RTL structure.
15654         (get_func_frame_size): Merge into ...
15655         (get_frame_size): ... this one.
15656         (assign_stack_local_1): Merge into ...
15657         (assign_stack_local): ... this one.
15658         (expand_function_end): Update call of get_arg_pointer_save_area.
15659         (get_art_pointer_save_area): Remove cfun argument.
15660         * function.h (emit_status): regno_pointer_align does not need length
15661         attribute. Move x_regno_reg_rtx to ...
15662         (regno_reg_rtx): ... new global array.
15663         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
15664         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
15665         apply_args_value, forced_labels, stack_pointer_delta):
15666         Update accestors.
15667         (struct varasm_status): Move here from varasm.c
15668         (struct rtl_data): New. Move here some fields from struct function.
15669         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
15670         frame_offset, stack_check_probe_note, arg_pointer_save_area,
15671         used_temp_slots avail_temp_slots, temp_slot_level,
15672         nonlocal_goto_handler_labels): Update accesstors.
15673         (rtl): New global variable.
15674         (struct function): Move some fileds to rtl_data.
15675         (get_arg_pointer_save_area): Update prototype.
15676         * emit-rtl.c (rtl): Declare.
15677         (regno_reg_rtx): Declare.
15678         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
15679         Update.
15680         (gen_reg_rtx): Update.
15681         (init_virtual_regs): Do not tate emit_status argument.
15682         (init_emit): Do not allocate emit.
15683         * varasm.c (varasm_statuc): Move to function.h.
15684         (n_deferred_constatns): Update accestor.
15685         (init_varasm_status): Do not allocate varasm_status.
15686         (force_const_mem, get_pool_size, output_constant_pool): Update.
15687         * stmt.c (force_label_rtx): Do not use x_ prefixes.
15688         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
15689
15690 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
15691
15692         PR rtl-optimization/35729
15693         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
15694         references.
15695
15696 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
15697
15698         PR target/32000
15699         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
15700         load/store if memory is unaligned.
15701         (*movti_rex64): Likewise.
15702
15703         * config/i386/predicates.md (misaligned_operand): New.
15704
15705 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
15706
15707         PR tree-opt/35431
15708         * tree-ssa-phiopt.c (conditional_replacement): Return early for
15709         complex types.
15710
15711 2008-03-31  Jan Beulich  <jbeulich@novell.com>
15712
15713         * config/ia64/constraints.md: Add 'j' constraint.
15714         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
15715         (movdi_internal): Likewise.
15716
15717 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
15718
15719         PR c/35748
15720         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
15721
15722 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
15723
15724         PR target/35757
15725         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
15726         proper error message for the third argument on blendpd and
15727         blendps.
15728
15729         * config/i386/sse.md (blendbits): New.
15730         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
15731
15732 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
15733
15734         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
15735
15736 2008-03-30  Richard Guenther  <rguenther@suse.de>
15737
15738         PR middle-end/31023
15739         * fold-const.c (fold_sign_changed_comparison): Do leave
15740         conversions to base-types alone.
15741
15742 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15743
15744         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
15745         the link register if one altivec register is be saved.
15746
15747 2008-03-30  Ben Elliston  <bje@au.ibm.com>
15748
15749         * final.c (final_scan_insn): Remove if (0) code.
15750
15751 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
15752
15753         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
15754
15755 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
15756
15757         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
15758         of V4SFmode to ix86_binary_operator_ok.
15759
15760 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
15761
15762         * config/i386/i386.c (override_options): Initialize
15763         ix86_veclib_handler to ix86_veclibabi_svml when
15764         -mveclibabi=svml is used.
15765         (ix86_veclibabi_svml): New function for SVML ABI style
15766         vectorization support.
15767         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
15768
15769 2008-03-28  Rafael Espindola  <espindola@google.com>
15770
15771         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
15772         (tree_binary_nonnegative_warnv_p): Make it public.
15773         (tree_single_nonnegative_warnv_p): Make it public.
15774         (tree_invalid_nonnegative_warnv_p): Make it public.
15775         (tree_unary_nonzero_warnv_p): Make it public.
15776         (tree_binary_nonzero_warnv_p): Make it public
15777         (tree_single_nonzero_warnv_p): Make it public.
15778         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
15779         (extract_range_from_binary_expr): Split the expr argument.
15780         (extract_range_from_unary_expr): Split the expr argument.
15781         (extract_range_from_comparison): Split the expr argument.
15782         (extract_range_from_expr): Use the new aux functions.
15783         (vrp_evaluate_conditional_warnv): Use
15784         vrp_evaluate_conditional_warnv_with_ops.
15785         * tree.h (tree_unary_nonzero_warnv_p): Declare.
15786         (tree_binary_nonzero_warnv_p): Declare.
15787         (tree_single_nonzero_warnv_p): Declare.
15788         (tree_expr_nonzero_warnv_p): Declare.
15789         (tree_unary_nonnegative_warnv_p): Declare.
15790         (tree_binary_nonnegative_warnv_p): Declare.
15791         (tree_single_nonnegative_warnv_p): Declare.
15792         (tree_invalid_nonnegative_warnv_p): Declare.
15793
15794 2008-03-28  Richard Guenther  <rguenther@suse.de>
15795
15796         PR tree-optimization/30317
15797         PR tree-optimization/30911
15798         PR tree-optimization/34793
15799         * tree-vrp.c (set_and_canonicalize_value_range): New function.
15800         (struct assert_locus_d): New member EXPR.
15801         (register_new_assert_for): Add EXPR parameter to support
15802         ASSERT_EXPR <name, expr OP limit>.
15803         (register_edge_assert_for_1): Adjust callers.
15804         (find_assert_locations): Likewise.
15805         (process_assert_insertions_for): Build condition from expression.
15806         (extract_range_from_assert): Handle ASSERT_EXPRs
15807         of the form ASSERT_EXPR <name, expr OP limit>.
15808         (register_edge_assert_for_2): New helper registering
15809         asserts for comparisons.  Recognize range tests of the form
15810         (unsigned)i - CST1 OP CST2.
15811         (register_edge_assert_for_1): Use it.
15812         (register_edge_assert_for): Likewise.
15813         (needs_overflow_infinity): Integer sub-types
15814         do not need overflow infinities.
15815         (vrp_val_is_max): The extreme values of integer sub-types
15816         are those of the base type.
15817         (vrp_val_is_min): Likewise.
15818         * tree.def (ASSERT_EXPR): Document extra allowed conditional
15819         expressions.
15820
15821 2008-03-28  Nick Clifton  <nickc@redhat.com>
15822
15823         PR target/31110
15824         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
15825         Return GENERAL_REGS for stack adjustment reloads.
15826
15827 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15828
15829         PR target/31334
15830         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
15831         const_vector when all the vectors are constant.
15832
15833 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
15834
15835         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
15836         comparisons.
15837         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
15838         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
15839         (scc_sf): New.
15840         (s<code>_sf): Use new scc_sf attribute for opcode names.
15841
15842 2008-03-27  Tom Tromey  <tromey@redhat.com>
15843
15844         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
15845         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
15846         config/spu/t-spu-elf, config/i386/t-interix,
15847         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
15848         config/i386/x-darwin, config/i386/x-mingw32,
15849         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
15850         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
15851         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
15852         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
15853         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
15854         config/rs6000/x-darwin, config/rs6000/t-rs6000,
15855         config/score/t-score-elf, config/arm/t-strongarm-pe,
15856         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
15857         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
15858         Revert automatic dependency patch.
15859
15860 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15861
15862         PR target/35657
15863         * config/i386/i386.c (ix86_function_arg_boundary): Align
15864         decimal floating point to its natural boundary.
15865
15866 2008-03-27  Richard Guenther  <rguenther@suse.de>
15867
15868         PR middle-end/35716
15869         * fold-const.c (fold_comparison): Restrict distinct decl
15870         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
15871         solely rely on operand_equal_p.
15872
15873 2008-03-27  Richard Guenther  <rguenther@suse.de>
15874
15875         PR c/32511
15876         * c-common.c (handle_weak_attribute): Reject combination of
15877         weak and inline.
15878
15879 2008-03-27  Richard Guenther  <rguenther@suse.de>
15880
15881         PR tree-optimization/32810
15882         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
15883         conversions from DECL_INITIAL.
15884         (fold_const_aggregate_ref): Likewise from constructor elements.
15885
15886 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
15887
15888         * tree-affine.h (aff_combination_expand): Declare.
15889         (get_inner_reference_aff): Likewise.
15890         * tree-affine.c (aff_combination_expand): Split out from
15891         tree_to_aff_combination_expand.
15892         (get_inner_reference_aff): New function.
15893         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
15894         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
15895         (struct lim_aux_data): sm_done field removed.
15896         (mem_ref_loc_p, mem_ref_locs_p): New types.
15897         (struct mem_ref): Added id, stored, accesses_in_loop,
15898         indep_loop, dep_loop, indep_ref, dep_ref fields.
15899         Removed is_stored, locs and next fields.
15900         (memory_accesses): New variable.
15901         (movement_possibility): Do not allow moving statements
15902         that store to memory.
15903         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
15904         New functions.
15905         (determine_max_movement): For statements with memory references,
15906         find the outermost loop in that the reference is independent.
15907         (move_computations_stmt): Mark the virtual operands for renaming.
15908         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
15909         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
15910         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
15911         add_vop_ref_mapping, create_vop_ref_mapping_loop,
15912         create_vop_ref_mapping, analyze_memory_references,
15913         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
15914         get_all_locs_in_loop, ref_always_accessed_p,
15915         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
15916         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
15917         store_motion_loop, store_motion): New functions.
15918         (struct vop_to_refs_elt): New type.
15919         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
15920         memref_hash, memref_eq, hoist_memory_references): Rewritten.
15921         (schedule_sm): Replaced by...
15922         (execute_sm): ... this.
15923         (determine_lsm_ref, hoist_memory_references,
15924         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
15925         find_more_ref_vops, free_mem_ref, free_mem_refs,
15926         determine_lsm_loop, determine_lsm): Removed.
15927         (tree_ssa_lim_finalize): Free data structures used by store motion.
15928         (tree_ssa_lim): Call analyze_memory_references.  Use
15929         store_motion instead of determine_lsm.
15930
15931 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
15932
15933         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
15934         rename tmake_file to m68hc11/t-m68hc11.
15935         (mcore): Set inhibit_libc to true.
15936         * config.host (alpha*-dec-*vms*): Set extra_programs.
15937         (interix3*): Don't use host_xmake_file.
15938         * configure.ac: Let config.gcc override inhibit_libc.
15939         * configure: Regenerate.
15940
15941         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
15942         * config/t-openbsd-thread: Remove commented out lines.
15943
15944         * config/x-interix: Remove.
15945
15946         * config/m68hc11/t-m68hc11-gas: Rename to...
15947         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
15948
15949         * config/mcore/t-mcore: Remove T_CFLAGS.
15950         * config/mcore/t-mcore-pe: Likewise.
15951
15952 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
15953
15954         * configure.ac: Replace custom __GNU_SOURCE test with
15955         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
15956         * aclocal.m4: Regenerate.
15957         * configure: Regenerate.
15958         * config.in: Regenerate.
15959
15960 2008-03-27  Richard Guenther  <rguenther@suse.de>
15961
15962         * fold-const.c (target.h): Include.
15963         (fold_comparison): Fold comparison of addresses of decls
15964         that bind locally or of constants.  Consolidate address folding code.
15965         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
15966         results from fold_binary_to_constant.
15967         (compare_values_warnv): Likewise.
15968
15969 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
15970
15971         PR middle-end/35429
15972         * fold-const.c (fold_truthop): Check for integeral types when folding
15973         a == 0 && b == 0 and a != 0 || b != 0 .
15974
15975 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
15976
15977         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
15978
15979 2008-03-26  Andreas Schwab  <schwab@suse.de>
15980
15981         * doc/invoke.texi: Fix use of @item vs. @itemx.
15982
15983 2008-03-26  Tom Tromey  <tromey@redhat.com>
15984
15985         * Makefile.in (build/gensupport.o, build/print-rtl.o,
15986         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
15987         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
15988         build/gencodes.o, build/genconditions.o, build/genconfig.o,
15989         build/genconstants.o, build/genemit.o, build/genextract.o,
15990         build/genflags.o, build/genmddeps.o, build/genopinit.o,
15991         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
15992         options.h.
15993
15994 2008-03-26  Richard Guenther  <rguenther@suse.de>
15995
15996         Revert
15997         2008-03-26  Richard Guenther  <rguenther@suse.de>
15998
15999         * fold-const.c (target.h): Include.
16000         (fold_comparison): Fold comparison of addresses of two decls
16001         that bind locally.  Consolidate address folding code.
16002
16003 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16004
16005         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
16006         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
16007         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
16008         dconstsqrt2, dconstthird, dconste and/or dconst10.
16009         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
16010         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
16011         dconstsqrt2, dconste): Delete.
16012         (init_emit_once): Likewise.  Simplify initializing dconstm1.
16013         Constify variable.
16014         * real.c (get_real_const): New.
16015         * real.h (dconst3, dconst10, dconstm2, dconstthird,
16016         dconstsqrt2, dconste): Delete.
16017         (real_value_const, get_real_const): New.
16018
16019 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
16020
16021         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
16022
16023         * config/i386/i386.c (ix86_function_arg_boundary): Check
16024         BIGGEST_ALIGNMENT instead of 128.
16025         (setup_incoming_varargs_64): Likewise.
16026
16027 2008-03-26  Tom Tromey  <tromey@redhat.com>
16028
16029         * Makefile.in (DEPFILES): Add missing '/'.
16030
16031 2008-03-26  Richard Guenther  <rguenther@suse.de>
16032
16033         * fold-const.c (target.h): Include.
16034         (fold_comparison): Fold comparison of addresses of two decls
16035         that bind locally.  Consolidate address folding code.
16036
16037 2008-03-26  Nick Clifton  <nickc@redhat.com>
16038
16039         PR target/31232
16040         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
16041         not allow INT+INT as a legitimate addressing mode.
16042
16043 2008-03-26  Richard Guenther  <rguenther@suse.de>
16044
16045         * tree-flow.h (widen_bitfield): Remove declaration.
16046         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
16047         (widen_bitfield): Remove function.
16048         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
16049         code.
16050
16051 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16052
16053         PR target/31558
16054         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
16055         error_mark_node's.
16056
16057 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
16058
16059         PR rtl-optimization/35232
16060         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
16061         (forget_old_reloads_1, forget_marked_reloads): Don't clear
16062         reg_reloaded_call_part_clobbered here.
16063         (reload_regs_reach_end_p): New function.
16064         (reload_reg_rtx_for_input): New variable.
16065         (reload_reg_rtx_for_output): Likewise.
16066         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
16067         when reassigning a pseudo register.  Load reloadreg from
16068         reload_reg_rtx_for_input, moving the mode and register
16069         calculation to...
16070         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
16071         instead of the original when deciding whether an input reload
16072         would be a no-op or whether an output reload can be deleted.
16073         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
16074         when setting up new_spill_reg_store.  Load it from
16075         reload_reg_rtx_for_output, moving the mode and register
16076         calculation to...
16077         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
16078         instead of the original when deciding whether an output reload
16079         would be a no-op.  Do the same when modifying insn notes.
16080         Use rtx_equal_p instead of == to compare the registers.
16081         (inherit_piecemeal_p): Take a mode and two register numbers
16082         as argument.
16083         (emit_reload_insns): Clear new_spill_reg_store for every hard
16084         register in the reload register.  Remove spill registers
16085         from reg_reloaded_valid before considering whether to record
16086         inheritance information for them.  Use reload_reg_rtx_for_output
16087         instead of reg_rtx when recording output reloads.  Use
16088         reload_reg_rtx_for_input instead of reg_rtx when recording
16089         input reloads.  Set or clear reg_reloaded_call_part_clobbered
16090         at the same time as setting reg_reloaded_valid.
16091         (delete_output_reload): Add a new_reload_reg parameter and use it
16092         instead of rld[j].reg_rtx.
16093         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
16094         calls accordingly.
16095
16096 2008-03-25  Tom Tromey  <tromey@redhat.com>
16097
16098         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
16099         (build/genattr.o): Likewise.
16100         (build/genattrtab.o): Likewise.
16101         (build/gencodes.o): Likewise.
16102         (build/genconfig.o): Likewise.
16103         (build/genconstants.o): Likewise.
16104         (build/genemit.o): Likewise.
16105         (build/genextract.o): Likewise.
16106         (build/genflags.o): Likewise.
16107
16108 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
16109
16110         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
16111         instead of size_int for integer types.
16112         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
16113         to match type of MINUS_EXPR.
16114
16115 2008-03-25  Tom Tromey  <tromey@redhat.com>
16116
16117         * configure: Rebuilt.
16118         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
16119         Makefile.
16120
16121 2008-03-25  Tom Tromey  <tromey@redhat.com>
16122
16123         * config/x-solaris (host-solaris.o): Update.
16124         * config/x-linux (host-linux.o): Update.
16125         * config/x-hpux (host-hpux.o): Update.
16126         * config/x-darwin (host-darwin.o): Update.
16127         * config/v850/t-v850e (v850-c.o): Update.
16128         * config/v850/t-v850 (v850-c.o): Update.
16129         * config/t-vxworks (vxworks.o): Update.
16130         * config/t-sol2 (sol2-c.o, sol2.o): Update.
16131         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
16132         * config/spu/t-spu-elf (spu-c.o): Update.
16133         (spu.o): Remove.
16134         * config/sh/t-symbian (sh-c.o): Update.
16135         (symbian.o): Update.
16136         * config/sh/t-sh (sh-c.o): Update.
16137         * config/score/t-score-elf (score7.o, score3.o): Update.
16138         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
16139         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
16140         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
16141         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
16142         (rs6000.o): Remove.
16143         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
16144         * config/m32c/t-m32c (m32c-pragma.o): Update.
16145         * config/ia64/t-ia64 (ia64-c.o): Update.
16146         * config/i386/x-mingw32 (host-mingw32.o): Update.
16147         * config/i386/x-i386 (driver-i386.o): Update.
16148         * config/i386/x-darwin (host-i386-darwin.o): Update.
16149         * config/i386/x-cygwin (host-cygwin.o): Update.
16150         * config/i386/t-nwld (nwld.o): Update.
16151         * config/i386/t-netware (netware.o): Update.
16152         * config/i386/t-interix (winnt.o): Update.
16153         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
16154         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
16155         msformat-c.o): Update.
16156         * config/bfin/t-bfin-linux (generated_files): Add
16157         linux-sysroot-suffix.h.
16158         * config/arm/t-wince-pe (pe.o): Update.
16159         * config/arm/t-strongarm-pe (pe.o): Update.
16160         * config/arm/t-pe (pe.o): Update.
16161         * config/arm/t-arm (arm-c.o): Update.
16162         * doc/install.texi (Prerequisites): Require make 3.80.
16163         * Makefile.in: Remove .o targets.
16164         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
16165         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
16166         (simple_generated_h, simple_generated_c): Move earlier.
16167         (generated_files): New variable.
16168         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
16169         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
16170         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
16171         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
16172         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
16173         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
16174         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
16175         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
16176         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
16177         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
16178         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
16179         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
16180         (.c.o): Remove.
16181         (COMPILE.base, COMPILE): New variables.
16182         (%.o): New pattern rule.
16183         (ALL_HOST_OBJS): New variable.
16184         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
16185         (dummy-checksum.o, cc1-checksum.o): Remove.
16186         (DRIVER_SHLIB): New variable.
16187         (DRIVER_DEFINES): Use it.
16188         (gencondmd.c): Move out of build/.
16189         (s-conditions): Update.
16190         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
16191         (ALL_BUILD_OBJS): Likewise.
16192         (build/%.o): Use BUILDCOMPILE.
16193         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
16194         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
16195         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
16196         build/gencheck.o, build/gencodes.o, build/genconditions.o,
16197         build/genconfig.o, build/genconstants.o, build/genemit.o,
16198         build/genextract.o, build/genflags.o, build/genmddeps.o,
16199         build/genopinit.o, build/genoutput.o, build/genpeep.o,
16200         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
16201         build/gen-protos.o, build/scan.o, build/fix-header.o,
16202         build/scan-decls.o): Simplify.
16203         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
16204         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
16205         prefix.o, toplev.o): Reduce to variable setting.
16206         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
16207         ($(out_object_file), gcc-options.o): New targets.
16208         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
16209         * configure: Rebuilt.
16210         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
16211         * doc/sourcebuild.texi (Front End Directory): Document new variable.
16212
16213 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
16214
16215         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
16216         complain when we hit an error, return ERROR_MARK_NODE.
16217
16218 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16219
16220         * config/sh/constraints.md (Pso, Psz): New constraints.
16221         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
16222         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
16223
16224 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16225
16226         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
16227         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
16228
16229 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
16230
16231         * config/sh/sh.md (prefetch): Add condition for SH2A target.
16232         (prefetch_sh2a): New.
16233
16234 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
16235             Naveen.H.S  <naveen.hs@kpitcummins.com>
16236
16237         * config/sh/constraints.md (I28): New constraint.
16238         * config/sh/sh.c (broken_move): Add support for movi20s.
16239         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
16240
16241 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
16242             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
16243             Naveen.H.S  <naveen.hs@kpitcummins.com>
16244
16245         * config/sh/sh.c (SH_ATTRIBUTES): Define.
16246         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
16247         (print_operand): Handle resbank in %@ operand code.
16248         (sh_encode_section_info): New.
16249         (push_regs): Add conditions for resbank.
16250         (sh_expand_epilogue): Likewise.
16251         (sh_insert_attributes): Likewise.
16252         (sh_attribute_table): Likewise.
16253         (sh_handle_resbank_handler_attribute): New.
16254         (sh2a_handle_function_vector_handler_attribute): New.
16255         (sh2a_is_function_vector_call): New.
16256         (sh2a_get_function_vector_number): New.
16257         (sh2a_function_vector_p): New.
16258         (sh_cfun_resbank_handler_p): New.
16259         * config/sh/sh.md (calli): Emit jsr/n if possible.
16260         (calli_tbr_rel): New.
16261         (calli_pcrel): Emit jsr/n if possible.
16262         (return_i): Emit rts/n if possible.
16263         (call_valuei_tbr_rel): New.
16264         (call_valuei_pcrel): Add condition for SH2A target.
16265         (call_value): Likewise.
16266         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
16267         (sh2a_get_function_vector_number): Likewise.
16268         (sh2a_is_function_vector_call): Likewise.
16269         * doc/extend.texi: Document TBR relative addressing of SH2A.
16270         (resbank): Add description for SH2A.
16271
16272 2008-03-24  Richard Guenther  <rguenther@suse.de>
16273
16274         PR c/22371
16275         * gimplify.c (gimplify_modify_expr): For frontend type-correct
16276         pointer assignments change conversions according to middle-end rules.
16277         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
16278         * configure.ac: Include type checking in yes.
16279         * configure: Regenerate.
16280
16281 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16282
16283         * diagnostic.c (diagnostic_count_diagnostic): Delete.
16284         (diagnostic_report_diagnostic): Update. Handle ICEs here.
16285
16286 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
16287
16288         * gthr-vxworks.h (UNUSED): Define.
16289
16290 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
16291
16292         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
16293
16294 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
16295
16296         * doc/extend.texi (Function Attributes): Add missing comma in the
16297         example of the "alloc_size" attribute.
16298
16299 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
16300
16301         Revert:
16302         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
16303
16304         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
16305         32bit host.
16306
16307         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
16308
16309         PR target/35496
16310         * stor-layout.c (update_alignment_for_field): Set minimum alignment
16311         of the underlying type of a MS bitfield layout to the natural
16312         alignment of the type.
16313
16314         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
16315
16316         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
16317         to their natural alignment to avoid store forwarding stalls.
16318
16319 2008-03-22  Richard Guenther  <rguenther@suse.de>
16320
16321         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
16322         For PHI nodes verify the address is invariant.
16323         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
16324         (get_symbol_constant_value): Use is_gimple_min_invariant.
16325         (maybe_fold_stmt_indirect): Likewise.
16326
16327 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
16328
16329         PR rtl-optimization/33927
16330         * Makefile.in (dse.o): Depend on $(TM_P_H).
16331         * expr.h (extract_low_bits): Declare.
16332         * expmed.c (extract_low_bits): New function.
16333         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
16334         * dse.c: Include tm_p.h.
16335         (find_shift_sequence): Remove the read_reg argument and return the
16336         read value.  Emit the instructions instead of returning them.
16337         Iterate on new_mode rather than calculating it each time.
16338         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
16339         source to NEW_MODE and extract_low_bits to convert the shifted
16340         value to READ_MODE.
16341         (replace_read): Allow the load and store to have different mode
16342         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
16343         or extraction instructions before trying the replacement.  Update
16344         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
16345
16346 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
16347
16348         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
16349         to their natural alignment to avoid store forwarding stalls.
16350
16351 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16352
16353         PR target/27946
16354         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
16355         encouraging but not allowing gprs for input;
16356         change the input constraint to !f#r.
16357         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
16358         gprs for output;
16359         change the output constraint to !f#r.
16360
16361 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
16362
16363         PR target/13958
16364         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
16365         corresponding post-reload splitters.
16366         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
16367         when x87 FP math is selected.
16368         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
16369         New function prototype.
16370         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
16371         unreachable function to ease macroization of insn patterns.
16372
16373 2008-03-21  Martin Jambor  <mjambor@suse.cz>
16374
16375         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
16376         reference dumps if ddr is NULL or dependence is unknown.
16377
16378 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
16379
16380         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
16381         unsigned extension into account.
16382         (ATOMIC_COMPARE_AND_SWAP): Likewise.
16383         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
16384         Do computations on a scratch register.
16385
16386 2008-03-21  Richard Guenther  <rguenther@suse.de>
16387
16388         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
16389         Use is_gimple_min_invariant instead of TREE_INVARIANT.
16390         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
16391         * tree-ssa-dom.c (record_equality): Likewise.
16392         * tree-inline.c (copy_body_r): Likewise.
16393         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
16394         TREE_INVARIANT.
16395
16396 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
16397
16398         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
16399         as 'delete_unused' argument.
16400
16401 2008-03-20  Richard Guenther  <rguenther@suse.de>
16402
16403         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
16404         special casing of constant qualifiers.
16405         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
16406         care about them in general.
16407         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
16408         regardless of their type.
16409         (fold_stmt_r): Forcefully fold *& if we end up with that.
16410
16411 2008-03-20  Paul Brook  <paul@codesourcery.com>
16412
16413         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
16414         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
16415         linker flags.
16416         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
16417         definition.
16418         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
16419         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
16420
16421 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
16422
16423         * common.opt (Wmudflap): New option.
16424         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
16425         (mx_register_decls): Likewise.
16426         (mudflap_finish_file): Likewise.
16427         * doc/invoke.texi: Document -Wno-mudflap.
16428
16429 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
16430
16431         * c-format.c (replace_format_name_to_system_name): New.
16432         (cmp_attribs): New.
16433         (convert_format_name_to_system_name): New.
16434         (decode_format_attr): Add use of convert_format_name_to_system_name.
16435         (format_types_orig): Add gnu_ prefix to names.
16436         (check_format_info_main): Special treating of \0 escaped names for
16437         supporting multi-character format specifiers as I32, I64.
16438         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
16439         (gnu_target_overrides_format_attributes): New.
16440         * c-format.h: Add structure target_ovr_attr to hold
16441         system specific formatter names.
16442         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
16443         msformat-c.o file to c_target_objs and cxx_target_objs.
16444         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
16445         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
16446         (TARGET_N_FORMAT_TYPES): New.
16447         * config/i386/msformat-c.c: New.
16448         * config/i386/t-cygming: Add build rule for msformat-c.o.
16449         * doc/extend.texi: Add new format names gnu_* and ms_* and
16450         further details.
16451         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
16452
16453 2008-03-20  Ira Rosen  <irar@il.ibm.com>
16454
16455         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
16456         optimizations turned on under -O3.
16457         (ftree-vectorize): Add that the flag is turned on with -O3.
16458
16459 2008-03-20  Ben Elliston  <bje@au.ibm.com>
16460
16461         * regmove.c (try_auto_increment): Fix spelling error in comment.
16462         * final.c (final_scan_insn): Likewise.
16463
16464 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
16465
16466         PR target/14552
16467         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
16468         allocator preferences for "y" and "r" class registers.
16469         ("*mov<mode>_internal"): Ditto.
16470         ("*movv2sf_internal_rex64"): Ditto.
16471         ("*movv2sf_internal"): Ditto.
16472
16473 2008-03-19  Michael Matz  <matz@suse.de>
16474
16475         PR middle-end/35616
16476         * calls.c (expand_call): Check overlap of arguments with call
16477         address for sibcalls.
16478
16479 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
16480
16481         PR target/35496
16482         * stor-layout.c (update_alignment_for_field): Set minimum alignment
16483         of the underlying type of a MS bitfield layout to the natural
16484         alignment of the type.
16485
16486 2008-03-19  Jan Hubicka  <jh@suse.cz>
16487
16488         PR other/35094
16489         * toplev.c (decode_d_option): Handle all CPP flags.
16490         * tree-vrp.c: Update tree_pass descriptors.
16491         * regrename.c: Update tree_pass descriptors.
16492         * fwprop.c: Update tree_pass descriptors.
16493         * doc/invoke.texi: Remove documentation of dropped -d? flags.
16494         * tree-into-ssa.c: Update tree_pass descriptors.
16495         * tree-dump.c: Update tree_pass descriptors.
16496         * tree-complex.c: Update tree_pass descriptors.
16497         * tree-dump.h: Update tree_pass descriptors.
16498         * see.c: Update tree_pass descriptors.
16499         * cgraphbuild.c: Update tree_pass descriptors.
16500         * tracer.c: Update tree_pass descriptors.
16501         * tree-loop-distribution.c: Update tree_pass descriptors.
16502         * cgraph.c: Update tree_pass descriptors.
16503         * postreload-gcse.c: Update tree_pass descriptors.
16504         * postreload.c: Update tree_pass descriptors.
16505         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
16506         * tree-tailcall.c: Update tree_pass descriptors.
16507         * tree-pass.h (tree_opt_pass): Rename to ...
16508         (opt_pass) ... this one; add "type" field and remove letter field.
16509         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
16510         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
16511         all_lowering_passes): Update declaration.
16512         * ipa-cp.c: Update tree_pass descriptors.
16513         * final.c: Update tree_pass descriptors.
16514         * omp-low.c: Update tree_pass descriptors.
16515         * tree-ssa-dse.c: Update tree_pass descriptors.
16516         * ipa-reference.c: Update tree_pass descriptors.
16517         * tree-ssa-uncprop.c: Update tree_pass descriptors.
16518         * auto-inc-dec.c: Update tree_pass descriptors.
16519         * reorg.c: Update tree_pass descriptors.
16520         * cgraphunit.c: Update tree_pass descriptors.
16521         * tree-ssa-copyrename.c: Update tree_pass descriptors.
16522         * tree-ssa-ccp.c: Update tree_pass descriptors.
16523         * df-core.c: Update tree_pass descriptors.
16524         * mode-switching.c: Update tree_pass descriptors.
16525         * tree-nomudflap.c: Update tree_pass descriptors.
16526         * modulo-sched.c: Update tree_pass descriptors.
16527         * ipa-pure-const.c: Update tree_pass descriptors.
16528         * cse.c: Update tree_pass descriptors.
16529         * web.c: Update tree_pass descriptors.
16530         * tree-stdarg.c: Update tree_pass descriptors.
16531         * tree-ssa-math-opts.c: Update tree_pass descriptors.
16532         * tree-ssa-dom.c: Update tree_pass descriptors.
16533         * tree-nrv.c: Update tree_pass descriptors.
16534         * tree-ssa-alias.c: Update tree_pass descriptors.
16535         * loop-init.c: Update tree_pass descriptors.
16536         * gimple-low.c: Update tree_pass descriptors.
16537         * ipa-inline.c: Update tree_pass descriptors.
16538         * tree-ssa-sink.c: Update tree_pass descriptors.
16539         * global.c: Update tree_pass descriptors.
16540         * ifcvt.c: Update tree_pass descriptors.
16541         * jump.c: Update tree_pass descriptors.
16542         * predict.c: Update tree_pass descriptors.
16543         * tree-ssa-loop.c: Update tree_pass descriptors.
16544         * recog.c: Update tree_pass descriptors.
16545         * dse.c: Update tree_pass descriptors.
16546         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
16547         * tree-eh.c: Update tree_pass descriptors.
16548         * regmove.c: Update tree_pass descriptors.
16549         * local-alloc.c
16550         * function.c: Update tree_pass descriptors.
16551         * tree-vectorizer.c: Update tree_pass descriptors.
16552         * gcse.c: Update tree_pass descriptors.
16553         * ipa-type-escape.c: Update tree_pass descriptors.
16554         * tree-if-conv.c: Update tree_pass descriptors.
16555         * init-regs.c: Update tree_pass descriptors.
16556         * ipa.c: Update tree_pass descriptors.
16557         * tree-ssa-phiopt.c: Update tree_pass descriptors.
16558         * rtl-factoring.c: Update tree_pass descriptors.
16559         * lower-subreg.c: Update tree_pass descriptors.
16560         * bt-load.c: Update tree_pass descriptors.
16561         * tree-dfa.c: Update tree_pass descriptors.
16562         * except.c: Update tree_pass descriptors.
16563         * emit-rtl.c: Update tree_pass descriptors.
16564         * cfgexpand.c: Update tree_pass descriptors.
16565         * tree-cfgcleanup.c: Update tree_pass descriptors.
16566         * cfgcleanup.c: Update tree_pass descriptors.
16567         * tree-ssa-pre.c: Update tree_pass descriptors.
16568         * tree-sra.c: Update tree_pass descriptors.
16569         * tree-mudflap.c: Update tree_pass descriptors.
16570         * tree-ssa-copy.c: Update tree_pass descriptors.
16571         * cfglayout.c: Update tree_pass descriptors.
16572         * tree-ssa-forwprop.c: Update tree_pass descriptors.
16573         * tree-ssa-dce.c: Update tree_pass descriptors.
16574         * tree-ssa.c: Update tree_pass descriptors.
16575         * regclass.c: Update tree_pass descriptors.
16576         * integrate.c: Update tree_pass descriptors.
16577         * tree-optimize.c: Update tree_pass descriptors.
16578         * tree-ssa-phiprop.c: Update tree_pass descriptors.
16579         * tree-object-size.c: Update tree_pass descriptors.
16580         * combine.c: Update tree_pass descriptors.
16581         * tree-outof-ssa.c: Update tree_pass descriptors.
16582         * bb-reorder.c: Update tree_pass descriptors.
16583         * stack-ptr-mod.c: Update tree_pass descriptors.
16584         * var-tracking.c: Update tree_pass descriptors.
16585         * tree-profile.c: Update tree_pass descriptors.
16586         * tree-vect-generic.c: Update tree_pass descriptors.
16587         * reg-stack.c: Update tree_pass descriptors.
16588         * sched-rgn.c: Update tree_pass descriptors.
16589         * tree-ssa-structalias.c: Update tree_pass descriptors.
16590         * tree-cfg.c: Update tree_pass descriptors.
16591         * passes.c (current_pass): Update declaration.
16592         (finish_optimization_passes): Update.
16593         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
16594         (register_one_dump_file, register_dump_files_1, next_pass_1):
16595         Update arguments.
16596         (init_optimization_passes): Update handling of new types.
16597         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
16598         * ipa-struct-reorg.c: Update tree_pass descriptors.
16599         * tree-ssa-reassoc.c: Update tree_pass descriptors.
16600         * combine-stack-adj.c: Update tree_pass descriptors.
16601         * cfgrtl.c: Update tree_pass descriptors.
16602         * dce.c: Update tree_pass descriptors.
16603         * tree-ssanames.c: Update tree_pass descriptors.
16604
16605 2008-03-19  Richard Guenther  <rguenther@suse.de>
16606
16607         PR middle-end/35609
16608         * tree-ssa.c (walk_data): New structure.
16609         (warn_uninitialized_var): If not always_executed warn with "maybe"
16610         instead of "is".
16611         (execute_early_warn_uninitialized): Compute post-dominators.
16612         Initialize always_executed before processing each basic block.
16613
16614 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
16615
16616         PR target/35504
16617         * config/i386/i386.c (x86_this_parameter): Calculate correct location
16618         of "this" pointer when "regparm = N" or "fastcall" is in effect.
16619
16620 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16621
16622         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
16623
16624 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
16625
16626         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
16627         is true.
16628         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
16629         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
16630         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
16631         target after ignore has been set, and move there also the commputation
16632         of subtarget and original_target.
16633         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
16634         (LANG_HOOKS_INITIALIZER): Remove it.
16635         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
16636
16637 2008-03-18  Richard Guenther  <rguenther@suse.de>
16638
16639         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
16640         found an expression with constants, note that in the VN for the lhs.
16641         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
16642         fold them to constants if possible.  Run cleanup_cfg if done so.
16643         (execute_pre): Return todo.
16644         (do_pre): Likewise.
16645         (execute_fre): Likewise.
16646         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
16647         of constants.
16648         (get_prop_source_stmt): Look through pointer conversions.
16649
16650 2008-03-18  Jan Hubicka  <jh@suse.cz>
16651
16652         * tree-pretty-print.c: Include predict.h.
16653         (dump_generic_node): Dump predictor.
16654         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
16655         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
16656         * gimple-low.c (lower_stmt): Likewise.
16657         * expr.c (expand_expr_real): Likewise.
16658         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
16659         them.
16660         (build_predict_expr, build_predict_expr): New.
16661         * predict.h (predictor_name, build_predict_expr): Update.
16662         * c-typeck.c (c_finish_bc_stmt): Add prediction.
16663         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
16664         * predict.def (PRED_CONTINUE): Update hitrate.
16665         * tree.def (PREDICT_EXPR): Define.
16666         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
16667         do not handle BIND_EXPR.
16668         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
16669         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
16670         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
16671         operands.
16672
16673 2008-03-18  Michael Matz  <matz@suse.de>
16674
16675         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
16676
16677 2008-03-18  Richard Guenther  <rguenther@suse.de>
16678
16679         * tree-gimple.h (is_gimple_invariant_address): Declare.
16680         (is_gimple_constant): Likewise.
16681         * tree-gimple.c (is_gimple_constant): New function.
16682         (is_gimple_invariant_address): Likewise.
16683         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
16684         and is_gimple_invariant_address.
16685         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
16686         previous change.
16687         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
16688         an addressable base.
16689
16690 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
16691
16692         PR middle-end/35611
16693         * gimplify.c (gimplify_expr): Gimplify second operand of
16694         OMP_ATOMIC_LOAD.
16695
16696 2008-03-17  Richard Guenther  <rguenther@suse.de>
16697
16698         PR tree-optimization/19637
16699         * fold-const.c (fold_unary): Remove restrictions of removing
16700         intermediate pointer-conversions (P2)(P1)P0.
16701         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
16702         conversion to void pointer.
16703         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
16704
16705 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
16706
16707         PR debug/31510
16708         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
16709         emulated thread local variables.
16710
16711 2008-03-16  Richard Guenther  <rguenther@suse.de>
16712
16713         PR middle-end/35607
16714         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
16715         expand TREE_INVARIANT operations that are not gimple invariant.
16716
16717 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
16718
16719         * doc/extend.texi (Alignment): Say that the ABI controls
16720         the __alignof__ for non-strict-alignment targets rather
16721         than being a recommendation.
16722
16723 2008-03-15  Paul Brook  <paul@codesourcery.com>
16724
16725         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
16726         annotations.
16727         (arm_output_fn_unwind): Mark functions that can not be unwound.
16728
16729 2008-03-15  Paul Brook  <paul@codesourcery.com>
16730
16731         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
16732         extension instructions.
16733
16734 2008-03-15  Richard Guenther  <rguenther@suse.de>
16735
16736         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
16737         and fold constant aggregate refs.
16738         (fold_const_aggregate_ref): Handle string constants
16739         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
16740         (evaluate_stmt): Simplify now that ccp_fold folds constant
16741         aggregate refs.
16742
16743 2008-03-15  Paul Brook  <paul@codesourcery.com>
16744
16745         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
16746         (extzv): Use gen_extzv_t2.
16747         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
16748
16749 2008-03-15  Richard Guenther  <rguenther@suse.de>
16750
16751         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
16752         (fold_const_aggregate_ref): Likewise.
16753         (get_value): Return NULL if we don't have any values.
16754         (ccp_finalize): Set const_val to NULL after freeing it.
16755         * tree-flow.h (get_symbol_constant_value): Declare.
16756         (fold_const_aggregate_ref): Likewise.
16757         * tree-ssa-sccvn.c (try_to_simplify): Use them.
16758
16759 2008-03-15  Richard Guenther  <rguenther@suse.de>
16760
16761         PR middle-end/35593
16762         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
16763         to not produce negative array indices if not allowed.  Add
16764         parameter to indicate that.
16765         (maybe_fold_offset_to_component_ref): Allow negative array
16766         indices only for the first member of a structure.
16767         (maybe_fold_offset_to_reference): Allow negative array indices.
16768         (maybe_fold_stmt_addition): Likewise.
16769
16770 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
16771             Anatoly Sokolov <aesok@post.ru>
16772
16773         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
16774         (avr_arch): Add ARCH_AVR6.
16775         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
16776         (initial_elimination_offset): Initialize and use 'avr_pc_size'
16777         instead of fixed value 2.
16778         (print_operand_address): Use gs() asm specifier instead of pm().
16779         (avr_assemble_integer): (Ditto.).
16780         (avr_output_addr_vec_elt): (Ditto.).
16781         (print_operand): Handle "!" code.
16782         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
16783         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
16784         (AVR_HAVE_EIJMP_EICALL): Define.
16785         (AVR_3_BYTE_PC): Redefine.
16786         (AVR_2_BYTE_PC): (Ditto.).
16787         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
16788         (LINK_SPEC): Add atmega2560 and atmega2561.
16789         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
16790         (crtm2561.o).
16791         * config/avr/avr.md (call_insn): Use eicall instead of icall
16792         for 3 byte PC devices.
16793         (call_value_insn): (Ditto.).
16794         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
16795         (indirect_jump): Use only for for 2 byte PC devices.
16796         (*tablejump): (Ditto.).
16797         (*indirect_jump_avr6): Add insn.
16798         (*tablejump_rjmp): Don't use for 3 byte PC devices.
16799         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
16800         instead of ijmp for 3 byte PC devices.
16801         (__tablejump2__): (Ditto.).
16802         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
16803         (MULITLIB_DIRNAMES): (Ditto.).
16804         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
16805
16806 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
16807
16808         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
16809         "sse2_umulsidi3".  Use V1DI mode for operand 0.
16810         ("mmx_psadbw"): Use V1DI mode for operand 0.
16811         * config/i386/i386-modes.def (V1SI): New vector mode.
16812         * config/i386/i386.c (struct builtin_description)
16813         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
16814         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
16815         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
16816         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
16817         v1di_ftype_v8qi_v8qi type.
16818         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
16819
16820         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
16821         __builtin_ia32_pmuludq]: Fix the mode of return value.
16822
16823 2008-03-15  Richard Guenther  <rguenther@suse.de>
16824
16825         PR middle-end/35595
16826         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
16827         being a PHI_NODE.
16828
16829 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
16830
16831         * doc/invoke.texi (Option Summary, Xtensa Options): Document
16832         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
16833         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
16834         unless TARGET_SERIALIZE_VOLATILE is enabled.
16835         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
16836         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
16837         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
16838
16839 2008-03-14  Richard Guenther  <rguenther@suse.de>
16840
16841         PR tree-optimization/34172
16842         * tree-flow.h (refs_may_alias_p): Declare.
16843         (get_single_def_stmt): Likewise.
16844         (get_single_def_stmt_from_phi): Likewise.
16845         (get_single_def_stmt_with_phi): Likewise.
16846         * tree-dfa.c (refs_may_alias_p): New function.
16847         (get_single_def_stmt): Likewise.
16848         (get_single_def_stmt_from_phi): Likewise.
16849         (get_single_def_stmt_with_phi): Likewise.
16850         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
16851         (vn_reference_lookup_1): New helper function.
16852         (vn_reference_lookup): Walk the virtual use-def chain to
16853         continue searching for a match if the def does not alias the
16854         reference we are looking for.
16855
16856 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
16857
16858         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
16859         archive and Perzl.  Update The Written Word listing.
16860
16861 2008-03-14  Richard Guenther  <rguenther@suse.de>
16862
16863         PR tree-optimization/34043
16864         PR tree-optimization/33989
16865         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
16866         when doing FRE.
16867         (bitmap_find_leader): Use extra argument to verify dominance
16868         relationship inside a basic-block.
16869         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
16870         (find_leader_in_sets): Adjust.
16871         (create_component_ref_by_pieces): Take extra argument for
16872         dominance check, handle lookup failures.
16873         (find_or_generate_expression): Likewise.
16874         (create_expression_by_pieces): Likewise.
16875         (insert_into_preds_of_block): Adjust.
16876         (create_value_expr_from): If asked for, verify all operands
16877         are in the blocks AVAIL_OUT set.
16878         (make_values_for_stmt): Check for SSA_NAMEs that are life
16879         over an abnormal edge.
16880         (compute_avail): Remove such check.
16881         (do_SCCVN_insertion): New function.
16882         (eliminate): If we do not find a leader suitable for replacement
16883         insert a replacement expression from SCCVN if available.
16884         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
16885         (struct vn_ssa_aux): Add needs_insertion flag.
16886         * tree-ssa-sccvn.c (may_insert): New global flag.
16887         (copy_reference_ops_from_ref): Value-number union member access
16888         based on its size, not type and member if insertion is allowed.
16889         (visit_reference_op_load): For a weak match from union type
16890         punning lookup a view-converted value and insert a SSA_NAME
16891         for that value if that is not found.
16892         (visit_use): Make dumps shorter.  Do not disallow value numbering
16893         SSA_NAMEs that are life over an abnormal edge to constants.
16894         (free_scc_vn): Release inserted SSA_NAMEs.
16895         (run_scc_vn): New flag to specify whether insertion is allowed.
16896         Process SSA_NAMEs in forward order.
16897         * tree-ssa-loop-im.c (for_each_index): Handle invariant
16898         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
16899         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
16900         pointer type to/from integral types that do not change the
16901         precision to regular conversions.
16902
16903 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
16904
16905         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
16906         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
16907         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
16908         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
16909         input arguments and the mode of return value.  Built-in functions
16910         that operate on whole 64-bit MMX register now use V1DI mode.
16911
16912 2008-03-13  Alon Dayan  <alond@il.ibm.com>
16913             Olga Golovanevsky  <olga@il.ibm.com>
16914
16915         PR tree-optimization/35041
16916         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
16917         to locate the right position in a statement.
16918
16919 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
16920
16921         PR target/34000
16922         PR target/35553
16923         * config/i386/xmmintrin.h:  Change all static inline functions to
16924         extern inline and add __gnu_inline__ attribute.
16925         * config/i386/bmintrin.h: Ditto.
16926         * config/i386/smmintrin.h: Ditto.
16927         * config/i386/tmmintrin.h: Ditto.
16928         * config/i386/mmintrin-common.h: Ditto.
16929         * config/i386/ammintrin.h: Ditto.
16930         * config/i386/emmintrin.h: Ditto.
16931         * config/i386/pmmintrin.h: Ditto.
16932         * config/i386/mmintrin.h: Ditto.
16933         * config/i386/mm3dnow.h: Ditto.
16934
16935 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
16936
16937         PR middle-end/35185
16938         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
16939         (lower_omp_2): New function.
16940         (lower_omp_1, lower_omp): Rewritten.
16941
16942 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
16943
16944         PR 35054
16945         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
16946         with the phrase "Microsoft Windows compilers".
16947         (Push/Pop Macro Pragmas): New subsection. Document
16948         #pragma push_macro and pragma pop_macro.
16949
16950 2008-03-12  Paul Brook  <paul@codesourcery.com>
16951
16952         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
16953
16954 2008-03-12  Paul Brook  <paul@codesourcery.com>
16955
16956         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
16957         (thumb2_alusi3_short): Exclude PLUS and MINUS.
16958         (thumb2_addsi_shortim): Rename ...
16959         (thumb2_addsi_short): ... to this.  Allow register operands.
16960         (thumb2_subsi_short): New pattern.
16961         (thumb2_one_cmplsi2_short,
16962         thumb2_negsi2_short): New patterns and peepholes.
16963
16964 2008-03-12  Paul Brook  <paul@codesourcery.com>
16965
16966         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
16967
16968 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
16969
16970         * config/i386/i386.md (int_cond): New code iterator.
16971         (fp_cond): Ditto.
16972         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
16973         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
16974         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
16975         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
16976         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
16977         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
16978         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
16979         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
16980
16981 2008-03-12  Paul Brook  <paul@codesourcery.com>
16982
16983         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
16984         instead of {arm,thumb}_compute_save_reg_mask.
16985         (output_return_instruction): Ditto.
16986         (thumb_unexpanded_epilogue): Ditto.
16987         (thumb1_expand_prologue): Ditto.
16988         (thumb1_output_function_prologue): Ditto.
16989         (arm_set_return_address): Ditto.
16990         (thumb_set_return_address): Ditto.
16991         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
16992         regs to achieve stack alignment.
16993         (thumb1_compute_save_reg_mask): Fix compiler warning.
16994         (arm_output_epilogue): Use offsets->saved_regs_mask.
16995         Adjust stack pointer by poping call clobered registers.
16996         (arm_expand_prologue): Use offsets->saved_regs_mask.
16997         Adjust stack pointer by pushing extra registers.
16998         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
16999
17000 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
17001
17002         PR tree-opt/35422
17003         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
17004         conversion to the operands of a multiplication.
17005
17006 2008-03-12  Richard Guenther  <rguenther@suse.de>
17007
17008         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
17009         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
17010         * timevar.def (TV_TREE_PHIPROP): Add.
17011         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
17012         pass description.  Use TV_TREE_PHIPROP.
17013         * tree-ssa-forwprop.c: Remove phiprop code.
17014
17015 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
17016
17017         PR middle-end/35549
17018         * omp-low.c (maybe_lookup_decl): Constify first argument.
17019         (use_pointer_for_field): Change last argument from bool to
17020         omp_context *.  Disallow shared copy-in/out in nested
17021         parallel if decl is shared in outer parallel too.
17022         (build_outer_var_ref, scan_sharing_clauses,
17023         lower_rec_input_clauses, lower_copyprivate_clauses,
17024         lower_send_clauses, lower_send_shared_vars): Adjust callers.
17025
17026 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
17027             Ira Rosen  <irar@il.ibm.com>
17028
17029         * tree-vectorizer.c (free_stmt_vec_info): New function.
17030         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
17031         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
17032         * tree-vectorizer.h (free_stmt_vec_info): Declare.
17033         * tree-vect-transform.c (vectorizable_conversion): Free
17034         vec_oprnds0 if it was allocated.
17035         (vect_permute_store_chain): Remove unused VECs.
17036         (vectorizable_store): Free VECs that are allocated in the..
17037         function.
17038         (vect_transform_strided_load, vectorizable_load): Likewise.
17039         (vect_remove_stores): Simplify the code.
17040         (vect_transform_loop): Move code to vect_remove_stores().
17041         Call vect_remove_stores() and free_stmt_vec_info().
17042
17043 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17044
17045         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
17046         TARGET_HPUX.  Revise comment.
17047         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
17048         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
17049         Use sr4 variant of `be' instruction when not generating PIC code.
17050         (attr_length_call): Adjust for above change.
17051
17052 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17053
17054         * ipa-reference.c (static_execute): Remove module_statics_const and
17055         associated setting code.
17056
17057 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
17058
17059         PR target/35540
17060         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
17061         predicate for operand 1.
17062         (paritysi2_cmp): Use register_operand predicate for operand 2.
17063         Use earlyclobber modifier for operand 1.  Remove support for
17064         memory operands.
17065         (paritydi2_cmp): Use register_operand predicate for operand 3.
17066         Use earlyclobber modifier for operand 1.  Remove support for
17067         memory operands.
17068
17069 2008-03-11  Paul Brook  <paul@codesourcery.com>
17070             Vladimir Prus  <vladimir@codesourcery.com>
17071
17072         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
17073         (arm_compute_save_reg0_reg12_mask): Always
17074         check if register 11 must be saved.  Always safe hard frame pointer
17075         when frame_pointer_needeed.
17076         (arm_compute_save_reg_mask): Save IP and PC
17077         only with apcs frames.
17078         (arm_output_epilogue): Adjust Thumb2 codepath to
17079         be also invoked and work for ARM non-apcs frames.
17080         (arm_expand_prologue): Don't bother saving IP
17081         for non-apcs frame, since it's not clobbered by
17082         prologue code.  Implement non-apcs frame
17083         layout.
17084
17085 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
17086
17087         PR rtl-optimization/35281
17088         * expr.c (convert_move): Use a new pseudo for the intermediate
17089         from_mode->word_mode result.
17090
17091 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
17092
17093         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
17094         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
17095         * toplev.c (compile_file): Don't call it.
17096
17097 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
17098
17099         PR middle-end/35526
17100         * expr.c (store_expr): Call emit_block_move if the mode
17101         of "temp" RTX is BLKmode.
17102
17103 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17104             Richard Guenther  <rguenther@suse.de>
17105
17106         PR tree-optimization/31358
17107         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
17108         the step with a NULL_TREE.
17109         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
17110         to sizetype if type is a pointer type.
17111         (add_candidate_1): Don't convert the base and step to
17112         the generic type if the orginal type is a pointer type.
17113         (add_iv_value_candidates): Use sizetype for the step
17114         if type is a pointer type.
17115         (cand_value_at): Likewise.
17116         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
17117         for pointer types.
17118         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
17119         Don't convert the tem affine to the type.
17120         (add_elt_to_tree): Use sizetype for the step if a pointer.
17121         Use POINTER_PLUS_EXPR for pointers.
17122         (aff_combination_to_tree): Use sizetype for the step if a
17123         pointer.
17124
17125 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
17126
17127         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
17128         Remove commutativity hint.
17129
17130 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
17131
17132         PR c/35438
17133         PR c/35439
17134         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
17135         errorneous type.  Check that v is a VAR_DECL.
17136
17137         PR middle-end/35099
17138         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
17139
17140 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
17141
17142         PR tree-optimization/35494
17143         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
17144         may be overriden at link and run time.
17145
17146 2008-03-10  Richard Guenther  <rguenther@suse.de>
17147
17148         PR tree-optimization/34677
17149         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
17150         (poolify_tree): Likewise.
17151         (modify_expr_template): Likewise.
17152         (poolify_modify_stmt): Likewise.
17153         (insert_fake_stores): Handle all component-ref style stores
17154         in addition to INDIRECT_REF.  Also handle complex types.
17155         Do not poolify the inserted load.
17156         (realify_fake_stores): Do not rebuild the tree but only
17157         make it a SSA_NAME copy.
17158         (init_pre): Remove initialzation of modify_expr_template.
17159         Do not allocate modify_expr_node_pool.
17160         (fini_pre): Do not free modify_expr_node_pool.
17161
17162 2008-03-10  Paul Brook  <paul@codesourcery.com>
17163
17164         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
17165         to avoid conflicts.
17166
17167 2008-03-10  Paul Brook  <paul@codesourcery.com>
17168             Mark Shinwell  <shinwell@codesourcery.com>
17169
17170         * config/arm/cortex-r4.md: New.
17171         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
17172         insn attributes.
17173         * config/arm/arm.md: Include cortex-r4.md.
17174         (insn): Add smmls, sdiv and udiv values.
17175         (generic_sched): Don't use generic scheduling for Cortex-R4.
17176         (arm_issue_rate): New function.
17177         (TARGET_SCHED_ISSUE_RATE): Define.
17178
17179 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
17180
17181         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
17182
17183 2008-03-10  Richard Guenther  <rguenther@suse.de>
17184
17185         * tree-ssa-pre.c (get_sccvn_value): Simplify.
17186         (compute_avail): Do not add stmt uses to AVAIL_OUT.
17187
17188 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
17189
17190         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
17191         Set default to true.
17192
17193 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17194
17195         * c.opt (Wsynth): Deprecate.
17196         * doc/invoke.texi (Option Summary, Warning Options): Document
17197         -Wno-format-contains-nul.
17198
17199 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
17200
17201         PR target/35496
17202         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
17203         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
17204
17205 2008-03-09  Ira Rosen  <irar@il.ibm.com>
17206
17207         * config/rs6000/rs6000.c (builtin_description): Rename vector
17208         left shift operations.
17209         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
17210         (altivec_vsl<VI_char>): Rename to ...
17211         (ashl<mode>3): ... new name.
17212         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
17213         gen_ashlv4si3.
17214         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
17215
17216 2008-03-08  Richard Guenther  <rguenther@suse.de>
17217
17218         * coverage.h (tree_coverage_counter_addr): Declare.
17219         * coverage.c (tree_coverage_counter_addr): New function.
17220         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
17221         before using again.
17222         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
17223         (tree_gen_one_value_profiler): Likewise.
17224         (tree_gen_ic_profiler): Likewise.
17225         (tree_gen_average_profiler): Likewise.
17226         (tree_gen_ior_profiler): Likewise.
17227
17228 2008-03-08  Richard Guenther  <rguenther@suse.de>
17229
17230         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
17231         (vn_binary_op_insert): Likewise.
17232         (vn_unary_op_lookup): Likewise.
17233         (vn_unary_op_insert): Likewise.
17234         (vn_nary_op_lookup): Declare.
17235         (vn_nary_op_insert): Likewise.
17236         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
17237         and binary hashes, use a single obstack for unary_op_pool
17238         and binary_op_pool.
17239         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
17240         a single struct vn_nary_op_s.  Store tree code length and
17241         a variable number of operands.
17242         (struct vn_reference_op_struct): Remove unused op2.
17243         (vn_reference_op_eq): Do not compare op2.
17244         (vn_reference_op_compute_hash): Do not compute hash of op2.
17245         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
17246         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
17247         with vn_nary_op_compute_hash.
17248         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
17249         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
17250         vn_nary_op_lookup.
17251         (vn_unary_op_insert, vn_binary_op_insert): Replace with
17252         vn_nary_op_insert.
17253         (visit_unary_op): Call nary functions.
17254         (visit_binary_op): Likewise.
17255         (process_scc): Adjust for struct vn_tables_s changes.
17256         (allocate_vn_table): Likewise.
17257         (free_vn_table): Likewise.
17258         * tree-vn.c (vn_add): Call nary functions.
17259         (vn_lookup): Likewise.
17260
17261 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
17262
17263         PR target/35498
17264         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
17265         wdst back after sync_compare_and_swapqhi_internal.
17266
17267 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
17268
17269         PR target/22152
17270         * config/i386/i386-modes.def (V1DI): New vector mode.
17271         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
17272         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
17273         (MMXMODE248): Ditto.
17274         (MMXMODE): Add V1DI mode.
17275         (mmxvecsize): Change DI mode to V1DI mode.
17276         ("mov<mode>): Use MMXMODEI8 mode iterator.
17277         ("*mov<mode>_internal_rex64"): Ditto.
17278         ("*mov<mode>_internal"): Ditto.
17279         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
17280         ("mmx_sub<mode>3"): Ditto.
17281         ("mmx_adddi3"): Remove insn pattern.
17282         ("mmx_subdi3"): Ditto.
17283         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
17284         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
17285         ("mmx_ashl<mode>3"): Ditto.
17286         ("mmx_lshrdi3"): Remove insn pattern.
17287         ("mmx_ashldi3"): Ditto.
17288         * config/i386/i386.c (classify_argument): Handle V1DImode.
17289         (function_arg_advance_32): Ditto.
17290         (function_arg_32): Ditto.
17291         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
17292         mmx_addv1di3 insn pattern.
17293         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
17294         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
17295         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
17296         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
17297         Remove definitions of built-in functions.
17298         (V1DI_type_node): New node.
17299         (v1di_ftype_v1di_int): Ditto.
17300         (v1di_ftype_v1di_v1di): Ditto.
17301         (v2si_ftype_v2si_si): Ditto.
17302         (v4hi_ftype_v4hi_di): Remove node.
17303         (v2si_ftype_v2si_di): Ditto.
17304         (ix86_init_mmx_sse_builtins): Handle V1DImode.
17305         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
17306         Redefine builtins using def_builtin_const with *_ftype_*_int node.
17307         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
17308         Add new builtins using def_builtin_const.
17309         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
17310         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
17311         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
17312         * config/i386/mmintrin.h (__v1di): New typedef.
17313         (_mm_add_si64): Cast arguments to __v1di type.
17314         (_mm_sub_si64): Ditto.
17315         (_mm_sll_pi16): Cast __count to __v4hi type.
17316         (_mm_sll_pi32): Cast __count to __v2si type.
17317         (_mm_sll_si64): Cast arguments to __v1di type.
17318         (_mm_srl_pi16): Cast __count to __v4hi type.
17319         (_mm_srl_pi32): Cast __count to __v2si type.
17320         (_mm_srl_si64): Cast arguments to __v1di type.
17321         (_mm_sra_pi16): Cast __count to __v4hi type.
17322         (_mm_sra_pi32): Cast __count to __v2si type.
17323         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
17324         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
17325         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
17326         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
17327         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
17328         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
17329         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
17330         (_mm_srai_pi32): Use __builtin_ia32_psradi.
17331         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
17332         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
17333         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
17334         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
17335
17336 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
17337
17338         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
17339
17340 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
17341
17342         PR target/35373
17343         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
17344         reg+const addressing for Altivec modes.  Don't generate reg+reg
17345         addressing for TFmode or TDmode quantities.
17346
17347 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
17348
17349         * c-common.c (vector_types_convertible_p): Call langhook
17350         instead of comptypes.
17351
17352 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17353
17354         PR tree-opt/35402
17355         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
17356         integral and scalar float variables which have a
17357         NULL DECL_INITIAL.
17358
17359 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
17360
17361         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
17362         dwarf_register_span hook when emitting unwind information for
17363         register-to-memory saves.
17364         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
17365         (rs6000_frame_related): Remove call to spe_synthesize_frame.
17366
17367 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
17368
17369         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
17370         for the same VAR_DECL.
17371
17372 2008-03-06  Tom Tromey  <tromey@redhat.com>
17373
17374         * treelang: Delete.
17375         * doc/standards.texi (Standards): Don't mention treelang.
17376         * doc/invoke.texi (Overall Options): Don't mention treelang.
17377         * doc/install.texi (Prerequisites): Don't mention bison or
17378         treelang.
17379         (Configuration): Don't mention treelang.
17380         (Building): Likewise.
17381         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
17382
17383 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
17384
17385         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
17386         word-extractions out of a multi-word object.
17387
17388 2008-03-06  Richard Guenther  <rguenther@suse.de>
17389
17390         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
17391         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
17392         result type and precision.
17393         * expr.c (get_inner_reference): Set unsignedp based on the result
17394         type of BIT_FIELD_REF.
17395         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
17396         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
17397         (try_instantiate_multiple_fields): Likewise.  Use the correct type
17398         for BIT_FIELD_REF.
17399         (sra_build_assignment): Likewise.
17400         (sra_build_elt_assignment): Likewise.
17401         (sra_explode_bitfield_assignment): Likewise.
17402         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
17403         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
17404         set BIT_FIELD_REF_UNSIGNED.
17405         (vectorizable_load): Likewise.
17406
17407 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
17408
17409         * cse.c (cse_extended_basic_block): Invalidate artificial defs
17410         at bb start.
17411
17412 2008-03-06  Richard Guenther  <rguenther@suse.de>
17413
17414         * alias.c (struct alias_set_entry): Move has_zero_child field
17415         to pack with alias_set.
17416
17417 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
17418
17419         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
17420         32bit host.
17421
17422 2008-03-05  Ian Lance Taylor  <iant@google.com>
17423
17424         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
17425
17426 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
17427
17428         * fwprop.c (update_df): Support width and offset parameters of
17429         df_ref_create.
17430         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
17431         global_conflicts): Change DF_REF_EXTRACT to either
17432         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
17433         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
17434         * df-scan.c (df_ref_record, df_defs_record,
17435         df_ref_create_structure, df_def_record_1, df_uses_record,
17436         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
17437         df_bb_refs_collect, df_entry_block_defs_collect,
17438         df_exit_block_uses_collect): Support new width and offset fields.
17439         (ref_extract_pool): New storage pool.
17440         (df_free_ref): New function.
17441         (df_reg_chain_unlink, df_free_collection_rec,
17442         df_sort_and_compress_refs): Call df_free_ref.
17443         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
17444         of df_ref_extract.
17445         (df_ref_create_structure): Allocate df_ref_extract if offset and
17446         width fields are used.
17447         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
17448         (df_uses_record): Get offset and width from ZERO_EXTRACT
17449         and SIGN_EXTRACT.
17450         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
17451         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
17452         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
17453         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
17454         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
17455         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
17456         (df_ref_extract): New structure.
17457         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
17458         (df_ref_create): Add width and offset parameters.
17459
17460 2008-03-05  Richard Guenther  <rguenther@suse.de>
17461
17462         * tree-ssa-structalias.c (get_constraint_for_component_ref):
17463         Use ranges_overlap_p.
17464         (offset_overlaps_with_access): Rename
17465         to ranges_overlap_p and move ...
17466         * tree-flow-inline.h (ranges_overlap_p): ... here.
17467
17468         * tree.h (get_inner_reference, handled_component_p): Update
17469         comments.
17470
17471         * tree.h (record_component_aliases, get_alias_set,
17472         alias_sets_conflict_p, alias_sets_must_conflict_p,
17473         objects_must_conflict_p): Move declarations ...
17474         * alias.h (record_component_aliases, get_alias_set,
17475         alias_sets_conflict_p, alias_sets_must_conflict_p,
17476         objects_must_conflict_p): ... here.
17477         Include coretypes.h.
17478         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
17479
17480 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
17481
17482         * cfg.c: Include tree-flow.h.
17483         (remove_edge_raw): Call redirect_edge_var_map_clear.
17484         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
17485         * tree-flow-inline.h (redirect_edge_var_map_def): New.
17486         (redirect_edge_var_map_result): New.
17487         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
17488         PENDING_STMT use with redirect_edge_var_map_*.
17489         * tree-ssa.c (edge_var_maps): New definition.
17490         (redirect_edge_var_map_add): New.
17491         (redirect_edge_var_map_clear): New.
17492         (redirect_edge_var_map_dup): New.
17493         (redirect_edge_var_map_vector): New.
17494         (redirect_edge_var_map_destroy): New.
17495         (ssa_redirect_edge): Replace PENDING_STMT use with
17496         redirect_edge_var_map_*.
17497         (flush_pending_stmts): Same.
17498         (delete_tree_ssa): Destroy edge var map.
17499         * tree-flow.h (struct _edge_var_map): New.
17500         Define edge_var_map vector type.
17501         Declare redirect_edge_var_map_* prototypes.
17502         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
17503         * tree-cfg.c (reinstall_phi_args): Replace
17504         PENDING_STMT use with redirect_edge_var_map_*.
17505
17506 2008-03-05  Richard Guenther  <rguenther@suse.de>
17507
17508         PR tree-optimization/35472
17509         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
17510         whose single use_stmt has a overlapping set of loaded and
17511         stored symbols as that use_stmt might be a noop assignment then.
17512
17513 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
17514
17515         * gthr-rtems.h: Implement __gthread_mutex_destroy.
17516
17517 2008-03-05  Richard Guenther  <rguenther@suse.de>
17518
17519         PR c++/35336
17520         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
17521         should be constants.
17522         * tree-cfg.c (verify_expr): Verify it.
17523         * fold-const.c (fold_truthop): Remove code generating
17524         BIT_FIELD_REFs of structure bases.
17525         (fold_binary): Likewise.
17526         (fold_ternary): Position and size of BIT_FIELD_REFs are
17527         always host integers.
17528         (make_bit_field_ref): Remove.
17529         (optimize_bit_field_compare): Remove.
17530         (all_ones_mask_p): Remove.
17531
17532 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
17533
17534         PR gcc/33009
17535         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
17536         (split_block_and_df_analyze): New. Split basic block and rebuild
17537         dataflow.
17538         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
17539         SPLIT_BLOCK.
17540         (split_pattern_seq): Likewise.
17541         (erase_matching_seqs): Likewise.
17542         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
17543
17544 2008-03-04  Geoff Keating  <geoffk@apple.com>
17545
17546         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
17547         declaration and code.
17548         (tree_invalid_nonnegative_warnv_p): Likewise.
17549
17550 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
17551
17552         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
17553         examples.  Truncate option-names then causing overfull hbox.
17554
17555 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17556
17557         PR target/35222
17558         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
17559         on hpux10.
17560         * configure: Rebuilt.
17561
17562 2008-03-04  Rafael Espindola  <espindola@google.com>
17563
17564         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
17565         (tree_unary_nonnegative_warnv_p): New.
17566         (tree_binary_nonnegative_warnv_p): New.
17567         (tree_single_nonnegative_warnv_p): New.
17568         (tree_invalid_nonnegative_warnv_p): New.
17569         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
17570
17571 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17572
17573         PR 28322
17574         * opts.c (handle_option): Postpone 'unknown option' errors only for
17575         warning options.
17576
17577 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
17578
17579         PR target/35453
17580         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
17581         (_SIDD_XXX): This.
17582
17583 2008-03-04  Rafael Espindola  <espindola@google.com>
17584
17585         * fold-const.c (tree_unary_nonzero_warnv_p): New.
17586         (tree_binary_nonzero_warnv_p): New.
17587         (tree_single_nonzero_warnv_p): New.
17588         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
17589
17590 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
17591
17592         PR middle-end/35456
17593         * fold-const.c (fold_cond_expr_with_comparison): Prevent
17594         transformations for modes that have signed zeros.
17595         * ifcvt.c (noce_try_abs): Ditto.
17596
17597 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
17598
17599         * config/i386/i386.c (override_options): Force
17600         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
17601
17602 2008-03-04  Jan Hubicka  <jh@suse.cz>
17603
17604         PR c++/35262
17605         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
17606         in last commit.
17607
17608 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
17609
17610         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
17611         label to probe the stack.
17612
17613 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
17614
17615         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
17616         (__gthr_win32_mutex_destroy): Declare.
17617         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
17618         __gthr_win32_mutex_destroy.
17619         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
17620
17621 2008-03-03  Jan Hubicka  <jh@suse.cz>
17622
17623         PR c++/35262
17624         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
17625         aggressive on inlining cold calls.
17626
17627 2008-03-03  Richard Guenther  <rguenther@suse.de>
17628
17629         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
17630         struct copies into the expression table.
17631         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
17632         (try_to_simplify): Likewise.
17633         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
17634         integral and pointer arguments which do not change the
17635         precision to NOP_EXPRs.
17636         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
17637         VIEW_CONVERT_EXPR case.
17638
17639 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
17640
17641         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
17642         defined in a loop at depth 0 is invariant.
17643         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
17644         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
17645         be called at loop depth 0.
17646
17647 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
17648
17649         PR driver/35420
17650         * gcc.c (process_command): Update copyright notice dates.
17651         * gcov.c (print_version): Likewise.
17652         * gcov-dump.c (print_version): Likewise.
17653         * mips-tfile.c (main): Likewise.
17654         * mips-tdump.c (main): Likewise.
17655
17656 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17657
17658         PR 24924
17659         * c-common.c (flag_permissive): Delete.
17660         (constant_expression_warnings): Check flags first.
17661         (constant_expression_error): New.
17662         * c-common.h (flag_permissive): Delete.
17663         (constant_expression_error): Declare.
17664         * flags.h (flag_permissive): Declare. Update description.
17665         * diagnostic.c (pedwarn): Update.
17666         (permerror): New.
17667         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
17668         (permissive_error_kind): New.
17669         * toplev.c (flag_permissive): Define. Update description.
17670         * toplev.h (permissive_error_kind): Declare.
17671         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
17672         (pedwarn_c90): Use pedantic_warning_kind.
17673         * c-opts.c (c_common_post_options): flag_permissive does not affect
17674         flag_pedantic_errors.
17675
17676 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
17677
17678         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
17679         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
17680         __absvsi2, __absvDI2): Use unsigned arithmetic.
17681
17682 2008-03-02  Andi Kleen  <ak@suse.de>
17683             Richard Guenther  <rguenther@suse.de>
17684
17685         * struct-equiv.c: Remove file.
17686         * cfg_cleanup.c (condjump_equiv_p): Remove.
17687         * Makefile.in (OBJS-common): Remove struct-equiv.o.
17688         (struct-equiv.o): Remove rule.
17689         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
17690         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
17691         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
17692
17693 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17694
17695         * ifcvt.c (noce_process_if_block): Try to handle only the then
17696         block if the else block exists but isn't suitable.
17697
17698 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
17699
17700         PR gcc/35063
17701         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
17702         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
17703         regression from previous patch.
17704
17705 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
17706
17707         PR gcc/35063
17708         * gthr.h: Add __gthread_mutex_destroy as a function that must be
17709         implemented.
17710         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
17711         * gthr-single.h (__gthread_mutex_destroy): Likewise.
17712         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
17713         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
17714         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
17715         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
17716         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
17717         (__gthread_mutex_destroy_function): Rename to
17718         __gthread_mutex_destroy.
17719         * gthr-dce.h (__gthread_mutex_destroy): Call
17720         pthread_mutex_destroy.
17721         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
17722         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
17723         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
17724
17725 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17726
17727         * df-scan.c (df_ref_chain_change_bb): Simplify.
17728         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
17729         set_block_for_insn if there's any change.
17730         * df.h ((df_insn_change_bb): Fix prototype.
17731         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
17732         df_insn_change_bb, don't call set_block_for_insn.
17733         * emit-rtl.c (reorder_insns): Likewise.
17734         * haifa-sched.c (move_insn): Likewise.
17735
17736 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17737
17738         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
17739
17740 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
17741
17742         * tree-flow-inline.h (next_readonly_imm_use): Return
17743         NULL_USE_OPERAND_P after the end.
17744
17745 2008-03-01  Richard Guenther  <rguenther@suse.de>
17746
17747         PR tree-optimization/35411
17748         * tree-sra.c (sra_build_assignment): Split conversion to
17749         final type to a separate statement if we are not assigning
17750         to a register.
17751
17752 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17753
17754         * fold-const.c (fold_convertible_p): Correct the logic to follow
17755         that in fold_convert().
17756
17757 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
17758
17759         PR c++/35315
17760         * tree-inline.c (build_duplicate_type): When we make a
17761         duplicate type, make it unique in the canonical types system.
17762
17763 2008-02-29  Tom Tromey  <tromey@redhat.com>
17764
17765         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
17766         input_file_stack_history, input_file_stack_restored): Remove.
17767         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
17768         * input.h (struct file_stack): Remove.
17769         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
17770         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
17771         Likewise.
17772         * diagnostic.h (struct diagnostic_context) <last_module>: Change
17773         type.
17774         (diagnostic_last_module_changed): Add 'map' argument.
17775         (diagnostic_set_last_function): Likewise.
17776         * diagnostic.c (undiagnostic_report_current_module): Iterate using
17777         line map, not input_file_stack.
17778         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
17779
17780 2008-02-29  Paul Brook  <paul@codesourcery.com>
17781
17782         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
17783
17784 2008-02-29  Paul Brook  <paul@codesourcery.com>
17785
17786         * config/arm/ieee754-df.S (muldf3): Use RET macros.
17787
17788 2008-02-29  Richard Guenther  <rguenther@suse.de>
17789
17790         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
17791         vn_lookup_or_add.
17792         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
17793         value for comparing for a store match.
17794         (simplify_unary_expression): Do nothing for SSA_NAMEs.
17795         (try_to_simplify): Do not do a full-blown reference lookup.
17796
17797 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
17798
17799         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
17800         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
17801
17802         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
17803
17804 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
17805
17806         * tree-loop-linear.c (try_interchange_loops): Compare memory access
17807         strides against cache sizes.
17808
17809 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
17810
17811         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
17812         constant to fpul.
17813
17814 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
17815
17816         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
17817         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
17818         is smaller than the original promoted value.
17819         (simplify_subreg): If OP is a SUBREG, try to preserve its
17820         SUBREG_PROMOTED_VAR_P information.
17821
17822 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
17823
17824         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
17825         (VN_INFO_GET): Allocate new objects on the obstack.
17826         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
17827         for rpo_numbers_temp, for consistency.
17828         (free_scc_vn): Free the obstack.
17829
17830 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
17831
17832         * doc/invoke.texi: Document -ftree-loop-distribution.
17833         * tree-loop-distribution.c: New.
17834         * tree-pass.h (pass_loop_distribution): New.
17835         * graphds.h (struct graph): Add htab_t indices.
17836         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
17837         * tree-vectorizer.c (rename_variables_in_loop): Extern.
17838         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
17839         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
17840         * tree-data-ref.c (debug_data_dependence_relations): New.
17841         (dump_data_dependence_relation): Also print data references.
17842         (free_data_ref): Extern.
17843         (same_access_functions): Moved...
17844         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
17845         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
17846         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
17847         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
17848         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
17849         (stmts_from_loop): Skip LABEL_EXPR.
17850         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
17851         New.
17852         (build_rdg): Initialize rdg->indices htab.
17853         (free_rdg, stores_from_loop, ref_base_address,
17854         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
17855         have_similar_memory_accesses_1, ref_base_address_1,
17856         remove_similar_memory_refs): New.
17857         * tree-data-ref.h: Depend on tree-chrec.h.
17858         (debug_data_dependence_relations, free_data_ref): Declared.
17859         (same_access_functions): ... here.
17860         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
17861         New.
17862         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
17863         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
17864         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
17865         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
17866         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
17867         rdg_vertex_for_stmt): Declared.
17868         (struct rdg_edge): Add level.
17869         (RDGE_LEVEL): New.
17870         (free_rdg, stores_from_loop, remove_similar_memory_refs,
17871         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
17872         Declared.
17873         (rdg_has_similar_memory_accesses): New.
17874         * tree-vect-analyze.c: Remove unused static decls.
17875         * lambda.h (dependence_level): New.
17876         * common.opt (ftree-loop-distribution): New.
17877         * tree-flow.h (mark_virtual_ops_in_bb,
17878         slpeel_tree_duplicate_loop_to_edge_cfg,
17879         rename_variables_in_loop): Declared.
17880         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
17881         (OBJS-common): Add tree-loop-distribution.o.
17882         (tree-loop-distribution.o): New rule.
17883         * tree-cfg.c (mark_virtual_ops_in_bb): New.
17884         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
17885         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
17886
17887 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
17888
17889         PR target/33963
17890         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
17891         other than structures and unions.
17892
17893 2008-02-28  Richard Guenther  <rguenther@suse.de>
17894
17895         Revert:
17896         2008-02-26  Richard Guenther  <rguenther@suse.de>
17897
17898         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
17899         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
17900         (lookup_decl_from_uid): Declare.
17901         (remove_decl_from_map): Likewise.
17902         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
17903         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
17904         (decl_for_uid_map): New global hashtable mapping DECL_UID
17905         to the decl tree.
17906         (init_ttree): Allocate it.
17907         (insert_decl_to_uid_decl_map): New helper function.
17908         (make_node_stat): Insert new decls into the map.
17909         (copy_node_stat): Likewise.
17910         (lookup_decl_from_uid): New function.
17911         (remove_decl_from_map): Likewise.
17912         (print_decl_for_uid_map_statistics): New helper.
17913         (dump_tree_statistics): Call it.
17914
17915         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
17916         (referenced_var_iterator): Adjust.
17917         (FOR_EACH_REFERENCED_VAR): Adjust.
17918         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
17919         (num_referenced_vars): Adjust.
17920         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
17921         (first_referenced_var): Remove.
17922         (end_referenced_vars_p): Likewise.
17923         (next_referenced_var): Likewise.
17924         (referenced_var_iterator_set): New helper function.
17925         * tree-dfa.c (referenced_var_lookup): Adjust.
17926         (referenced_var_check_and_insert): Likewise.
17927         (remove_referenced_var): Likewise.
17928         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
17929         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
17930         (verify_call_clobbering): Likewise.
17931         (verify_memory_partitions): Likewise.
17932         (init_tree_ssa): Allocate bitmap instead of hashtable for
17933         referenced_vars.
17934         (delete_tree_ssa): Adjust.
17935         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
17936         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
17937         (compute_tag_properties): Likewise.
17938         (set_initial_properties): Likewise.
17939         (find_partition_for): Likewise.
17940         (update_reference_counts): Likewise.
17941         (dump_may_aliases_for): Likewise.
17942         * tree-ssa-operands.c (add_virtual_operand): Likewise.
17943         (add_call_clobber_ops): Likewise.
17944         (add_call_read_ops): Likewise.
17945         (get_asm_expr_operands): Likewise.
17946         * tree-into-ssa.c (dump_decl_set): Likewise.
17947         (update_ssa): Likewise.
17948         * tree-sra.c (scan_function): Likewise.
17949         (decide_instantiations): Likewise.
17950         (scalarize_parms): Likewise.
17951         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
17952         (dsa_named_for): Likewise.
17953         * tree-ssa-structalias.c (update_alias_info): Likewise.
17954         (merge_smts_into): Likewise.
17955
17956 2008-02-27  David Daney  <ddaney@avtrex.com>
17957
17958         PR target/34409
17959         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
17960         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
17961         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
17962         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
17963         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
17964
17965 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
17966
17967         PR target/25477
17968         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
17969         (BUILT_IN_NEXTTOWARD): Remove.
17970         (BUILT_IN_NEXTTOWARDF): Ditto.
17971         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
17972         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
17973
17974 2008-02-27  Tom Tromey  <tromey@redhat.com>
17975
17976         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
17977         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
17978
17979 2008-02-27  Jan Beulich  <jbeulich@novell.com>
17980
17981         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
17982         update the respective field on newdecl.
17983
17984 2008-02-27  Revital Eres  <eres@il.ibm.com>
17985
17986         PR rtl-optimization/34999
17987         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
17988         crossing edges that ends with a call insn.
17989         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
17990         call insn and clear the EDGE_CROSSING flag of the crossing edge
17991         when fixing fallthru edges.
17992
17993 2008-02-27  Richard Guenther  <rguenther@suse.de>
17994
17995         PR middle-end/35390
17996         * fold-const.c (fold_unary): Return the correct argument,
17997         converted to the result type.
17998
17999 2008-02-27  Richard Guenther  <rguenther@suse.de>
18000
18001         PR middle-end/34971
18002         * expr.c (expand_expr_real_1): Assert on rotates that operate
18003         on partial modes.
18004         * fold-const.c (fold_binary): Use the types precision, not the
18005         bitsize of the mode if folding rotate expressions.  Build rotates
18006         only for full modes.
18007
18008 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
18009
18010         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
18011         and CPP_PRAGMA_EOL.
18012         * c-pragma.c (pragma_ns_name): New typedef.
18013         (registered_pp_pragmas): New variable.
18014         (c_pp_lookup_pragma): New function.
18015         (c_register_pragma_1): If flag_preprocess_only, do nothing
18016         for non-expanded pragmas, for expanded ones push pragma's
18017         namespace and name into registered_pp_pragmas vector.
18018         (c_invoke_pragma_handler): Register OpenMP pragmas even when
18019         flag_preprocess_only, don't register GCC pch_preprocess
18020         pragma if flag_preprocess_only.
18021         * c-opts.c (c_common_init): Call init_pragma even if
18022         flag_preprocess_only.
18023         * c-pragma.c (c_pp_lookup_pragma): New prototype.
18024         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
18025         cpp_register_pragma if flag_preprocess_only.
18026
18027 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18028
18029         PR c/28800
18030         * c-parser.c (c_parser_translation_unit): Warn for empty
18031         translation unit, not empty source file.
18032
18033 2008-02-26  Paul Brook  <paul@codesourcery.com>
18034
18035         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
18036         operand for Thumb-2.
18037         * config/arm/arm.h (reg_class): Add CORE_REGS.
18038         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
18039         (BASE_REG_CLASS): Use CORE_REGS.
18040         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
18041         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
18042         (REGNO_OK_FOR_INDEX_P): Exclude SP.
18043         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
18044         ARM_REGNO_OK_FOR_INDEX_P.
18045         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
18046         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
18047         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
18048         (ldm/stm peepholes): Ditto.
18049         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
18050         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
18051         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
18052         * config/arm/constraints.md: Enable "k" constraint on ARM.
18053
18054 2008-02-27  Ben Elliston  <bje@au.ibm.com>
18055
18056         * config/rs6000/rs6000.c: Annotate cache line size field in all
18057         instances of struct processor_costs.
18058
18059 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
18060
18061         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
18062         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
18063         jump_bypass): New counters.
18064         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
18065         * dce.c (gate_ud_dce): Same.
18066         (gate_fast_dce): Same.
18067         * dse.c (gate_dse1): New function.
18068         (gate_dse2): New function.
18069         (gate_dse): Merge results of new gate functions.
18070         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
18071         (gate_handle_jump_bypass): Add dbg_cnt.
18072         (gate_handle_gcse): Add dbg_cnt.
18073         * ifcvt.c (gate_handle_if_conversion): Same.
18074         (gate_handle_if_after_combine): Same.
18075         (gate_handle_if_after_reload): Same.
18076         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
18077
18078 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
18079
18080         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
18081         line sizes.
18082         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
18083
18084 2008-02-26  Jason Merrill  <jason@redhat.com>
18085
18086         PR c++/35315
18087         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
18088         alone if it's the naming decl for the type's main variant.
18089
18090 2008-02-26  Tom Tromey  <tromey@redhat.com>
18091
18092         * system.h (USE_MAPPED_LOCATION): Poison.
18093         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
18094         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
18095         (make_goto_expr_edges): Likewise.
18096         (remove_bb): Likewise.
18097         (execute_warn_function_return): Likewise.
18098         * basic-block.h (struct edge_def) <goto_locus>: Change type to
18099         location_t.
18100         * c-common.c (fname_decl): Remove old location code.
18101         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
18102         location code.
18103         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
18104         variant.
18105         (ASM_INPUT_SOURCE_LOCATION): Likewise.
18106         (gen_rtx_ASM_INPUT): Likewise.
18107         (gen_rtx_ASM_INPUT_loc): Likewise.
18108         (get_rtx_asm_OPERANDS): Remove.
18109         * cfglayout.c (insn_locators_alloc): Remove old location code.
18110         (set_curr_insn_source_location): Likewise.
18111         (curr_insn_locator): Likewise.
18112         * print-tree.c (print_node): Remove old location code.
18113         * tree-mudflap.c (mf_varname_tree): Remove old location code.
18114         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
18115         * cfgexpand.c (expand_gimple_cond_expr): Don't use
18116         location_from_locus.
18117         (construct_exit_block): Remove old location code.
18118         * emit-rtl.c (force_next_line_note): Remove old location code.
18119         * profile.c (branch_prob): Remove old location code.
18120         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
18121         LOC_LINE): Remove old-location variants.
18122         * langhooks.c (lhd_print_error_function): Remove old location
18123         code.
18124         * configure, config.in: Rebuilt.
18125         * configure.ac (--enable-mapped-location): Remove.
18126         * c-decl.c (c_init_decl_processing): Remove old location code.
18127         (finish_function): Likewise.
18128         * recog.c (decode_asm_operands): Remove old location code.
18129         * c-pch.c (c_common_read_pch): Remove old location code.
18130         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
18131         variants.
18132         * gimple-low.c (lower_function_body): Remove old location code.
18133         * toplev.c (unknown_location): Remove.
18134         (push_srcloc): Remove old-location variant.
18135         (process_options): Remove old location code.
18136         (lang_dependent_init): Likewise.
18137         * input.h (UNKNOWN_LOCATION): Move definition.
18138         (location_t): Undeprecate.
18139         (source_locus): Remove.
18140         (location_from_locus): Remove.
18141         (struct location_s): Remove.
18142         Remove all old-location code.
18143         (input_line, input_filename): Remove.
18144         * final.c (final_scan_insn): Remove old location code.
18145         * diagnostic.c (diagnostic_build_prefix): Remove
18146         USE_MAPPED_LOCATION test.
18147         * tree.h (gimple_stmt) <locus>: Now a location_t.
18148         (tree_exp) <locus>: Likewise.
18149         (DECL_IS_BUILTIN): Remove old-location variant.
18150         (annotate_with_file_line, annotate_with_locus): Likewise.
18151         (expr_locus, set_expr_locus): Update.
18152         * tree.c (build1_stat): Remove old location code.
18153         (last_annotated_node): Remove.
18154         (annotate_with_file_line): Remove old-location variant.
18155         (annotate_with_locus): Likewise.
18156         (expr_location): Remove old location code.
18157         (set_expr_location): Likewise.
18158         (expr_has_location): Likewise.
18159         (expr_locus): Likewise.
18160         (set_expr_locus): Likewise.
18161         (expr_filename): Don't use location_from_locus.
18162         (expr_lineno): Likewise.
18163         * rtl-error.c (location_for_asm): Remove old location code.
18164         * c-lex.c (cb_line_change): Remove old location code.
18165         (fe_file_change): Likewise.
18166         (cb_def_pragma): Likewise.
18167         (c_lex_with_flags): Likewise.
18168         * gengtype.c (do_typedef): Don't special-case location types.
18169         (define_location_structures): Remove.
18170         (main): Don't call define_location_structures.
18171         * tree-pretty-print.c (dump_implicit_edges): Remove old location
18172         code.
18173
18174 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18175
18176         PR 26264
18177         * builtins.def (BUILT_IN_STDARG_START): Remove.
18178         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
18179         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
18180         * tree-inline.c (inline_forbidden_p_1): Likewise.
18181
18182 2008-02-26  Richard Guenther  <rguenther@suse.de>
18183
18184         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18185         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18186         (lookup_decl_from_uid): Declare.
18187         (remove_decl_from_map): Likewise.
18188         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18189         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18190         (decl_for_uid_map): New global hashtable mapping DECL_UID
18191         to the decl tree.
18192         (init_ttree): Allocate it.
18193         (insert_decl_to_uid_decl_map): New helper function.
18194         (make_node_stat): Insert new decls into the map.
18195         (copy_node_stat): Likewise.
18196         (lookup_decl_from_uid): New function.
18197         (remove_decl_from_map): Likewise.
18198         (print_decl_for_uid_map_statistics): New helper.
18199         (dump_tree_statistics): Call it.
18200
18201         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18202         (referenced_var_iterator): Adjust.
18203         (FOR_EACH_REFERENCED_VAR): Adjust.
18204         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18205         (num_referenced_vars): Adjust.
18206         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18207         (first_referenced_var): Remove.
18208         (end_referenced_vars_p): Likewise.
18209         (next_referenced_var): Likewise.
18210         (referenced_var_iterator_set): New helper function.
18211         * tree-dfa.c (referenced_var_lookup): Adjust.
18212         (referenced_var_check_and_insert): Likewise.
18213         (remove_referenced_var): Likewise.
18214         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18215         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18216         (verify_call_clobbering): Likewise.
18217         (verify_memory_partitions): Likewise.
18218         (init_tree_ssa): Allocate bitmap instead of hashtable for
18219         referenced_vars.
18220         (delete_tree_ssa): Adjust.
18221         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18222         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18223         (compute_tag_properties): Likewise.
18224         (set_initial_properties): Likewise.
18225         (find_partition_for): Likewise.
18226         (update_reference_counts): Likewise.
18227         (dump_may_aliases_for): Likewise.
18228         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18229         (add_call_clobber_ops): Likewise.
18230         (add_call_read_ops): Likewise.
18231         (get_asm_expr_operands): Likewise.
18232         * tree-into-ssa.c (dump_decl_set): Likewise.
18233         (update_ssa): Likewise.
18234         * tree-sra.c (scan_function): Likewise.
18235         (decide_instantiations): Likewise.
18236         (scalarize_parms): Likewise.
18237         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18238         (dsa_named_for): Likewise.
18239         * tree-ssa-structalias.c (update_alias_info): Likewise.
18240         (merge_smts_into): Likewise.
18241
18242 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18243
18244         PR 34351
18245         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
18246         * c-opts.c (c_common_handle_option): Wall enables
18247         Wvolatile-register-var.
18248         * common.opt: Move Wvolatile-register-var to...
18249         * c.opt: ...here.
18250
18251 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18252
18253         * common.opt (Wlarger-than=): New.
18254         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
18255         -Wlarger-than=.
18256         * opts.c (common_handle_option): Handle -Wlarger-than=.
18257         * optc-gen.awk: Likewise.
18258         * opth-gen.awk: Likewise.
18259         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
18260         * tree-optimize.c (tree_rest_of_compilation): Likewise.
18261
18262 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18263
18264         * c-common.c (match_case_to_enum_1): Add appropriate
18265         OPT_W* parameter to warning.
18266         (c_do_switch_warnings): Likewise.
18267         * c-typeck.c (warning_init): Add one more parameter following
18268         'warning' function.
18269         (push_init_level): Update call to warning_init.
18270         (pop_init_level): Likewise.
18271         (add_pending_init): Likewise.
18272         (output_init_element: Likewise.
18273
18274 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18275
18276         PR 28322
18277         * toplev.c (toplev_main): If there are warnings or error, print
18278         errors for ignored options.
18279         * opts.c (ignored_options): New static variable.
18280         (postpone_unknown_option_error): New.
18281         (print_ignored_options): New.
18282         (handle_option): Postpone errors for unknown -Wno-* options.
18283         * opts.h (print_ignored_options): Declare.
18284
18285 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
18286
18287         * config/mips/mips.md (loadgp_blockage, blockage): Change type
18288         to "ghost".
18289
18290 2008-02-25  Richard Guenther  <rguenther@suse.de>
18291
18292         Revert:
18293         2008-02-25  Richard Guenther  <rguenther@suse.de>
18294
18295         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18296         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18297         (lookup_decl_from_uid): Declare.
18298         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18299         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18300         (decl_for_uid_map): New global hashtable mapping DECL_UID
18301         to the decl tree.
18302         (init_ttree): Allocate it.
18303         (insert_decl_to_uid_decl_map): New helper function.
18304         (make_node_stat): Insert new decls into the map.
18305         (copy_node_stat): Likewise.
18306         (lookup_decl_from_uid): New function.
18307         (print_decl_for_uid_map_statistics): New helper.
18308         (dump_tree_statistics): Call it.
18309
18310         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18311         (referenced_var_iterator): Adjust.
18312         (FOR_EACH_REFERENCED_VAR): Adjust.
18313         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18314         (num_referenced_vars): Adjust.
18315         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18316         (first_referenced_var): Remove.
18317         (end_referenced_vars_p): Likewise.
18318         (next_referenced_var): Likewise.
18319         (referenced_var_iterator_set): New helper function.
18320         * tree-dfa.c (referenced_var_lookup): Adjust.
18321         (referenced_var_check_and_insert): Likewise.
18322         (remove_referenced_var): Likewise.
18323         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18324         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18325         (verify_call_clobbering): Likewise.
18326         (verify_memory_partitions): Likewise.
18327         (init_tree_ssa): Allocate bitmap instead of hashtable for
18328         referenced_vars.
18329         (delete_tree_ssa): Adjust.
18330         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18331         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18332         (compute_tag_properties): Likewise.
18333         (set_initial_properties): Likewise.
18334         (find_partition_for): Likewise.
18335         (update_reference_counts): Likewise.
18336         (dump_may_aliases_for): Likewise.
18337         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18338         (add_call_clobber_ops): Likewise.
18339         (add_call_read_ops): Likewise.
18340         (get_asm_expr_operands): Likewise.
18341         * tree-into-ssa.c (dump_decl_set): Likewise.
18342         (update_ssa): Likewise.
18343         * tree-sra.c (scan_function): Likewise.
18344         (decide_instantiations): Likewise.
18345         (scalarize_parms): Likewise.
18346         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18347         (dsa_named_for): Likewise.
18348         * tree-ssa-structalias.c (update_alias_info): Likewise.
18349         (merge_smts_into): Likewise.
18350
18351 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
18352
18353         PR fortran/29549
18354         * doc/invoke.texi (-fcx-limited-range): Document new option.
18355         * toplev.c (process_options): Handle -fcx-fortran-rules.
18356         * common.opt: Add documentation for -fcx-fortran-rules.
18357
18358 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
18359
18360         PR c/35162
18361         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
18362         actual behaviour and C99.
18363
18364 2008-02-26  Ben Elliston  <bje@au.ibm.com>
18365
18366         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
18367         (ASM_CPU_POWER6_SPEC): Likewise.
18368         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
18369         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
18370         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
18371
18372 2008-02-25  Richard Guenther  <rguenther@suse.de>
18373
18374         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
18375         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
18376         (lookup_decl_from_uid): Declare.
18377         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
18378         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
18379         (decl_for_uid_map): New global hashtable mapping DECL_UID
18380         to the decl tree.
18381         (init_ttree): Allocate it.
18382         (insert_decl_to_uid_decl_map): New helper function.
18383         (make_node_stat): Insert new decls into the map.
18384         (copy_node_stat): Likewise.
18385         (lookup_decl_from_uid): New function.
18386         (print_decl_for_uid_map_statistics): New helper.
18387         (dump_tree_statistics): Call it.
18388
18389         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
18390         (referenced_var_iterator): Adjust.
18391         (FOR_EACH_REFERENCED_VAR): Adjust.
18392         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
18393         (num_referenced_vars): Adjust.
18394         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
18395         (first_referenced_var): Remove.
18396         (end_referenced_vars_p): Likewise.
18397         (next_referenced_var): Likewise.
18398         (referenced_var_iterator_set): New helper function.
18399         * tree-dfa.c (referenced_var_lookup): Adjust.
18400         (referenced_var_check_and_insert): Likewise.
18401         (remove_referenced_var): Likewise.
18402         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
18403         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18404         (verify_call_clobbering): Likewise.
18405         (verify_memory_partitions): Likewise.
18406         (init_tree_ssa): Allocate bitmap instead of hashtable for
18407         referenced_vars.
18408         (delete_tree_ssa): Adjust.
18409         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
18410         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
18411         (compute_tag_properties): Likewise.
18412         (set_initial_properties): Likewise.
18413         (find_partition_for): Likewise.
18414         (update_reference_counts): Likewise.
18415         (dump_may_aliases_for): Likewise.
18416         * tree-ssa-operands.c (add_virtual_operand): Likewise.
18417         (add_call_clobber_ops): Likewise.
18418         (add_call_read_ops): Likewise.
18419         (get_asm_expr_operands): Likewise.
18420         * tree-into-ssa.c (dump_decl_set): Likewise.
18421         (update_ssa): Likewise.
18422         * tree-sra.c (scan_function): Likewise.
18423         (decide_instantiations): Likewise.
18424         (scalarize_parms): Likewise.
18425         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
18426         (dsa_named_for): Likewise.
18427         * tree-ssa-structalias.c (update_alias_info): Likewise.
18428         (merge_smts_into): Likewise.
18429
18430 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
18431
18432         PR target/35258
18433         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
18434         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
18435         * alias.h (nonoverlapping_memrefs_p): Likewise.
18436
18437 2008-02-25  Jan Beulich  <jbeulich@novell.com>
18438
18439         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
18440         * config/i386/netware-libgcc.exp: Add __bswap?i2,
18441         __emultls_get_address, __emultls_register_common,
18442         __floatundi?f, and _Unwind_GetIPInfo.
18443         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
18444         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
18445         (gen_regparm_prefix): Likewise.
18446         (i386_nlm_encode_section_info): Sync with
18447         config/i386/winnt.c:i386_pe_encode_section_info().
18448         (i386_nlm_maybe_mangle_decl_assembler_name): New.
18449         i386_nlm_mangle_decl_assembler_name): New.
18450         (netware_override_options): New.
18451         * config/i386/netware.h (netware_override_options): Declare.
18452         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
18453         (i386_nlm_mangle_decl_assembler_name): Declare.
18454         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
18455
18456 2008-02-25  Ben Elliston  <bje@au.ibm.com>
18457
18458         PR other/32948
18459         * c-decl.c (grokdeclarator): Remove unused local variables
18460         `typedef_type' and `type_as_written'.
18461         * bb-reorder.c
18462         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
18463         unused local variable `has_hot_blocks'.
18464         (fix_crossing_conditional_branches): Remove unused local variable
18465         `prev_bb'.
18466
18467 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
18468
18469         PR middle-end/19984
18470         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
18471         using DEF_C99_BUILTIN.
18472         (BUILT_IN_NANF): Ditto.
18473         (BUILT_IN_NANL): Ditto.
18474
18475 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
18476             Revital Eres  <eres@il.ibm.com>
18477
18478         * modulo-sched.c (calculate_must_precede_follow): Address TODO
18479         regarding the order of two dependent insns in the same row.
18480
18481 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
18482
18483         * stor-layout.c (layout_decl): Do not bump the alignment of a
18484         bit-field to more than byte alignment if it is packed.
18485
18486 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
18487
18488         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
18489         e300c2 and e300c3.
18490
18491 2008-02-24  Diego Novillo  <dnovillo@google.com>
18492
18493         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
18494
18495         PR 33738
18496         * tree-vrp.c (vrp_evaluate_conditional): With
18497         -Wtype-limits, emit a warning when comparing against a
18498         constant outside the natural range of OP0's type.
18499         * c.opt (Wtype-limits): Move ...
18500         * common.opt (Wtype-limits): ... here.
18501
18502 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
18503
18504         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
18505         * config/rs6000/e300c2c3.md: New file.
18506         * config/rs6000/rs6000.c (processor_costs): Add new costs for
18507         e300c2 and e300c3.
18508         (rs6000_override_options): Add e300c2 and e300c3 cases to
18509         processor_target_table. Do not allow usage of Altivec or Spe
18510         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
18511         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
18512         * config/rs6000/rs6000.h (processor_type): Add
18513         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
18514         (ASM_CPU_SPEC): Add e300c2 and e300c3.
18515         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
18516         and ppce300c3. Include e300c2c3.md.
18517
18518 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
18519
18520         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
18521         instead of TARGET_STRICT_ALIGN.
18522
18523 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
18524
18525         * explow.c (memory_address): Assert that the generated address is
18526         valid.
18527
18528 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
18529
18530         PR target/25477
18531         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
18532         * config/darwin-ppc-ldouble-patch.def: New file.
18533         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
18534         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
18535         SUBTARGET_INIT_BUILTINS if defined.
18536         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
18537         New functions.
18538
18539 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18540
18541         PR rtl-opt/33512
18542         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
18543         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
18544
18545 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18546
18547         PR pch/35027
18548         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
18549         file" warning condtional on -Winvalid-PCH.
18550
18551 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
18552
18553         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
18554
18555 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
18556
18557         PR target/22076
18558         PR target/34256
18559         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
18560         prevent reload from using MMX registers.
18561         (*mov<mode>_internal): Ditto.
18562         (*movv2sf_internal_rex64): Ditto.
18563         (*movv2sf_internal): Ditto.
18564
18565 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18566
18567         PR documentation/31569
18568         * doc/install.texi2html: Use makeinfo --no-number-sections.
18569
18570 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
18571
18572         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
18573         ensure that we can address an entire entity > 8 bytes.  Don't
18574         generate reg+reg addressing for such data.
18575
18576 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
18577
18578         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
18579         strings when optimizing for size, unless the target cares about
18580         alignment.
18581
18582 2008-02-22  Tom Tromey  <tromey@redhat.com>
18583
18584         * regclass.c (current_pass): Remove declaration.
18585
18586 2008-02-22  Anatoly Sokolov <aesok@post.ru>
18587
18588         * config/avr/libgcc.S (__RAMPZ__): Define.
18589         (__do_copy_data): Add for devices with 128KB code memory.
18590
18591 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
18592
18593         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
18594         Use spe_abi.
18595         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
18596
18597 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
18598
18599         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
18600         GENNONACR_REGS.
18601
18602 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18603
18604         PR c/19999
18605         * c-typeck.c (build_binary_op): Warn about floating point
18606         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
18607
18608 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
18609
18610         PR target/34526
18611         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
18612         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
18613         add vrsave.
18614         (rs6000_override_options): Set altivec_abi as default, not override,
18615         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
18616         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
18617         is used; use new member spe_abi.
18618         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
18619         spe_abi and altivec_abi.
18620
18621 2008-02-22  Tomas Bily  <tbily@suse.cz>
18622
18623         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
18624
18625 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18626
18627         PR bootstrap/35273
18628         * config.build (build_file_translate): Set to `CMD //c' only if
18629         it works.
18630         * Makefile.in (build_file_translate): Improve comment.
18631
18632 2008-02-21  Jan Hubicka  <jh@suse.cz>
18633
18634         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
18635         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
18636         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
18637
18638 2008-02-21  Michael Matz  <matz@suse.de>
18639
18640         PR target/35264
18641         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
18642
18643 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
18644
18645         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
18646         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
18647         as insn constraint.
18648         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
18649         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
18650         SSE_VEC_FLOAT_MODE_P as insn constraint.
18651         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
18652         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
18653         sse4a_movntdf using MODEF mode iterator.
18654         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
18655         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
18656         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
18657         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
18658         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
18659         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
18660         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
18661
18662 2008-02-21  Richard Guenther  <rguenther@suse.de>
18663
18664         * tree.def (PAREN_EXPR): New tree code.
18665         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
18666         and PAREN_EXPR.
18667         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
18668         * expr.c (expand_expr_real_1): Likewise.
18669         * tree-inline.c (estimate_num_insns_1): Likewise.
18670         * tree-complex.c (expand_complex_move): Likewise.
18671         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
18672         as plain x.
18673
18674 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
18675
18676         PR target/35225
18677         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
18678
18679 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
18680
18681         PR target/35190
18682         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
18683
18684         * config/sh/sh.c (find_barrier): Don't go past
18685         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
18686
18687 2008-02-20  DJ Delorie  <dj@redhat.com>
18688
18689         * config/h8300/h8300.md (insv): Force source operand to be a register.
18690
18691         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
18692         as a jump, not as a plain insn.
18693
18694 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
18695
18696         * doc/invoke.texi (Warning Options): Add new option
18697         -Wframe-larger-than=.
18698         (-Wframe-larger-than): Document.
18699
18700         * flags.h (warn_frame_larger_than, frame_larger_than_size):
18701         Add declarations for new option variables.
18702
18703         * final.c (final_start_function): Check the frame size
18704         before emission and issue a Wframe-larger-than warning.
18705
18706         * opts.c (warn_frame_larger_than, frame_larger_than_size):
18707         Add definitions for new option variables.
18708         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
18709
18710         * common.opt (Wframe-larger-than=): New option.
18711
18712 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
18713
18714         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
18715         (<sse>_div<mode>3): Ditto.
18716         (<sse>_vmdiv<mode>3): Ditto.
18717         (<sse>_vmsqrt<mode>2): Ditto.
18718         (*smax<mode>3): Ditto.
18719         (sse5_frcz<mode>2): Ditto.
18720         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
18721         as insn constraint.
18722
18723 2008-02-20  Richard Guenther  <rguenther@suse.de>
18724
18725         PR middle-end/35265
18726         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
18727         be happy with INTEGRAL_TYPE_P.
18728
18729 2008-02-20  Richard Guenther  <rguenther@suse.de>
18730
18731         * fold-const.c (split_tree): Associate floatig-point expressions
18732         if flag_associative_math is set.
18733
18734 2008-02-20  Richard Guenther  <rguenther@suse.de>
18735
18736         * tree.h (fold_real_zero_addition_p): Declare.
18737         * fold-const.c (fold_real_zero_addition_p): Export.
18738         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
18739         floating-point operations with zero and one.
18740
18741 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
18742
18743         * doc/install.texi: Correct references to CFLAGS, replacing them
18744         with BOOT_CFLAGS.  Document flags used during bootstrap for
18745         target libraries.
18746
18747 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
18748
18749         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
18750         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
18751         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
18752         insn constraint.
18753         (smin<mode>3): Ditto from similar patterns.
18754         (smax<mode>3): Ditto.
18755         (*ieee_smin<mode>3): Ditto.
18756         (*ieee_smax<mode>3): Ditto.
18757         * config/i386/sse.md (sse): New mode attribute.
18758         (mov<mode>): Macroize expander from movv4sf and movv2df using
18759         SSEMODEF2P mode iterator.
18760         (<sse>_movnt<mode>): Ditto from similar patterns. Use
18761         SSE_VEC_FLOAT_MODE_P as insn constraint.
18762         (storent<mode>): Ditto.
18763         (storent<mode>): Macroize expander from storentsf and storentdf using
18764         MODEF mode iterator.
18765         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
18766         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
18767         (abs<mode>2): Ditto from similar patterns.
18768         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
18769         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
18770         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
18771         (<sse>_vmsqrt<mode>2): Ditto.
18772         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
18773         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
18774         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
18775         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
18776         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
18777         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
18778         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
18779         insn constraint.
18780         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
18781         iterator and SSE_FLOAT_MODE_P as insn constraint.
18782         (<sse>_ucomi): Ditto from similar patterns.
18783         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
18784         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
18785         SSE_VEC_FLOAT_MODE_P as insn constraint.
18786         (vcond<mode>): Ditto from similar patterns.
18787         (and<mode>3, *and<mode>3): Ditto.
18788         (<sse>_nand<mode>3): Ditto.
18789         (ior<mode>3, *ior<mode>3): Ditto.
18790         (xor<mode>3, *xor<mode>3): Ditto.
18791         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
18792         iterator and SSE_FLOAT_MODE_P as insn constraint.
18793         (*nand<mode>3): Ditto from similar patterns.
18794         (*ior<mode>3): Ditto.
18795         (*xor<mode>3): Ditto.
18796
18797 2008-02-20  Ira Rosen  <irar@il.ibm.com>
18798
18799         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
18800         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
18801         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
18802
18803 2008-02-19  Jan Hubicka  <jh@suse.cz>
18804
18805         * predict.c (tree_bb_level_predictions): Remove variable next
18806         mistakely introduced by previous commit.
18807
18808 2008-02-19  Jan Hubicka  <jh@suse.cz>
18809
18810         * predict.c (predict_paths_leading_to): Rewrite.
18811         (predict_paths_for_bb): New.
18812         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
18813
18814 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18815
18816         PR bootstrap/35218
18817         * Makefile.in (build_file_translate): New.
18818         (gcc-vers.texi): Use it for translating $(abs_srcdir).
18819         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
18820         * configure.ac (build_file_translate): Substitute it.
18821         * configure: Regenerate.
18822
18823 2008-02-19  Jan Hubicka  <jh@suse.cz>
18824
18825         PR rtl-optimization/34408
18826         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
18827         invalid sharing.
18828
18829 2008-02-19  Jan Hubicka  <jh@suse.cz>
18830
18831         PR middle-end/28779
18832         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
18833         call_expr.
18834
18835 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
18836
18837         PR Ada/35186
18838         * config/i386/i386-modes.def: Revert the last DI alignment
18839         change until Ada people can look into it.
18840
18841 2008-02-19  Nick Clifton  <nickc@redhat.com>
18842
18843         * opts.c (print_specific_help): Fix typo in --help text.
18844
18845 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
18846
18847         PR target/35239
18848         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
18849         32-bit inline asm without asm alternatives for host GCC < 3.0.
18850
18851 2008-02-19  Richard Guenther  <rguenther@suse.de>
18852
18853         PR tree-optimization/34989
18854         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
18855         Allow propagation to INDIRECT_REF if we can simplify only.
18856
18857 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18858
18859         * c-common.c (warn_for_collisions_1): Use appropriate option when
18860         warning.
18861
18862 2008-02-19  Nick Clifton  <nickc@redhat.com>
18863
18864         PR other/31349
18865         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
18866         (handle_options): Fix indentation.
18867         (print_filtered_help): If no language-specific options were
18868         displayed tell the user how to list all the options supported by
18869         the language's front-end.
18870         (print_specific_help): Fix indentation and remove duplicate line.
18871         (common_handle_option): Handle the -v option.
18872         For --help enable the display of undocumented options if the -v
18873         switch has been included on the command line.
18874         For --help= check for overlaps in the arguments between the option
18875         classes and the language names and issue a warning when they
18876         cannot be disambiguated.
18877         * c.opt (v): Pass on to the common option handler.
18878
18879 2008-02-19  Revital Eres  <eres@il.ibm.com>
18880
18881         * modulo-sched.c (sms_schedule): Change dump message when
18882         create_ddg function fails.
18883         (try_scheduling_node_in_cycle): Rename row to cycle.
18884         (print_partial_schedule): Rename CYCLE to ROW.
18885
18886 2008-02-19  Christian Bruel  <christian.bruel@st.com>
18887             Zdenek Dvorak  <ook@ucw.cz>
18888
18889         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
18890
18891 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
18892
18893         PR target/33555
18894         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
18895         (*x86_movdicc_0_m1_se): Ditto.
18896
18897 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
18898
18899         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
18900         (CMPtype): Define as __gcc_CMPtype.
18901         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
18902         (CMPtype): Define as __gcc_CMPtype.
18903
18904 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
18905
18906         Support valgrind 3.3 for --enable-checking=valgrind.
18907         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
18908         here.
18909         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
18910         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
18911         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
18912         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
18913         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
18914         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
18915         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
18916         respectively.
18917         * ggc-zone.c: Similar.
18918         * ggc-page.c: Similar.
18919
18920 2008-02-19  Paul Brook  <paul@codesourcery.com>
18921
18922         PR target/35071
18923         * config/arm/ieee754-df.S: Fix do_it typo.
18924         * config/arm/ieee754-sf.S: Fix do_it typo.
18925
18926 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
18927
18928         PR target/35189
18929         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
18930         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
18931         (OPTION_MASK_ISA_SSE_SET): Likewise.
18932         (OPTION_MASK_ISA_SSE2_SET): Likewise.
18933         (OPTION_MASK_ISA_SSE3_SET): Likewise.
18934         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
18935         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
18936         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
18937         (OPTION_MASK_ISA_SSE4_SET): Likewise.
18938         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
18939         (OPTION_MASK_ISA_SSE5_SET): Likewise.
18940         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
18941         (OPTION_MASK_ISA_MMX_UNSET): Updated.
18942         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
18943         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
18944         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
18945         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
18946         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
18947         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
18948         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
18949         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
18950         (OPTION_MASK_ISA_SSE4): Removed.
18951         (ix86_handle_option): Turn on bits in ix86_isa_flags and
18952         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
18953         (override_options): Don't turn on implied SSE/MMX bits in
18954         ix86_isa_flags.
18955
18956 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
18957
18958         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
18959         32bit host.
18960
18961 2008-02-18  Joey Ye  <joey.ye@intel.com>
18962
18963         PR middle-end/34921
18964         * tree-nested.c (insert_field_into_struct): Set type alignment
18965         to field alignment if the former is less than the latter.
18966
18967 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
18968
18969         * BASE-VER: Set to 4.4.0.
18970
18971 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
18972
18973         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
18974         * doc/cfg.texi: Likewise.
18975         * doc/extend.texi: Likewise.
18976         * doc/gty.texi: Likewise.
18977         * doc/invoke.texi: Likewise.
18978         * doc/loop.texi: Likewise.
18979         * doc/md.texi: Likewise.
18980         * doc/passes.texi: Likewise.
18981         * doc/rtl.texi: Likewise.
18982         * doc/sourcebuild.texi: Likewise.
18983         * doc/tm.texi: Likewise.
18984         * doc/tree-ssa.texi: Likewise.
18985
18986 2008-02-17  Richard Guenther  <rguenther@suse.de>
18987
18988         PR middle-end/35227
18989         * tree-complex.c (init_parameter_lattice_values): Handle parameters
18990         without default definition.
18991
18992 2008-02-17  Richard Guenther  <rguenther@suse.de>
18993
18994         PR tree-optimization/35231
18995         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
18996         if A | B != 1.
18997
18998 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
18999
19000         Revert:
19001         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19002         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
19003         libgcc_cmp_return mode.
19004
19005 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19006
19007         PR c/28368
19008         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
19009
19010 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
19011
19012         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
19013         multilibs.
19014
19015 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19016
19017         * doc/c-tree.texi: Use `@.' where appropriate.
19018         * doc/extend.texi: Likewise.
19019         * doc/install.texi: Likewise.
19020         * doc/invoke.texi: Likewise.
19021         * doc/loop.texi: Likewise.
19022         * doc/makefile.texi: Likewise.
19023         * doc/md.texi: Likewise.
19024         * doc/passes.texi: Likewise.
19025         * doc/standards.texi: Likewise.
19026         * doc/tm.texi: Likewise.
19027
19028 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
19029
19030         PR middle-end/35196
19031         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
19032         in entry_bb.
19033         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
19034         rather than in entry_bb.
19035
19036 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19037
19038         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
19039         libgcc_cmp_return mode.
19040
19041 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
19042
19043         PR middle-end/35130
19044         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
19045         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
19046
19047 2008-02-15  Richard Guenther  <rguenther@suse.de>
19048             Zdenek Dvorak  <ook@ucw.cz>
19049
19050         PR tree-optimization/35164
19051         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
19052         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
19053         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
19054         Only propagate addresses which do not have abnormal SSA_NAMEs
19055         in their operands.
19056
19057 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
19058
19059         PR target/35088
19060         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
19061
19062 2008-02-15  Jan Hubicka  <jh@suse.cz>
19063
19064         PR middle-end/35149
19065         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
19066
19067 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19068
19069         PR middle-end/34621
19070         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
19071         when calculating alignment_pad.
19072
19073 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
19074
19075         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
19076         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
19077         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
19078         and STACK_BOUNDARY define.
19079
19080 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
19081
19082         PR preprocessor/35061
19083         * c-pragma.c (handle_pragma_pop_macro): Check that
19084         pushed_macro_table has been allocated.
19085
19086 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
19087
19088         PR middle-end/35136
19089         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
19090         (force_gimple_operand): Likewise.
19091         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
19092         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
19093         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
19094         (find_interesting_uses_address): Check addressability and alignment
19095         of the base expression only after substituting bases of IVs into it.
19096
19097 2008-02-14  Michael Matz  <matz@suse.de>
19098
19099         PR target/34930
19100         * function.c (instantiate_virtual_regs_in_insn): Reload address
19101         before falling back to reloading the whole operand.
19102
19103 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
19104
19105         * config/s390/s390.c (s390_mainpool_start): Emit the pool
19106         before the first section switch note.
19107
19108 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
19109
19110         * doc/bugreport.texi: Update copyright years.
19111         * doc/c-tree.texi: Likewise.
19112         * doc/cfg.texi: Likewise.
19113         * doc/cpp.texi: Likewise.
19114         * doc/cppinternals.texi: Likewise.
19115         * doc/fragments.texi: Likewise.
19116         * doc/frontends.texi: Likewise.
19117         * doc/gcc.texi: Likewise.
19118         * doc/gty.texi: Likewise.
19119         * doc/hostconfig.texi: Likewise.
19120         * doc/implement-c.texi: Likewise.
19121         * doc/libgcc.texi: Likewise.
19122         * doc/loop.texi: Likewise.
19123         * doc/makefile.texi: Likewise.
19124         * doc/options.texi: Likewise.
19125         * doc/passes.texi: Likewise.
19126         * doc/rtl.texi: Likewise.
19127         * doc/sourcebuild.texi: Likewise.
19128         * doc/standards.texi: Likewise.
19129         * doc/tree-ssa.texi: Likewise.
19130         * doc/trouble.texi: Likewise.
19131
19132         * doc/extend.texi: Use @: or add comma where appropriate.
19133         * doc/invoke.texi: Likewise.
19134         * doc/tm.texi: Likewise.
19135
19136 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
19137
19138         PR target/34393
19139         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
19140         to a reg.
19141
19142 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
19143
19144         * doc/md.texi (clz, ctz): Add reference.
19145         * doc/rtl.texi (clz, ctz): Likewise.
19146
19147 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19148
19149         PR other/35148
19150         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
19151         srcdir.
19152
19153 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
19154
19155         * config/s390/s390.c (struct constant_pool): New field
19156         emit_pool_after added.
19157         (s390_mainpool_start): Set the emit_pool_after flag according
19158         to the section switch notes.
19159         (s390_mainpool_finish): Consider emit_pool_after when emitting
19160         the literal pool at the end of the function.
19161         (s390_chunkify_start): Force literal pool splits at section
19162         switch notes.
19163
19164 2008-02-13  Michael Matz  <matz@suse.de>
19165
19166         PR debug/35065
19167         * var-tracking.c (clobber_variable_part): Correctly traverse the
19168         list.
19169
19170 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19171
19172         PR 29673
19173         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
19174         Add -fdump-ipa-inline.
19175         * tree-dump.c (dump_files): Remove tree-inlined dump.
19176         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
19177
19178 2008-02-12  Richard Guenther  <rguenther@suse.de>
19179
19180         PR tree-optimization/35171
19181         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
19182         default defs.
19183
19184 2008-02-12  Richard Guenther  <rguenther@suse.de>
19185
19186         PR middle-end/35163
19187         * fold-const.c (fold_widened_comparison): Use get_unwidened in
19188         value-preserving mode.  Disallow final truncation.
19189
19190 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
19191
19192         PR middle-end/35136
19193         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
19194         code from here to...
19195         (force_gimple_operand): ...here.
19196
19197 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
19198
19199         PR c++/35144
19200         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
19201         non-compatible pointers.
19202         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
19203         different FIELD_DECLs, try harder by comparing field offsets, sizes
19204         and types.
19205
19206         PR inline-asm/35160
19207         * function.c (match_asm_constraints_1): Don't replace the same input
19208         multiple times.
19209
19210 2008-02-12  Anatoly Sokolov <aesok@post.ru>
19211
19212         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
19213         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
19214         (expand_epilogue): Restore RAMPZ register.
19215         * config/avr/avr.md (RAMPZ_ADDR): New constant.
19216
19217 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
19218
19219         * config/i386/cygwin.asm: (__alloca): Correct calling
19220         convention and alignment.
19221         (__chkstk): Force 8 byte stack alignment.
19222
19223 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
19224             Richard Guenther  <rguenther@suse.de>
19225
19226         PR tree-optimization/33992
19227         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
19228         the zero we compare against.
19229
19230 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
19231
19232         PR libfortran/35063
19233         * gthr-win32.h (__gthread_mutex_destroy_function): New function
19234         to CloseHandle after unlocking to prevent accumulation of handle
19235         count.
19236
19237 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19238
19239         PR middle_end/34150
19240         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
19241         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
19242         and update LABEL_NUSES during and after reload.
19243
19244 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
19245
19246         PR middle-end/34627
19247         * combine.c (simplify_if_then_else): Make sure the comparison is
19248         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
19249
19250 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19251
19252         PR bootstrap/35051
19253         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
19254         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
19255         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
19256         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
19257         * tree.h (get_type_static_bounds): Likewise.
19258
19259 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19260
19261         * doc/invoke.texi (Option Summary, C++ Dialect Options)
19262         (Objective-C and Objective-C++ Dialect Options, Warning Options):
19263         Make -Wfoo language annotations match what the compiler outputs.
19264
19265 2008-02-08  Sa Liu  <saliu@de.ibm.com>
19266
19267         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
19268         intrinsics spu_convts, spu_convtu, spu_convtf.
19269
19270 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
19271
19272         * doc/extend.texi (Function Attributes) <noinline>: Mention
19273         asm ("") as method to keep calls.
19274
19275 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19276
19277         PR other/32754
19278         * doc/options.texi (Options): Replace references to opts.sh with
19279         optc-gen.awk.
19280         * opts-common.c: Likewise.
19281         * optc-gen.awk: Likewise.
19282
19283 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
19284
19285         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
19286
19287 2008-02-07  Richard Henderson  <rth@redhat.com>
19288
19289         PR rtl-opt/33410
19290         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
19291         EXPR_LIST for the REG_EQUAL instead of a comparison with a
19292         funny mode.
19293
19294 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
19295
19296         PR tree-optimization/35085
19297         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
19298         for operand entry oe2 in addition to operand entry oe3 in order to
19299         expose more opportunities for vectorizer sum reduction.
19300
19301 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19302
19303         PR other/35107
19304         * Makefile.in (LIBS): Remove $(GMPLIBS).
19305         (cc1-dummy, cc1): Add $(GMPLIBS).
19306
19307 2008-02-06  Jan Hubicka  <jh@suse.cz>
19308
19309         PR target/23322
19310         * i386.md (moddf_integer): Do not produce partial memory stalls for
19311         targets where it hurts.
19312
19313 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
19314
19315         PR target/35083
19316         * optabs.c (expand_float): Do not check for decimal modes when
19317         expanding unsigned integer through signed conversion.
19318
19319 2008-02-06  Nick Clifton  <nickc@redhat.com>
19320
19321         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
19322         inside the clobber with a match_operand and duplicated operand
19323         number in the constraint.
19324         (ineqbranchsi): Delete redundant comment.
19325
19326 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
19327
19328         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
19329         builtin_define ("__USE_INIT_FINI__").
19330         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
19331         -msx multilibs.
19332         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
19333
19334 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19335
19336         PR documentation/30330
19337         * doc/invoke.texi (C++ Dialect Options)
19338         (Objective-C and Objective-C++ Dialect Options, Warning Options):
19339         For each warning option -Wfoo that allows -Wno-foo, ensure both
19340         -Wfoo and -Wno-foo are listed in the option index.  Fix index
19341         entry of -Wswitch-default, index -Wnormalized= including the
19342         `=', and -Wlarger-than-@var{len} including @var{len}.
19343
19344 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
19345
19346         * config/i386/i386.md (floatunssisf2): Use
19347         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
19348         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
19349         Macroize expander using MODEF mode iterator.
19350
19351 2008-02-05  Diego Novillo  <dnovillo@google.com>
19352
19353         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
19354
19355         PR 33738
19356         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
19357
19358 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19359
19360         PR other/35070
19361         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
19362
19363 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
19364
19365         PR target/35084
19366         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
19367         to indicate if a message should be generated.
19368         (init_cumulative_args): Updated.
19369         (function_value_32): Likewise.
19370
19371 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
19372
19373         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
19374
19375 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
19376
19377         PR target/35083
19378         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
19379         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
19380
19381 2008-02-04  Diego Novillo  <dnovillo@google.com>
19382
19383         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
19384
19385         PR 33738
19386         * tree-vrp.c (vrp_evaluate_conditional): With
19387         -Wtype-limits, emit a warning when comparing against a
19388         constant outside the natural range of OP0's type.
19389
19390 2008-02-04  Richard Guenther  <rguenther@suse.de>
19391
19392         PR middle-end/33631
19393         * expr.c (count_type_elements): Give for unions instead of
19394         guessing.
19395
19396 2008-02-04  Richard Guenther  <rguenther@suse.de>
19397
19398         PR middle-end/35043
19399         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
19400         to TYPE_DOMAINs base type instead of using bitsizetype here.
19401
19402 2008-02-03  Jason Merrill  <jason@redhat.com>
19403
19404         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
19405
19406 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19407
19408         PR other/29972
19409         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
19410         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
19411         (RS/6000 and PowerPC Options): Fix typos and markup.
19412         * doc/passes.texi (Tree-SSA passes): Likewise.
19413
19414 2008-02-02  Michael Matz  <matz@suse.de>
19415
19416         PR target/35045
19417         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
19418         from record_last_reg_set_info.
19419         (record_last_reg_set_info): Take an RTX argument, iterate over all
19420         constituent hardregs.
19421         (record_last_set_info, record_opr_changes): Change calls to
19422         new signature or to record_last_reg_set_info_regno.
19423
19424 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
19425
19426         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
19427
19428 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
19429
19430         PR rtl-optimization/34773
19431         * reg-notes.def (EQUAL): Mention significance of combination of
19432         REG_EQUAL and REG_RETVAL.
19433         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
19434         insn that has a REG_RETVAL.
19435
19436 2008-02-01  Roger Sayle  <roger@eyesopen.com>
19437
19438         PR bootstrap/33781
19439         * configure.ac (--enable-fixed-point): Disable unless explicitly
19440         requested on IRIX.
19441         * configure: Regenerate.
19442
19443 2008-02-01  Richard Guenther  <rguenther@suse.de>
19444
19445         PR other/35042
19446         * invoke.texi (-finline-limit): Remove no longer true parts
19447         of the documentation.  Note that there is no default value.
19448
19449 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
19450             Mark Mitchell  <mark@codesourcery.com>
19451             Ben Elliston  <bje@au.ibm.com>
19452
19453         PR c/29326
19454         * doc/extend.texi (Other Builtins): Document.
19455
19456 2008-01-31  Tom Browder <tom.browder@gmail.com>
19457
19458         * doc/c-tree.texi (Types): Fix grammar.
19459         (Expression trees): Ditto.
19460         * doc/passes.texi (Tree-SSA passes): Ditto.
19461
19462         * doc/configterms.texi (Configure Terms): Fix typo.
19463         * doc/cpp.texi (Common Predefined Macros): Ditto.
19464         * doc/md.texi (Machine Constraints): Ditto.
19465
19466         * doc/makefile.texi (Makefile): Add comma.
19467
19468 2008-01-31  Tom Browder  <tom.browder@gmail.com>
19469             Gerald Pfeifer  <gerald@pfeifer.com>
19470
19471         * doc/sourcebuild.texi (Front End): Remove references to CVS
19472         and CVSROOT/modules.
19473         (Texinfo Manuals): Replace reference to CVS by one to SVN.
19474         (Back End): Remove reference to CVS.
19475
19476 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
19477
19478         PR target/34900
19479         * config/mips/mips.c (gen_load_const_gp): New function, taking a
19480         comment from...
19481         (mips16_gp_pseudo_reg): ...here.
19482         * config/mips/mips.md (load_const_gp): Replace with...
19483         (load_const_gp_<mode>): ...this :P-based insn.
19484
19485 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19486
19487         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
19488         options. Minor fixes.
19489         (-std): Move reference to standards closer to where language
19490         standards are first mentioned.
19491
19492 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
19493
19494         PR rtl-optimization/34995
19495         * reload.c (alternative_allows_const_pool_ref): Take an rtx
19496         parameter and return a bool.  If the rtx parameter is nonnull,
19497         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
19498         (find_reloads): Update call accordingly.  Pass the new operand
19499         if it needed no address reloads, otherwise pass null.
19500
19501 2008-01-30  Richard Henderson  <rth@redhat.com>
19502
19503         PR c/34993
19504         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
19505         for unbounded arrays.
19506
19507 2008-01-30  Silvius Rus  <rus@google.com>
19508
19509         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
19510
19511 2008-01-30  Jan Hubicka  <jh@suse.cz>
19512
19513         PR target/34982
19514         * i386.c (init_cumulative_args): Use real function declaration when
19515         calling locally.
19516
19517 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
19518
19519         PR rtl-optimization/34998
19520         * global.c (build_insn_chain): Treat non-subreg_lowpart
19521         SUBREGs of pseudos as clobbering all the words covered by the
19522         SUBREG, not just all the bytes.
19523         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
19524         original df_ref rather than an extract parameter.
19525         (global_conflicts): Update call accordingly.
19526
19527 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
19528
19529         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
19530         the overflow check to make it easier to read.
19531         (__fixtfdi): Change the type of the ll member in union
19532         long_double to UDItype_x.
19533
19534 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
19535
19536         PR middle-end/34969
19537         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
19538         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
19539         * tree-inline.c (fold_marked_statements): Call
19540         cgraph_update_edges_for_call_stmt if folding a call statement.
19541         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
19542         debug_generic_stmt calls, reset it back afterwards.
19543
19544         PR c/35017
19545         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
19546         static decls.
19547         * c-typeck.c (build_external_ref): Don't pedwarn about
19548         static vars in current function's scope.
19549
19550 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
19551
19552         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
19553
19554 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
19555
19556         PR c/35002
19557         * ipa-struct-reorg.c: Fix spelling.
19558         * params.def: Ditto.
19559
19560 2008-01-29  Richard Guenther  <rguenther@suse.de>
19561
19562         PR middle-end/35006
19563         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
19564         field.
19565         * tree-inline.c (remap_type): Increment remapping_type_depth
19566         around remapping types.
19567         (copy_body_r): Only add referenced variables if they are referenced
19568         from code, not types.
19569
19570 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
19571
19572         PR c++/34055
19573         PR c++/34103
19574         PR c++/34219
19575         PR c++/34606
19576         PR c++/34753
19577         PR c++/34754
19578         PR c++/34755
19579         PR c++/34919
19580         PR c++/34961
19581         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
19582         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
19583
19584 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
19585
19586         PR target/34412
19587         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
19588         pointer for tiny stack.
19589
19590 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
19591
19592         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
19593
19594 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
19595
19596         * config/vx-common.h: Fix typo in comment.
19597
19598 2008-01-28  Ian Lance Taylor  <iant@google.com>
19599
19600         PR c++/34862
19601         PR c++/33407
19602         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
19603         coalesce pointers if they have different DECL_NO_TBAA_P values.
19604         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
19605         between variables with different DECL_NO_TBAA_P values.
19606
19607 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
19608
19609         PR 31535
19610         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
19611         are not legitimate small data references on SPE targets.
19612
19613 2008-01-28  David Daney  <ddaney@avtrex.com>
19614
19615         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
19616
19617 2008-01-28  David Daney  <ddaney@avtrex.com>
19618
19619         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
19620
19621 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
19622
19623         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
19624         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
19625         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
19626         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
19627         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
19628         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
19629         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
19630         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
19631
19632 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
19633
19634         * basic-block.h (condjump_equiv_p): Fix comment.
19635
19636 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
19637
19638         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
19639         print_generic_stmt_indented): Fix comment.
19640
19641 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
19642
19643         * configure.ac (__stack_chk_fail): Add detecion for availability
19644         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
19645         * configure: Regenerate.
19646
19647 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
19648
19649         PR middle-end/34688
19650         * final.c (output_addr_const): Handle TRUNCATE.
19651
19652 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
19653
19654         PR target/34711
19655         * tree-ssa-loop-ivopts.c (comp_cost): New type.
19656         (zero_cost, infinite_cost): New constants.
19657         (struct cost_pair): Change type of cost to comp_cost.
19658         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
19659         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
19660         New functions.
19661         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
19662         split_address_cost, ptr_difference_cost, difference_cost,
19663         get_computation_cost_at, get_computation_cost,
19664         determine_use_iv_cost_generic, determine_use_iv_cost_address,
19665         determine_use_iv_cost_condition, determine_use_iv_costs,
19666         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
19667         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
19668         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
19669         Change type of cost to comp_cost.
19670         (determine_iv_cost): Increase cost of non-original ivs, instead
19671         of decreasing the cost of original ones.
19672         (get_address_cost): Indicate the complexity of the addressing mode
19673         in comp_cost.
19674         (try_add_cand_for): Prefer using ivs not specific to some object.
19675         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
19676
19677 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
19678             Janis Johnson  <janis187@us.ibm.com>
19679
19680         PR target/34814
19681         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
19682         (TARGET_INSTANTIATE_DECLS): Likewise.
19683         * target.h (expand_to_rtl_hook): New target hook.
19684         (instantiate_decls): Likewise.
19685         * function.c (instantiate_decl): Make non-static.  Rename to...
19686         (instantiate_decl_rtl): ... this.
19687         (instantiate_expr): Use instantiate_decl_rtl.
19688         (instantiate_decls_1): Likewise.
19689         (instantiate_decls): Likewise.
19690         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
19691         * function.h (instantiate_decl_rtl): Add prototype.
19692         * cfgexpand.c (target.h): New include.
19693         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
19694         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
19695         (TARGET_INSTANTIATE_DECLS): Likewise.
19696         (TARGET_INITIALIZER): New target hooks added.
19697         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
19698         New prototype.
19699         * config/rs6000/rs6000.c (tree-flow.h): New include.
19700         (machine_function): Add sdmode_stack_slot field.
19701         (rs6000_alloc_sdmode_stack_slot): New function.
19702         (rs6000_instantiate_decls): Likewise.
19703         (rs6000_secondary_memory_needed_rtx): Likewise.
19704         (rs6000_check_sdmode): Likewise.
19705         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
19706         (TARGET_INSTANTIATE_DECLS): Likewise.
19707         (rs6000_hard_regno_mode_ok): Allow SDmode.
19708         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
19709         (rs6000_emit_move): Handle SDmode.
19710         (function_arg_advance): Likewise.
19711         (function_arg): Likewise.
19712         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
19713         SDmode var args for 32-bit compiles.
19714         (rs6000_secondary_reload_class): Handle SDmode.
19715         (rs6000_output_function_epilogue): Likewise.
19716         (rs6000_function_value): Simplify if statement.
19717         (rs6000_libcall_value): Likewise.
19718         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
19719         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
19720         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
19721         (movsd_hardfloat): New define_insn.
19722         (movsd_softfloat): Likewise.
19723         (movsd_store): Likewise.
19724         (movsd_load): Likewise.
19725         (extendsddd2): Likewise.
19726         (extendsdtd2): Likewise.
19727         (truncddsd2): Likewise.
19728         (movdd_hardfloat64): Fixup comment.
19729         (UNSPEC_MOVSD_LOAD): New constant.
19730         (UNSPEC_MOVSD_STORE): Likewise.
19731
19732 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
19733
19734         PR c++/34965
19735         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
19736         TRUTH_XOR_EXPR.
19737         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
19738         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
19739         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
19740         and TRUTH_XOR_EXPR.
19741
19742 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
19743
19744         PR target/34794
19745         * config.gcc: Separate AIX 5.3 from AIX 6.1.
19746         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
19747         __LONGDOUBLE128 too.
19748         * config/rs6000/aix61.h: New file.
19749
19750 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
19751
19752         PR rtl-optimization/34959
19753         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
19754         popcount and parity rtxes the same mode as their operand.
19755         Truncate or extend the result to the return value's mode
19756         if necessary.
19757
19758 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
19759
19760         PR target/34981
19761         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
19762         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
19763         to GOT_VERSION_REGNUM.
19764         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
19765         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
19766         * config/mips/mips.c (mips_emit_call_insn): New function.
19767         (mips_call_tls_get_addr): Call mips_expand_call directly.
19768         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
19769         emit_call_insn.
19770         (mips16_build_call_stub): Likewise.  Return the call insn or null.
19771         (mips_expand_call): Update the call to mips16_build_call_stub
19772         accordingly and a remove redundant condition.  Assert that MIPS16
19773         stubs do not use lazy binding.  Use mips_emit_call_insn and return
19774         the call insn.
19775         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
19776         TARGET_USE_GOT.
19777         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
19778         (mips_avoid_hazard): Remove hazard_set handling.
19779         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
19780         (UNSPEC_RESTORE_GP): ...this.
19781         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
19782         (FAKE_CALL_REGNO): Rename to...
19783         (GOT_VERSION_REGNUM): ...this.
19784         (type): Add "ghost" value.  Add an associated insn reservation.
19785         (hazard_set): Remove.
19786         (exception_receiver): Rename to...
19787         (restore_gp): ...this and update the unspec identifier accordingly.
19788         (exception_receiver, nonlocal_got_receiver): New expanders.
19789         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
19790         FAKE_CALL_REGNO.  Remove hazard_set attribute.
19791         (set_got_version, update_got_version): New patterns.
19792
19793 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
19794
19795         PR target/34970
19796         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
19797
19798 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
19799
19800         PR other/31955
19801         * doc/install.texi2html: Generate gcc-vers.texi.
19802
19803 2008-01-25  DJ Delorie  <dj@redhat.com>
19804
19805         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
19806
19807 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
19808
19809         * config/c4x: Remove directory.
19810         * config.gcc (crx-*, mt-*): Mark obsolete.
19811         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
19812         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
19813         sh-*-rtemscoff*): Remove cases.
19814         * defaults.h (C4X_FLOAT_FORMAT): Remove.
19815         * real.c (encode_c4x_single, decode_c4x_single,
19816         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
19817         c4x_extended_format): Remove.
19818         * real.h (c4x_single_format, c4x_extended_format): Remove.
19819         * doc/extend.texi (interrupt, naked): Remove mention of attributes
19820         on C4x.
19821         (Pragmas): Remove comment about c4x pragmas.
19822         * doc/install.texi (c4x): Remove target-specific instructions.
19823         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
19824         * doc/md.texi (Machine Constraints): Remove C4x documentation.
19825         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
19826         refer to C4x source files as examples.
19827         (C4X_FLOAT_FORMAT): Remove documentation.
19828
19829 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
19830
19831         * config/bfin/bfin.c (override_options): Reorder tests so that
19832         flag_pic gets enabled for -msep-data.
19833
19834 2008-01-25  Richard Guenther  <rguenther@suse.de>
19835
19836         PR middle-end/32244
19837         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
19838         to its bitfield precision if required.
19839
19840 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
19841
19842         PR middle-end/33880
19843         * tree-nested.c (walk_omp_for): New function.
19844         (convert_nonlocal_reference, convert_local_reference): Call
19845         walk_omp_for on OMP_FOR.
19846         (convert_call_expr): Call walk_body on OMP_FOR's
19847         OMP_FOR_PRE_INIT_BODY.
19848
19849 2008-01-25  Richard Guenther  <rguenther@suse.de>
19850
19851         PR tree-optimization/34966
19852         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
19853         default defs and PHI_NODEs we have to insert after the
19854         defining statement.
19855
19856 2008-01-24  Nick Clifton  <nickc@redhat.com>
19857
19858         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
19859         Provide a default definition.
19860         (LIBGCC2_UNITS_PER_WORD): Likewise.
19861
19862         * config/stormy16/stormy16.c: Include df.h for the prototype
19863         for df_regs_ever_live_p.
19864         (xstormy16_expand_builtin_va_start): Convert the stack offset
19865         into a component_ref and then use POINTER_PLUS_EXPR to add it
19866         to the incoming_virtual_args_rtx.
19867         (xstormy16_gimplify_va_arg_expr): Rename to
19868         xstormy16_gimplify_va_arg_expr.
19869         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
19870         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
19871         xstormy16_gimplify_va_arg_expr.
19872         Fix up some formatting issues.
19873
19874         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
19875         Move to predicates.md.
19876         (xs_hi_general_operand): Likewise.
19877         (xs_hi_nonmemory_operand): Likewise.
19878         * config/stormy16/predicates.md:
19879         (xstormy16_carry_plus_operand): New predicate.
19880         (xs_hi_general_operand): New predicate.
19881         (xs_hi_nonmemory_operand): New predicate.
19882         * config/stormy16/stormy16-protos.h:
19883         (xstormy16_carry_plus_operand): Delete prototype.
19884         (xs_hi_general_operand): Likewise.
19885         (xs_hi_nonmemory_operand): Likewise.
19886
19887         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
19888         modifiers as they are no longer needed and they can trigger
19889         reload spill failures.
19890
19891         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
19892         with a match_operand in order to help reload.
19893
19894         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
19895         constraint with 'e' for the 8th alternative as this version of
19896         the mov.w instruction only accepts the lower 8 registers.
19897
19898 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
19899
19900         PR target/34856
19901         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
19902         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
19903         vector elements.
19904
19905 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
19906
19907         PR middle-end/33333
19908         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
19909
19910 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
19911
19912         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
19913         New functions.
19914         (remove_structure): Update allocations list before removing structure.
19915
19916 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
19917
19918         * ipa-struct-reorg.c (is_safe_cond_expr,
19919         create_new_stmts_for_cond_expr): Use integer_zerop function,
19920         that recognize not only zero-pointer, but zero-integer too.
19921
19922 2008-01-25  Ben Elliston  <bje@au.ibm.com>
19923
19924         PR other/22232
19925         * fixproto: Escape "." in sed expression that strips leading "./".
19926
19927 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
19928
19929         PR driver/34904
19930         * gcc.c (SWITCH_OK): Removed.
19931         (SWITCH_LIVE): Changed to bit.
19932         (SWITCH_FALSE): Likewise.
19933         (SWITCH_IGNORE): Likewise.
19934         (switchstr): Change live_cond to unsigned int.
19935         (process_command): Replace SWITCH_OK with 0.
19936         (do_self_spec): Likewise.
19937         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
19938         (give_switch): Likewise.
19939         (used_arg): Likewise.
19940         (do_spec_1): Set the SWITCH_IGNORE bit.
19941         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
19942         bits.  Set the SWITCH_LIVE bit.
19943
19944 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19945
19946         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
19947
19948 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
19949
19950         PR tree-optimization/34472
19951         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
19952         parameter to a "bool *" and set *DATA to false if there is
19953         an unsafe access.  Do not delete the structure here.
19954         (check_cond_exprs): Delete it here instead.
19955         (check_cond_exprs, exclude_cold_structs): Do not increase
19956         I when removing a structure.
19957
19958 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
19959
19960         PR target/34856
19961         * config/i386/i386.c (ix86_expand_vector_init): Consider only
19962         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
19963
19964 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
19965
19966         PR middle-end/34934
19967         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
19968         a fixed vector for stack.
19969
19970 2008-01-24  Ben Elliston  <bje@au.ibm.com>
19971
19972         PR c++/25701
19973         * doc/gcc.texi (Software development): Add a direntry for g++.
19974
19975 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
19976
19977         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
19978         stale and straggling -fforce-addr comments above.
19979
19980         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
19981         define.
19982         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
19983         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
19984
19985 2008-01-23  Michael Matz  <matz@suse.de>
19986
19987         PR debug/34895
19988         * dwarf2out.c (force_type_die): Use modified_type_die instead of
19989         gen_type_die.
19990
19991 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
19992
19993         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
19994         malloc result type.
19995
19996 2008-01-23 Anatoly Sokolov <aesok@post.ru>
19997
19998         * config/avr/avr.c (avr_current_arch): New variable.
19999         (avr_arch_types): Add 'avr31' and 'avr51' entries.
20000         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
20001         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
20002         (avr_override_options): Init 'avr_current_arch'.
20003         (base_arch_s): Move from here...
20004         * config/avr/avr.h (base_arch_s): ... here. Add new members
20005         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
20006         'mega' to 'have_jmp_call'.
20007         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
20008         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
20009         macros.
20010         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
20011         architectures.
20012         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
20013         MULTILIB_MATCHES): Ditto.
20014
20015 2008-01-23  Richard Guenther  <rguenther@suse.de>
20016
20017         PR middle-end/31529
20018         * cgraphunit.c (cgraph_reset_node): Always mark the node
20019         not reachable if it is not queued already.
20020
20021 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
20022
20023         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
20024         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
20025         (cputype_selected): New static variable.
20026         (bfin_handle_option): Set it if -mcpu is used.
20027         (override_option): Select default set of workarounds if no cpu type
20028         selected on the command line.
20029         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
20030
20031         From  Michael Frysinger  <michael.frysinger@analog.com>
20032         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
20033         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
20034
20035         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
20036         for bf547, bf523, bf524, and bf526.
20037         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
20038         bf526.
20039         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
20040         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
20041         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
20042         __ADSPBF547__ and __ADSPBF54x__ for bf547.
20043         * doc/invoke.texi (Blackfin Options): Document that
20044         -mcpu now accept bf547, bf523, bf524, and bf526.
20045
20046 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
20047
20048         PR rtl-optimization/34628
20049         * combine.c (try_combine): Stop and undo after the first combination
20050         if an autoincrement side-effect on the first insn has effectively
20051         been lost.
20052
20053 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
20054
20055         PR target/34529
20056         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
20057         Offset addresses are not valid for Altivec or paired float modes.
20058
20059 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
20060
20061         PR c++/34607
20062         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
20063         if DECL_INITIAL (decl) is error_mark_node.
20064
20065         PR c++/34914
20066         * c-common.c (handle_vector_size_attribute): Only allow
20067         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
20068         the same way as pointer, array etc. types.
20069         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
20070
20071         PR c++/34917
20072         * tree.c (build_type_attribute_qual_variant): Call
20073         build_qualified_type if attributes are equal, but quals are not.
20074
20075 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20076
20077         PR 32102
20078         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
20079         * flags.h (warn_strict_aliasing): Remove.
20080         (warn_strict_overflow): Remove.
20081         * opts.c (warn_strict_aliasing): Remove.
20082         (warn_strict_overflow): Remove.
20083         * c-opts.c (c_common_handle_option): -Wall only sets
20084         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
20085         (c_common_post_options): Give default values to -Wstrict-aliasing
20086         and -Wstrict-overflow if they are uninitialized.
20087         * common.opt (Wstrict-aliasing): Specify Var and Init.
20088         (Wstrict-overflow): Likewise.
20089
20090 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
20091
20092         PR rtl-optimization/26854
20093         PR rtl-optimization/34400
20094         PR rtl-optimization/34884
20095         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
20096         DF_RD->gen.
20097         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
20098         (df_rd_bb_info.expanded_lr_out): Deleted
20099         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
20100         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
20101         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
20102         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
20103         Removed code to allocate, initialize or free expanded_lr_out.
20104         (df_rd_bb_local_compute_process_def): Restructured to make more
20105         understandable.
20106         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
20107         sets if the sets are being trimmed.
20108
20109 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
20110
20111         PR bootstrap/32287
20112         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
20113         (as_vers): Likewise.
20114         * configure: Regenerated.
20115
20116 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20117
20118         PR middle-end/33092
20119         * tree-pass.h (pass_build_alias): New pass.
20120         * tree-ssa-alias.c (gate_build_alias): New.
20121         (pass_build_alias): New.
20122         * passes.c (init_optimization_passes): Add pass_build_alias after
20123         pass_create_structure_vars.
20124
20125 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
20126
20127         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
20128         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
20129         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
20130         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
20131         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
20132         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
20133         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
20134         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
20135         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
20136         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
20137         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
20138         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
20139         * config/s390/s390.md (FP_ALL): New mode iterator.
20140         (_d): New mode attribute.
20141         ("*signbit<mode>2>"): Changed mode of first operand.
20142         ("isinf<mode>2"): Changed mode of first operand.
20143         ("*TDC_insn"): Adaptation for DFP modes.
20144
20145 2008-01-22  Ben Elliston  <bje@au.ibm.com>
20146
20147         * tree.c (check_qualified_type): Improve function description.
20148
20149 2008-01-21  Jason Merrill  <jason@redhat.com>
20150
20151         PR c++/34196
20152         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
20153         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
20154         if it is set.
20155
20156 2008-01-21  DJ Delorie  <dj@redhat.com>
20157
20158         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
20159         return zero.
20160
20161 2008-01-21  Richard Guenther  <rguenther@suse.de>
20162
20163         PR middle-end/34856
20164         * tree-cfg.c (verify_expr): Allow all invariant expressions
20165         instead of just constant class ones as reference argument.
20166         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
20167         like any other constant.
20168         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
20169
20170 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
20171
20172         * regmove.c (fixup_match_1): Update call crossed frequencies.
20173
20174 2008-01-21  Richard Guenther  <rguenther@suse.de>
20175
20176         PR c/34885
20177         * tree-inline.c (setup_one_parameter): Deal with mismatched
20178         types using a VIEW_CONVERT_EXPR.
20179
20180 2008-01-21  Alon Dayan  <alond@il.ibm.com>
20181             Olga Golovanevsky  <olga@il.ibm.com>
20182
20183         PR tree-optimization/34701
20184         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
20185         when the structure size is not a power of 2.
20186
20187 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
20188
20189         * doc/install.texi: Add doc for --enable-checking=df.
20190
20191 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20192
20193         PR rtl-optimization/34808
20194         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
20195
20196 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
20197
20198         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
20199         input.
20200
20201 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
20202
20203         PR rtl-optimization/26854
20204         PR rtl-optimization/34400
20205         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
20206         DF_RD->gen.
20207         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
20208         (df_rd_bb_info.expanded_lr_out): New.
20209         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
20210         * loop_iv.c (iv_analysis_loop_init): Ditto.
20211         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
20212         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
20213         Added code to allocate, initialize or free expanded_lr_out.
20214         (df_rd_bb_local_compute_process_def): Restructured to make
20215         more understandable.
20216         (df_rd_confluence_n): Add code to do nothing with fake edges and
20217         code to no apply invalidate_by_call sets if the sets are being trimmed.
20218         (df_lr_local_finalize): Renamed to df_lr_finalize.
20219         (df_live_local_finalize): Renamed to df_live_finalize.
20220
20221 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
20222
20223         PR target/34831
20224         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
20225         deciding whether to use reciprocal instructions.
20226
20227 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
20228
20229         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
20230         dwarf2out_note_section_used if cold_text_section is NULL.
20231
20232 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
20233
20234         PR gcov-profile/34610
20235         * tree-cfg.c (make_edges): Mark both outgoing edges from
20236         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
20237         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
20238         from OMP_FOR and OMP_CONTINUE outgoing edges.
20239
20240         * tree-profile.c (tree_profiling): Return early if
20241         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
20242         at the end.
20243         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
20244         from cfun to child_cfun.
20245         * function.h (struct function): Add after_tree_profile bit.
20246
20247 2008-01-19 Anatoly Sokolov <aesok@post.ru>
20248
20249         * config/avr/avr.S (_exit): Disable interrupt.
20250
20251 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
20252             Steven Bosscher  <stevenb.gcc@gmail.com>
20253
20254         PR rtl-optimization/26854
20255         PR rtl-optimization/34400
20256         * df-problems.c (df_live_scratch): New scratch bitmap.
20257         (df_live_alloc): Allocate df_live_scratch when doing df_live.
20258         (df_live_reset): Clear the proper bitmaps.
20259         (df_live_bb_local_compute): Only process the artificial defs once
20260         since the order is not important.
20261         (df_live_init): Init the df_live sets only with the variables
20262         found live by df_lr.
20263         (df_live_transfer_function): Use the df_lr sets to prune the
20264         df_live sets as they are being computed.
20265         (df_live_free): Free df_live_scratch.
20266
20267 2008-01-18  Ian Lance Taylor  <iant@google.com>
20268
20269         * common.opt: Add fmerge-debug-strings.
20270         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
20271         flag_merge_debug_strings rather than flag_merge_constants.
20272         * doc/invoke.texi (Option Summary): Mention
20273         -fmerge-debug-strings.
20274         (Debugging Options): Document -fmerge-debug-strings.
20275
20276 2008-01-18  Ian Lance Taylor  <iant@google.com>
20277
20278         PR c++/33407
20279         * tree.h (DECL_IS_OPERATOR_NEW): Define.
20280         (struct tree_function_decl): Add new field operator_new_flag.
20281         * tree-inline.c (expand_call_inline): When inlining a call to
20282         operator new, force the return value to go into a variable, and
20283         set DECL_NO_TBAA_P on that variable.
20284         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
20285
20286 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
20287
20288         PR debug/34484
20289         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
20290         DWARF2_DEBUGGING_INFO.
20291         (dwarf2out_note_section_used): Ditto.  Add prototype.
20292         (have_multiple_function_sections, text_section_used,
20293         cold_text_section_used, *cold_text_sections): Move declarations
20294         before their uses.
20295
20296 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
20297
20298         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
20299         field and add signal_ra.
20300         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
20301         assignments to frame state pc.  Move end of stack check after
20302         MD_FALLBACK_FRAME_STATE_FOR.
20303         (uw_update_context_1): Use frame state signal_regs if set, instead
20304         of checking signal_frame flag.
20305         (uw_update_context): Use frame state signal_ra if set.
20306         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
20307         * config/xtensa/linux-unwind.h: New file.
20308
20309 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
20310
20311         * modulo-sched.c (get_sched_window): Fix comment typo.
20312
20313 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
20314
20315         PR tree-optimization/34648
20316         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
20317
20318 2008-01-17  Anatoly Sokolov <aesok@post.ru>
20319
20320         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
20321         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
20322
20323 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
20324
20325         PR rtl-optimization/34400
20326         * df-core.c (df_worklist_dataflow_overeager,
20327         df_worklist_dataflow_doublequeue): New functions.
20328         (df_worklist_dataflow): Two different worklist solvers.
20329         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
20330         New param.
20331
20332 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20333
20334         PR testsuite/34821
20335         * doc/invoke.texi: Document the dependence on pthread for fopenmp
20336         and ftree-parallelize-loops.
20337
20338 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
20339
20340         PR rtl-optimization/34826
20341         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
20342
20343 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
20344
20345         * global.c (find_reg): Mark the eh regs as used if necessary.
20346         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
20347         * ra.h (struct allocno): no_eh_reg field added.  Changed
20348         no_stack_reg type to bitfield.
20349
20350 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
20351
20352         * tree.c (substitute_in_expr): Add missing 'break'.
20353
20354 2008-01-17  Richard Guenther  <rguenther@suse.de>
20355
20356         PR tree-optimization/34825
20357         * tree-ssa-math-opts.c (is_division_by): Do not recognize
20358         x / x as division to handle.
20359
20360 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20361
20362         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
20363         "-pthread" is specified.
20364         * pa-hpux11.h (LIB_SPEC): Likewise.
20365
20366 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
20367             Peter Bergner  <bergner@vnet.ibm.com>
20368
20369         PR rtl-optimization/33796
20370         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
20371
20372 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20373
20374         PR libgfortran/34699
20375         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
20376         static links.
20377         * pa-hpux10.h (LINK_SPEC): Likewise.
20378         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
20379
20380 2008-01-16  Richard Guenther  <rguenther@suse.de>
20381
20382         PR middle-end/32628
20383         * fold-const.c (fold_convert_const_int_from_int): Do not
20384         set overflow if that occured only because of a sign extension
20385         change when converting from/to a sizetype with the same
20386         precision and signedness.
20387
20388 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
20389
20390         PR debug/34249
20391         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
20392         location address to the correct place.  Update copyright year.
20393
20394 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20395
20396         * lambda-code.c (lambda_transform_legal_p): Handle the case of
20397         no dependences in the dependence_relations vector.
20398
20399 2008-01-16  Jan Hubicka  <jh@suse.cz>
20400
20401         PR rtl-optimization/31396
20402         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
20403         * cfg.c (dump_reg_info): Print it.
20404         * regs.h (struct reg_info_t): add freq_calls_crossed.
20405         (REG_FREQ_CALLS_CROSSED): New macro.
20406         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
20407         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
20408         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
20409         regmove_optimize): Update call crossed frequencies.
20410         * local-alloc.c (struct qty): Add freq_calls_crossed.
20411         (alloc_qty): Copute freq_calls_crossed.
20412         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
20413         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
20414         * ra.h (struct allocno): Add freq_calls_crossed.
20415
20416 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20417
20418         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
20419         libgomp when compiling with ftree-parallelize-loops.
20420         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
20421
20422 2008-01-16  Richard Guenther  <rguenther@suse.de>
20423
20424         PR tree-optimization/34769
20425         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
20426         * tree.c (int_cst_value): Instead make this function more
20427         permissive in what it accepts as valid input.  Document this
20428         function always sign-extends the value.
20429
20430 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
20431             Richard Guenther  <rguenther@suse.de>
20432
20433         PR c/34668
20434         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
20435         (gimple_fold_indirect_ref_rhs): ... this.
20436         (gimple_fold_indirect_ref): New function with foldings
20437         that preserve lvalueness.
20438         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
20439         * tree-flow.h (gimple_fold_indirect_ref): Declare.
20440         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
20441         to fold an INDIRECT_REF, fall back to the old use of
20442         fold_indirect_ref_1.
20443
20444 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
20445
20446         * tree-data-ref.c (subscript_dependence_tester_1): Call
20447         free_conflict_function.
20448         (compute_self_dependence): Same.
20449
20450 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
20451
20452         PR debug/34249
20453         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
20454         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
20455         function global.
20456         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
20457         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
20458         for DWARF2_UNWIND_INFO targets.
20459
20460 2008-01-16  Richard Guenther  <rguenther@suse.de>
20461
20462         PR c/34768
20463         * c-typeck.c (common_pointer_type): Do not merge inconsistent
20464         type qualifiers for function types.
20465
20466 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
20467
20468         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
20469         loop_iterator li from previous commit.
20470
20471 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
20472
20473         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
20474
20475 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
20476
20477         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
20478         (parallelize_loops): Don't parallelize irreducible components.
20479
20480 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20481
20482         PR c++/24924
20483         * c-opts (c_common_post_options): Do not enable CPP
20484         flag_pedantic_errors by default.
20485
20486 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
20487
20488         PR rtl-optimization/31944
20489         * cse.c (remove_pseudo_from_table): New function.
20490         (merge_equiv_classes): Use above function to remove pseudo-registers.
20491         (invalidate): Likewise.
20492
20493 2008-01-13  Richard Guenther  <rguenther@suse.de>
20494
20495         PR middle-end/34601
20496         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
20497         instead of TYPE_MODE to deal with calls from expand_one_error_var.
20498
20499 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
20500
20501         * gcse.c (cprop_jump): Call validate_unshare_change instead of
20502         validate_change to unshare the source of the PC set.
20503
20504 2008-01-12  Jan Hubicka  <jh@suse.cz>
20505
20506         PR middle-end/32135
20507         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
20508         references above array bounds.  This might trigger bounds checks for
20509         pointers to arrays.
20510
20511 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
20512
20513         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
20514         new_replaceable_dependencies.
20515
20516 2008-01-12  Doug Kwan  <dougkwan@google.com>
20517
20518         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
20519         instead of OPT_Wreturn_type in warning due to ignored return type
20520         qualifiers.
20521         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
20522         options included in -Wextra.
20523         * c.opt: New option -Wignored_qualifiers.
20524         * doc/invoke.texi (Warning Options, -Wextra): Add new option
20525         -Wignore_qualifiers.
20526         (-Wignored-qualifiers): Document.
20527         (-Wreturn-type): Remove description of functionality now handled
20528         by -Wignored-qualifiers.
20529
20530 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
20531
20532         PR ada/33788
20533         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
20534         NOP_EXPR if it is between integral types with the same precision.
20535
20536 2008-01-12  Jan Hubicka  <jh@suse.cz>
20537
20538         PR other/28023
20539         * invoke.texi (max-inline-recursive-depth): Fix default value.
20540
20541 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
20542
20543         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
20544         correct type.
20545
20546 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
20547
20548         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
20549
20550 2008-01-11  James E. Wilson  <wilson@specifix.com>
20551
20552         PR target/26015
20553         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
20554
20555 2008-01-11  Anatoly Sokolov <aesok@post.ru>
20556
20557         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
20558         save/restore frame pointer register and don't use 'call-prologues'
20559         optimization in function with "OS_task" attribute.
20560
20561 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
20562
20563         PR middle-end/31309
20564         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
20565         when copying to memory.
20566
20567 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
20568
20569         PR rtl-optimization/30905
20570         * cfgcleanup.c: Include dce.h
20571         (crossjumps_occured): New global variable.
20572         (try_crossjump_bb): Exit loop after finding a fallthru edge.
20573         If something changed, set crossjumps_occured to true.
20574         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
20575         Don't add/remove fake edges to exit here...
20576         (cleanup_cfg): ...but do it here, when crossjumping.
20577         Run a fast DCE when successful crossjumps occured in the latest
20578         iteration of try_optimize_cfg.
20579
20580 2008-01-11  Richard Guenther  <rguenther@suse.de>
20581
20582         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
20583         (struct vn_unary_op_s): Likewise.
20584         (vn_reference_insert): Free old reference on hash collision.
20585
20586 2008-01-10  Raksit Ashok  <raksit@google.com>
20587
20588         PR rtl-optimization/27971
20589         * combine.c (find_split_point): Split PLUS expressions which are
20590         inside a MEM rtx, and whose first operand is complex.
20591
20592 2008-01-10  DJ Delorie  <dj@redhat.com>
20593
20594         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
20595         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
20596         (m32c_hard_regno_ok): Call the underlying function.
20597
20598 2008-01-10  Richard Guenther  <rguenther@suse.de>
20599
20600         PR middle-end/34683
20601         * tree-cfg.c (tree_merge_blocks): Do not go through the
20602         full-blown folding and stmt updating path if we just deal
20603         with virtual operands.
20604         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
20605         test for abnormal SSA_NAMEs.
20606
20607 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
20608
20609         PR middle-end/34641
20610         * reload.c (push_reload): Add assertions.  All constants from
20611         reg_equiv_constant should have been used for replacing the respective
20612         pseudo earlier.
20613         (find_reloads_address): Invoke find_reloads_address_part for
20614         constant taken from the reg_equiv_constant array.
20615
20616 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
20617
20618         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
20619         field (valnum) the first in the struct.  Replace bools with
20620         unit bit fields.
20621
20622 2008-01-10  Richard Guenther  <rguenther@suse.de>
20623
20624         PR tree-optimization/34651
20625         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
20626         types and ordering for masking and converting.
20627
20628 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
20629
20630         PR tree-optimization/34017
20631         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
20632         also for PHI_NODE expressions.
20633
20634 2008-01-09  Jan Hubicka  <jh@suse.cz>
20635
20636         PR tree-optimization/34708
20637         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
20638         based on number of case labels.
20639         (init_inline_once): Remove switch_cost.
20640         * tree-inline.h (eni_weights_d): Remove switch_cost.
20641
20642 2008-01-09  Richard Guenther  <rguenther@suse.de>
20643         Andrew Pinski  <andrew_pinski@playstation.sony.com>
20644
20645         PR middle-end/30132
20646         * gimplify.c (gimplify_cond_expr): Do not create an addressable
20647         temporary if an rvalue is ok or an lvalue is not required.
20648
20649 2008-01-09  Richard Guenther  <rguenther@suse.de>
20650
20651         PR middle-end/34458
20652         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
20653         adjust return type.
20654
20655 2008-01-09  Richard Guenther  <rguenther@suse.de>
20656
20657         PR middle-end/34679
20658         * tree.c (host_integerp): Check for sizetype only if the
20659         type is an integer type.
20660
20661 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
20662
20663         PR debug/26364
20664         * opts.c (decode_options): Disable inlining of functions called
20665         once if not in unit-at-a-time mode.
20666
20667 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
20668
20669         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
20670
20671 2008-01-08  Richard Guenther  <rguenther@suse.de>
20672
20673         PR middle-end/31863
20674         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
20675         out early if the result will be unused.
20676
20677 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
20678
20679         PR target/34709
20680         Revert:
20681
20682         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
20683         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
20684         for TARGET_RECIP.
20685
20686 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
20687
20688         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
20689         for vectorization tuned.
20690
20691 2008-01-08  Richard Guenther  <rguenther@suse.de>
20692
20693         PR tree-optimization/34683
20694         * tree-ssa-operands.c (operand_build_cmp): Export.
20695         * tree-ssa-operands.h (operand_build_cmp): Declare.
20696         * tree-vn.c (vuses_compare): Remove.
20697         (sort_vuses): Use operand_build_cmp.
20698         (sort_vuses_heap): Likewise.
20699         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
20700         to re-use old VEC if available.  Do not sort already sorted VUSEs.
20701         (vdefs_to_vec): Do not sort already sorted VDEFs.
20702
20703 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
20704
20705         PR middle-end/34694
20706         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
20707
20708 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
20709
20710         PR target/34702
20711         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
20712         limitations of reciprocal sequences on x86 targets.
20713
20714 2008-01-08  Richard Guenther  <rguenther@suse.de>
20715
20716         PR tree-optimization/34683
20717         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
20718
20719 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
20720
20721         PR target/34622
20722         * config/darwin.c (darwin_mergeable_string_section): Don't use
20723         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
20724
20725 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
20726
20727         PR target/34682
20728         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
20729         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
20730         predicates of op0 and op1 to register_operand.
20731         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
20732         expander using X87MODEF mode iterator.  Change predicates of
20733         op0 and op1 to register_operand.
20734         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
20735         corresponding patterns and macroize using MODEF macro.  Change
20736         predicates of op0 and op1 to register_operand and remove
20737         "m" constraint. Disparage "r" alternative with "!".
20738         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
20739         macroize using X87MODEF macro.  Change predicates of op0 and op1
20740         to register_operand and remove "m" constraint.  Disparage "r"
20741         alternative with "!".
20742         (absneg splitter with memory operands): Remove.
20743         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
20744         patterns and macroize using X87MODEF mode iterator.
20745         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
20746         Change predicate of op1 to register_operand.
20747         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
20748         for memory operands.
20749
20750 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
20751
20752         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
20753
20754 2008-01-07  Richard Guenther  <rguenther@suse.de>
20755
20756         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
20757         fields.
20758
20759 2008-01-07  Richard Guenther  <rguenther@suse.de>
20760
20761         PR tree-optimization/34683
20762         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
20763         VOPs of the needed size to save memory.  Use VEC_quick_push
20764         to save compile-time.
20765         (vdefs_to_vec): Likewise.
20766
20767 2008-01-07  Sa Liu  <saliu@de.ibm.com>
20768
20769         * config/spu/spu.md (divdf3): Genetate inline code for double
20770         division.  The implementation doesn't handle INF or NAN, therefore it
20771         only applies when -ffinite-math-only is given.
20772
20773 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
20774
20775         PR libstdc++/34680
20776         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
20777         * doc/cpp.texi ([Common Predefined Macros]): Document.
20778
20779 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
20780
20781         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
20782         order to use commutative addition instead of subtraction.
20783
20784 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20785             Mircea Namolaru  <namolaru@il.ibm.com>
20786             Vladimir Yanovsky  <yanov@il.ibm.com>
20787             Revital Eres  <eres@il.ibm.com>
20788
20789         PR tree-optimization/34263
20790         * tree-outof-ssa.c (process_single_block_loop_latch,
20791         contains_tree_r): New functions.
20792         (analyze_edges_for_bb): Call process_single_block_loop_latch
20793         function to empty single-basic-block latch block if possible.
20794
20795 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
20796
20797         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
20798         for TARGET_RECIP.
20799         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
20800
20801 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
20802
20803         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
20804
20805 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
20806
20807         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
20808
20809 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
20810
20811         PR tree-optimization/34618
20812         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
20813         flag from T.
20814
20815 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
20816
20817         PR target/34673
20818         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
20819         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
20820         Update copyright year.
20821
20822         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
20823         Update copyright year.
20824         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
20825         using NR fixup.
20826
20827 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
20828
20829         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
20830         edge does not point to current bb before changing need_assert.
20831
20832 2008-01-04  Richard Guenther  <rguenther@suse.de>
20833
20834         PR middle-end/34029
20835         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
20836         for verifying purposes if they are is_gimple_min_invariant.
20837
20838 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
20839
20840         PR tree-optimization/34448
20841         PR tree-optimization/34465
20842         * gimplify.c (gimplify_init_constructor): Add new parameter
20843         notify_temp_creation.  Use it.
20844         (gimplify_modify_expr_rhs): Take volatiles into account when
20845         optimizing constructors.
20846         Do not optimize constructors if gimplify_init_constructor will dump to
20847         memory.
20848         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
20849         * gcc.c-torture/compile/pr34448.c: New.
20850
20851 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
20852
20853         PR gcov-profile/34609
20854         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
20855         return_slot if result is TREE_ADDRESSABLE.
20856
20857 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
20858
20859         * config/mips/mips.md (sqrt_condition): Tweak comment.
20860         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
20861
20862 2008-01-03  Tom Tromey  <tromey@redhat.com>
20863
20864         PR c/34457
20865         * c-common.c (c_type_hash): Handle VLAs.
20866
20867 2008-01-03  Jan Hubicka  <jh@suse.cz>
20868
20869         PR tree-optimization/31081
20870         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
20871         0 when inlining and not inlining to first basic block.
20872         (remap_decl): When var is initialized to 0, don't set default_def.
20873         (expand_call_inline): Set entry_bb.
20874         * tree-inline.h (copy_body_data): Add entry_bb.
20875
20876 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
20877
20878         PR c++/34619
20879         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
20880         before returning.
20881
20882         PR tree-optimization/29484
20883         * tree-inline.c (inline_forbidden_p_2): New function.
20884         (inline_forbidden_p): Disallow inlining if some static var
20885         has an address of a local LABEL_DECL in its initializer.
20886         * doc/extend.texi (Labels as Values): Document &&foo behaviour
20887         vs. inlining.
20888
20889 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
20890
20891         PR tree-optimization/34635
20892         * tree-data-ref.c (add_other_self_distances): Make sure that the
20893         evolution step is constant.
20894
20895 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
20896
20897         PR middle-end/34608
20898         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
20899
20900 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
20901
20902         * tree-sra.c (scalarize_init): Insert the generate_element_init
20903         statements after the generate_element_zero statements.
20904
20905 2008-01-02  Richard Guenther  <rguenther@suse.de>
20906
20907         PR middle-end/34093
20908         PR middle-end/31976
20909         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
20910         for very large number of operands instead of ICEing.
20911
20912 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
20913
20914         PR target/34013
20915         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
20916         while stack probing.
20917
20918 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
20919
20920         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
20921         in C++0x mode.
20922
20923 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
20924
20925         PR libmudflap/26442
20926         * tree-mudflap.c (mx_register_decls): Guard warning by
20927         !DECL_ARTIFICIAL check.
20928
20929 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
20930
20931         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
20932         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
20933         sse5_perm<mode>): Fix constraints.