OSDN Git Service

PR libmudflap/36397
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
2
3         PR libmudflap/36397
4         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
5
6 2008-09-14  Andreas Schwab  <schwab@suse.de>
7
8         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
9
10 2008-09-14  Jan Hubicka  <jh@suse.cz>
11
12         * invoke.texi (-fconserve-stack): Document.
13         * opts.c (decode_options): Handle conserve_stack.
14         * common.opt (fconvserve_stack): New.
15
16 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
17
18         * config.host: Add x-aix to host_xmake_file.
19         * config/rs6000/t-aix52: Do not override LDFLAGS.
20         * config/rs6000/x-aix: New file.
21
22 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
23
24         PR target/19636
25         PR target/24894
26         PR target/31644
27         PR target/31786
28         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
29         is not recognized as a valid register usage. Allow REG_X to be used
30         as a base pointer.
31         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
32         forces a reload when using a base register.
33
34 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
35
36         * config/i386/cygming-crtend.c (register_frame_ctor): If
37         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
38         directly with atexit.
39         (deregister_frame_ctor): Rename to ...
40         (deregister_frame_dtor): Use to call __gcc_deregister_frame
41         if !DEFAULT_USE_CXA_ATEXIT.
42
43 2008-09-13  Jan Hubicka  <jh@suse.cz>
44
45         * cgraph.c: Include value-prof.h
46         * Makefile.in (cgraph.o): Add value-prof.h dependency.
47
48 2008-09-13  Jan Hubicka  <jh@suse.cz>
49
50         PR middle-end/32581
51         * tree-profile.c (add_abnormal_goto_call_edges): New function.
52         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
53         tree_gen_one_value_profiler, tree_gen_average_profiler,
54         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
55
56 2008-09-13  Jan Hubicka  <jh@suse.cz>
57
58         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing too
59         many bytes on misalligned blocks.
60
61 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
62
63         * doc/cfg.texi: Fix some typos.
64         * doc/extend.texi: Likewise.
65         * doc/install.texi: Likewise.
66         * doc/invoke.texi: Likewise.
67         * doc/rtl.texi: Likewise.
68         * doc/tree-ssa.texi: Likewise.
69
70 2008-09-13  Richard Guenther  <rguenther@suse.de>
71
72         PR middle-end/30141
73         * tree-nested.c (finalize_nesting_tree_1): Generate valid
74         gimple stores for memory rhs.
75
76 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
77
78         PR rtl-optimization/37489
79         * cse.c (fold_rtx): Don't return const_true_rtx for float
80         compare if FLOAT_STORE_FLAG_VALUE is undefined.
81
82 2008-09-13  Jan Hubicka  <jh@suse.cz>
83
84         PR tree-optimization/37392
85         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
86
87 2008-09-13  Martin Jambor  <mjambor@suse.cz>
88             Jan Hubicka  <jh@suse.cz>
89
90         * cgraph.c (free_edges): New variable.
91         (NEXT_FREE_EDGE): New macro.
92         (cgraph_free_edge): New function.
93         (cgraph_remove_edge): Call cgraph_remove_edge_1.
94         (cgraph_node_remove_callees): Likewise.
95         (cgraph_node_remove_callers): Likewise.
96         (cgraph_create_edge): Reuse edges from the free list.  Do not
97         update uid if doing so.
98         (cgraph_remove_*_hook): Add free call.
99
100 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
101
102         * ira-color.c (conflict_allocno_vec): Delete.
103         (update_cost_queue_elem): New structure.
104         (update_cost_queue): New variable.
105         (update_cost_queue_tail): Likewise.
106         (update_cost_queue_elems): Likewise.
107         (allocno_update_cost_check): Delete.
108         (initiate_cost_update): Allocate update_cost_queue_elems
109         instead of allocno_update_cost_check.
110         (finish_cost_update): Update the free()s accordingly.
111         (start_update_cost): New function.
112         (queue_update_cost): Likewise.
113         (get_next_update_cost): Likewise.
114         (update_copy_costs_1): Inline into...
115         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
116         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
117         once we've established they are equal.  Don't allocate update
118         costs if there is nothing to add to them.
119         (update_conflict_hard_regno_costs): Remove ALLOCNO and
120         DIVISOR arguments.  Use a queue instead of recursive calls;
121         process all the allocnos in the initial queue, rather than
122         a single allocno.
123         (assign_hard_reg): Use queue_update_cost instead of
124         conflict_allocno_vec.  Queue coalesced allocnos instead
125         of calling update_conflict_hard_regno_costs for each one.
126         Just call update_conflict_hard_regno_costs once for the
127         entire queue.
128         (ira_color): Remove conflict_allocno_vec handling.
129
130 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
131
132         PR tree-optimization/37484
133         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
134         (save_var_name): Same.
135         (initialize_cloog_names): Same.
136         (initialize_cloog_names): Same.
137
138 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
139
140         * tree-scalar-evolution.c (set_instantiated_value): Set instantiated_below.
141
142 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
143
144         PR rtl-opt/37377
145
146         * ira-build.c (common_loop_tree_node_dominator): Remove.
147         (copy_live_ranges_to_removed_store_destinations): New function.
148         (regno_top_level_allocno_map): Move to top level from ...
149         (ira_flattening): ... here.  Use
150         copy_live_ranges_to_removed_store_destinations.
151
152         * ira-emit.c (generate_edge_moves): Fix a comment.
153
154 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
155
156         PR target/37466
157         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
158         scratch register after 'set' pattern.
159
160 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
161
162         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
163         information passed to mark_reg_pointer.
164         * explow.c (force_reg): Likewise.
165
166 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
167
168         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
169         when building for the celledp architecture.
170
171 2008-09-12  Richard Guenther  <rguenther@suse.de>
172
173         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
174
175 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
176
177         PR rtl-optimization/37424
178         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
179         the regnos instead of the addresses.
180
181 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
182
183         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
184
185 2008-09-11  Richard Guenther  <rguenther@suse.de>
186
187         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
188         entering the weaker equivalence recording.
189
190         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
191
192 2008-09-11  Jeff Law <law@redhat.com>
193
194         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
195         by assign_stack_local on the IRA path for stack slot sharing
196         as well as the non-IRA path.
197
198 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
199
200         * config/i386/i386.h: Fix whitespace issues.
201
202 2008-09-11  Martin Jambor  <mjambor@suse.cz>
203
204         * ipa-prop.h (struct ipa_param_flags): Removed.
205         (struct ipa_param_descriptor): New structure.
206         (struct ipa_node_params): ipcp_lattices, param_decls and
207         param_flags moved to ipa_param_description.
208         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
209         descriptors.  Renamed all users.
210         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
211         changed to access descriptors.  Renamed all users.
212         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
213         to access descriptors. Renamed all users.
214         * ipa-cp.c (ipcp_init_cloned_node): Call
215         ipa_initialize_node_params instead of ipa_count_formal_params and
216         ipa_create_param_decls_array.
217         (ipcp_analyze_node): Likewise.
218         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
219         descriptors.  Renamed all users.
220         (ipcp_initialize_node_lattices): Remove allocation.
221         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
222         ipa_initialize_node_params instead of ipa_count_formal_params and
223         ipa_create_param_decls_array.
224         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
225         ipa_populate_param_decls, made static, added parameter info,
226         renamed mt to node, removed allocation, changed to use
227         descriptors.
228         (ipa_count_formal_params): Made static, added parameter info,
229         renamed mt to node.
230         (ipa_initialize_node_params): New function.
231         (ipa_check_stmt_modifications): Changed to use descriptors.
232         (ipa_detect_param_modifications): Removed allocation, changed to
233         use descriptors.
234         (ipa_note_param_call): Changed to use descriptors.
235         (ipa_analyze_params_uses): Removed allocation.
236         (ipa_free_node_params_substructures): Changed to use descriptors.
237         (ipa_edge_duplication_hook): Use the unused attribute.
238         (ipa_node_duplication_hook): Use the unused attribute, changed to
239         use descriptors, changed to duplicate descriptors.
240
241         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
242         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
243         indirect inlining.  Made static.
244         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
245         functions called only once.
246         (cgraph_decide_recursive_inlining): Don't call
247         ipa_propagate_indirect_call_infos, pass new_edges to
248         cgraph_mark_inline_edge instead.
249         (cgraph_decide_inlining_of_small_functions): Don't call
250         ipa_propagate_indirect_call_infos, pass new_edges to
251         cgraph_mark_inline_edge instead.
252         (cgraph_decide_inlining): Don't call
253         ipa_propagate_indirect_call_infos.
254         * ipa-prop.c: Check that vectors are allocated.
255
256         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
257         iff a new cgraph edges have been created.
258         (cgraph_decide_inlining): New variable redo_always_inline.
259         Flattening and always_inlining loop until callgraph stabilizes.
260         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
261         true iff new cgraph edges have been created.
262         (propagate_info_to_inlined_callees): Likewise.
263         (ipa_propagate_indirect_call_infos): Likewise.
264
265 2008-09-11  Richard Guenther  <rguenther@suse.de>
266
267         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
268         (set_prologue_iterations): Likewise.
269         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
270         Likewise.
271         (vect_update_init_of_dr): Likewise.
272         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
273         type verification.
274         * fold-const.c (fold_unary): Do not generate calculations
275         in sub-types.
276
277 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
278
279         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
280         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
281         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
282
283         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return a bool.
284         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
285         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
286         before finalizing the changes.
287         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
288         for BIT_IOR_EXPR.
289         (simplify_truth_ops_using_ranges): New.
290         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
291         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
292         whether a simplification was made.
293         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
294         use a switch statement and also call simplify_truth_ops_using_ranges.
295
296 2008-09-11  Jan Hubicka  <jh@suse.cz>
297
298         * ggc-common.c (loc_array): Make static.
299         * dce.c (rest_of_handle_ud_dce): Free worklist.
300
301 2008-09-11  Jan Hubicka  <jh@suse.cz>
302
303         * cgraph.c (cgraph_release_function_body): Plug memory leak on
304         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct function
305         so we are sure we do not dangle it forever.
306         * function.c (outer_function_chain, find_function_data): Remove.
307         (function_context_stack): New.
308         (push_function_context, pop_function_context): Update.
309         * function.h (struct function): Remove pointer outer.
310         (outer_function_chain, find_function_data): Remove.
311         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
312
313 2008-09-11  Jan Hubicka  <jh@suse.cz>
314
315         PR middle-end/37448
316         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
317
318 2008-09-11  Jan Hubicka  <jh@suse.cz>
319
320         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
321
322 2008-09-11  Jan Hubicka  <jh@suse.cz>
323
324         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
325         (free_var_map_entry): New function.
326         (redirect_edge_var_map_destroy): Use it.
327
328 2008-09-11  Jan Hubicka  <jh@suse.cz>
329
330         PR middle-end/37448
331         * tree-inline.c (add_lexical_block): Replace with ...
332         (prepend_lexical_block): ... prepend at begginig.
333         (remap_blocks): Use it and reverse later.
334         (expand_call_inline): Use prepend_lexical_block.
335
336 2008-09-11  Jan Hubicka  <jh@suse.cz>
337
338         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
339
340 2008-09-11  Jan Hubicka  <jh@suse.cz>
341
342         * function.c (free_after_compilation): Call insn_locators_free.
343         * cfglayout.c (insn_locators_free): New function.
344         * rtl.h (insn_locators_free): Declare.
345
346 2008-09-11  Jan Hubicka  <jh@suse.cz>
347
348         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
349         vector pointer.
350         (cond_move_process_if_block): Update call.
351
352 2008-09-11  Jan Hubicka  <jh@suse.cz>
353
354         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
355         * vec.c: Include hashtab.h
356         (vec_descriptor, ptr_hash_entry): New structures.
357         (vec_desc_hash, vec_ptr_map): New static variables.
358         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
359         register_overhead, free_overhead, vec_heap_free): New functions.
360         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
361         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
362         (cmp_statistic, add_statistics, dump_vec_loc_statistics): New functions.
363
364 2008-09-11  Ira Rosen  <irar@il.ibm.com>
365
366         PR tree-optimization/37474
367         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
368         length of load permutation.
369
370 2008-09-11  Andreas Schwab  <schwab@suse.de>
371
372         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
373
374 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
375
376         PR target/37382
377         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
378         * dse.c (find_shift_sequence): Use extract_low_bits instead of
379         simplify_gen_subreg.
380
381 2008-09-11  Ira Rosen  <irar@il.ibm.com>
382
383         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
384         for alias check.
385
386 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
387
388         PR middle-end/37338
389         * gimplify.c (gimplify_body): Call default_rtl_profile.
390
391         PR target/36904
392         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
393         instead of tok->val.node if not expanding to something else.  Handle
394         intervening CPP_PADDING tokens.
395         (altivec_categorize_keyword): Remove unneeded comparisons.
396
397 2008-09-10  Richard Guenther  <rguenther@suse.de>
398
399         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
400
401 2008-09-10  Richard Guenther  <rguenther@suse.de>
402
403         PR middle-end/37432
404         * tree-inline.c (insert_init_stmt): Make sure to not
405         insert invalid gimple stores.
406
407 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
408
409         PR tree-optimization/37388
410         * toplev.c (process_options): Fail and warn when graphite
411         flags are used, but the compiler has not been configured
412         with graphite libraries.
413         * graphite.c (graphite_transform_loops): Remove printfs
414         to dump_file for the case when graphite is not available.
415
416 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
417
418         PR target/37434:
419         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
420         the even element into register.
421         (ix86_expand_vector_init_general): Don't use
422         ix86_expand_vector_init_interleave on V16QImode and V8HImode
423         if we can't move from GPR to SSE register directly.
424
425 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
426
427         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
428         not lose track of the number of NOPs needed.  Number of NOPs needed
429         for sync vs. loads workaround was switched; corrected.  Run second
430         pass for all workarounds.  No NOPs needed after call insns.  Change
431         second pass to use find_next_insn_start and find_load helpers in order
432         to properly detect parallel insns.
433         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
434
435 2008-09-10  Jan Hubicka  <jh@suse.cz>
436
437         * value-prof.c (gimple_ic): Fix tuplification bug.
438         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
439         var warning.
440
441 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
442
443         PR tree-optimization/37353
444         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
445         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
446         calls instead of cond_dead_built_in_calls.
447         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
448         initalize the vector only before adding first entry.  Use VEC_safe_push
449         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
450         shrink_wrap_conditional_dead_built_in_calls call.
451
452 2008-09-10  Ira Rosen  <irar@il.ibm.com>
453
454         PR tree-optimization/37385
455         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new argument,
456         and use it as a vector type if not NULL.
457         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
458         vectorized rhs.
459         (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
460         argument.
461         (vectorizable_load): Likewise.
462
463 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
464
465         * config/i386/i386.md (SWI32): New mode iterator.
466         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
467         of SWI.
468
469 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
470
471         PR rtl-optimization/37435
472         * caller-save.c (insert_restore, insert_save): Check the mode by
473         reg_save_code.
474
475 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
476
477         PR other/37265
478         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
479         splay tree lookup.
480         (dw2_output_indirect_constant_1): Use unstripped name in symbol
481         reference.
482
483 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
484
485         * doc/invoke.texi (ARM Options): Correct errors in discussion
486         of -mfloat-abi, -mhard-float, and -msoft-float.
487
488 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
489             Jan Hubicka  <jh@suse.cz>
490
491         PR middle-end/37356
492         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
493         calling gimple_regimplify_operands on it.  Iterate over all newly
494         added statements, not just the last one.
495         (insert_init_stmt): Insert stmt into seq first, then call
496         gimple_regimplify_operands on it.  Don't create new gimplification
497         context, nor find referenced vars.
498
499 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
500
501         PR other/37419
502         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
503         to pointer to vector pointer.
504         * ipa-prop.c (ipa_propagate_indirect_call_infos,
505         propagate_info_to_inlined_callees): Likewise.
506         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
507         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
508         ipa_check_create_edge_args.
509         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last argument
510         to pointer to vector pointer.
511         (cgraph_decide_inlining_of_small_function): Adjust
512         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
513         calls.
514
515         PR target/37438
516         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when optimizing
517         for size, not speed.
518
519         PR rtl-optimization/37408
520         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
521         if parm is promoted.
522
523 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
524
525         PR tree-optimization/37375
526         * tree-scalar-evolution.c (scev_info_str): Add field instantiated_below.
527         (new_scev_info_str, eq_scev_info, find_var_scev_info,
528         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
529         set_instantiated_value): Pass instantiated_below.
530         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls to
531         above functions.
532         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
533         the definitions are not instantiated.
534
535         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
536         (block_before_loop): New.
537         * tree-data-ref.c (dr_analyze_indices): Update uses of instantiate_scev.
538         * graphite.c (block_before_scop): New.
539         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
540         basic block, not a loop for determining the parameters.
541         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
542         scop.
543         (idx_record_params, find_params_in_bb, find_scop_parameters,
544         build_loop_iteration_domains, add_conditions_to_domain): Update calls
545         to instantiate_scev.
546
547         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
548
549 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
550
551         PR rtl-opt/37333
552
553         * ira-build.c (ira_create_allocno): Setup frequency to 0.
554
555         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
556         Check zero freq and increase if necessary.
557
558 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
559
560         * ira-conflicts.c (process_regs_for_copy): Check that the hard
561         regno is in the right range.  Add comments.
562
563 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
564
565         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
566         warnings.
567         * mips-tfile.c (copy_object): Cast alloca result to int *.
568         * mips-tdump.c (print_symbol): Cast xmalloc return values to
569         proper types.
570         Rename class to sclass.
571         (read_tfile): Cast read_seek return values to proper types.
572         Cast xcalloc return value to proper type.
573
574 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
575
576         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
577         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
578         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
579
580 2008-09-09  Jan Hubicka  <jh@suse.cz>
581
582         * profile.c (is_edge_inconsistent): Add debug output; ignore
583         negative count on fake edges.
584         (is_inconsistent): Add debug output.
585
586 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
587
588         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
589         dump message.
590         (choose_ready): When first insn is chosen from the ready list, also
591         dump it.
592
593 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
594
595         PR rtl-optimization/37360
596         * haifa-sched.c (max_issue): Do not assert that we never issue more
597         insns than issue_rate.  Add comment.
598
599 2008-09-09  Richard Guenther  <rguenther@suse.de>
600
601         * tree-cfg.c (verify_types_in_gimple_op): Remove.
602         (verify_types_in_gimple_call): Rename to ...
603         (verify_gimple_call): ... this.  Enhance.
604         (verify_types_in_gimple_cond): Remove.
605         (verify_gimple_comparison): New function ...
606         (verify_types_in_gimple_assign): ... split out from here.
607         (verify_types_in_gimple_return): Rename to ...
608         (verify_gimple_return): ... this.  Enhance.
609         (verify_types_in_gimple_switch): Rename to ...
610         (verify_gimple_switch): ... this.  Enhance.
611         (verify_gimple_goto): New function.
612         (verify_types_in_gimple_phi): Rename to ...
613         (verify_gimple_phi): ... this.  Enhance.
614         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
615         Fold in single-statement cases from verify_types_in_gimple_seq_2.
616         (verify_types_in_gimple_seq_2): Remove cases handled in
617         verify_types_in_gimple_stmt.
618
619 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
620
621         * config/bfin/bfin.c (n_regs_to_save): New static variable.
622         (push_multiple_operation, pop_multiple_operation): Set it.
623         (workaround_rts_anomaly): New function.
624         (workaround_speculation): New function, broken out of bfin_reorg.
625         (bfin_reorg): Call the new functions.
626
627 2008-09-09  Richard Guenther  <rguenther@suse.de>
628
629         PR middle-end/37354
630         PR middle-end/30165
631         * gimplify.c (gimplify_conversion): Change conversions of
632         non-register type to VIEW_CONVERT_EXPRs.
633         (gimplify_addr_expr): If we need to make the operand
634         addressable make sure to use a properly initialized
635         temporary for that so it gets a valid gimple store.
636
637 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
638
639         * function.h (struct function): Add function_start_locus.
640         * cfgexpand.c (gimple_expand_cfg): Use it.
641         * c-parser.c (c_parser_declaration_or_fndef): Set it.
642
643 2008-09-09  Richard Guenther  <rguenther@suse.de>
644
645         PR tree-optimization/37433
646         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
647         function calls.
648
649 2008-09-09  Richard Guenther  <rguenther@suse.de>
650
651         PR tree-optimization/37387
652         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
653         and bits to a common type.
654
655 2008-09-09  Nick Clifton  <nickc@redhat.com>
656
657         * config/v850/v850.md (return): Restore frame size restriction.
658
659 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
660
661         * c-common.c (c_expand_decl): Remove.
662         * c-common.h (anon_aggr_type_p): Remove prototype.
663         (DECL_ANON_UNION_ELEMS): Remove.
664         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
665         * c-decl.c (anon_aggr_type_p): Remove.
666         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
667         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
668         * langhooks.h (struct lang_hooks): Remove expand_decl.
669         * langhooks.c (lhd_expand_decl): Remove.
670         * stmt.c (expand_anon_union_decl): Remove.
671         * tree.h (expand_anon_union_decl): Remove prototype.
672
673 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
674
675         PR target/36609
676         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
677         zero.
678         * config/avr/avr.md  (QISI) : Define mode iterator.
679         (negated_tst<mode>) : Redefine as split using mode macro.
680         (reversed_tstqi): Define insn as reversed compare with zero.
681         (reversed_tsthi): Ditto.
682         (reversed_tstsi): Ditto.
683
684 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
685
686         PR middle-end/37393
687         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
688         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
689
690         PR middle-end/37414
691         * predict.c (optimize_function_for_size_p): Don't segfault if
692         FUN is NULL.
693         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
694         tree_swap_operands_p): Don't test cfun != NULL before calling
695         optimize_function_for_s*_p.
696
697 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
698
699         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
700         end of the search.
701
702 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
703
704         * crx/crx.h (IRA_COVER_CLASSES): Define.
705
706 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
707
708         PR middle-end/37337
709         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
710         even when a stmt has been gimple_modified_p, but after fold_stmt is
711         not any longer.  Remove unneeded may_have_exposed_new_symbols
712         initializations.
713
714 2008-09-08  Richard Guenther  <rguenther@suse.de>
715
716         PR tree-optimization/37421
717         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
718         valueize the RHS.
719
720 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
721
722         PR middle-end/37415
723         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
724
725 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
726
727         PR driver/37409
728         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
729         * pa-hpux10.h (LINK_SPEC): Likewise.
730         * pa-hpux11.h (LINK_SPEC): Likewise.
731
732 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
733
734         * pa32-regs.h (IRA_COVER_CLASSES): Define.
735         * pa64-regs.h (IRA_COVER_CLASSES): Define.
736
737 2008-09-07  Helge Deller  <deller@gmx.de>
738
739         * pa/linux-atomic.c: New file.
740         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
741         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
742
743 2008-09-07  Richard Guenther  <rguenther@suse.de>
744             Ira Rosen  <irar@il.ibm.com>
745
746         PR tree-optimization/36630
747         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
748         Call STRIP_NOPS before calling evolution_part_in_loop_num.
749
750 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
751             Ira Rosen  <irar@il.ibm.com>
752
753         PR tree-optimization/35642
754         * config/rs6000/altivec.md (mulv8hi3): Implement.
755
756 2008-09-06  Jeff Law <law@redhat.com>
757
758         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
759
760 2008-09-06  Jan Hubicka  <jh@suse.cz>
761
762         PR tree-optimization/14703
763         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
764         declarations.
765         * passes.c (init_optimization_passes): Recompute inline parameters.
766
767 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
768
769         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
770         DECL being null.
771
772 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
773             Peter Fuerst  <post@pfrst.de>
774
775         * doc/invoke.texi: Document -mr10k-cache-barrier=.
776         * doc/extend.texi: Document __builtin_mips_cache.
777         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
778         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
779         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
780         __GCC_HAVE_BUILTIN_MIPS_CACHE.
781         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
782         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
783         (set_push_mips_isas): New variable.
784         (mips_r10k_cache_barrier): New variable.
785         (cache): New availability predicate.
786         (mips_builtins): Add an entry for __builtin_mips_cache.
787         (mips_build_cvpointer_type): New function.
788         (MIPS_ATYPE_CVPOINTER): New macro.
789         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
790         mode is VOIDmode.
791         (r10k_simplified_address_p, r10k_simplify_address)
792         (r10k_uncached_address_p, r10k_safe_address_p)
793         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
794         (r10k_needs_protection_p_call, r10k_needs_protection_p)
795         (r10k_insert_cache_barriers): New functions.
796         (mips_reorg_process_insns): Delete cache barriers after a
797         branch-likely instruction.
798         (mips_reorg): Call r10k_insert_cache_barriers.
799         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
800         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
801         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
802         (mips_cache, r10k_cache_barrier): New define_insns.
803
804 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
805
806         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
807         * ira-color.c (setup_allocno_left_conflicts_num): Use
808         hard_reg_set_equal_p instead of a comparison with
809         ira_zero_hard_reg_set.
810         * ira.c (setup_reg_subclasses): Likewise.
811         (setup_cover_and_important_classes): Likewise.
812         (setup_class_translate): Likewise.
813         (setup_reg_class_intersect_union): Likewise.
814         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
815         (ira_init_once): Don't initialize them.
816
817 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
818
819         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
820
821 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
822
823         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
824
825 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
826
827         Improved branch hints, safe hints, and scheduling.
828
829         * haifa-sched.c (sched_emit_insn) : Define.
830         * sched-int.h (sched_emit_insn) : Add prototype.
831         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
832         -mhint-max-distance -msafe-hints) : Document.
833         * config/spu/spu.c (spu_flag_var_tracking): New.
834         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
835         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
836         TARGET_ASM_FILE_START): Define.
837         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
838         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
839         (spu_emit_branch_hint): Add blocks argument.
840         (insert_branch_hints, insert_nops): Remove.
841         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
842         uses_ls_unit, spu_sched_init_global, spu_sched_init,
843         spu_sched_reorder, asm_file_start): New functions.
844         (clock_var, spu_sched_length, pipe0_clock,
845         pipe1_clock, prev_clock_var, prev_priority,
846         spu_ls_first, prev_ls_clock): New static variables.
847         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
848         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
849         (nopn_nv): Add a non-volatile version of nop.
850         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
851         -mhint-max-distance, -msafe-hints): New options.
852
853 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
854             Samuel Tardieu  <sam@rfc1149.net>
855
856         * opts.c (decode_options): Combine nested if statements.
857
858         PR target/37283
859         * opts.c (decode_options): Handle more relationships among
860         unit-at-a-time, toplevel-reorder, and section-anchors.
861
862 2008-09-05  David Daney  <ddaney@avtrex.com>
863
864         * doc/install.texi (--enable-reduced-reflection): Document new option.
865
866 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
867
868         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
869         constantpool_mem_p.
870         (constantpool_operand): New.
871         (move_operand): Disallow sub-word modes for the constant pool.
872         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
873         (xtensa_secondary_reload_class): Replace with....
874         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
875         Set icode for sub-word reloads from the constant pool.
876         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
877         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
878         * config/xtensa/xtensa.md (reload<mode>_literal): New.
879         * config/xtensa/xtensa-protos.h: Update prototypes.
880
881 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
882
883         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
884         (REG_CLASS_NAMES): Update.
885         (REG_CLASS_CONTENTS): Update.
886         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
887         of ALL_REGS for regs 77 and 78.
888         * function.c (instantiate_virtual_regs_in_insn): Assert that
889         return value of simplify_gen_subreg is not NULL.
890
891 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
892
893         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
894         (gen_rtvec_v): Fix coding standards.
895
896 2008-09-04  Jan Hubicka  <jh@suse.cz>
897
898         * i386.c (decide_alg): Be more conservative about optimizing for size.
899
900 2008-09-04  Ian Lance Taylor  <iant@google.com>
901
902         * varasm.c (narrowing_initializer_constant_valid_p): New
903         static function.
904         (initializer_constant_valid_p): Call it.
905
906 2008-09-04  Jeff Law  <law@redhat.com>
907
908         * fold-const.c (native_encode_real): Fix computation of WORDS.
909         (native_interpret_real): Likewise.
910
911 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
912
913         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
914
915 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
916
917         * ira-conflicts.c (process_regs_for_copy): Check insn to check
918         that the cost is already taken into account in ira-costs.c
919
920         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
921
922         * ira-build.c (print_copy, print_copies, ira_debug_copy,
923         ira_debug_copies): New.
924         (ira_bulid): Call print_copies.
925
926         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
927
928 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
929
930         PR target/32783
931         * config/rs6000/rs6000.c (optimization_options): Remove check of
932         flag_toplevel_order.
933
934 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
935
936         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
937         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
938         second operand is a reg_imm10_operand.
939         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
940         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
941         (*seq_<GPR:mode><GPR2:mode>): Rename to
942         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
943         ISA_HAS_SEQ_SNE.
944         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
945         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
946         ISA_HAS_SEQ_SNE.
947         (*sne_<GPR:mode><GPR2:mode>): Rename to
948         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
949         ISA_HAS_SEQ_SNE.
950
951 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
952
953         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
954         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
955         combining an arithmetic right shift by more than 31 and a
956         trunction.  Don't match for out-of-range shift amounts.  Set
957         attribute mode to <MODE>.
958         (*lshr32_trunc<mode>): Name the pattern combining a logical right
959         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
960         (*<optab>_trunc<mode>_exts): New pattern for truncated right
961         shifts by less than 32.
962         (extv): Change predicate on first operand to accept registers.
963         Change predicate of the other operands from immediate_operand to
964         const_int_operand.  Expand exts when source is a register.
965         (extzv): Change predicate of the constant operands from
966         immediate_operand to const_int_operand.
967         (extzv<mode>): Change predicate of the constant operands from
968         immediate_operand to const_int_operand and no constraint. Also
969         remove mode.
970         (*extzv_trunc<mode>_exts): New pattern.
971
972 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
973
974         * config/mips/mips.h (ISA_HAS_CINS): New macro.
975         * config/mips/mips-protos.h (mask_low_and_shift_p,
976         mask_low_and_shift_len): Declare.
977         * config/mips/mips.c (mask_low_and_shift_p,
978         mask_low_and_shift_len): New functions.
979         (mips_print_operand): Handle new operand prefix "m".
980         * config/mips/mips.md (*cins<mode>): New pattern.
981
982 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
983
984         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
985         optimizing for size.
986
987 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
988
989         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
990         regardless of epilogue_completed.
991
992 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
993
994         PR middle-end/37359
995         * ira-lives.c (process_bb_node_lives): Check setjmp.
996
997 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
998
999         PR middle-end/37243
1000         * ira-build.c (form_loop_tree): Reverse BB walk.
1001         (create_bb_allocnos): Likewise.
1002         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
1003         (mark_reg_store): Rename to...
1004         (mark_ref_live): ...this and take a df_ref argument instead of
1005         note_stores arguments.  Assert that we have a register.
1006         (mark_reg_clobber): Delete.
1007         (def_conflicts_with_inputs_p): New function.
1008         (mark_reg_conflicts): Delete.
1009         (mark_reg_death): Rename to...
1010         (mark_ref_dead): ...this and take a df_ref argument instead of
1011         a register.  Assert that we have a register.
1012         (process_bb_node_lives): Hoist frequency calculation out of
1013         instruction walk.  Convert from a forwards scan to a backwards scan.
1014         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
1015         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
1016         (create_allocno_live_ranges): Don't create regs_set.
1017
1018 2008-09-04  Ian Lance Taylor  <iant@google.com>
1019
1020         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
1021         or REG_LABEL_TARGET.
1022         * calls.c (emit_library_call_value_1): Use MEM_P rather than
1023         comparing MODE with MEM.
1024         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
1025         comparing with GF_PREDICT_TAKEN.
1026         (gimple_get_lhs): Change code to enum gimple_code.
1027         (gimple_set_lhs): Likewise.
1028         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
1029         * omp-low.c (find_omp_clause): Change kind parameter to enum
1030         omp_clause_code.
1031         * tree-flow.h (find_omp_clause): Update declaration.
1032         * regrename.c (clear_dead_regs): Change kind parameter to enum
1033         reg_note.
1034         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
1035         GET_MODE.
1036         * see.c (see_get_extension_data): Change return type to enum
1037         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
1038         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
1039         (see_gen_normalized_extension): Change extension_code parameter to
1040         enum entry_type.
1041         (see_seek_pre_extension_expr): Change extension_code to enum
1042         entry_type.
1043         (see_merge_one_def_extension): Likewise.
1044         (see_handle_relevant_defs): Likewise.
1045         (see_handle_relevant_uses): Likewise.
1046         (see_analyze_one_def): Likewise.
1047         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
1048         GIMPLE_ASM rather than ASM_EXPR.
1049         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
1050         GIMPLE_RETURN rather than RETURN_EXPR.
1051         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
1052         (evaluate_stmt): Likewise.
1053         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
1054         to enum vect_relevant.
1055         (vect_mark_stmts_to_be_vectorized): Change assertion to not
1056         compare gimple codes with tree codes.
1057
1058 2008-09-04  Paul Brook  <paul@codesourcery.com>
1059
1060         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
1061
1062 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
1063
1064         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
1065         pointer check lost in the recent no-unit-at-a-time patch.
1066
1067 2008-09-04  Jan Hubicka  <jh@suse.cz>
1068
1069         PR middle-end/37343
1070         * tree-switch-conversion.c (check_final_bb): Accept only IP
1071         invariants.
1072
1073 2008-09-04  Jan Hubicka  <jh@suse.cz>
1074
1075         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
1076         Break out from ...
1077         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
1078         using_ranges argument.
1079         (vrp_evaluate_conditional): Avoid bogus warning for type range.
1080         (vrp_visit_cond_stmt): Update call of
1081         vrp_evaluate_conditional_warnv_with_ops
1082
1083 2008-09-04  Jan Hubicka  <jh@suse.cz>
1084
1085         PR tree-optimization/37345
1086         PR tree-optimization/37358
1087         PR tree-optimization/37357
1088         * tree.c (build_function_type_skip_args): Build distinct type copy;
1089         set TYPE_CONTEXT.
1090         (build_function_decl_skip_args): Set type of new decl not orig decl;
1091         clear DECL_VINDEX for methods turned into functions.
1092
1093 2008-09-04  Nick Clifton  <nickc@redhat.com>
1094
1095         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
1096         * configure: Regenerate.
1097         * config.in: Regenerate.
1098         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
1099         alignment field, if it is supported.
1100
1101 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
1102
1103         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
1104         libraries.
1105
1106 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
1107
1108         * config/rs6000/rs6000.c (processor_target_table): Do not
1109         enable VMX for POWER6.
1110
1111 2008-09-03  Anton Blanchard  <anton@samba.org>
1112
1113         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
1114         emit memory barrier before operation.
1115
1116 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
1117
1118         PR testsuite/37325
1119         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
1120         default_elf_asm_output_external.
1121
1122 2008-09-03  Jeff Law  <law@redhat.com>
1123
1124         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
1125
1126 2008-09-03  Richard Henderson  <rth@redhat.com>
1127
1128         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
1129         memory barrier to below the test-and-set.
1130         (alpha_split_lock_test_and_set_12): Likewise.
1131
1132 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1133
1134         PR rtl-opt/37243
1135
1136         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
1137         all_allocnos.
1138
1139         * ira-color.c (print_loop_title): Use all_allocnos.
1140         (color_pass): Ditto.  Don't add border_allocnos.  Check that
1141         subloop allocno in the correspdoning bitmap all_allocnos.
1142
1143         * ira-emit.c (change_loop): Use all_allocnos.
1144
1145         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
1146         Ditto.
1147         (ira_create_allocno): Set up all_allocnos bit for the created
1148         allocno.
1149         (create_cap_allocno): Remove setting mentioned_allocnos.
1150         (create_insn_allocnos): Ditto.
1151         (remove_unnecessary_allocnos): Use all_allocnos.
1152         (check_allocno_creation): Check that allocnos are in the
1153         corresponding bitmap all_allocnos.
1154
1155 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1156
1157         PR rtl-opt/37243
1158
1159         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
1160         (process_regs_for_copy): Process subregs.  Refine check when cost
1161         is taken into account in ira-costs.c.
1162         (process_reg_shuffles): Use REG_SUBREG_P.
1163         (add_insn_allocno_copies): Ditto.  Ignore modes.
1164
1165         * ira-color.c (conflict_allocno_vec): New.
1166         (COST_HOP_DIVISOR): New macro.
1167         (update_copy_costs_1): Use it.
1168         (update_conflict_hard_regno_costs): New function.
1169         (assign_hard_reg): Use it.
1170         (ira_color): Allocate and free conflict_allocno_vec.
1171
1172 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1173
1174         PR rtl-opt/37296
1175
1176         * ira-int.h (ira_sort_insn_chain): Remove.
1177
1178         * ira.c (basic_block_order_nums, chain_insn_order,
1179         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
1180         (ira): Don't call ira_sort_insn_chain.
1181
1182         * reload1.c (reload): Don't call ira_sort_insn_chain.
1183
1184 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1185
1186         PR middle-end/37293
1187         * cgraphunit.c (update_call_expr): Remove eh regions from statements
1188         which become non throw.
1189         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
1190         update_call_expr after updating the flags on the decl.
1191
1192 2008-09-03  Jan Hubicka  <jh@suse.cz>
1193
1194         PR tree-optimization/37315
1195         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
1196         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
1197         (cgraph_analyze_functions): Use node->analyzed
1198         (cgraph_mark_functions_to_output): Likewise.
1199         (cgraph_expand_function): All functions can be released after
1200         expanding.
1201         (cgraph_optimize): Use gimple_has_body_p.
1202         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
1203         (cgraph_decide_inlining_incrementally): Likewise.
1204         (inline_transform): Inline transform.
1205         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
1206         copy fields needed.
1207         (inlinable_function_p): Drop gimple_body check.
1208         (expand_call_inline): Use gimple_has_body_p.
1209         * gimple.c (gimple_has_body_p): New.
1210         * gimple.h (gimple_has_body_p): Add prototype.
1211         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
1212         (dump_function_to_file): Use gimple_has_body_p check.
1213
1214 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
1215
1216         PR c++/37346
1217         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
1218         substatements.
1219         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
1220
1221 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1222
1223         From Michael Frysinger  <michael.frysinger@analog.com>
1224         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
1225         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
1226         for bf538.
1227
1228 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
1229
1230         Add picoChip port.
1231         * doc/extend.texi: Document picoChip builtin functions.
1232         * doc/invoke.texi: Document picoChip options.
1233         * doc/contrib.texi: Add picoChip contribution.
1234         * doc/md.texi: Document picoChip constraints.
1235         * config.gcc: Add picochip-*-*.
1236         * config/picochip/: Add new port.
1237
1238 2008-09-03  Richard Guenther  <rguenther@suse.de>
1239
1240         PR tree-optimization/37328
1241         * tree-sra.c (sra_build_assignment): Gimplify properly.
1242         (generate_copy_inout): Take the correct stmt as definition,
1243         remove bogus assert.
1244
1245 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1246
1247         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
1248         attributes.
1249
1250         From Michael Frysinger  <michael.frysinger@analog.com>
1251         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
1252
1253 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
1254
1255         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
1256         (__gthread_setspecific): Revert 2008-08-31 change to
1257         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
1258
1259 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
1260
1261         * diagnostic.c (error_at): New.
1262         * toplev.h (error_at): New prototype.
1263         * c-typeck.c (build_array_ref): Call error_at instead of error.
1264         Pass location to pedwarn.
1265
1266 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
1267
1268         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
1269
1270 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
1271
1272         * dwarf2out.c (tree_add_const_value_attribute): Only handle
1273         VAR_DECL and CONST_DECL.
1274
1275 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
1276             Jakub Jelinek  <jakub@redhat.com>
1277
1278         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
1279         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
1280         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
1281         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
1282         Don't set ix86_save_varrargs_registers.
1283         (ix86_setup_incoming_varargs): Assume cum != NULL.
1284         (ix86_va_start): Check ix86_varargs_gpr_size and
1285         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
1286         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
1287         from frame pointer if ix86_varargs_gpr_size == 0.
1288         (ix86_compute_frame_layout): Updated.
1289         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
1290         (ix86_varargs_gpr_size): Define.
1291         (ix86_varargs_fpr_size): Likewise.
1292         (machine_function): Remove save_varrargs_registers.
1293         Add varargs_gpr_size and varargs_fpr_size.
1294
1295 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
1296
1297         * config/alpha/alpha.c (va_list_skip_additions,
1298         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
1299         (alpha_gimplify_va_arg): Call unshare_expr on second use of
1300         offset_field.
1301
1302         PR tree-optimization/36766
1303         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
1304         for already removed basic blocks.
1305
1306         PR target/36332
1307         * real.c (real_maxval): Clear a lower bit to make real_maxval
1308         match get_max_float for IBM long double format.
1309
1310 2008-09-02  Andreas Schwab  <schwab@suse.de>
1311
1312         * configure.ac: Use m4_quote to quote the expansion of m4_do.
1313         * configure: Regenerate.
1314
1315 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
1316
1317         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
1318         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
1319         checking for a non-VOID CONSTANT_P.
1320
1321 2008-09-02  Jan Hubicka  <jh@suse.cz>
1322
1323         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
1324         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
1325         sdiv_pow2_cheap
1326
1327 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
1328
1329         * expr.c (emit_group_store): Don't assert stack temp mode size.
1330
1331 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
1332             Tobias Grosser  <grosser@fim.uni-passau.de>
1333             Jan Sjodin  <jan.sjodin@amd.com>
1334             Harsha Jagasia  <harsha.jagasia@amd.com>
1335             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1336             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
1337             Adrien Eliche  <aeliche@isty.uvsq.fr>
1338
1339         Merge from graphite branch.
1340         * graphite.c: New.
1341         * graphite.h: New.
1342         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
1343         * doc/invoke.texi (-floop-block, -floop-interchange,
1344         -floop-strip-mine): Document new flags.
1345         * tree-into-ssa.c (gimple_vec): Moved...
1346         * tree-loop-distribution.c (rdg_component): Moved...
1347         * cfgloopmanip.c: Include tree-flow.h.
1348         (update_dominators_in_loop): New.
1349         (create_empty_if_region_on_edge): New.
1350         (create_empty_loop_on_edge): New.
1351         (loopify): Use update_dominators_in_loop.
1352         * tree-pass.h (pass_graphite_transforms): Declared.
1353         * configure: Regenerate.
1354         * tree-phinodes.c (make_phi_node): Export.
1355         (add_phi_node_to_bb): New, split from create_phi_node.
1356         * tree-chrec.c (for_each_scev_op): New.
1357         * tree-chrec.h (for_each_scev_op): Declared.
1358         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
1359         (remove_statement): Call get_phi_with_result.
1360         * config.in (HAVE_cloog): Undef.
1361         * gdbinit.in (pgg): New.
1362         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
1363         * tree-ssa-loop.c (graphite_transforms): New.
1364         (gate_graphite_transforms): New.
1365         (pass_graphite_transforms): New.
1366         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
1367         HAVE_cloog): Defined.
1368         * tree-vectorizer.c (rename_variables_in_bb): Export.
1369         * tree-data-ref.c (dr_may_alias_p): Export.
1370         (stmt_simple_memref_p): New.
1371         (find_data_references_in_stmt): Export.
1372         (find_data_references_in_loop): Export.
1373         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
1374         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
1375         (create_rdg_vertices): Export.
1376         (build_empty_rdg): New.
1377         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
1378         * tree-data-ref.h (rdg_component): ... here.
1379         (scop_p): New.
1380         (struct data_reference): Add a field scop.
1381         (DR_SCOP): New.
1382         (find_data_references_in_loop): Declared.
1383         (find_data_references_in_stmt): Declared.
1384         (create_rdg_vertices): Declared.
1385         (dr_may_alias_p): Declared.
1386         (stmt_simple_memref_p): Declared.
1387         (struct rdg_edge): Add a field ddr_p relation.
1388         (build_empty_rdg): Declared.
1389         * lambda.h (lambda_matrix): Declare a VEC of.
1390         (find_induction_var_from_exit_cond): Declared.
1391         (lambda_vector_compare): New.
1392         * common.opt (fgraphite, floop-strip-mine,
1393         floop-interchange, floop-block): New flags.
1394         * lambda-code.c (find_induction_var_from_exit_cond): Export.
1395         * cfgloop.c (is_loop_exit): New.
1396         * cfgloop.h (is_loop_exit): Declared.
1397         (create_empty_if_region_on_edge): Declared.
1398         (create_empty_loop_on_edge): Declared.
1399         * tree-flow.h (add_phi_node_to_bb): Declared.
1400         (make_phi_node): Declared.
1401         (rename_variables_in_bb): Declared.
1402         (perfect_loop_nest_depth): Declared.
1403         (graphite_transform_loops): Declared.
1404         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
1405         (graphite.o-warn): Add -Wno-error.
1406         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
1407         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
1408         (INCLUDES): Add PPLINC, CLOOGINC.
1409         (OBJS-common): Add graphite.o.
1410         (graphite.o): Add rule.
1411         * gimple.h (gimple_vec): ... here.
1412         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
1413         * passes.c (init_optimization_passes): Schedule
1414         pass_graphite_transforms.
1415
1416 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
1417
1418         PR target/37283
1419         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
1420         and -fno-toplevel-reorder after handle_options.
1421
1422 2008-09-02  Paul Brook  <paul@codesourcery.com>
1423
1424         * config/arm/arm.c (arm_tune_cortex_a9): Define.
1425         (arm_override_options): Set arm_tune_cortex_a9.
1426         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
1427         (arm_issue_rate): Handle cortexa9.
1428         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
1429         * config/arm/arm-cores.def: Add cortex-a9.
1430         * config/arm/arm-tune.md: Regenerate.
1431         * config/arm/arm.md: Include cortex-a9.md.
1432         (generic_sched, generic_vfp): Add cortexa9.
1433         * config/arm/cortex-a9.md: New file.
1434
1435 2008-09-02  Richard Guenther  <rguenther@suse.de>
1436
1437         PR tree-optimization/37327
1438         * tree-vrp.c (register_new_assert_for): Make sure to not have
1439         TREE_OVERFLOW set on the bound.
1440
1441 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
1442
1443         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
1444
1445         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
1446         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
1447         spec_info->mask.
1448
1449 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
1450
1451         * gcc/config/spu/spu.md (divdf3): Removed.
1452
1453 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
1454
1455         PR tree-optimization/37095
1456         * cgraph.c (cgraph_node): When creating new cgraph node after
1457         assembler_name_hash has been populated, record it in the hash
1458         table.
1459
1460 2008-09-01  Paul Brook  <paul@codesourcery.com>
1461
1462         * doc/invoke.texi: Document -mword-relocations.
1463         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1464         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1465         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1466         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
1467         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
1468         (arm_emit_movpair): New function.
1469         (arm_print_operand <c>): Handle sybolic addresses.
1470         * config/arm/arm.h (TARGET_USE_MOVT): Define.
1471         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1472         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
1473         * config/arm/arm.opt: Add -mword-relocations.
1474         * config/arm/arm.md (movsi): Use arm_emit_movpair.
1475         (arm_movt, arm_movw): New.
1476
1477 2008-09-01  Paul Brook  <paul@codesourcery.com>
1478
1479         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
1480         Allow Interworking on ARMv4 EABI based targets.
1481         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
1482         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
1483
1484 2008-09-01  Paul Brook  <paul@codesourcery.com>
1485
1486         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
1487         optimized LT0 test.  Remove optimization for GT.
1488
1489 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1490
1491         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
1492         openmp applications.
1493         * pa-hpux11.h (LIB_SPEC): Likewise.
1494
1495         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
1496         defined.
1497
1498 2008-09-01  Jan Hubicka  <jh@suse.cz>
1499
1500         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
1501         present, use only counts; when guessed use only frequencies.
1502         (estimate_bb_frequencies): Use function_frequency.
1503         * profile.c (compute_branch_probabilities): Exit early when
1504         profile reading failed. Set profile_status.
1505         (branch_prob): Do not set profile_status.
1506
1507 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
1508
1509         * tree.c (protected_set_expr_location): New.
1510         * tree.h (protected_set_expr_location): New prototype.
1511         * c-tree.h (build_array_ref): Add argument.
1512         (parser_build_unary_op): Same.
1513         * c-typeck.c (build_indirect_ref): Handle new location argument.
1514         (build_array_ref): Same.
1515         (parser_build_unary_op): Same.
1516         * gimplify.c (gimplify_asm_expr): Set input_location before calling
1517         error.
1518         * c-omp.c (c_finish_omp_atomic): Pass location when calling
1519         build_indirect_ref.
1520         * c-common.c (finish_label_address_expr): Handle new location argument.
1521         * c-common.h (build_indirect_ref): Add argument.
1522         (finish_label_address_expr): Same.
1523         * c-parser.c (c_parser_unary_expression): Pass location to build
1524         functions.
1525         (c_parser_postfix_expression): Same.
1526
1527 2008-09-01  Paul Brook  <paul@codesourcery.com>
1528
1529         * config/arm/arm.md: Include cortex-r4f.md.
1530         (attr fpu): Update type list.
1531         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
1532         fconstd, fcmps and fcmpd.
1533         (attr tune_cortexr4): Define.
1534         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
1535         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
1536         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
1537         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
1538         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
1539         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
1540         cortex_a8_vfp_farith: Ditto.
1541         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
1542         * config/arm/cortex-r4.md: Use tune_cortexr4.
1543         * config/arm/cortex-r4f.md: New file.
1544
1545 2008-09-01  Richard Guenther  <rguenther@suse.de>
1546
1547         PR tree-optimization/37305
1548         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
1549         the result of constant conversions.
1550         (fold_gimple_assign): Likewise.
1551
1552 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
1553
1554         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
1555         #ifdef ENABLE_CHECKING.
1556
1557 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
1558
1559         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
1560         * sched-int.h (print_insn, print_pattern, print_value): Declare also
1561         when !INSN_SCHEDULING.
1562
1563 2008-09-01  Andreas Schwab  <schwab@suse.de>
1564
1565         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
1566
1567 2008-09-01  Paul Brook  <paul@codesourcery.com>
1568
1569         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
1570
1571 2008-09-01  Jan Hubicka  <jh@suse.cz>
1572
1573         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
1574
1575         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
1576         Pass speed operand.
1577         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
1578         * gimplify.c (gimplify_init_constructor): Add speed operand.
1579         * tree-sra.c (decide_block_copy): Likewise.
1580         * tree-inline.c (estimate_move_cost): Likewise.
1581         * config/alpha/alpha.h (MOVE_RATIO): Update.
1582         * config/frv/frv.c (MOVE_RATIO): Update.
1583         * config/spu/spu.h (MOVE_RATIO): Update.
1584         * config/sparc/sparc.h (MOVE_RATIO): Update.
1585         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
1586         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
1587         * config/cris/cris.h (MOVE_RATIO): Update.
1588         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
1589         * config/arm/arm.h (MOVE_RATIO): Update.
1590         * config/pa/pa.md: Update uses of MOVE_RATIO
1591         * config/pa/pa.h (MOVE_RATIO): Update.
1592         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
1593         CLEAR_RATIO, SET_RATIO): Update.
1594         * config/h8300/h8300.h (MOVE_RATIO): Update.
1595         * config/v850/v850.h (MOVE_RATIO): Update.
1596         * config/bfin/bfin.h (MOVE_RATIO): Update.
1597
1598 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
1599             Dmitry Melnik  <dm@ispras.ru>
1600             Dmitry Zhurikhin  <zhur@ispras.ru>
1601             Alexander Monakov  <amonakov@ispras.ru>
1602             Maxim Kuvyrkov  <maxim@codesourcery.com>
1603
1604         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
1605         sel-sched-dump.c, sel-sched-ir.c: New files.
1606         * Makefile.in (OBJS-common): Add selective scheduling object
1607         files.
1608         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
1609         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
1610         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
1611         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
1612         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
1613         (make_forwarder_block): Update loop latch if we have redirected
1614         the loop latch edge.
1615         * cfgloop.c (get_loop_body_in_custom_order): New function.
1616         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
1617         (CP_FALLTHRU_PREHEADERS): Likewise.
1618         (get_loop_body_in_custom_order): Declare.
1619         * cfgloopmanip.c (has_preds_from_loop): New.
1620         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
1621         Assert that the preheader edge will be fall thru when it is set.
1622         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
1623         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
1624         fsel-sched-substitution, fselective-scheduling): New flags.
1625         * cse.c (hash_rtx_cb): New.
1626         (hash_rtx): Use it.
1627         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
1628         sel_sched_insn_cnt): New counters.
1629         * final.c (compute_alignments): Export.  Free dominance
1630         info after loop_optimizer_finalize.
1631         * genattr.c (main): Output maximal_insn_latency prototype.
1632         * genautomata.c (output_default_latencies): New.
1633         Factor its code from ...
1634         (output_internal_insn_latency_func): ... here.
1635         (output_internal_maximal_insn_latency_func): New.
1636         (output_maximal_insn_latency_func): New.
1637         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
1638         (struct hard_reg_set_iterator): New.
1639         (hard_reg_set_iter_init, hard_reg_set_iter_set,
1640         hard_reg_set_iter_next): New functions.
1641         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
1642         * lists.c (remove_free_INSN_LIST_node,
1643         remove_free_EXPR_LIST_node): New functions.
1644         * loop-init.c (loop_optimizer_init): When
1645         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
1646         calling create_preheaders.
1647         (loop_optimizer_finalize): Do not verify flow info after reload.
1648         * recog.c (validate_replace_rtx_1): New parameter simplify.
1649         Default it to true.  Update all uses.  Factor out simplifying
1650         code to ...
1651         (simplify_while_replacing): ... this new function.
1652         (validate_replace_rtx_part,
1653         validate_replace_rtx_part_nosimplify): New.
1654         * recog.h (validate_replace_rtx_part,
1655         validate_replace_rtx_part_nosimplify): Declare.
1656         * rtl.c (rtx_equal_p_cb): New.
1657         (rtx_equal_p): Use it.
1658         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
1659         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
1660         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
1661         * vecprim.h: Add a vector type for unsigned int.
1662         * haifa-sched.c: Include vecprim.h and cfgloop.h.
1663         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
1664         ready_try, cycle_issued_insns, spec_info): Make global.
1665         (readyp): Initialize.
1666         (dfa_lookahead): New global variable.
1667         (old_max_uid, old_last_basic_block): Remove.
1668         (h_i_d): Make it a vector.
1669         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
1670         through HID macro.
1671         (after_recovery, adding_bb_to_current_region_p):
1672         New variables to handle correct insertion of the recovery code.
1673         (struct ready_list): Move declaration to sched-int.h.
1674         (rgn_n_insns): Removed.
1675         (rtx_vec_t): Move to sched-int.h.
1676         (find_insn_reg_weight): Remove.
1677         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
1678         (haifa_init_h_i_d, haifa_finish_h_i_d):
1679         New functions to initialize / finalize haifa instruction data.
1680         (extend_h_i_d, init_h_i_d): Rewrite.
1681         (unlink_other_notes): Move logic to add_to_note_list.  Handle
1682         selective scheduler.
1683         (ready_lastpos, ready_element, ready_sort, reemit_notes,
1684         find_fallthru_edge): Make global, remove static prototypes.
1685         (max_issue): Make global.  Add privileged_n and state parameters.  Use
1686         them.
1687         (extend_global, extend_all): Removed.
1688         (init_before_recovery): Add new param.  Fix the handling of the case
1689         when we insert a recovery code before the EXIT which has a predecessor
1690         with a fallthrough edge to it.
1691         (create_recovery_block): Make global.  Rename to
1692         sched_create_recovery_block.  Update.
1693         (change_pattern): Rename to sched_change_pattern.  Make global.
1694         (speculate_insn): Rename to sched_speculate_insn.  Make global.
1695         Split haifa-specific functionality into ...
1696         (haifa_change_pattern): New static function.
1697         (sched_extend_bb): New static function.
1698         (sched_init_bbs): New function.
1699         (current_sched_info): Change type to struct haifa_sched_info.
1700         (insn_cost): Adjust for selective scheduling.
1701         (dep_cost_1): New function.  Move logic from ...
1702         (dep_cost): ... here.
1703         (dep_cost): Use dep_cost_1.
1704         (contributes_to_priority_p): Use sched_deps_info instead of
1705         current_sched_info.
1706         (priority): Adjust to work with selective scheduling.  Process the
1707         corner case when all dependencies don't contribute to priority.
1708         (rank_for_schedule): Use ds_weak instead of dep_weak.
1709         (advance_state): New function.  Move logic from ...
1710         (advance_one_cycle): ... here.
1711         (add_to_note_list, concat_note_lists): New functions.
1712         (rm_other_notes): Make static.  Adjust for selective scheduling.
1713         (remove_notes, restore_other_notes): New functions.
1714         (move_insn): Add two arguments.  Update assert.  Don't call
1715         reemit_notes.
1716         (choose_ready): Remove lookahead variable, use dfa_lookahead.
1717         Remove more_issue, max_points.  Move the code to initialize
1718         max_lookahead_tries to max_issue.
1719         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
1720         ready.  Adjust use of move_insn.  Call restore_other_notes.
1721         (luid): Remove.
1722         (sched_init, sched_finish): Move Haifa-specific initialization/
1723         finalization to ...
1724         (haifa_sched_init, haifa_sched_finish): ... respectively.
1725         New functions.
1726         (setup_sched_dump): New function.
1727         (haifa_init_only_bb): New static function.
1728         (haifa_speculate_insn): New static function.
1729         (try_ready): Use haifa_* instead of speculate_insn and
1730         change_pattern.
1731         (extend_ready, extend_all): Remove.
1732         (sched_extend_ready_list, sched_finish_ready_list): New functions.
1733         (create_check_block_twin, add_to_speculative_block): Use
1734         haifa_insns_init instead of extend_global.  Update to use new
1735         initialization functions.  Change parameter.  Factor out code from
1736         create_check_block_twin to ...
1737         (sched_create_recovery_edges) ... this new function.
1738         (add_block): Remove.
1739         (sched_scan_info): New.
1740         (extend_bb): Use sched_scan_info.
1741         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
1742         static functions for walking through scheduling region.
1743         (sched_luids): New vector variable to replace uid_to_luid.
1744         (luids_extend_insn): New function.
1745         (sched_max_luid): New variable.
1746         (luids_init_insn): New function.
1747         (sched_init_luids, sched_finish_luids): New functions.
1748         (insn_luid): New debug function.
1749         (sched_extend_target): New function.
1750         (haifa_init_insn): New static function.
1751         (sched_init_only_bb): New hook.
1752         (sched_split_block): New hook.
1753         (sched_split_block_1): New function.
1754         (sched_create_empty_bb): New hook.
1755         (sched_create_empty_bb_1): New function.
1756         (common_sched_info, ready): New global variables.
1757         (current_sched_info_var): Remove.
1758         (move_block_after_check): Use common_sched_info.
1759         (haifa_luid_for_non_insn): New static function.
1760         (init_before_recovery): Use haifa_init_only_bb instead of
1761         add_block.
1762         (increase_insn_priority): New.
1763         * modulo-sched.c: (issue_rate): Remove static declaration.
1764         (sms_sched_info): Change type to haifa_sched_info.
1765         (sms_sched_deps_info, sms_common_sched_info): New variables.
1766         (setup_sched_infos): New.
1767         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
1768         Do not call regstat_free_calls_crossed.
1769         (sms_print_insn): Use const_rtx.
1770         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
1771         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
1772         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
1773         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
1774         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
1775         current_sched_info to use it.
1776         (enum reg_pending_barrier_mode): Move to sched-int.h.
1777         (h_d_i_d): New variable. Initialize to NULL.
1778         ({true, output, anti, spec, forward}_dependency_cache): Initialize
1779         to NULL.
1780         (estimate_dep_weak): Remove static declaration.
1781         (sched_has_condition_p): New function.  Adjust users of
1782         sched_get_condition to use it instead.
1783         (conditions_mutex_p): Add arguments indicating which conditions are
1784         reversed.  Use them.
1785         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
1786         argument to indicate whether returned condition is reversed.  Do not
1787         generate new rtx when condition should be reversed; indicate it by
1788         setting new argument instead.
1789         (add_dependence_list_and_free): Add deps parameter.
1790         Update all users.  Do not free dependence list when
1791         deps context is readonly.
1792         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
1793         contexts.
1794         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
1795         (remove_from_deps): New. Use the above functions.
1796         (cur_insn, can_start_lhs_rhs_p): New static variables.
1797         (add_or_update_back_dep_1): Initialize present_dep_type.
1798         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
1799         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
1800         haifa_note_dep): New functions implementing dependence hooks for
1801         the Haifa scheduler.
1802         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
1803         note_dep): New functions.
1804         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
1805         functions.
1806         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
1807         (free_deps): Initialize deps->reg_last.
1808         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
1809         sched_analyze_insn): Update to use dependency hooks infrastructure
1810         and readonly contexts.
1811         (deps_analyze_insn): New function.  Move part of logic from ...
1812         (sched_analyze): ... here.  Also move some logic to ...
1813         (deps_start_bb): ... here.  New function.
1814         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
1815         sel_sched_p.
1816         (sched_deps_init): New function.  Move code from ...
1817         (init_dependency_caches): ... here.  Remove.
1818         (init_deps_data_vector): New.
1819         (sched_deps_finish): New function.  Move code from ...
1820         (free_dependency_caches): ... here.  Remove.
1821         (init_deps_global, finish_deps_global): Adjust for use with
1822         selective scheduling.
1823         (get_dep_weak): Move logic to ...
1824         (get_dep_weak_1): New function.
1825         (ds_merge): Move logic to ...
1826         (ds_merge_1): New static function.
1827         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
1828         (ds_get_max_dep_weak): New function.
1829         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
1830         (n_insns): Rename to rgn_n_insns.
1831         (debug_ebb_dependencies): New function.
1832         (init_ready_list): Use it.
1833         (begin_schedule_ready): Use sched_init_only_bb.
1834         (ebb_print_insn): Indicate when an insn starts a new cycle.
1835         (contributes_to_priority, compute_jump_reg_dependencies,
1836         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
1837         (add_block1): Remove to ebb_add_block.
1838         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
1839         (schedule_ebb): Initialize them.  Use remove_notes instead of
1840         rm_other_notes.  Use haifa_local_init/finish.
1841         (schedule_ebbs): Use haifa_sched_init/finish.
1842         * sched-int.h: Include vecprim.h, remove rtl.h.
1843         (struct ready_list): Delete declaration.
1844         (sched_verbose_param, enum sched_pass_id_t,
1845         bb_vec_t, insn_vec_t, rtx_vec_t): New.
1846         (struct sched_scan_info_def): New structure.
1847         (sched_scan_info, sched_scan, sched_init_bbs,
1848         sched_init_luids, sched_finish_luids, sched_extend_target,
1849         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
1850         (struct common_sched_info_def): New.
1851         (common_sched_info, haifa_common_sched_info,
1852         sched_emulate_haifa_p): Declare.
1853         (sel_sched_p): New.
1854         (sched_luids): Declare.
1855         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
1856         (sched_max_luid, insn_luid): Declare.
1857         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
1858         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
1859         print_insn, print_pattern, print_value, haifa_classify_insn,
1860         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
1861         setup_sched_dump, sched_init, sched_finish,
1862         sel_insn_is_speculation_check): Export.
1863         (struct ready_list): Move from haifa-sched.c.
1864         (ready_try, ready, max_issue): Export.
1865         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
1866         sched_init_only_bb, sched_split_block, sched_split_block_1,
1867         sched_create_empty_bb, sched_create_empty_bb_1,
1868         sched_create_recovery_block, sched_create_recovery_edges): Export.
1869         (enum reg_pending_barrier_mode): Export.
1870         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
1871         (deps_t): New.
1872         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
1873         print_insn field.  Move add_block and fix_recovery_cfg to
1874         common_sched_info_def.  Move compute_jump_reg_dependencies,
1875         use_cselib  ...
1876         (struct sched_deps_info_def): ... this new structure.
1877         (sched_deps_info): Declare.
1878         (struct spec_info_def): Remove weakness_cutoff, add
1879         data_weakness_cutoff and control_weakness_cutoff.
1880         (spec_info): Declare.
1881         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
1882         dep_count field.
1883         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
1884         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
1885         (current_sched_info): Change type to struct haifa_sched_info.
1886         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
1887         (h_d_i_d): New variable.
1888         (HDID): New accessor macro.
1889         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
1890         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
1891         and HDID.
1892         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
1893         (enum SCHED_FLAGS): Update for selective scheduler.
1894         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
1895         (init_dependency_caches, free_dependency_caches): Delete declarations.
1896         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
1897         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
1898         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
1899         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
1900         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
1901         ds_to_dt): Export.
1902         (rm_other_notes): Delete declaration.
1903         (schedule_block): Remove one argument.
1904         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
1905         ready_element, ready_lastpos, sched_extend_ready_list,
1906         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
1907         concat_note_lists): Export.
1908         (struct region): Move from sched-rgn.h.
1909         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1910         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1911         BLOCK_TO_BB, CONTAINING_RGN): Export.
1912         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
1913         (current_nr_blocks, current_blocks, target_bb): Likewise.
1914         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
1915         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
1916         sched_rgn_local_init, extend_regions,
1917         rgn_make_new_region_out_of_new_block, compute_priorities,
1918         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
1919         extend_rgns, deps_join rgn_setup_common_sched_info,
1920         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
1921         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
1922         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
1923         increase_insn_priority): Likewise.
1924         * sched-rgn.c: Include sel-sched.h.
1925         (ref_counts): New static variable.  Use it ...
1926         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
1927         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
1928         (sched_is_disabled_for_current_region_p): Delete static declaration.
1929         (struct region): Move to sched-int.h.
1930         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1931         ebb_head): Define and initialize.
1932         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1933         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
1934         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
1935         sched-int.h.
1936         (find_single_block_region): Add new argument to indicate that EBB
1937         regions should be constructed.
1938         (debug_live): Delete declaration.
1939         (current_nr_blocks, current_blocks, target_bb):
1940         Remove static qualifiers.
1941         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
1942         declaration.
1943         (init_regions): Delete declaration.
1944         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
1945         rgn_estimate_number_of_insns): New.
1946         (too_large): Use estimate_number_of_insns.
1947         (haifa_find_rgns): New. Move the code from ...
1948         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
1949         (free_trg_info): New.
1950         (compute_trg_info): Allocate candidate tables here instead of ...
1951         (init_ready_list): ... here.
1952         (rgn_print_insn): Use const_rtx.
1953         (contributes_to_priority, extend_regions): Delete static declaration.
1954         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
1955         (add_block1): Rename to rgn_add_block.
1956         (debug_rgn_dependencies): Delete static qualifier.
1957         (new_ready): Use sched_deps_info.  Simplify.
1958         (rgn_common_sched_info, rgn_const_sched_deps_info,
1959         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
1960         New.
1961         (region_sched_info): Rename to rgn_const_sched_info.
1962         (deps_join): New, extracted from ...
1963         (propagate_deps): ... here.
1964         (compute_block_dependences, debug_dependencies): Update for selective
1965         scheduling.
1966         (free_rgn_deps, compute_priorities): New functions.
1967         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
1968         sched_rgn_compute_dependencies): New functions.
1969         (schedule_region): Use them.
1970         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
1971         rgn_setup_common_sched_info, rgn_setup_sched_infos):
1972         New functions.
1973         (schedule_insns): Call new functions that were split out.
1974         (rgn_make_new_region_out_of_new_block): New.
1975         (get_rgn_sched_max_insns_priority): New.
1976         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
1977         scheduling when appropriate.
1978         * sched-vis.c: Include insn-attr.h.
1979         (print_value, print_pattern): Make global.
1980         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
1981         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
1982         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1983         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1984         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
1985         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
1986         hooks.  Initialize them to 0.
1987         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1988         * target.h (struct gcc_target): Add them.  Rename gen_check field to
1989         gen_spec_check.
1990         * flags.h (sel_sched_switch_set): Declare.
1991         * opts.c (sel_sched_switch_set): New variable.
1992         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
1993         pipelining is disabled from command line.
1994         (common_handle_option): Record whether selective scheduling is
1995         requested from command line.
1996         * doc/invoke.texi: Document new flags and parameters.
1997         * doc/tm.texi: Document new target hooks.
1998         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
1999         ia64_gen_check.
2000         (dfa_state_size): Do not declare locally.
2001         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
2002         * config/rs6000/rs6000.c (rs6000_init_sched_context,
2003         rs6000_alloc_sched_context, rs6000_set_sched_context,
2004         rs6000_free_sched_context): New functions.
2005         (struct _rs6000_sched_context): New.
2006         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
2007         scheduling.
2008         (rs6000_sched_finish): Do not run for selective scheduling.
2009
2010 2008-08-31  Jan Hubicka  <jh@suse.cz>
2011
2012         * frv.c (frv_rtx_costs): Update forward declaration.
2013         * spu.c (spu_rtx_costs): Likewise.
2014         * pdp11.c: Include df.h
2015         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
2016         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
2017         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
2018         * iq2000.c (iq2000_address_cost): Add speed argument.
2019         (iq2000_rtx_costs): Likewise.
2020         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
2021         update call of mn10300_address_cost.
2022         * mcore.c: Include df.h
2023         (mcore_rtx_costs): Update prototype.
2024         * score3.c: Include df.h
2025         (score3_rtx_costs): Remove speed argument.
2026         * score7.c: Include df.h
2027         (score7_address_cost): Remove speed argument.
2028         * score-protos.h (score_address_cost): Update prototype.
2029         * score.c: Include df.h
2030         (score_rtx_costs): Update call of costs functions.
2031         * v850.c (v850_rtx_costs): Add bool argument.
2032
2033 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
2034
2035         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
2036
2037 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
2038
2039         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
2040         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
2041
2042 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
2043
2044         * mkmap-flat.awk: Add option pe_dll.
2045         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
2046         * config/i386/t-cygwin (SHLIB_LC): Add.
2047         * config/i386/t-mingw32 (SHLIB_LC): Add.
2048         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
2049         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
2050         (LINK_SPEC): Support libgcc_s.
2051         (LIBGCC_SPEC): Support libgcc_s.
2052         (LIBGCC_SONAME): New.
2053
2054 2008-08-31  Jan Hubicka  <jh@suse.cz>
2055
2056         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
2057         mistakely had old version of patch.
2058
2059         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
2060         (ipcp_estimate_growth): New.
2061         (ipcp_insert_stage): Use ipcp_estimate_growth.
2062         * profile.c (branch_prob): When reading failed, do not consider
2063         profile as read.
2064
2065 2008-08-31  Jan Hubicka  <jh@suse.cz>
2066
2067         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
2068         loop is optimized for speed.
2069
2070 2008-08-31  Richard Guenther  <rguenther@suse.de>
2071
2072         PR middle-end/37289
2073         * fold-const.c (fold_binary): Retain conversions in folding
2074         ~A + 1 to -A.
2075
2076 2008-08-31  Jan Hubicka  <jh@suse.cz>
2077
2078         * postreload-gcse.c (eliminate_partially_redundant_loads):
2079         Use optimize_bb_for_size_p.
2080         * predict.c (maybe_hot_frequency_p): Make inline.
2081         (maybe_hot_count_p): Break out from ...
2082         (maybe_hot_bb_p): ... this one.
2083         (maybe_hot_edge_p): Simplify.
2084         * basic-block.h (probably_cold_bb_p): Remove.
2085
2086 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
2087
2088         PR target/37168
2089         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
2090         prototype.
2091         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
2092         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
2093         Also split V4SFmode.
2094         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
2095         vector float modes.
2096
2097 2008-08-31  Jan Hubicka  <jh@suse.cz>
2098
2099         * predict.c (PROB_VERY_LIKELY): Make small enough so things
2100         become cold.
2101         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
2102
2103 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
2104
2105         PR debug/37287
2106         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
2107         add source coords.
2108
2109         * dwarf2out.c (native_encode_initializer): Subtract min_index for
2110         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
2111
2112 2008-08-31  Jan Hubicka  <jh@suse.cz>
2113
2114         * sparc.h (BRANCH_COST): Fix macro definition.
2115         * avr.c (avr_operand_rtx_cost): Add speed argument.
2116         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
2117
2118 2008-08-31  Richard Guenther  <rguenther@suse.de>
2119
2120         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
2121         types instead of operands.  Re-instantiate verifying of
2122         binary expression operands.
2123
2124 2008-08-30  Jan Hubicka  <jh@suse.cz>
2125
2126         * fwprop.c (should_replace_address): Add speed attribute.
2127         (PR_OPTIMIZE_FOR_SPEED): New flag.
2128         (propagate_rtx_1): Use it.
2129         (propagate_rtx): Set it.
2130         (try_fwprop_subst): Update call of rtx_costs.
2131         (forward_propagate_and_simplify): LIkewise.
2132         * hooks.c (hook_int_rtx_bool_0): New
2133         (hook_bool_rtx_int_int_intp_false): Replace by ...
2134         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
2135         * hooks.h (hook_int_rtx_bool_0): New
2136         (hook_bool_rtx_int_int_intp_false): Replace by ...
2137         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
2138         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
2139         (prepare_cmp_insn): UPdate call of rtx_cost.
2140         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
2141         (reload_cse_simplify_operands): Update call of rtx_cost.
2142         (reload_cse_move2add): call of rtx_cost.
2143         * target.h (struct gcc_target): Update rtx_costs and address_costs.
2144         * rtlanal.c (rtx_cost): Add speed argument.
2145         (address_cost): Add speed argument
2146         (default_address_cost): Likewise.
2147         (insn_rtx_cost): Likewise.
2148         * cfgloopanal.c (seq_cost): Add speed argument.
2149         (target_reg_cost, target_spill_cost): Turn to array.
2150         (init_set_costs): Update for speed.
2151         (estimate_reg_pressure_cost): Add speed argument.
2152         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
2153         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
2154         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
2155         (seq_cost): Add speed argument.
2156         (computation_cost): Add speed arugment.
2157         (add_cost, multiply_by_const, get_address_cost): add speed argument.
2158         (force_expr_to_var_cost): Update for profile info.
2159         (force_var_cost): Likewise.
2160         (split_address_cost): Likewise.
2161         (ptr_difference_cost): Likewise.
2162         (difference_cost): Likewise.
2163         (get_computation_cost_at): Likewise.
2164         (determine_iv_cost): Likewise.
2165         (ivopts_global_cost_for_size): Likewise.
2166         (rewrite_use_address): Likewise.
2167         (tree_ssa_iv_optimize_loop): Initialize speed field.
2168         * cse.c (optimize_this_for_speed_p): New static var.
2169         (notreg_cost): Update call of rtx_cost.
2170         (cse_extended_basic_block): set optimize_this_for_speed_p.
2171         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
2172         (noce_try_cmove_arith): Likewise.
2173         (noce_try_sign_mask): LIkewise.
2174         * expr.c (compress_float_constant): Update rtx_cost calls.
2175         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
2176         (addr_to_parts): Likewise.
2177         (create_mem_ref): Likewise.
2178         * dse.c (find_shift_sequence): Add speed argument.
2179         (replace_read): Update call.
2180         * calls.c (precompute_register_parameters): Update call of rtx_cost.
2181         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
2182         * neg_cost, shift_cost, shiftadd_cost,
2183         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
2184         mul_highpart_cost): Increase dimension.
2185         (init_expmed): Initialize for both size and speed.
2186         (expand_shift): Use profile.
2187         (synth_mult): Use profile.
2188         (choose_mult_variant): Use profile.
2189         (expand_mult): Use profile.
2190         (expand_mult_highpart_optab): Use profile.
2191         (expand_mult_highpart): Use profile.
2192         (expand_smod_pow2): Use profile.
2193         (expand_divmod): Use profile.
2194         * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
2195         * loop-invariant.c (create_new_invariant): Use profile.
2196         (gain_for_invariant): Add speed parameter.
2197         (best_gain_for_invariant): Likewise.
2198         (find_invariants_to_move): Likewise.
2199         (move_single_loop_invariants): Set it.
2200         * target-def.h (TARGET_RTX_COSTS): Use hook.
2201         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
2202         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
2203         * output.h (default_address_cost): Update prototype.
2204         * combine.c (optimize_this_for_speed_p): New static var.
2205         (combine_validate_cost): Update call of rtx_cost.
2206         (combine_instructions): Set optimize_this_for_speed_p.
2207         (expand_compound_operation): Update call of rtx_cost.
2208         (make_extraction):Update call of rtx_cost.
2209         (force_to_mode):Update call of rtx_cost.
2210         (distribute_and_simplify_rtx):Update call of rtx_cost.
2211         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
2212         (estimate_reg_pressure_cost): Update prototype.
2213         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
2214         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
2215         Remove.
2216         * config/alpha/alpha.c (alpha_rtx_costs): Update.
2217         (alpha_rtx_costs): Update.
2218         * config/frv/frv.c (frv_rtx_costs): Update.
2219         * config/s390/s390.c (s390_rtx_costs): Update.
2220         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
2221         (m32c_rtx_costs): Update.
2222         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
2223         (spu_rtx_costs): Update.
2224         * config/sparc/sparc.c (sparc_rtx_costs): Update.
2225         * config/m32r/m32r.c (m32r_rtx_costs): Update.
2226         * config/i386/i386.c (:ix86_address_cost): Update.
2227         (ix86_rtx_costs): Update.
2228         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
2229         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
2230         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
2231         * config/crx/crx.c (crx_address_cost): Update.
2232         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
2233         * config/stormy16/stormy16.c
2234         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
2235         * config/m68hc11/m68hc11.c
2236         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
2237         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
2238         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
2239         Update.
2240         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
2241         Update
2242         * config/ia64/ia64.c (ia64_rtx_costs): Update.
2243         * config/m68k/m68k.c (m68k_rtx_costs): Update.
2244         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
2245         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
2246         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
2247         (mcore_rtx_costs): update.
2248         * config/score/score3.c (score3_rtx_costs): Update.
2249         * config/score/score7.c (score7_rtx_costs): Update.
2250         * config/score/score3.h (score3_rtx_costs):Update.
2251         * config/score/score7.h (score7_rtx_costs): Update.
2252         * config/score/score.c (score_rtx_costs): Update.
2253         * config/arm/arm.c (arm_address_cost): Update.
2254         (arm_rtx_costs_1): Update.
2255         (arm_rtx_costs_1): Update.
2256         (arm_size_rtx_costs): Update.
2257         (arm_size_rtx_costs): Update.
2258         (arm_size_rtx_costs): Update.
2259         (arm_xscale_rtx_costs): Update.
2260         (arm_thumb_address_cost): Update.
2261         * config/pa/pa.c (hppa_address_cost): Update.
2262         * config/mips/mips.c (mips_rtx_costs): Update.
2263         * config/vax/vax.c (vax_address_cost): Update.
2264         * config/h8300/h8300.c (h8300_shift_costs): Update.
2265         (h8300_rtx_costs): Update.
2266         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
2267         (v850_rtx_costs): Update.
2268         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
2269         * config/bfin/bfin.c
2270         (bfin_address_cost): Update.
2271         (bfin_rtx_costs): Update.
2272         * stmt.c (lshift_cheap_p): Update.
2273
2274 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2275
2276         PR middle-end/36444
2277         * expmed.c (extract_bit_field_1): Check the mode size to make
2278         sure the vector modes have the same size.
2279
2280 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
2281
2282         * dojump.c (top level): Include basic-block.h to declare
2283         optimize_insn_for_speed_p
2284
2285         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
2286
2287         * opts.h (CL_SAVE): New option class for marking options that are
2288         target specific options usable in the target attribute.
2289         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
2290
2291         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
2292         can easily find the target specific options that are safe to use
2293         in the attribute or pragma.
2294
2295         * attribs.c (decl_attributes): Change #pragma GCC option to
2296         #pragma GCC target, and attribute((option(...))) to
2297         attribute((target(...))).
2298
2299         * doc/extend.texi (target attribute): Change from option
2300         attribute.  Delete push/pop/reset.
2301         (#pragma GCC target): Change from #pragma GCC option.  Delete
2302         push/pop/reset.
2303         (#pragma GCC push_options): Document new pragma.
2304         (#pragma GCC pop_options): Document new pragma.
2305         (#pragma GCC reset_options): Document new pragma.
2306
2307         * targhooks.c (default_target_option_valid_attribute_p): Add
2308         warning about port not supporting target attributes.
2309         (default_target_option_pragma_parse): New function, warn about
2310         #pragma GCC target not being supported.
2311
2312         * targhooks.h (default_target_option_pragma_parse): Add
2313         declaration.
2314
2315         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
2316         TI_CURRENT_OPTION_PRAGMA.
2317         (current_target_pragma): Rename from current_option_pragma.
2318
2319         * target.h: (struct target_option): Delete booleans for changing
2320         the optimization level on hot/cold functions.  Change signature of
2321         pragma_parse hook to take a second tree.
2322
2323         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
2324
2325         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
2326         that the declaration is done at global scope.
2327
2328         * langhooks.c (add_builtin_function_common): Move most of the code
2329         from add_builtin_function here, calling the hook passed in.
2330         (add_builtin_function): Call add_builtin_function_common with
2331         standard builtin hook.
2332         (add_builtin_function_ext_scope): New function to add builtins to
2333         global scope.
2334
2335         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
2336         hook.
2337         (add_builtin_function_ext_scope): Add declaration.
2338
2339         * c-pragma.c (handle_pragma_target): Rename from
2340         handle_pragma_option, #pragma GCC option is now #pragma GCC
2341         target.  Move warning about port not supporting target options to
2342         default pragma parse hook.  Remove push/pop/reset from this
2343         pragma.
2344         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
2345         (option_stack): Delete static variable.
2346         (optimize_stack): Ditto.
2347         (optons_stack): New stack of saved target and optimization
2348         options.
2349         (handle_pragma_push_options): New function to handle pushing both
2350         target and optimization options.
2351         (handle_pragma_pop_options): New function to handle popping both
2352         target and optimization options.
2353         (handle_pragma_reset_options): New function to handle resetting
2354         both target and optimization options to their initial state.
2355         (init_pragma): Rename handle_pragma_option to
2356         handle_pragma_target.  Add support for push_options, pop_options,
2357         and reset_options pragmas.
2358
2359         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
2360         default_target_option_pragma_parse.
2361         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
2362         default_target_option_valid_attribute_p.
2363         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
2364         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
2365         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
2366         optimization level on hot/cold functions.
2367
2368         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
2369         if the caller and callee have different optimization levels.
2370
2371         * c-common.c (handle_target_attribute): Rename from
2372         handle_option_attribute, attribute((option(...))) is now
2373         attribute((target(...))).  Move warning if the port does not
2374         support target attributes to the default hook.
2375         (handle_hot_attribute): Delete code to change the optimization
2376         level of hot functions.
2377         (handle_cold_attribute): Ditto.
2378
2379         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
2380         argument that is the binary tree options to use if there are no
2381         arguments.  Call ix86_valid_target_attribute_tree instead of
2382         ix86_valid_option_attribute_tree.
2383         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
2384         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
2385         ix86_pragma_option_parse.
2386
2387         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
2388         Rename from ix86_valid_option_attribute_tree.
2389
2390         * config/i386/i386.c (ix86_add_new_builtins): New function to add
2391         new builtins when the ISA changes.
2392         (ix86_valid_target_attribute_tree): Rename from
2393         ix86_valid_option_attribute_tree.  Change callers.  If the
2394         function specified optimization options, use those as the starting
2395         point before setting up the target attributes.  If the
2396         optimization options were changed in the course of setting the
2397         target attributes, record the new optimization options.
2398         (ix86_valid_target_attribute_tree_inner_p): Rename from
2399         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
2400         ix86_add_new_builtins if the ISA changed.
2401         (ix86_valid_target_attribute_p): Rename from
2402         ix86_valid_option_attribute_p.  Change callers.
2403         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
2404         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
2405         as delayed builtin functions.
2406         (struct builtin_isa): New structure to record builtin functions
2407         that should be delayed until the ISA for that function is used.
2408         (ix86_builtins_isa): Change from int to struct to track builtin
2409         functions we want to declare at some point.
2410         (def_builtin): If the front end can delay defining the builtin
2411         functions, don't create builtins for ISAs not part of the default
2412         options.
2413         (def_builtin_const): Ditto.
2414         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
2415         __builtin_ia32_pcmov_v2di to be different builtin functions.
2416         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
2417         a structure instead of an int.
2418         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
2419         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
2420         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
2421         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
2422
2423         * config/ia64/ia64.h
2424         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
2425         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
2426
2427         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
2428         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
2429         (LANG_HOOKS_INITIALIZER): Add
2430         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
2431
2432 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
2433
2434         PR target/37270
2435         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
2436         the reload address with the index register for SFmode
2437         access with a displacement.
2438
2439 2008-08-30  Jan Hubicka  <jh@suse.cz>
2440
2441         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
2442         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
2443         * dojump.c (do_jump): Likewise.
2444         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
2445         (note-if_info): Add BRANCH_COST.
2446         (noce_try_store_flag_constants, noce_try_addcc,
2447         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
2448         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
2449         find_if_case_2): Use computed branch cost.
2450         * expr.h (BRANCH_COST): Update default.
2451         * predict.c (predictable_edge_p): New function.
2452         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
2453         Update BRANCH_COST call.
2454         * basic-block.h (predictable_edge_p): Declare.
2455         * config/alpha/alpha.h (BRANCH_COST): Update.
2456         * config/frv/frv.h (BRANCH_COST): Update.
2457         * config/s390/s390.h (BRANCH_COST): Update.
2458         * config/spu/spu.h (BRANCH_COST): Update.
2459         * config/sparc/sparc.h (BRANCH_COST): Update.
2460         * config/m32r/m32r.h (BRANCH_COST): Update.
2461         * config/i386/i386.h (BRANCH_COST): Update.
2462         * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
2463         * config/sh/sh.h (BRANCH_COST): Update.
2464         * config/pdp11/pdp11.h (BRANCH_COST): Update.
2465         * config/avr/avr.h (BRANCH_COST): Update.
2466         * config/crx/crx.h (BRANCH_COST): Update.
2467         * config/xtensa/xtensa.h (BRANCH_COST): Update.
2468         * config/stormy16/stormy16.h (BRANCH_COST): Update.
2469         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
2470         * config/iq2000/iq2000.h (BRANCH_COST): Update.
2471         * config/ia64/ia64.h (BRANCH_COST): Update.
2472         * config/rs6000/rs6000.h (BRANCH_COST): Update.
2473         * config/arc/arc.h (BRANCH_COST): Update.
2474         * config/score/score.h (BRANCH_COST): Update.
2475         * config/arm/arm.h (BRANCH_COST): Update.
2476         * config/pa/pa.h (BRANCH_COST): Update.
2477         * config/mips/mips.h (BRANCH_COST): Update.
2478         * config/vax/vax.h (BRANCH_COST): Update.
2479         * config/h8300/h8300.h (BRANCH_COST): Update.
2480         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
2481         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
2482         * doc/tm.texi (BRANCH_COST): Update.
2483
2484 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
2485
2486         PR target/37283
2487         * config/arm/arm.c (arm_optimization_options): Set
2488         flag_section_anchors to 2 instead of 1 to distinguish it from
2489         -fsection-anchors given explicitely on the command line.
2490
2491 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
2492
2493         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
2494         final insn of a split.
2495
2496 2008-08-30  Jan Hubicka  <jh@suse.cz>
2497
2498         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
2499         optimized for speed.
2500         * final.c (compute_alignments): Use optimize_bb_for_size_p.
2501         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
2502         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
2503         flag_gcse_after_reload_set): New static vars.
2504         (common_handle_option): Enable those flags for profile-use.
2505         (decode_options): Remove optimize_size flags that are handled
2506         on higher granuality.
2507         * tree-vectorizer.c (vectorize_loops): Use
2508         optimize_loop_nest_for_speed_p.
2509         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
2510         * tree-predcom.c (tree_predictive_commoning): Use
2511         optimize_loop_for_speed_p.
2512         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
2513         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
2514         * predict.c (optimize_loop_for_speed_p): Fix walk.
2515
2516 2008-08-30  Jan Hubicka  <jh@suse.cz>
2517
2518         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
2519         functions.
2520         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
2521         profile presence locally.
2522
2523 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
2524
2525         PR bootstrap/37086
2526         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
2527         versions before 4.0.
2528
2529 2008-08-29  Jan Hubicka  <jh@suse.cz>
2530
2531         * tree-inline.c (insert_init_stmt): Insert sequence even when
2532         not in SSA form.
2533
2534 2008-08-29  Jeff Law  <law@redhat.com>
2535
2536         * mn10300.c (mn10300_secondary_reload_class): We need secondary
2537         reloads for AM33-2 if IN is a pseudo with an equivalent memory
2538         location and class is an FP register.
2539
2540 2008-08-29  Jan Hubicka  <jh@suse.cz>
2541
2542         * see.c (see_merge_one_def_extension): Silence used uninitialized
2543         warning.
2544         * matrix-reorg.c (check_allocation_function): Likewise.
2545         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
2546
2547 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
2548
2549         PR c/37261
2550         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
2551         compute new & and | in type rather than TREE_TYPE (arg0).
2552
2553         * dwarf2out.c (fortran_common): Update comment.
2554         (gen_variable_die): Swap com_die and var_die variables in Fortran
2555         COMMON block handling code.
2556
2557         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
2558
2559         * dwarf2out.c (gen_const_die): New function.
2560         (size_of_die, value_format, output_die): Output larger
2561         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
2562         (native_encode_initializer): New function.
2563         (tree_add_const_value_attribute): Call it.
2564         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
2565
2566         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
2567         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
2568         TREE_THIS_VOLATILE to add_type_attribute.
2569
2570         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
2571         types.
2572         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
2573         types.
2574
2575         * dwarf2out.c (loc_by_reference): New function.
2576         (add_location_or_const_value_attribute): Use it.
2577
2578         PR fortran/23057
2579         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
2580         as DW_TAG_variable children of DW_TAG_common_block rather than
2581         DW_TAG_member children.  Put DW_AT_external to individual
2582         DW_TAG_variable DIEs, not to DW_TAG_common_block.
2583
2584         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
2585         loc_descriptor_from_tree_1.
2586
2587         PR fortran/29635
2588         PR fortran/23057
2589         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
2590         arguments to imported_module_or_decl.
2591         (debug_nothing_tree_tree): Removed.
2592         (debug_nothing_tree_tree_tree_bool): New prototype.
2593         * debug.c (do_nothing_debug_hooks): Adjust.
2594         (debug_nothing_tree_tree): Removed.
2595         (debug_nothing_tree_tree_tree_bool): New function.
2596         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
2597         (gen_variable_die): Put all common vars for the
2598         same COMMON block under one DW_TAG_common_block.
2599         (declare_in_namespace): Return new context_die, for Fortran
2600         return the module DIE instead of adding extra declarations into
2601         the namespace.
2602         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
2603         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
2604         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
2605         DW_AT_declaration.
2606         (dwarf2out_global_decl): Don't skip Fortran global vars.
2607         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
2608         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
2609         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
2610         DW_TAG_imported_declaration as child of previous
2611         DW_TAG_imported_module.
2612         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
2613         * sdbout.c (sdb_debug_hooks): Likewise.
2614         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2615
2616 2008-08-29  Jan Hubicka  <jh@suse.cz>
2617
2618         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
2619
2620         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
2621         * ipa-cp.c (n_cloning_candidates): New static variable.
2622         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
2623         (ipcp_print_all_lattices): Improve debug output.
2624         (ipcp_cloning_candidate_p): New function.
2625         (ipcp_initialize_node_lattices): Use it.
2626         (ipcp_init_stage): Do only analyzis here; prettier debug output.
2627         (ipcp_propagate_stage): Prettier debug output.
2628         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
2629         (ipcp_print_all_structures): Remove.
2630         (ipcp_need_redirect_p): Test !n_cloning_candidates.
2631         (ipcp_insert_stage): Prettier debug output; call
2632         cgraph_remove_unreachable_nodes before propagating.
2633         (pass_ipa_cp): Schedule function removal pass.
2634         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
2635         debug output.
2636         (cgraph_maybe_hot_edge_p): Move to ...
2637         * predict.c (cgraph_maybe_hot_edge_p) ... here.
2638         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
2639         (common_handle_option): Set them; enable ipa-cp when profiling.
2640         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
2641         (ipa_print_all_jump_functions): Likewise.
2642         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
2643         (ipa_print_node_params, ipa_print_all_params): New.
2644         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
2645         ipa_print_all_param_flags): Remove.
2646         (ipa_print_node_params, ipa_print_all_params): New.
2647
2648 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
2649
2650         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
2651         change from 2008-04-03.
2652         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
2653
2654 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
2655
2656         PR rtl-opt/37251
2657         * ira-color.c (push_allocnos_to_stack): Truncate
2658         removed_splay_allocno_vec.
2659
2660 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
2661
2662         PR rtl-opt/37243
2663         * ira-color (ira_fast_allocation): Don't assign hard registers to
2664         global allocnos.
2665
2666 2008-08-29  Jan Hubicka  <jh@suse.cz>
2667
2668         PR middle-end/37278
2669         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
2670         for cold internal loops.
2671
2672 2008-08-29  Richard Guenther  <rguenther@suse.de>
2673
2674         * tree-ssa-structalias.c (create_variable_info_for): Do not
2675         create fields for heap vars or vars with a noalias state.
2676         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
2677         from ESCAPED.
2678
2679 2008-08-29  Richard Guenther  <rguenther@suse.de>
2680
2681         * common.opt (ftree-store-ccp): Mark as preserved for
2682         backward compatibility.
2683         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
2684         * tree-pass.h (pass_store_ccp): Remove.
2685         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
2686         (first_vdef): Remove declaration.
2687         (get_value_loaded_by): Likewise.
2688         * tree-ssa-ccp.c (do_store_ccp): Remove.
2689         (get_default_value): Simplify as do_store_ccp is always false
2690         now.  Do not initialize mem_ref.
2691         (set_value_varying): Likewise.
2692         (canonicalize_float_value): Likewise.
2693         (set_lattice_value): Likewise.
2694         (likely_value): Likewise.
2695         (surely_varying_stmt_p): Likewise.
2696         (ccp_initialize): Likewise.
2697         (ccp_lattice_meet): Likewise.
2698         (ccp_visit_phi_node): Likewise.
2699         (ccp_fold): Likewise.
2700         (evaluate_stmt): Likewise.
2701         (visit_assignment): Likewise.
2702         (ccp_visit_stmt): Likewise.
2703         (execute_ssa_ccp): Fold into ...
2704         (do_ssa_ccp): ... this.
2705         (do_ssa_store_ccp): Remove.
2706         (gate_store_ccp): Likewise.
2707         (pass_store_ccp): Likewise.
2708         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
2709         initialize mem_ref.
2710         * tree-ssa-propagate.c (first_vdef): Remove.
2711         (get_value_loaded_by): Likewise.
2712         (replace_vuses_in): Likewise.
2713         (substitute_and_fold): Do not call replace_vuses_in.
2714         * opts.c (decode_options): Do not set flag_tree_store_ccp.
2715
2716 2008-08-29  Richard Guenther  <rguenther@suse.de>
2717
2718         PR middle-end/37236
2719         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
2720         PARAM_NOALIAS tags with is_heapvar.
2721         * tree-ssa-operands.c (access_can_touch_variable): Offset
2722         based tests do not apply for heapvars.  Fix offset test.
2723
2724 2008-08-29  Jan Hubicka  <jh@suse.cz>
2725
2726         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
2727         (-fipa-cp-clone): Enabled by default at -O3.
2728         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
2729         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
2730
2731 2008-08-29  Jan Hubicka  <jh@suse.cz>
2732
2733         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
2734         New functions.
2735         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
2736         Declare.
2737         * gimple.c (giple_copy_call_skip_args): New function.
2738         (giple_copy_call_skip_args): Declare.
2739
2740         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
2741         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
2742         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
2743         (ipcp_create_replace_map): Improve debug output.
2744         (ipcp_need_redirect_p): Return false when not clonning.
2745         (ipcp_update_callgraph): Skip args.
2746         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
2747         skip args.
2748         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
2749         (save_inline_function_body): Update call of tree_function_versioning.
2750         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
2751         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
2752         (tree_function_versioning): Likewise.
2753         * tree-inline.h (tree_function_versioning): Update prototype.
2754
2755 2008-08-29  Jan Hubicka  <jh@suse.cz>
2756
2757         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
2758         * tree-ssa-threadupdate.c (mark_threaded_blocks):
2759         Use optimize_function_for_size_p.
2760         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
2761         * postreload-gcse.c (eliminate_partially_redundant_load):
2762         Use optimize_bb_for_size_p.
2763         * value-prof.c (gimple_divmod_fixed_value_transform,
2764         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
2765         gimple_stringops_transform): Use optimize_bb_for_size_p.
2766         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
2767         * final.c (compute_alignments): Use optimize_function_for_size_p.
2768         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
2769         (fold_builtin_strcpy, fold_builtin_fputs): Use
2770         optimize_function_for_size_p.
2771         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
2772         * recog.c (relax_delay_slots): Likewise.
2773         * tree-ssa-math-opts.c (replace_reciprocal):
2774         Use optimize_bb_for_speed_p.
2775         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
2776         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
2777         optimize_function_for_size_p.
2778         (cgraph_decide_inlining_of_small_function): Use
2779         optimize_function_for_size_p.
2780         * global.c (find_reg): Use optimize_function_for_size_p.
2781         * opts.c (decode_options): Do not clear flag_tree_ch,
2782         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
2783         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
2784         work it out from profile.
2785         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
2786         optimize_loop_for_speed_p.
2787         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
2788         argument.
2789         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
2790         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
2791         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
2792         * local-alloc.c (block_alloc): Pass BB pointer.
2793         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
2794         * gcse.c (gcse_main): Use optimize_function_for_size_p.
2795         * loop-unroll.c (decide_unrolling_and_peeling):
2796         Use optimize_loop_for_size_p.
2797         (decide_peel_completely): Likewise.
2798         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
2799         optimize_loop_for_size_p.
2800         (vect_enhance_data_refs_alignment): Likewise.
2801         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
2802         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
2803         Update call.
2804         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
2805         (try_crossjump_bb): Use optimize_bb_for_size_p.
2806         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
2807         optimize_loop_for_speed_p.
2808         * bb-reorder.c (find_traces_1_round): Likewise.
2809         (copy_bb): Use optimize_bb_for_speed_p.
2810         (duplicate_computed_gotos): Likewise.
2811         * basic-block.h (optimize_loop_nest_for_size_p,
2812         optimize_loop_nest_for_speed_p): New.
2813         * stmt.c (expand_case): Use optimize_insn_for_size_p.
2814
2815 2008-08-29  Tristan Gingold  <gingold@adacore.com>
2816
2817         * gcov.c (main): Call expandargv.
2818
2819 2008-08-29  Jan Hubicka  <jh@suse.cz>
2820
2821         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
2822         is not cold.
2823         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2824         Constify arguments.
2825         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
2826         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2827         Constify.
2828         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
2829
2830 2008-08-29  Jan Hubicka  <jh@suse.cz>
2831
2832         * tree-pass.h (pass_strip_predict_hints): Declare.
2833         * predict.c (strip_builtin_expect): Rename to ...
2834         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
2835         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
2836         (tree_estimate_probability): Do not strip builtin_expect.
2837         (pass_strip_predict_hints): New pass.
2838         * tree-inline.c (expand_call_inline): When inlining cold function,
2839         predict it as unlikely.
2840         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
2841
2842 2008-08-29  Richard Guenther  <rguenther@suse.de>
2843
2844         PR tree-optimization/37207
2845         * tree-vrp.c (extract_range_from_binary_expr): Also try
2846         to constant fold if only one of the operands is a constant.
2847
2848 2008-08-29  Nick Clifton  <nickc@redhat.com>
2849
2850         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
2851         the same way as SYMBOL_REFs.
2852
2853 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
2854
2855         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
2856
2857 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
2858
2859         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
2860         * config/mips/mips.md (branch_likely): Remove const.  Fix
2861         comment formatting.
2862         (define_delay for type "branch"): Change to only apply for branch
2863         with likely variant.
2864         (define_delay for type "branch" and "branch_likely" no).  New delay
2865         definition.
2866         (equality_op): New code iterator.
2867         (bbv, bbinv): New code attributes.
2868         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
2869         patterns.
2870
2871 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2872             Andrew Pinski  <pinskia@gcc.gnu.org>
2873
2874         PR 18050
2875         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
2876
2877 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
2878
2879         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
2880         rule that a symbolic constant must be defined and >= 0 for the
2881         corresponding facility to be present at compile-time.
2882         * gthr-posix.c: Likewise.
2883
2884 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
2885
2886         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
2887         * config/mips/mips.md (D): New mode attribute.
2888         (mulsi3, muldi3): Merge it into ...
2889         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
2890         (muldi3_mul3): New pattern.
2891         (mulsi3_mult3): Rename to mulsi3_mul3.
2892
2893 2008-08-28  Jan Hubicka  <jh@suse.cz>
2894
2895         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
2896         to fail.
2897         * predict.c (always_optimize_for_size_p): Rename to ...
2898         (optimize_function_for_size): ... this one; make extern.
2899         (optimize_function_for_speed_p): New.
2900         (optimize_bb_for_size_p, optimize_bb_for_size_p,
2901         optimize_edge_for_size_p,optimize_edge_for_size_p,
2902         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
2903         * basic-block.h (optimize_function_for_size_p,
2904         optimize_function_for_speed_p): Declare.
2905         * i386.md (optimize_size checks): Replace them by appropriate
2906         predicate.
2907         (standard_80387_constant_p, ix86_compute_frame_layout,
2908         ix86_expand_epilogue, ix86_decompose_address,
2909         print_operand, emit_i387_cw_initialization,
2910         inline_memory_move_cost, ix86_pad_returns,
2911         ix86_reorg): Replace optimize_size checks.
2912
2913 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
2914
2915         * rtl.h (simplify_subreg_regno): Declare.
2916         * rtlanal.c (simplify_subreg_regno): New function, split out from...
2917         * simplify-rtx.c (simplify_subreg): ...here.
2918         * reload.c (find_reloads): Use simplify_subreg_regno instead of
2919         subreg_offset_representable_p.
2920
2921 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2922
2923         PR c/30949
2924         * c-typeck.c (convert_for_assignment): Give a note describing what
2925         was passed and what was expected.
2926
2927 2008-08-28  Joey Ye  <joey.ye@intel.com>
2928
2929         * doc/extend.texi: Document AVX built-in functions.
2930         * doc/invoke.texi: Document -mavx.
2931
2932 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
2933             Joey Ye  <joey.ye@intel.com>
2934             Xuepeng Guo  <xuepeng.guo@intel.com>
2935
2936         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
2937
2938         * config/i386/cpuid.h (bit_FMA): New.
2939         (bit_XSAVE): Likewise.
2940         (bit_OSXSAVE): Likewise.
2941         (bit_AVX): Likewise.
2942
2943         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
2944         define.  Use ASM_OUTPUT_AVX_PREFIX.
2945
2946         * config/i386/gmmintrin.h: New.
2947
2948         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
2949         (OPTION_MASK_ISA_AVX_SET): New.
2950         (OPTION_MASK_ISA_FMA_SET): Likewise.
2951         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
2952         (OPTION_MASK_ISA_FMA_SET): Likewise.
2953         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
2954         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
2955         (pta_flags): Add PTA_AVX and PTA_FMA.
2956         (override_options): Handle PTA_AVX and PTA_FMA.
2957         (init_cumulative_args): Handle warn_avx.
2958         (classify_argument): Return 0 for COImode and OImode.  Return
2959         1 and X86_64_AVX_CLASS for 256bit vector types.
2960         (examine_argument): Handle X86_64_AVX_CLASS.
2961         (construct_container): Likewise.
2962         (function_arg_advance_32): Pass OImode and 256bit vector types
2963         in AVX register.
2964         (function_arg_advance_64): Take a new argument to indicate if a
2965         parameter is named.  Handle 256bit vector types.  Return
2966         immediately for unnamed 256bit vector mode parameters.
2967         (function_arg_advance): Updated.
2968         (function_arg_32): Add comments for TImode.  Handle OImode
2969         and 256bit vector types.
2970         (function_arg_64): Take a new argument to indicate if a
2971         parameter is named.  Handle 256bit vector types.  Return NULL
2972         for unnamed 256bit vector mode parameters.
2973         (function_arg): Updated.
2974         (setup_incoming_varargs_64): Support
2975         AVX encoding for *sse_prologue_save_insn.
2976         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
2977         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
2978         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
2979         enabled, otherwise return -3.
2980         (standard_sse_constant_opcode): Handle AVX and 256bit vector
2981         modes.
2982         (print_reg): Support AVX registers.  Handle 'x' and 't'.
2983         Handle 'd' to duplicate the operand.
2984         (print_operand): Likewise.  Also support AVX vector compare
2985         instructions.
2986         (output_387_binary_op): Support AVX.
2987         (output_fp_compare): Likewise.
2988         (ix86_expand_vector_move_misalign): Likewise.
2989         (ix86_attr_length_vex_default): New.
2990         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2991         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2992         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2993         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2994         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
2995         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2996         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
2997         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
2998         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
2999         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
3000         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
3001         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
3002         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
3003         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
3004         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
3005         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
3006         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
3007         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
3008         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
3009         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
3010         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
3011         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
3012         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
3013         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
3014         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
3015         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
3016         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
3017         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
3018         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
3019         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
3020         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
3021         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
3022         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
3023         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
3024         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
3025         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
3026         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
3027         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
3028         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
3029         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
3030         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
3031         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
3032         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
3033         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
3034         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
3035         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
3036         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
3037         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
3038         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
3039         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
3040         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
3041         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
3042         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
3043         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
3044         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
3045         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
3046         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
3047         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
3048         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
3049         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
3050         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
3051         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
3052         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
3053         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
3054         and IX86_BUILTIN_MOVMSKPS256,
3055         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
3056         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
3057         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
3058         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
3059         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
3060         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
3061         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
3062         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
3063         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
3064         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
3065         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
3066         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
3067         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
3068         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
3069         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
3070         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
3071         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
3072         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
3073         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
3074         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
3075         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
3076         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
3077         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
3078         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
3079         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
3080         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
3081         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
3082         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
3083         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
3084         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
3085         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
3086         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
3087         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
3088         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
3089         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
3090         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
3091         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
3092         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
3093         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
3094         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
3095         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
3096         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
3097         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
3098         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
3099         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
3100         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
3101         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
3102         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
3103         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
3104         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
3105         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
3106         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
3107         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
3108         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
3109         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
3110         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
3111         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
3112         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
3113         IX86_BUILTIN_CMPPS,
3114         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
3115         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
3116         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
3117         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
3118         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
3119         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
3120         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
3121         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
3122         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
3123         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
3124         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
3125         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
3126         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
3127         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
3128         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
3129         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
3130         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
3131         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
3132         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
3133         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
3134         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
3135         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
3136         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
3137         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
3138         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
3139         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
3140         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
3141         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
3142         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
3143         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
3144         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
3145         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
3146         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
3147         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
3148         IX86_BUILTIN_MOVMSKPS256.
3149         (ix86_init_mmx_sse_builtins): Support AVX builtins.
3150         (ix86_expand_args_builtin): Likewise.
3151         (ix86_expand_special_args_builtin): Likewise.
3152         (ix86_hard_regno_mode_ok): Handle AVX modes.
3153         (ix86_expand_vector_init_duplicate): Likewise.
3154         (ix86_expand_vector_init_one_nonzero): Likewise.
3155         (ix86_expand_vector_init_one_var): Likewise.
3156         (ix86_expand_vector_init_concat): Likewise.
3157         (ix86_expand_vector_init_general): Likewise.
3158         (ix86_expand_vector_set): Likewise.
3159         (ix86_vector_mode_supported_p): Likewise.
3160         (x86_extended_reg_mentioned_p): Check INSN_P before using
3161         PATTERN.
3162
3163         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3164         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
3165
3166         * config/i386/i386.h (TARGET_AVX): New.
3167         (TARGET_FMA): Likewise.
3168         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
3169         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
3170         (VALID_AVX256_REG_MODE): New.
3171         (AVX256_VEC_FLOAT_MODE_P): Likewise.
3172         (AVX_FLOAT_MODE_P): Likewise.
3173         (AVX128_VEC_FLOAT_MODE_P): Likewise.
3174         (AVX256_VEC_FLOAT_MODE_P): Likewise.
3175         (AVX_VEC_FLOAT_MODE_P): Likewise.
3176         (ASM_OUTPUT_AVX_PREFIX): Likewise.
3177         (ASM_OUTPUT_OPCODE): Likewise.
3178         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
3179         support.
3180         (SSE_REG_MODE_P): Allow 256bit vector modes.
3181         (ix86_args): Add a warn_avx field.
3182
3183         * config/i386/i386.md (UNSPEC_PCMP): New.
3184         (UNSPEC_VPERMIL): Likewise.
3185         (UNSPEC_VPERMIL2): Likewise.
3186         (UNSPEC_VPERMIL2F128): Likewise.
3187         (UNSPEC_MASKLOAD): Likewise.
3188         (UNSPEC_MASKSTORE): Likewise.
3189         (UNSPEC_CAST): Likewise.
3190         (UNSPEC_VTESTP): Likewise.
3191         (UNSPECV_VZEROALL): Likewise.
3192         (UNSPECV_VZEROUPPER): Likewise.
3193         (XMM0_REG): Likewise.
3194         (XMM1_REG): Likewise.
3195         (XMM2_REG): Likewise.
3196         (XMM3_REG): Likewise.
3197         (XMM4_REG): Likewise.
3198         (XMM5_REG): Likewise.
3199         (XMM6_REG): Likewise.
3200         (XMM8_REG): Likewise.
3201         (XMM9_REG): Likewise.
3202         (XMM10_REG): Likewise.
3203         (XMM11_REG): Likewise.
3204         (XMM12_REG): Likewise.
3205         (XMM13_REG): Likewise.
3206         (XMM14_REG): Likewise.
3207         (XMM15_REG): Likewise.
3208         (prefix): Likewise.
3209         (prefix_vex_imm8): Likewise.
3210         (prefix_vex_w): Likewise.
3211         (length_vex): Likewise.
3212         (maxmin): Likewise.
3213         (movoi): Likewise.
3214         (*avx_ashlti3): Likewise.
3215         (*avx_lshrti3): Likewise.
3216         (*avx_setcc<mode>): Likewise.
3217         (*fop_<mode>_comm_mixed_avx): Likewise.
3218         (*fop_<mode>_comm_avx): Likewise.
3219         (*fop_<mode>_1_mixed_avx): Likewise.
3220         (*fop_<mode>_1_avx): Likewise.
3221         (*avx_<code><mode>3): Likewise.
3222         (*avx_ieee_smin<mode>3): Likewise.
3223         (*avx_ieee_smax<mode>3): Likewise.
3224         (mode): Add OI, V8SF and V4DF.
3225         (length): Support VEX prefix.
3226         (*cmpfp_i_mixed): Set prefix attribute.
3227         (*cmpfp_i_sse): Likewise.
3228         (*cmpfp_iu_mixed): Likewise.
3229         (*cmpfp_iu_sse): Likewise.
3230         (*movsi_1): Support AVX.
3231         (*movdi_2): Likewise.
3232         (*movdi_1_rex64): Likewise.
3233         (*movti_internal): Likewise.
3234         (*movti_rex64): Likewise.
3235         (*movsf_1): Likewise.
3236         (*movdf_nointeger): Likewise.
3237         (*movdf_integer_rex64): Likewise.
3238         (*movtf_internal): Likewise.
3239         (zero_extendsidi2_32): Likewise.
3240         (zero_extendsidi2_rex64): Likewise.
3241         (*extendsfdf2_mixed): Likewise.
3242         (*extendsfdf2_sse): Likewise.
3243         (*truncdfsf_fast_mixed): Likewise.
3244         (*truncdfsf_fast_sse): Likewise.
3245         (*truncdfsf_mixed): Likewise.
3246         (fix_trunc<mode>di_sse): Likewise.
3247         (fix_trunc<mode>si_sse): Likewise.
3248         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
3249         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
3250         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
3251         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
3252         (*rcpsf2_sse): Likewise.
3253         (*rsqrtsf2_sse): Likewise.
3254         (*sqrt<mode>2_sse): Likewise.
3255         (sse4_1_round<mode>2): Likewise.
3256         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
3257         Support AVX.  Set length attribute properly for AVX.
3258
3259         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
3260         (VECTOR_MODES (FLOAT, 32)): Likewise.
3261         (VECTOR_MODE (INT, DI, 8)): Likewise.
3262         (VECTOR_MODE (INT, HI, 32)): Likewise.
3263         (VECTOR_MODE (INT, QI, 64)): Likewise.
3264         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
3265         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
3266         (VECTOR_MODE (INT, DI, 4)): Removed.
3267         (VECTOR_MODE (INT, SI, 8)): Likewise.
3268         (VECTOR_MODE (INT, HI, 16)): Likewise.
3269         (VECTOR_MODE (INT, QI, 32)): Likewise.
3270         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
3271         (INT_MODE (OI, 32)): Likewise.
3272
3273         * config/i386/i386.opt (mavx): New.
3274         (mfma): Likewise.
3275
3276         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
3277
3278         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
3279         (*mov<mode>_internal_avx): New.
3280         (*movv2sf_internal_rex64_avx): Likewise.
3281         (*movv2sf_internal_avx): Likewise.
3282
3283         * config/i386/predicates.md (const_4_to_5_operand): New.
3284         (const_6_to_7_operand): Likewise.
3285         (const_8_to_11_operand): Likewise.
3286         (const_12_to_15_operand): Likewise.
3287         (avx_comparison_float_operator): Likewise.
3288
3289         * config/i386/sse.md (AVX256MODEI): New.
3290         (AVX256MODE): Likewise.
3291         (AVXMODEQI): Likewise.
3292         (AVXMODE): Likewise.
3293         (AVX256MODEF2P): Likewise.
3294         (AVX256MODE2P): Likewise.
3295         (AVX256MODE4P): Likewise.
3296         (AVX256MODE8P): Likewise.
3297         (AVXMODEF2P): Likewise.
3298         (AVXMODEF4P): Likewise.
3299         (AVXMODEDCVTDQ2PS): Likewise.
3300         (AVXMODEDCVTPS2DQ): Likewise.
3301         (avxvecmode): Likewise.
3302         (avxvecpsmode): Likewise.
3303         (avxhalfvecmode): Likewise.
3304         (avxscalarmode): Likewise.
3305         (avxcvtvecmode): Likewise.
3306         (avxpermvecmode): Likewise.
3307         (avxmodesuffixf2c): Likewise.
3308         (avxmodesuffixp): Likewise.
3309         (avxmodesuffixs): Likewise.
3310         (avxmodesuffix): Likewise.
3311         (vpermilbits): Likewise.
3312         (pinsrbits): Likewise.
3313         (mov<mode>): Likewise.
3314         (*mov<mode>_internal): Likewise.
3315         (push<mode>1): Likewise.
3316         (movmisalign<mode>): Likewise.
3317         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3318         (avx_movdqu<avxmodesuffix>): Likewise.
3319         (avx_lddqu<avxmodesuffix>): Likewise.
3320         (<plusminus_insn><mode>3): Likewise.
3321         (*avx_<plusminus_insn><mode>3): Likewise.
3322         (*avx_vm<plusminus_insn><mode>3): Likewise.
3323         (mul<mode>3): Likewise.
3324         (*avx_mul<mode>3): Likewise.
3325         (*avx_vmmul<mode>3): Likewise.
3326         (divv8sf3): Likewise.
3327         (divv4df3): Likewise.
3328         (avx_div<mode>3): Likewise.
3329         (*avx_div<mode>3): Likewise.
3330         (*avx_vmdiv<mode>3): Likewise.
3331         (avx_rcpv8sf2): Likewise.
3332         (*avx_vmrcpv4sf2): Likewise.
3333         (sqrtv8sf2): Likewise.
3334         (avx_sqrtv8sf2): Likewise.
3335         (*avx_vmsqrt<mode>2): Likewise.
3336         (rsqrtv8sf2): Likewise.
3337         (avx_rsqrtv8sf2): Likewise.
3338         (*avx_vmrsqrtv4sf2): Likewise.
3339         (<code><mode>3): Likewise.
3340         (*avx_<code><mode>3_finite): Likewise.
3341         (*avx_<code><mode>3): Likewise.
3342         (*avx_vm<code><mode>3): Likewise.
3343         (*avx_ieee_smin<mode>3): Likewise.
3344         (*avx_ieee_smax<mode>3): Likewise.
3345         (avx_addsubv8sf3): Likewise.
3346         (avx_addsubv4df3): Likewise.
3347         (*avx_addsubv4sf3): Likewise.
3348         (*avx_addsubv2df3): Likewise.
3349         (avx_h<plusminus_insn>v4df3): Likewise.
3350         (avx_h<plusminus_insn>v8sf3): Likewise.
3351         (*avx_h<plusminus_insn>v4sf3): Likewise.
3352         (*avx_h<plusminus_insn>v2df3): Likewise.
3353         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
3354         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
3355         (*avx_maskcmp<mode>3): Likewise.
3356         (avx_nand<mode>3): Likewise.
3357         (*avx_<code><mode>3): Likewise.
3358         (*avx_nand<mode>3): Likewise.
3359         (*avx_<code><mode>3): Likewise.
3360         (*avx_cvtsi2ss): Likewise.
3361         (*avx_cvtsi2ssq): Likewise.
3362         (*avx_cvtsi2sd): Likewise.
3363         (*avx_cvtsi2sdq): Likewise.
3364         (*avx_cvtsd2ss): Likewise.
3365         (avx_cvtss2sd): Likewise.
3366         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
3367         (avx_cvtps2dq<avxmodesuffix>): Likewise.
3368         (avx_cvttps2dq<avxmodesuffix>): Likewise.
3369         (*avx_cvtsi2sd): Likewise.
3370         (*avx_cvtsi2sdq): Likewise.
3371         (avx_cvtdq2pd256): Likewise.
3372         (avx_cvtpd2dq256): Likewise.
3373         (avx_cvttpd2dq256): Likewise.
3374         (*avx_cvtsd2ss): Likewise.
3375         (*avx_cvtss2sd): Likewise.
3376         (avx_cvtpd2ps256): Likewise.
3377         (avx_cvtps2pd256): Likewise.
3378         (*avx_movhlps): Likewise.
3379         (*avx_movlhps): Likewise.
3380         (avx_unpckhps256): Likewise.
3381         (*avx_unpckhps): Likewise.
3382         (avx_unpcklps256): Likewise.
3383         (*avx_unpcklps): Likewise.
3384         (avx_movshdup256): Likewise.
3385         (avx_movsldup256): Likewise.
3386         (avx_shufps256): Likewise.
3387         (avx_shufps256_1): Likewise.
3388         (*avx_shufps_<mode>): Likewise.
3389         (*avx_loadhps): Likewise.
3390         (*avx_storelps): Likewise.
3391         (*avx_loadlps): Likewise.
3392         (*avx_movss): Likewise.
3393         (*vec_dupv4sf_avx): Likewise.
3394         (*vec_concatv2sf_avx): Likewise.
3395         (*vec_concatv4sf_avx): Likewise.
3396         (*vec_setv4sf_0_avx): Likewise.
3397         (*vec_setv4sf_avx): Likewise.
3398         (*avx_insertps): Likewise.
3399         (avx_vextractf128<mode>): Likewise.
3400         (vec_extract_lo_<mode>): Likewise.
3401         (vec_extract_hi_<mode>): Likewise.
3402         (vec_extract_lo_<mode>): Likewise.
3403         (vec_extract_hi_<mode>): Likewise.
3404         (vec_extract_lo_v16hi): Likewise.
3405         (vec_extract_hi_v16hi): Likewise.
3406         (vec_extract_lo_v32qi): Likewise.
3407         (vec_extract_hi_v32qi): Likewise.
3408         (avx_unpckhpd256): Likewise.
3409         (*avx_unpckhpd): Likewise.
3410         (avx_movddup256): Likewise.
3411         (*avx_movddup): Likewise.
3412         (avx_unpcklpd256): Likewise.
3413         (*avx_unpcklpd): Likewise.
3414         (avx_shufpd256): Likewise.
3415         (avx_shufpd256_1): Likewise.
3416         (*avx_punpckhqdq): Likewise.
3417         (*avx_punpcklqdq): Likewise.
3418         (*avx_shufpd_<mode>): Likewise.
3419         (*avx_storehpd): Likewise.
3420         (*avx_loadhpd): Likewise.
3421         (*avx_loadlpd): Likewise.
3422         (*avx_movsd): Likewise.
3423         (*vec_concatv2df_avx): Likewise.
3424         (*avx_<plusminus_insn><mode>3): Likewise.
3425         (*avx_<plusminus_insn><mode>3): Likewise.
3426         (*avx_mulv8hi3): Likewise.
3427         (*avxv8hi3_highpart): Likewise.
3428         (*avx_umulv8hi3_highpart): Likewise.
3429         (*avx_umulv2siv2di3): Likewise.
3430         (*avx_mulv2siv2di3): Likewise.
3431         (*avx_pmaddwd): Likewise.
3432         (*avx_mulv4si3): Likewise.
3433         (*avx_ashr<mode>3): Likewise.
3434         (*avx_lshr<mode>3): Likewise.
3435         (*avx_ashl<mode>3): Likewise.
3436         (*avx_<code><mode>3): Likewise.
3437         (*avx_eq<mode>3): Likewise.
3438         (*avx_gt<mode>3): Likewise.
3439         (*avx_nand<mode>3): Likewise.
3440         (*avx_nand<mode>3): Likewise.
3441         (*avx_<code><mode>3): Likewise.
3442         (*avx_<code><mode>3): Likewise.
3443         (*avx_packsswb): Likewise.
3444         (*avx_packssdw): Likewise.
3445         (*avx_packuswb): Likewise.
3446         (*avx_punpckhbw): Likewise.
3447         (*avx_punpcklbw): Likewise.
3448         (*avx_punpckhwd): Likewise.
3449         (*avx_punpcklwd): Likewise.
3450         (*avx_punpckhdq): Likewise.
3451         (*avx_punpckldq): Likewise.
3452         (*avx_pinsr<avxmodesuffixs>): Likewise.
3453         (*avx_pinsrq): Likewise.
3454         (*avx_loadld): Likewise.
3455         (*vec_extractv2di_1_rex64_avx): Likewise.
3456         (*vec_extractv2di_1_avx): Likewise.
3457         (*vec_dupv2di_avx): Likewise.
3458         (*vec_concatv2si_avx): Likewise.
3459         (*vec_concatv4si_1_avx): Likewise.
3460         (*vec_concatv2di_avx): Likewise.
3461         (*vec_concatv2di_rex64_avx): Likewise.
3462         (*avx_uavgv16qi3): Likewise.
3463         (*avx_uavgv8hi3): Likewise.
3464         (*avx_psadbw): Likewise.
3465         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
3466         (*avx_phaddwv8hi3): Likewise.
3467         (*avx_phadddv4si3): Likewise.
3468         (*avx_phaddswv8hi3): Likewise.
3469         (*avx_phsubwv8hi3): Likewise.
3470         (*avx_phsubdv4si3): Likewise.
3471         (*avx_phsubswv8hi3): Likewise.
3472         (*avx_pmaddubsw128): Likewise.
3473         (*avx_pmulhrswv8hi3): Likewise.
3474         (*avx_pshufbv16qi3): Likewise.
3475         (*avx_psign<mode>3): Likewise.
3476         (*avx_palignrti): Likewise.
3477         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3478         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3479         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3480         (*avx_mpsadbw): Likewise.
3481         (*avx_packusdw): Likewise.
3482         (*avx_pblendvb): Likewise.
3483         (*avx_pblendw): Likewise.
3484         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3485         (avx_ptest256): Likewise.
3486         (avx_roundp<avxmodesuffixf2c>256): Likewise.
3487         (*avx_rounds<ssemodesuffixf2c>): Likewise.
3488         (*avx_aesenc): Likewise.
3489         (*avx_aesenclast): Likewise.
3490         (*avx_aesdec): Likewise.
3491         (*avx_aesdeclast): Likewise.
3492         (avx_vzeroupper): Likewise.
3493         (avx_vzeroupper_rex64): Likewise.
3494         (avx_vpermil<mode>): Likewise.
3495         (avx_vpermilvar<mode>3): Likewise.
3496         (avx_vpermil2<mode>3): Likewise.
3497         (avx_vperm2f128<mode>3): Likewise.
3498         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3499         (avx_vbroadcastss256): Likewise.
3500         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
3501         (avx_vinsertf128<mode>): Likewise.
3502         (vec_set_lo_<mode>): Likewise.
3503         (vec_set_hi_<mode>): Likewise.
3504         (vec_set_lo_<mode>): Likewise.
3505         (vec_set_hi_<mode>): Likewise.
3506         (vec_set_lo_v16hi): Likewise.
3507         (vec_set_hi_v16hi): Likewise.
3508         (vec_set_lo_v32qi): Likewise.
3509         (vec_set_hi_v32qi): Likewise.
3510         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3511         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3512         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
3513         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
3514         (vec_init<mode>): Likewise.
3515         (*vec_concat<mode>_avx): Likewise.
3516         (blendbits): Support V8SF and V4DF.
3517         (sse2_movq128): Support AVX.
3518         (<sse>_movnt<mode>): Likewise.
3519         (sse2_movntv2di): Likewise.
3520         (sse_rcpv4sf2): Likewise.
3521         (sse_sqrtv4sf2): Likewise.
3522         (sse_rsqrtv4sf2): Likewise.
3523         (<sse>_comi): Likewise.
3524         (<sse>_ucomi): Likewise.
3525         (sse_cvtss2si): Likewise.
3526         (sse_cvtss2si_2): Likewise.
3527         (sse_cvtss2siq): Likewise.
3528         (sse_cvtss2siq_2): Likewise.
3529         (sse_cvttss2si): Likewise.
3530         (sse_cvttss2siq): Likewise.
3531         (sse2_cvtsd2si): Likewise.
3532         (sse2_cvtsd2si_2): Likewise.
3533         (sse2_cvtsd2siq): Likewise.
3534         (sse2_cvtsd2siq_2): Likewise.
3535         (sse2_cvttsd2si): Likewise.
3536         (sse2_cvttsd2siq): Likewise.
3537         (sse2_cvtdq2pd): Likewise.
3538         (*sse2_cvtpd2dq): Likewise.
3539         (*sse2_cvttpd2dq): Likewise.
3540         (*sse2_cvtpd2ps): Likewise.
3541         (sse2_cvtps2pd): Likewise.
3542         (sse3_movshdup): Likewise.
3543         (sse3_movsldup): Likewise.
3544         (sse_storehps): Likewise.
3545         (*sse4_1_extractps): Likewise.
3546         (sse2_storelpd): Likewise.
3547         (vec_dupv2df_sse3): Likewise.
3548         (*vec_concatv2df_sse3): Likewise.
3549         (*sse4_1_pextrb): Likewise.
3550         (*sse4_1_pextrb_memory): Likewise.
3551         (*sse2_pextrw): Likewise.
3552         (*sse4_1_pextrw_memory): Likewise.
3553         (*sse4_1_pextrd): Likewise.
3554         (*sse4_1_pextrq): Likewise.
3555         (sse2_pshufd_1): Likewise.
3556         (sse2_pshuflw_1): Likewise.
3557         (sse2_pshufhw_1): Likewise.
3558         (*sse2_storeq_rex64): Likewise.
3559         (*vec_dupv4si): Likewise.
3560         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
3561         (sse2_pmovmskb): Likewise.
3562         (*sse2_maskmovdqu): Likewise.
3563         (*sse2_maskmovdqu_rex64): Likewise.
3564         (sse_ldmxcsr): Likewise.
3565         (sse_stmxcsr): Likewise.
3566         (abs<mode>2): Likewise.
3567         (sse4_1_movntdqa): Likewise.
3568         (sse4_1_phminposuw): Likewise.
3569         (sse4_1_extendv8qiv8hi2): Likewise.
3570         (*sse4_1_extendv8qiv8hi2): Likewise.
3571         (sse4_1_extendv4qiv4si2): Likewise.
3572         (*sse4_1_extendv4qiv4si2): Likewise.
3573         (sse4_1_extendv2qiv2di2): Likewise.
3574         (*sse4_1_extendv2qiv2di2): Likewise.
3575         (sse4_1_extendv4hiv4si2): Likewise.
3576         (*sse4_1_extendv4hiv4si2): Likewise.
3577         (sse4_1_extendv2hiv2di2): Likewise.
3578         (*sse4_1_extendv2hiv2di2): Likewise.
3579         (sse4_1_extendv2siv2di2): Likewise.
3580         (*sse4_1_extendv2siv2di2): Likewise.
3581         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3582         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3583         (sse4_1_zero_extendv4qiv4si2): Likewise.
3584         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3585         (sse4_1_zero_extendv2qiv2di2): Likewise.
3586         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3587         (sse4_1_zero_extendv4hiv4si2): Likewise.
3588         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3589         (sse4_1_zero_extendv2hiv2di2): Likewise.
3590         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3591         (sse4_1_zero_extendv2siv2di2): Likewise.
3592         (*sse4_1_zero_extendv2siv2di2): Likewise.
3593         (sse4_1_ptest): Likewise.
3594         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
3595         (sse4_2_pcmpestri): Likewise.
3596         (sse4_2_pcmpestrm): Likewise.
3597         (sse4_2_pcmpistri): Likewise.
3598         (sse4_2_pcmpistrm): Likewise.
3599         (aesimc): Likewise.
3600         (aeskeygenassist): Likewise.
3601
3602 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
3603
3604         * config/i386/predicates.md (vzeroall_operation): New.
3605
3606         * config/i386/sse.md (avx_vzeroall): New.
3607         (*avx_vzeroall): Likewise.
3608
3609 2008-08-28  Paul Brook  <paul@codesourcery.com>
3610             Mark Shinwell  <shinwell@codesourcery.com>
3611             Richard Earnshaw  <richard.earnshaw@arm.com>
3612
3613         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
3614         (TARGET_MIN_ANCHOR_OFFSET): New.
3615         (arm_override_options): Set correct anchor ranges for Thumb-1
3616         and Thumb-2 if required.
3617         (legitimize_pic_address): Handle case involving a TLS symbol
3618         reference with an addend.
3619         (arm_optimization_options): Enable section anchors at -O1 and
3620         above.
3621         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
3622         * config/arm/arm-protos.h (arm_optimization_options): New.
3623
3624 2008-08-28  Nick Clifton  <nickc@redhat.com>
3625
3626         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
3627         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
3628         attribute.
3629
3630         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
3631         * config/v850/v850.md (return): Remove frame size restriction.
3632
3633         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
3634
3635         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
3636
3637         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
3638
3639         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
3640
3641 2008-08-28  Paul Brook  <paul@codesourcery.com>
3642
3643         * config/arm/vfp11.md: Update license notice.
3644         * config/arm/cortex-r4.md: Ditto.
3645
3646 2008-08-28  Richard Guenther  <rguenther@suse.de>
3647
3648         PR tree-optimization/37207
3649         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
3650         tuplification bug.
3651
3652 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
3653
3654         PR c++/36741
3655         * tree.c (int_fits_type_p): Don't forget unsigned integers
3656           of type sizetype which higher end word equals -1.
3657
3658 2008-08-28  Ira Rosen  <irar@il.ibm.com>
3659
3660         * target.h (struct vectorize): Add new target builtin.
3661         * tree-vectorizer.c (destroy_loop_vec_info): Call
3662         vect_free_slp_instance instead of vect_free_slp_node.
3663         * tree-vectorizer.h (enum slp_load_perm_type): New.
3664         (struct _slp_instance): Add new fields.
3665         (SLP_INSTANCE_LOAD_PERMUTATION): New.
3666         (SLP_INSTANCE_LOADS): New.
3667         (vect_free_slp_tree): Remove.
3668         (vect_free_slp_instance): Declare.
3669         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
3670         (vectorizable_load): Add argument.
3671         (vect_transform_slp_perm_load): New.
3672         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
3673         vectorizable_load.
3674         (vect_get_place_in_interleaving_chain): New function.
3675         (vect_free_slp_tree): Make static.
3676         (vect_free_slp_instance): New function.
3677         (vect_build_slp_tree): Add new arguments. Allow load permutations and
3678         collect the load location in the interleaving chain.
3679         (vect_supported_slp_permutation_p): New function.
3680         (vect_supported_load_permutation_p): Likewise.
3681         (vect_analyze_slp_instance): In case of loads permutation, call
3682         vect_supported_load_permutation_p to check that the permutation is
3683         supported.
3684         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
3685         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
3686         (vect_create_mask_and_perm): New function.
3687         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
3688         (vectorizable_load): Add an argument. Don't keep the created vectors
3689         statements in the node if permutation is required. Call
3690         vect_transform_slp_perm_load to generate the permutation.
3691         (vect_transform_stmt): Add new argument. Call vectorizable_load with
3692         additional argument.
3693         (vect_schedule_slp_instance): In case of loads permutation, allocate
3694         vectorized statements structure for all the related SLP nodes. Call
3695         vect_transform_stmt with addditional argument.
3696         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
3697         * config/spu/spu.c (spu_builtin_vec_perm): New.
3698         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
3699         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
3700         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
3701         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
3702
3703 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
3704
3705         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
3706         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
3707         __gthread_cond_signal, __gthread_cond_timedwait,
3708         __gthread_cond_timedwait_recursive): New functions.
3709         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
3710         Likewise.
3711         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
3712         thread interfaces.
3713
3714 2008-08-28  Richard Guenther  <rguenther@suse.de>
3715
3716         PR middle-end/37005
3717         * fold-const.c (maybe_canonicalize_comparison_1): Require
3718         undefined overflow only for canonicalizing A +- CST cmp CST.
3719         Make sure to not generate new constants that are not inside
3720         their TYPE_MIN/MAX_VALUE range.
3721         (maybe_canonicalize_comparison): Remove undefined overflow
3722         checking from here.
3723         (fold_binary): Remove now duplicate folding.
3724
3725 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
3726
3727         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
3728         use not updated in the last change.
3729
3730 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3731
3732         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
3733         (IRA_COVER_CLASSES): Add FPUL_REGS.
3734
3735 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3736
3737         PR 37217
3738         * c-common.c (conversion_warning): Check for null operands.
3739
3740 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3741
3742         PR c/31673
3743         * c-decl.c (check_for_loop_decls): Improve error message. Give
3744         hint.
3745
3746 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3747
3748         PR c/37186
3749         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
3750         (convert_for_assignment): Pass corrent OPT_W* parameter to
3751         WARN_FOR_ASSIGNMENT.
3752
3753 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
3754
3755         PR c++/35321
3756         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
3757
3758 2008-08-27  Paul Brook  <paul@codesourcery.com>
3759
3760         * config.gcc: Loosen checks for arm uclinux eabi targets.
3761
3762 2008-08-27  Paul Brook  <paul@codesourcery.com>
3763
3764         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
3765         _clzsi2.
3766         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
3767
3768 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
3769
3770         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
3771         the enumerators of an ENUMERAL_TYPE.
3772         * dbxout.c (dbxout_type): Ditto.
3773
3774 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3775
3776         PR rtl-opt/37219
3777         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
3778         (fwprop_addr): Check that the loop_father is not the outer loop.
3779
3780 2008-08-26  Paul Brook  <paul@codesourcery.com>
3781
3782         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
3783         Remove documentation entry for fmul type.
3784         Use fmuls to annotate single-precision multiplication patterns,
3785         fmuld to annotate double-precision multiplication patterns,
3786         fmacs to annotate single-precision multiply-accumulate patterns
3787         and fmacd to annotate double-precision multiply-accumulate patterns.
3788         * config/arm/vfp11.md: Update reservations accordingly.
3789         * config/arm/arm.md: Note that certain values of the "type"
3790         attribute are documented in vfp.md.
3791         * config/arm/arm1020e.md: Remove out of date duplicate comment.
3792         (v10_cvt): Use new fmul types.
3793
3794 2008-08-26  Paul Brook  <paul@codesourcery.com>
3795
3796         * config/arm/vfp.md: Move pipeline description for VFP11 to...
3797         * config/arm/vfp11.md: ...here.  New.
3798         * config/arm/arm.md: Include vfp11.md.
3799
3800 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
3801
3802         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
3803         parameter to inform call.
3804
3805 2008-08-26  Jeff Law  <law@redhat.com>
3806
3807         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
3808         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
3809         preferred class when copying a constant into a partial word register.
3810
3811 2008-08-26  Ben Elliston  <bje@au.ibm.com>
3812
3813         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
3814         * cp/typeck.c: Likewise.
3815         * cp/tree.c: Likewise.
3816         * gimple-low.c: Likewise.
3817         * jump.c: Likewise.
3818
3819 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
3820
3821         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
3822         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
3823
3824         * doc/passes.texi: Describe IRA.
3825
3826         * doc/tm.texi (IRA_COVER_CLASSES,
3827         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
3828
3829         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
3830         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
3831         -fira-propagate-cost, -fno-ira-share-save-slots,
3832         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
3833
3834         * flags.h (ira_algorithm): New enumeration.
3835         (flag_ira_algorithm, flag_ira_verbose): New external variable
3836         declarations.
3837
3838         * postreload.c (gate_handle_postreload): Don't do post reload
3839         optimizations unless the reload is completed.
3840
3841         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
3842         IRA.
3843
3844         * tree-pass.h (pass_ira): New external variable declaration.
3845
3846         * reload.h: Add 2008 to the Copyright.
3847
3848         * cfgloopanal.c: Include params.h.
3849         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
3850         mode.
3851
3852         * params.h (IRA_MAX_LOOPS_NUM): New macro.
3853
3854         * toplev.c (ira.h): New include.
3855         (flag_ira_algorithm, flag_ira_verbose): New external variables.
3856         (backend_init_target): Call ira_init.
3857         (backend_init): Call ira_init_once.
3858         (finalize): Call finish_ira_once.
3859
3860         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
3861         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
3862         external variables.
3863
3864         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
3865         may_move_out_cost): New external variable declarations.
3866         (move_table): New typedef.
3867
3868         * caller-save.c: Include headers output.h and ira.h.
3869         (no_caller_save_reg_set): New global variable.
3870         (save_slots_num, save_slots): New variables.
3871         (reg_save_code, reg_restore_code, add_stored_regs): Add
3872         prototypes.
3873         (init_caller_save): Set up no_caller_save_reg_set.
3874         (init_save_areas): Reset save_slots_num.
3875         (saved_hard_reg): New structure.
3876         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
3877         (initiate_saved_hard_regs, new_saved_hard_reg,
3878         finish_saved_hard_regs, saved_hard_reg_compare_func): New
3879         functions.
3880         (setup_save_areas): Add code for sharing stack slots.
3881         (all_blocks): New variable.
3882         (save_call_clobbered_regs): Process pseudo-register too.
3883         (mark_set_regs): Process pseudo-register too.
3884         (insert_one_insn): Put the insn after bb note in a empty basic
3885         block.  Add insn check.
3886
3887         * global.c (eliminable_regset): Make it external.
3888         (mark_elimination): Use DF_LR_IN for IRA.
3889         (pseudo_for_reload_consideration_p): New.
3890         (build_insn_chain): Make it external.  Don't ignore spilled
3891         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
3892         (gate_handle_global_alloc): New function.
3893         (pass_global_alloc): Add the gate function.
3894
3895         * opts.c (decode_options): Set up flag_ira.  Print the warning for
3896         -fira.
3897         (common_handle_option): Process -fira-algorithm and -fira-verbose.
3898
3899         * timevar.def (TV_IRA, TV_RELOAD): New passes.
3900
3901         * regmove.c (regmove_optimize): Don't do replacement of output for
3902         IRA.
3903
3904         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
3905         New external variable declarations.
3906
3907         * local-alloc.c (update_equiv_regs): Make it external.  Return
3908         true if jump label rebuilding should be done.  Rescan new_insn for
3909         notes.
3910         (gate_handle_local_alloc): New function.
3911         (pass_local_alloc): Add the gate function.
3912
3913         * alias.c (value_addr_p, stack_addr_p): New functions.
3914         (nonoverlapping_memrefs_p): Use them for IRA.
3915
3916         * common.opt (fira, fira-algorithm, fira-coalesce,
3917         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
3918         fira-verbose): New options.
3919
3920         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
3921         move_cost, may_move_in_cost, may_move_out_cost): Make the
3922         variables external.
3923         (move_table): Remove typedef.
3924         (init_move_cost): Make it external.
3925         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
3926         functions.
3927
3928         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
3929         setup_reg_classes): New function prototypes.
3930         (eliminable_regset): New external variable declaration.
3931         (build_insn_chain, update_equiv_regs): New function prototypes.
3932
3933         * Makefile.in (IRA_INT_H): New definition.
3934         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
3935         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
3936         (reload1.o, toplev.o): Add dependence on ira.h.
3937         (cfgloopanal.o): Add PARAMS_H.
3938         (caller-save.o): Add dependence on output.h and ira.h.
3939         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
3940         ira-emit.o, ira-lives.o): New entries.
3941
3942         * passes.c (pass_ira): New pass.
3943
3944         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
3945
3946         * reload1.c (ira.h): Include the header.
3947         (changed_allocation_pseudos): New bitmap.
3948         (init_reload): Initiate the bitmap.
3949         (compute_use_by_pseudos): Permits spilled registers in FROM.
3950         (temp_pseudo_reg_arr): New variable.
3951         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
3952         IRA.  Call alter_reg with the additional parameter.  Don't clear
3953         spilled_pseudos for IRA.  Restore original insn chain for IRA.
3954         Clear changed_allocation_pseudos at the end of reload.
3955         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
3956         (hard_regno_to_pseudo_regno): New variable.
3957         (count_pseudo): Check spilled pseudos.  Set up
3958         hard_regno_to_pseudo_regno.
3959         (count_spilled_pseudo): Check spilled pseudos. Update
3960         hard_regno_to_pseudo_regno.
3961         (find_reg): Use better_spill_reload_regno_p.  Check
3962         hard_regno_to_pseudo_regno.
3963         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
3964         code for IRA.
3965         (eliminate_regs_1): Use additional parameter for alter_reg.
3966         (finish_spills): Set up pseudo_previous_regs only for spilled
3967         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
3968         more arguments.  Don't clear live_throughout and dead_or_set for
3969         spilled pseudos.  Use additional parameter for alter_reg.  Call
3970         mark_allocation_change.  Set up changed_allocation_pseudos.
3971         Remove sanity check.
3972         (emit_input_reload_insns, delete_output_reload): Use additional
3973         parameter for alter_reg.  Call mark_allocation_change.
3974         (substitute, gen_reload_chain_without_interm_reg_p): New
3975         functions.
3976         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
3977
3978         * testsuite/gcc.dg/20080410-1.c: New file.
3979
3980         * config/s390/s390.h (IRA_COVER_CLASSES,
3981         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
3982
3983         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
3984
3985         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
3986
3987         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
3988
3989         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
3990
3991         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
3992
3993         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
3994
3995         2008-08-24  Jeff Law  <law@redhat.com>
3996         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
3997         when ignoring unavailable registers.
3998
3999         2008-08-24  Jeff Law  <law@redhat.com>
4000         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
4001         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
4002         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
4003         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
4004
4005         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
4006         * ira-build.c (allocno_range_compare_func): Stabilize sort.
4007
4008         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
4009         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
4010         * reload1.c (find_reg): Process registers in register allocation order.
4011
4012         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
4013         * toplev.c (backend_init_target): Move ira_init call from
4014         here...
4015         (lang_dependent_init_target): ...to here.
4016
4017         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
4018         * ira.c (setup_class_subset_and_memory_move_costs): Don't
4019         calculate memory move costs for NO_REGS.
4020
4021         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
4022         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
4023         STACK_REGS is defined.
4024
4025         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
4026         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
4027
4028         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
4029         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
4030
4031         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
4032         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
4033         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
4034         barrier.
4035
4036 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
4037             Dorit Nuzman  <dorit@il.ibm.com>
4038
4039         * gcc/config/spu/spu.md (vec_extract_evenv4si,
4040         vec_extract_evenv4sf, vec_extract_evenv8hi,
4041         vec_extract_evenv16qi, vec_extract_oddv4si,
4042         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
4043         vec_interleave_highv4sf, vec_interleave_lowv4sf,
4044         vec_interleave_highv4si, vec_interleave_lowv4si,
4045         vec_interleave_highv8hi, vec_interleave_lowv8hi,
4046         vec_interleave_highv16qi, vec_interleave_lowv16qi,
4047         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
4048
4049 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
4050
4051         PR target/36756
4052         * config/rs6000/rs6000.c (optimization_options): Don't default to
4053         section anchors without toplevel reorder.
4054
4055 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4056
4057         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
4058         (mfc_end_critical_section): Likewise.
4059
4060 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4061
4062         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
4063         all type qualifiers from element type to vector type.
4064
4065 2008-08-25  David Daney  <ddaney@avtrex.com>
4066
4067         * config/mips/mips.md (immediate_insn): Move up in file, fix
4068         comment typo, reformat.
4069         (fetchop_bit, atomic_hiqi_op memory_barrier,
4070         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
4071         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
4072         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
4073         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
4074         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
4075         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
4076         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
4077         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
4078         sync_old_nand<mode>, sync_new_nand<mode>,
4079         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
4080         test_and_set_12): Moved to sync.md.
4081         (sync.md): Include.
4082         * config/mips/sync.md: New file.
4083
4084 2008-08-25  Richard Henderson  <rth@redhat.com>
4085
4086         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
4087         (regsave): Likewise.
4088         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
4089         (output_cfi_directive): Likewise.
4090         (div_data_align): New.
4091         (output_cfi): Use it.
4092
4093 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
4094
4095         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
4096         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
4097         (TARGET_OCTEON): New macro.
4098         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
4099         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
4100         (ISA_HAS_POP): New macro.
4101         * config/mips/driver-native.c (host_detect_local_cpu): Handle
4102         Octeon.
4103         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
4104         Handle Octeon.
4105         * config/mips/mips.md (cpu): Add octeon.
4106         (type): Add pop attribute value.
4107         (popcount<mode>2): New pattern.
4108         * doc/invoke.texi (-march=@var{arch}): Add octeon.
4109
4110 2008-08-24  Jan Hubicka  <jh@suse.cz>
4111
4112         * doc/invoke.texi (-fipa-cp-clone): New option.
4113         (-fipa-cp): Update docs.
4114         (--param ipcp-unit-growth):New.
4115         * ipa-cp.c: Include fibheap.h, params.h
4116         (ipcp_initialize_node_lattices): When not cloning, all externally
4117         visible functions are bottom.
4118         (ipcp_need_redirect_p): Accept clones.
4119         (ipcp_insert_stage): Use cost driven heuristics.
4120         (max_count, dead_nodes): New static vars.
4121         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
4122         ipcp_const_param_count): New functions.
4123         * common.opt (ipa-cp-clone): New command line option.
4124         * params.def (ipcp-unit-growth): New.
4125
4126 2008-08-24  Jan Hubicka  <jh@suse.cz>
4127
4128         * tree-inline.c (tree_function_versioning): Look harder
4129         for referenced vars.
4130
4131 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
4132
4133         PR tree-optimization/37185
4134         * matrix-reorg.c (transform_access_sites): Update changed stmt.
4135
4136 2008-08-23  Jan Hubicka  <jh@suse.cz>
4137
4138         * ipa-cp.c (ipcp_analyze_node): New function.
4139         (ipcp_update_cloned_node): Use it.
4140         (ipcp_init_stage): Likewise.
4141         * ipa-inline.c (function_insertion_hook_holder): New static var.
4142         (analyze_function): Break out from ....
4143         (inline_generate_summary): Here; register insertion hook.
4144         (cgraph_decide_inlining): Remove hook.
4145         (add_new_function): New function.
4146
4147 2008-08-23  Jan Hubicka  <jh@suse.cz>
4148
4149         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
4150
4151 2008-08-23  Jan Hubicka  <jh@suse.cz>
4152
4153         * ipa-cp.c (constant_val_insert): Remove.
4154         (ipcp_propagate_one_const): Remove.
4155         (ipcp_create_replace_map): Always insert replacements to the map.
4156         (ipcp_insert_stage): Do not try to insert statements by hand.
4157         * tree-inline.c (insert_init_stmt): Break out from ...
4158         (setup_one_parameter): ... here; allow NULL BB pointer.
4159         (tree_function_versioning): Use setup_one_parameter to process
4160         replacement map.
4161
4162 2008-08-23  Jan Hubicka  <jh@suse.cz>
4163
4164         * tree.c (decl_address_ip_invariant_p): New function.
4165         * tree.h (decl_address_ip_invariant_p): Declare.
4166         * gimple.c (strip_invariant_refs): Break out from ...
4167         (is_gimple_invariant_address): ... here
4168         (is_gimple_ip_invariant_address): New function.
4169         (is_gimple_ip_invariant): New function.
4170         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
4171         Declare.
4172
4173         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
4174         (ipcp_lat_is_insertable): All constants are insertable.
4175         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
4176         IPA_CONST_VALUE_REF.
4177         (ipcp_initialize_node_lattices): Propagate all types of operands.
4178         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
4179         (ipcp_create_replace_map): Reformat.
4180         (ipcp_need_redirect_p): Simplify.
4181         (ipcp_insert_stage): Check that argument is used before clonning.
4182         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
4183         IPA_CONST_REF.
4184         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
4185         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
4186         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
4187         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
4188         (jump_func_type): Remove IPA_CONST_VALUE_REF.
4189         * tree-inline.c (tree_function_versioning): Add variables referenced by
4190         replacing trees.
4191
4192 2008-08-23  Jan Hubicka  <jh@suse.cz>
4193
4194         PR target/37094
4195         * i386.c (standard_80387_constant_p): Use optimize_size.
4196
4197 2008-08-23  Ira Rosen  <irar@il.ibm.com>
4198
4199         PR tree-optimization/37161
4200         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
4201         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
4202         (vect_determine_vectorization_factor): Move the scalar type
4203         retrieval to vect_get_smallest_scalar_type.
4204         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
4205         scalar type. Remove redundant computation.
4206         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
4207         (vect_get_slp_defs): Take the type of RHS into account if
4208         necessary by calling vect_get_smallest_scalar_type. Call
4209         vect_get_constant_vectors with additional argument.
4210
4211 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4212
4213         PR 35648
4214         * doc/invoke.texi (Wwrite-strings): Clarify description.
4215
4216 2008-08-23  Ira Rosen  <irar@il.ibm.com>
4217
4218         PR tree-optimization/37174
4219         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
4220         def stmt is a part of the loop before accessing its stmt_vec_info.
4221
4222 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
4223
4224         PR target/11259
4225         * config/avr/avr.md (UNSPEC_SWAP): New constants.
4226         (*swap): New insn pattern.
4227         (*ashlqi3): Rename from ashlqi3 insn pattern.
4228         (ashlqi3): New expanders.
4229         (*lshrqi3): Rename from lshrqi3 insn pattern.
4230         (lshrqi3): New expanders.
4231         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
4232         lshrqi3_const5, lshrqi3_const6): New splitters.
4233         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
4234         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
4235         peephole2 patterns.
4236
4237 2008-08-22  Richard Guenther  <rguenther@suse.de>
4238
4239         PR tree-optimization/37078
4240         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
4241         [+INF, +INF] ranges.
4242
4243 2008-08-22  Richard Guenther  <rguenther@suse.de>
4244
4245         PR tree-optimization/37143
4246         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
4247         a conversion statement instead of a copy.
4248
4249 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
4250
4251         PR target/37184
4252         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
4253         CCCmode, CCOmode and CCSmode destination modes.
4254
4255         PR target/37191
4256         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
4257         from different units in a single alternative.
4258         (*vec_extractv2sf_1): Ditto.
4259         (*vec_extractv2si_0): Ditto.
4260         (*vec_extractv2si_1): Ditto.
4261         * config/i386/sse.md (sse2_storehpd): Ditto.
4262         (sse2_storelpd): Ditto.
4263         (sse2_loadhpd): Ditto.
4264         (sse2_loadlpd): Ditto.
4265
4266         PR target/37197
4267         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
4268         (popcountsi2): Ditto.
4269         (clzdi2_abm): Ditto.
4270         (popcountdi2): Ditto.
4271         (clzhi2_abm): Ditto.
4272         (popcounthi2): Ditto.
4273
4274 2008-08-22  Richard Guenther  <rguenther@suse.de>
4275
4276         PR middle-end/36548
4277         PR middle-end/37125
4278         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
4279         if the multiplication does not overflow.
4280
4281 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
4282
4283         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
4284
4285 2008-08-21  Richard Henderson  <rth@redhat.com>
4286
4287         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
4288         spurrious comma from test.
4289         * configure: Rebuild.
4290
4291 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4292
4293         PR 30457
4294         * builtins.c (fold_builtin_next_arg): Add warning about undefined
4295         behaviour.
4296
4297 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
4298
4299         * c-tree.h (grokfield): New argument.
4300         * c-decl.c (grokfield): Handle new location argument.
4301         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
4302
4303 2008-08-21  Richard Guenther  <rguenther@suse.de>
4304
4305         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
4306
4307 2008-08-21  Jan Hubicka  <jh@suse.cz>
4308
4309         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
4310         (cgraph_add_function_insertion_hook,
4311         cgraph_remove_function_insertion_hook,
4312         cgraph_call_function_insertion_hooks): New functions.
4313         * cgraph.h (cgraph_add_function_insertion_hook,
4314         cgraph_remove_function_insertion_hook,
4315         cgraph_call_function_insertion_hooks): Declare.
4316         * ipa-reference.c (function_insertion_hook_holder): New variable.
4317         (check_operand, look_for_address_of): When checking late, do not care
4318         about module bitmaps.
4319         (add_new_function): New function.
4320         (generate_summary): Register hooks; zero module bitmaps.
4321         (propagate): Unregister hooks.
4322         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
4323         (add_new_function): New function.
4324         (generate_summary): Register hook.
4325         (propagate): Remove hook.
4326
4327         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
4328
4329         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
4330         * ipa-cp.c (ipcp_update_cloned_node): New function.
4331         (build_const_val): Handle functions correctly; bring type logic
4332         into sync with tree-inline.c
4333         (ipcp_init_stage):  Take care of computing stuff needed by
4334         indirect inlining; update clones.
4335         (ipcp_generate_summary): Break out of ipcp_driver.
4336         (ipcp_driver): Do only execution and transformation.
4337         (pass_ipa_cp): Make IPA_PASS.
4338         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
4339         offset to address.
4340         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
4341         ipcp, some info is already available.
4342         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
4343         * tree-inline.c (remap_ssa_name): Unshare expression.
4344
4345 2008-08-21  Richard Guenther  <rguenther@suse.de>
4346
4347         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
4348         a PHI ask VN if it is already available.
4349         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
4350         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
4351
4352 2008-08-21  Richard Guenther  <rguenther@suse.de>
4353
4354         PR middle-end/36817
4355         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
4356         makes sure to produce a result of the correct type.
4357
4358 2008-08-21  Jan Hubicka  <jh@suse.cz>
4359         Backport from LTO branch:
4360
4361         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
4362                     Jan Hubicka  <jh@suse.cz>
4363
4364         * ipa-pure-const.c
4365         (init_state, finish_state, set_function_state, generate_summary):
4366         New functions.
4367         (scan_stmt): Renamed from scan_function.  Changed to keep state in
4368         local static vars rather than cgraph aux field.
4369         (propagate): Renamed from static_execute. Changed to keep state in
4370         local static vars rather than cgraph aux field.
4371         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
4372         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
4373
4374         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
4375
4376         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
4377         * ipa-reference.c (init_function_info, generate_summary,
4378         propagate): New functions.
4379         (analyze_function):  Call init_function_info.
4380         (static_execute): Stripped into generate_summary and propagate.
4381         (pass_ipa_reference): Made into ipa_opt_pass.
4382
4383 2008-08-21  Richard Guenther  <rguenther@suse.de>
4384
4385         PR tree-optimization/37181
4386         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
4387         folding result.
4388         (extract_range_from_unary_expr): Likewise.
4389
4390 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4391
4392         * diagnostic.c (pedwarn_at): Rename as pedwarn.
4393         (pedwarn): Delete.
4394         * toplev.h (pedwarn_at): Likewise.
4395         * builtins.c: Update all calls to pedwarn.
4396         * c-lex.c: Likewise.
4397         * toplev.c: Likewise.
4398         * c-tree.h: Likewise.
4399         * c-decl.c: Likewise.
4400         * c-errors.c: Likewise.
4401         * c-typeck.c: Likewise.
4402         * c-common.c: Likewise.
4403         * c-parser.c: Likewise.
4404
4405 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
4406
4407         PR target/31070
4408         * config/sparc/sparc.c (function_arg_slotno): Handle structure
4409         with MODE_VECTOR_INT mode.
4410
4411 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4412
4413         PR middle-end/179
4414         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
4415         initialized outside the current module.
4416         (warn_uninitialized_var): Ignore left-hand side when walking the
4417         trees. Ignore address expressions. Examine VUSE operands in gimple
4418         statements with a variable declaration on the right-hand side.
4419
4420 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
4421
4422         PR bootstrap/37155
4423         * rtlanal.c (subreg_offset_representable_p): Revert last change.
4424
4425 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4426
4427         PR 35701
4428         * c-common.c (conversion_warning): Do not warn if applying bit-and
4429         operator to unsigned constant that fits in the target type.
4430
4431 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4432
4433         PR c++/35602
4434         * c-common.c (conversion_warning): Do not warn for artificial
4435         expressions.
4436
4437 2008-08-20  Richard Guenther  <rguenther@suse.de>
4438
4439         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
4440         (extract_range_from_binary_expr): Fall back to constant propagation.
4441         (extract_range_from_unary_expr): Likewise.
4442
4443 2008-08-20  Richard Guenther  <rguenther@suse.de>
4444
4445         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
4446         with TREE_THIS_VOLATILE on shared nodes.
4447         (fold_stmt_r): Likewise.
4448
4449 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
4450
4451         PR c/37171
4452         * c-parser.c (c_parser_attributes): For keywords use canonical
4453         spelling for attr_name.
4454
4455 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4456
4457         * value-prof.c (check_counter): Revert wrong call to error.
4458
4459 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4460
4461         * profile.c: Update calls to inform.
4462         * value-prof.c: Update calls to inform.
4463
4464 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4465
4466         * diagnostic.c (inform): Add an explicit location_t parameter.
4467         * toplev.h (inform): Update declaration.
4468         * builtins.c: Update all calls to inform.
4469         * c-common.c: Likewise.
4470         * c-decl.c: Likewise.
4471         * c-opts.c: Likewise.
4472         * c-pch.c: Likewise.
4473         * c-pragma.c: Likewise.
4474         * c-typeck.c: Likewise.
4475         * coverage.c: Likewise.
4476         * opts.c: Likewise.
4477         * toplev.c: Likewise.
4478         * tree-cfg.c: Likewise.
4479         * tree-ssa.c: Likewise.
4480
4481 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
4482
4483         PR target/37169
4484         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
4485         V2DI mode, for SSE4.1, use movq instead of vector set if the
4486         second element is zero and inter-unit moves are OK.
4487
4488 2008-08-20  Richard Guenther  <rguenther@suse.de>
4489
4490         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
4491         properly handle conversion/copy chains after tuplification.
4492
4493 2008-08-20  Richard Guenther  <rguenther@suse.de>
4494
4495         * passes.c (init_optimization_passes): Move the second
4496         forwprop pass before alias computation.  Remove the second
4497         DCE pass.  Remove the first dominator and phi copy/const
4498         prop passes.
4499
4500 2008-08-20  Nick Clifton  <nickc@redhat.com>
4501
4502         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
4503         support of this feature.  Do not assume that a sufficiently new
4504         assembler will support the feature regardless of the target type.
4505         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
4506         * configure: Regenerate.
4507
4508 2008-08-20  Richard Guenther  <rguenther@suse.de>
4509
4510         * tree-vrp.c (found_in_subgraph): Remove.
4511         (live): New global static.
4512         (live_on_edge): New function.
4513         (blocks_visited): Remove.
4514         (register_edge_assert_for_2): Use live_on_edge.
4515         (find_conditional_asserts): Remove code dealing with
4516         found_in_subgraph.  Do not walk the CFG.
4517         (find_switch_asserts): Likewise.
4518         (find_assert_locations_1): Renamed from find_assert_locations.
4519         Move finding assert locations for conditional and switch
4520         statements first.  Update live bitmap.  Do not walk the CFG.
4521         (find_assert_locations): New function.
4522         (insert_range_assertions): Remove entry of CFG walk.
4523         Adjust call to find_assert_locations.
4524         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
4525         that only can appear because of fake exit edges but assert we
4526         never try to insert on those.
4527         (fini_pre): Do not remove fake exit edges here...
4528         (execute_pre): ...but here, before committing edge inserts.
4529
4530 2008-08-19  Richard Guenther  <rguenther@suse.de>
4531
4532         * passes.c (init_optimization_passes): Exchange store-ccp
4533         with a ccp pass.
4534
4535 2008-08-19  Rafael Espíndola  <espindola@google.com>
4536
4537         * varasm.c (weak_decls): Move earlier in the file.
4538         (assemble_external): Add weak decls to the weak_decls list.
4539         (declare_weak): Don't add decls to the weak_decls list.
4540
4541 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
4542
4543         PR target/37157
4544         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
4545         before (sse2_shufpd_<mode>).
4546
4547 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
4548
4549         PR debug/37156
4550         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
4551         * tree.c (block_nonartificial_location): Likewise.
4552
4553 2008-08-19  Richard Guenther  <rguenther@suse.de>
4554
4555         PR tree-optimization/35972
4556         PR tree-optimization/23094
4557         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
4558         parameter.
4559         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
4560         handle MISALIGNED_INDIRECT_REF.
4561         (get_ref_from_reference_ops): New helper.
4562         (vn_reference_lookup_pieces): Walk the use-def chain using the
4563         alias-oracle if requested.
4564         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
4565         walking the use-def chain.
4566         (compute_avail): But not here.
4567         (create_component_ref_by_pieces_1): Properly handle
4568         MISALIGNED_INDIRECT_REF.
4569         (do_regular_insertion): Handle fully redundant
4570         expressions after PHI-translation also for SSA_NAME values, not
4571         only constants.  Correctly use edoubleprime for that.
4572
4573 2008-08-19  Ira Rosen  <irar@il.ibm.com>
4574
4575         * tree-vectorizer.c (supportable_widening_operation): Support
4576         multi-step conversion, return the number of steps in such conversion
4577         and the required intermediate types.
4578         (supportable_narrowing_operation): Likewise.
4579         * tree-vectorizer.h (vect_pow2): New function.
4580         (supportable_widening_operation): Change argument types.
4581         (supportable_narrowing_operation): Likewise.
4582         (vectorizable_type_promotion): Add an argument.
4583         (vectorizable_type_demotion): Likewise.
4584         * tree-vect-analyze.c (vect_analyze_operations): Call
4585         vectorizable_type_promotion and vectorizable_type_demotion with
4586         additional argument.
4587         (vect_get_and_check_slp_defs): Detect patterns.
4588         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
4589         types.
4590         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
4591         vect_build_slp_tree with correct arguments. Calculate unrolling factor
4592         according to the smallest type in the loop.
4593         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
4594         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
4595         supportable_widening_operation with correct arguments.
4596         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
4597         operands lists according to the number of vector statements in left
4598         or right node, if exists.
4599         (vect_gen_widened_results_half): Remove unused argument.
4600         (vectorizable_conversion): Call supportable_widening_operation,
4601         supportable_narrowing_operation, and vect_gen_widened_results_half
4602         with correct arguments.
4603         (vectorizable_assignment): Change documentation, support multiple
4604         types in SLP.
4605         (vectorizable_operation): Likewise.
4606         (vect_get_loop_based_defs): New function.
4607         (vect_create_vectorized_demotion_stmts): Likewise.
4608         (vectorizable_type_demotion): Support loop-aware SLP and general
4609         multi-step conversion. Call vect_get_loop_based_defs and
4610         vect_create_vectorized_demotion_stmts for transformation.
4611         (vect_create_vectorized_promotion_stmts): New function.
4612         (vectorizable_type_promotion): Support loop-aware SLP and general
4613         multi-step conversion. Call vect_create_vectorized_promotion_stmts
4614         for transformation.
4615         (vectorizable_store): Change documentation, support multiple
4616         types in SLP.
4617         (vectorizable_load): Likewise.
4618         (vect_transform_stmt): Pass SLP_NODE to
4619         vectorizable_type_promotion and vectorizable_type_demotion.
4620         (vect_schedule_slp_instance): Move here the calculation of number
4621         of vectorized statements for each node from...
4622         (vect_schedule_slp): ... here.
4623         (vect_transform_loop): Call vect_schedule_slp without the last
4624         argument.
4625
4626 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
4627
4628         PR bootstrap/37152
4629         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
4630         to == in assert statement.
4631         (vectorizable_reduction): Fix typo.
4632
4633 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
4634
4635         PR bootstrap/37153
4636         * value-prof.c (check_counter): Dereference pointer to overall
4637         count when printing it.
4638
4639 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
4640
4641         * profile.h: Really add it.
4642
4643 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
4644
4645         * mcf.c: Really add it.
4646
4647 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
4648             Vinodha Ramasamy  <vinodha@google.com>
4649
4650         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
4651         count_scale.
4652         * value-prof.c (check_counter): Fix the counter if
4653         flag_profile_correction is true.
4654         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
4655         tree_mod_subtract_transform):
4656         Follow check_counter parameter change.
4657         * common.opt (fprofile-correction): New option.
4658         * mcf.c: New file.
4659         * profile.h: Likewise.
4660         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
4661         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
4662         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
4663         functions.
4664         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
4665         flag_profile_correction is set.
4666
4667 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
4668
4669         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
4670
4671 2008-08-18  Tomas Bily  <tbily@suse.cz>
4672
4673         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
4674         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
4675         CONVERT_EXPR_P.
4676         * tree-data-ref.c (split_constant_offset_1): Likewise.
4677         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
4678         * tree-sra.c (sra_walk_expr): Likewise.
4679         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
4680         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
4681         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
4682         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
4683         Likewise.
4684         * gimple.c (gimple_assign_unary_nop_p): Likewise.
4685         * tree-vect-transform.c (vectorizable_type_demotion)
4686         (vectorizable_type_promotion): Likewise.
4687         * tree-inline.c (expand_call_inline):
4688         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
4689         (forward_propagate_addr_expr_1, forward_propagate_comparison)
4690         (tree_ssa_forward_propagate_single_use_vars): Likewise.
4691         * expr.c (expand_expr_real_1): Likewise.
4692         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
4693         (gimple_assign_unary_useless_conversion_p): Likewise.
4694         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
4695         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
4696         * fold-const.c (fold_unary): Likewise.
4697         * tree.h (CONVERT_EXPR_P): Likewise.
4698         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
4699         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
4700         * tree-vrp.c:
4701         (register_edge_assert_for_2, extract_range_from_unary_expr)
4702         (register_edge_assert_for_1): Likewise.
4703
4704 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4705
4706         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
4707         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
4708         (enum real_value_const): Delete.
4709         (get_real_const): Delete.
4710         * real.c (get_real_const): Delete.
4711         (dconst_e_ptr): Define.
4712         (dconst_third_ptr): Define.
4713         (dconst_sqrt2_ptr): Define.
4714         * builtins.c: Update all callers.
4715
4716 2008-08-18  Richard Guenther  <rguenther@suse.de>
4717
4718         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
4719         statement iterator after statement removal.
4720
4721 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
4722
4723         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
4724         (detect_processor_freebsd): Likewise.
4725         (host_detect_local_cpu): Call newly added functions for FreeBSD.
4726
4727 2008-08-18  Richard Guenther  <rguenther@suse.de>
4728
4729         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
4730         and loads have the correct types.
4731
4732 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4733
4734         PR cpp/7263
4735         * c-opts.c (cpp_opts): Remove static.
4736         * c-parser.c (cpp_opts): Declare it extern.
4737         (disable_extension_diagnostics): Handle cpp options.
4738         (enable_extension_diagnostics): Likewise.
4739
4740 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4741
4742         * diagnostics.c (permerror_at): Rename as permerror.
4743         (permerror): Delete.
4744         * toplev.h: Likewise.
4745
4746 2008-08-18  Richard Guenther  <rguenther@suse.de>
4747
4748         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
4749         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
4750         Move call_cdce before build_alias.  Move copyrename2,
4751         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
4752         right after final inlining.
4753         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
4754         (pass_build_cfg): But instead via TODO_dump_func.
4755
4756 2008-08-18  Richard Guenther  <rguenther@suse.de>
4757
4758         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
4759         element index.
4760         (scalarize_init): If we failed to generate some initializers
4761         do not generate zeros for not instantiated members.  Instead
4762         rely on the copy out.
4763         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
4764         about missing flow-sensitive alias info only if we have
4765         aliases computed.
4766
4767 2008-08-17  Nick Clifton  <nickc@redhat.com>
4768
4769         * doc/extend.texi (Function Attributes): Fix typo in description
4770         if hot function attribute.
4771
4772 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
4773             Richard Sandiford  <rdsandiford@googlemail.com>
4774
4775         * doc/install.texi (--with-mips-plt): Document.
4776         * doc/invoke.texi (-mplt, -mno-plt): Document.
4777         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
4778         and handle ${with_mips_plt}.
4779         * config/mips/mips.opt (mplt): New option.
4780         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
4781         (TARGET_ABICALLS_PIC2): Likewise.
4782         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
4783         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
4784         (ASM_SPEC): Use !mabi=* instead of !mabi*.
4785         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
4786         to decide whether to output ".option picX" directives.
4787         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
4788         Pass -call_nonpic rather than -KPIC for -mplt.
4789         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
4790         on the command line.  Also remove it when -mabi=64 is used without
4791         -msym32.
4792         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
4793         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
4794         TARGET_ABICALLS_PIC0.
4795         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
4796         TARGET_ABICALLS.
4797         (mips16_build_function_stub): Only output ".option pic" directives
4798         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
4799         (mips16_build_call_stub): Fix comment and remove redundant
4800         ".set at"/"set .noat" directives.
4801         (mips_function_rodata_section): Use the default behaviour for
4802         TARGET_ABSOLUTE_ABICALLS.
4803         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
4804         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
4805         (mips_restore_gp): Do nothing if the current function doesn't use
4806         a global pointer.
4807         (mips_expand_prologue): Only save $gp if the current function uses it.
4808         Use a normal move for TARGET_ABICALLS_PIC0.
4809         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
4810
4811 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
4812
4813         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
4814         of function when handling GLOBAL_POINTER_REGNUM.
4815
4816 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
4817
4818         PR ada/20548
4819         * common.opt (-fstack-check): Do not declare the variable here.
4820         (-fstack-check=): New option variant.
4821         * doc/invoke.texi (Code Gen Options): Document it.
4822         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
4823         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
4824         (STACK_CHECK_STATIC_BUILTIN): New macro.
4825         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
4826         * opts.c: Include expr.h.
4827         (common_handle_option) <OPT_fold_stack_check_>: New case.
4828         <OPT_fstack_check>: Likewise.
4829         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
4830         consistently in the test for variable-sized types.  Adjust for
4831         new behaviour of flag_stack_check.
4832         * explow.c: Include except.h.
4833         (allocate_dynamic_stack_space): Do not take into account
4834         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
4835         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
4836         for variable-sized parameters.  Treat all parameters whose size is
4837         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
4838         stack checking is enabled.
4839         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
4840         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
4841         if generic stack checking is enabled.
4842         (expand_function_end): Adjust for new behaviour of flag_stack_check.
4843         * reload1.c (reload): Likewise.
4844         * stmt.c (expand_decl): Assert that all automatic variables have
4845         fixed size at this point and remove dead code.
4846         * flags.h (stack_check_type): New enumeration type.
4847         (flag_stack_check): Declare.
4848         * toplev.c (flag_stack_check): New global variable.
4849         * Makefile.in (opts.o): Add dependency on EXPR_H.
4850         (explow.o): Add dependency on except.h.
4851
4852 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
4853
4854         * config/avr/avr.c (avr_override_options): Reduce value of
4855         PARAM_INLINE_CALL_COST.
4856
4857 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
4858
4859         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
4860         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
4861         lieu of TYPE_MODE (type) throughout.
4862
4863 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
4864
4865         * config/arm/arm.c (add_minipool_backward_ref): Check for
4866         8-byte-aligned entries in second case of forcing insertion after a
4867         particular entry.  Change third case to avoid inserting
4868         non-8-byte-aligned entries before 8-byte-aligned ones.
4869
4870 2008-08-15  Richard Guenther  <rguenther@suse.de>
4871
4872         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
4873         strip components for unknown size accesses.
4874
4875 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
4876
4877         * config/s390/2097.md New file.
4878         * config/s390/s390.md ("z10prop" attribute): Define none,
4879         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
4880         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
4881         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
4882         possible values and apply them to insns as appropriate.
4883         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
4884         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
4885         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
4886         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
4887         ("bfp" mode attribute): Removed.  Every occurence replaced
4888         with <mode>.
4889         * config/s390/s390.c (struct "z10_cost"): Updated entries.
4890         * config/s390/2084.md (insn_reservation "x_itof"): Updated
4891         type attribute.
4892
4893 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4894
4895         PR c/28152
4896         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
4897         for keywords.
4898
4899 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
4900
4901         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
4902         additional argument. Support reduction when duplication is needed due
4903         to data-types of different sizes in the loop.
4904         (get_initial_def_for_induction): Fix printout.
4905         (vect_get_vec_def_for_stmt_copy): Support case where the
4906         vec_stmt_for_operand is a phi node.
4907         (vectorizable_reduction): Support reduction when duplication is needed
4908         due to data-types of different sizes in the loop.
4909         (vectorizable_call): Remove restriction to not vectorize in case we
4910         have data-types of different sizes in the loop.
4911         (vectorizable_conversion): Likewise.
4912         (vectorizable_operation): Likewise.
4913         (vectorizable_type_demotion): Likewise.
4914         (vectorizable_type_promotion): Likewise.
4915         (vectorizable_induction): Add restriction to not vectorize in case
4916         we have data-types of different sizes in the loop.
4917
4918 2008-08-14  Christophe Saout  <christophe@saout.de>
4919             Uros Bizjak  <ubizjak@gmail.com>
4920
4921         PR target/37101
4922         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
4923         (*vec_concatv2di_rex64_sse4_1): Ditto.
4924         (*vec_concatv2di_rex64_sse): Ditto.
4925
4926 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
4927
4928         PR middle-end/37103
4929         * fold-const.c (fold_widened_comparison): Do not allow
4930         sign changes that change the result even if shorter type
4931         is wider than arg1_unw's type.
4932
4933 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
4934
4935         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
4936         Skip if the multilib testing specifies -march that does not
4937         agree with the one specified in the testcase.
4938
4939 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
4940
4941         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
4942         zero extend SImode values being converted to TFmode before passing
4943         to libcalls.
4944
4945 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4946
4947         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
4948         __PPU__ when targeting the Cell/B.E. PPU processor.
4949
4950 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
4951
4952         * gimple.h (gimple_call_set_chain): Accept SSA variables.
4953         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
4954         Rematerialize the static chain, if any.
4955         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
4956         static chain.
4957
4958 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
4959
4960         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
4961         (new_loc_descr): Likewise.
4962         (add_loc_descr): Likewise.
4963         (size_of_loc_descr): Likewise.
4964         (size_of_locs): Likewise.
4965         (output_loc_operands): Likewise.
4966         (output_loc_sequence): Likewise.
4967         (new_reg_loc_descr): New.
4968         (build_cfa_loc): Use it.
4969         (build_cfa_aligned_loc): Likewise.
4970         (one_reg_loc_descriptor): Likewise.
4971         (based_loc_descr): Likewise.
4972
4973 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4974
4975         PR 30551
4976         * doc/invoke.texi (Wmain): Update.
4977         * c-decl.c (start_decl): warn_main is only 0 or 1.
4978         (start_function): Likewise. Fix formatting.
4979         (finish_function): Delete redundant warning.
4980         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
4981         * c-opts (c_common_handle_option): -Wall only has effect if
4982         warn_main is uninitialized. OPT_Wmain is automatically
4983         handled. -pedantic also enables Wmain.
4984         (c_common_post_options): Handle all logic for Wmain here.
4985         * c-common.c (warn_main): Delete.
4986         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
4987         * c-common.h (warn_main): Delete.
4988
4989 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
4990
4991         PR middle-end/36701
4992         * expr.c (emit_group_store): Allocate stack temp with the
4993         largest alignment when copying from register to stack.
4994
4995 2008-08-13  Richard Guenther  <rguenther@suse.de>
4996
4997         * tree.h (maybe_fold_offset_to_address): Declare.
4998         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
4999         (ccp_fold): Handle pointer conversions the same as fold_stmt.
5000         Likewise for POINTER_PLUS_EXPR.
5001         (maybe_fold_offset_to_reference): Enable disabled code.
5002         (maybe_fold_offset_to_address): New function.
5003         (fold_stmt_r): Use it.
5004         (fold_gimple_assign): Likewise.
5005         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
5006         (gimplify_expr): Likewise.
5007
5008 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5009
5010         * toplev.h (pedwarn_at): Fix declaration.
5011
5012 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
5013
5014         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
5015         LINK_SPEC): Use %R in -Y P argument.
5016
5017 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5018
5019         PR c/15236
5020         * diagnostic.c (pedwarn_at): New.
5021         * toplev.h (pedwarn_at): Declare.
5022         * c-tree.h (build_enumerator): Update declaration.
5023         * c-decl.c (finish_enum): Update comment.
5024         (build_enumerator): Take a location parameter. Give a pedwarn but do
5025         not perform any conversion.
5026         * c-parser.c (c_parser_enum_specifier): Set correct location for
5027         enumerator.
5028
5029 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5030
5031         PR 35635
5032         * c-common.c (conversion_warning): Use a switch. Ignore boolean
5033         expressions except for conversions to signed:1 bitfields. Handle
5034         COND_EXPR with constant operands.
5035
5036 2008-08-13  Richard Guenther  <rguenther@suse.de>
5037
5038         PR tree-optimization/15255
5039         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
5040         (struct oecount_s): New struct and VEC types.
5041         (cvec): New global.
5042         (oecount_hash): New function.
5043         (oecount_eq): Likewise.
5044         (oecount_cmp): Likewise.
5045         (zero_one_operation): New function.
5046         (build_and_add_sum): Likewise.
5047         (undistribute_ops_list): Perform un-distribution of multiplication
5048         and division on the chain of summands.
5049         (should_break_up_subtract): Also break up subtracts for factors.
5050         (reassociate_bb): Delete dead visited statements.
5051         Call undistribute_ops_list.  Re-sort and optimize if it did something.
5052         * passes.c (init_optimization_passes): Move DSE before
5053         reassociation.
5054         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
5055         PHI nodes.
5056
5057 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
5058
5059         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
5060
5061         * doc/invoke.texi: Revert unintended checkin.
5062
5063 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
5064
5065         PR libgomp/26165
5066         * gcc.c (include_spec_function): Tweak call to find_a_file.
5067
5068 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
5069
5070         PR middle-end/37014
5071         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
5072         and TRUTH_ORIF_EXPR.
5073         * dojump.c (do_jump): Likewise.
5074
5075         PR tree-optimization/37084
5076         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
5077         if id->regimplify, don't assume stmt is a cast assignment.
5078
5079 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
5080
5081         * final.c (final_scan_insn): Use app_enable/app_disable functions.
5082
5083 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5084
5085         PR bootstrap/37097
5086         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
5087         by last change.
5088
5089 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5090
5091         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
5092         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
5093
5094         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
5095         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
5096         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
5097         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
5098         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
5099
5100         * doc/tm.texi (Storage Layout): Remove documentation for
5101         TARGET_FLOAT_FORMAT.
5102
5103         * simplify-rtx.c (simplify_binary_operation_1): Replace
5104         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
5105
5106 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5107
5108         * real.h (struct real_format): New member has_sign_dependent_rounding.
5109         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
5110         spu_single_format, ieee_double_format, mips_double_format,
5111         motorola_double_format, ieee_extended_motorola_format,
5112         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
5113         ieee_extended_intel_96_round_53_format, ibm_extended_format,
5114         mips_extended_format, ieee_quad_format, mips_quad_format,
5115         vax_f_format, vax_d_format, vax_g_format): Initialize it.
5116         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
5117
5118         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
5119         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
5120         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
5121         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
5122         (ROUND_TOWARDS_ZERO): Likewise.
5123
5124         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
5125         (FLOAT_MODE_FORMAT): New macro.
5126         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
5127         (MODE_COMPOSITE_P): ... this new macro.
5128         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
5129         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
5130         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
5131
5132         * flags.h: Include "real.h".
5133
5134         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
5135         REAL_MODE_FORMAT_COMPOSITE_P.
5136         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
5137
5138         * doc/tm.texi (Storage Layout): Remove documentation of
5139         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
5140         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
5141         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
5142         they only apply to libgcc2.a.
5143
5144 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5145
5146         * config/spu/float_disf.c: New file.
5147         * config/spu/float_unsdisf.c: New file.
5148         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
5149         (LIB2FUNCS_EXCLUDE): Define.
5150
5151 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5152             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5153
5154         * real.h (struct real_format): New member round_towards_zero.
5155         * real.c (round_for_format): Respect fmt->round_towards_zero.
5156         (ieee_single_format, mips_single_format, motorola_single_format,
5157         spu_single_format, ieee_double_format, mips_double_format,
5158         motorola_double_format, ieee_extended_motorola_format,
5159         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
5160         ieee_extended_intel_96_round_53_format, ibm_extended_format,
5161         mips_extended_format, ieee_quad_format, mips_quad_format,
5162         vax_f_format, vax_d_format, vax_g_format): Initialize it.
5163         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
5164
5165         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
5166         real_format to choose rounding mode when calling MPFR functions.
5167         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
5168         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
5169
5170         * real.h (real_to_decimal_for_mode): Add prototype.
5171         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
5172         Respect target rounding mode when generating decimal representation.
5173         (real_to_decimal): New stub for backwards compatibility.
5174         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
5175         real_to_decimal_for_mode instead of real_to_decimal.
5176
5177         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
5178
5179 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5180             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5181
5182         * real.c (spu_single_format): New variable.
5183         * real.h (spu_single_format): Declare.
5184
5185         * config/spu/spu.c (spu_override_options): Install SFmode format.
5186         (spu_split_immediate): Use integer mode to operate on pieces of
5187         floating-point values in all cases.
5188
5189         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
5190         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
5191         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
5192
5193 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5194
5195         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
5196
5197 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5198
5199         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
5200
5201 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
5202
5203         PR c++/36688
5204         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
5205         on the VAR_DECL instead of TYPE_READONLY on its type.
5206
5207 2008-08-12  Ira Rosen  <irar@il.ibm.com>
5208
5209         * tree-vectorizer.c: Depend on langhooks.h.
5210         (supportable_widening_operation): Add two arguments. Support double
5211         type conversions.
5212         (supportable_narrowing_operation): Likewise.
5213         * tree-vectorizer.h (supportable_widening_operation): Add two
5214         arguments.
5215         (supportable_narrowing_operation): Likewise.
5216         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
5217         supportable_widening_operation with correct arguments.
5218         * tree-vect-transform.c (vectorizable_conversion): Likewise.
5219         (vectorizable_type_demotion): Support double type conversions.
5220         (vectorizable_type_promotion): Likewise.
5221         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
5222
5223 2008-08-11  Michael Matz  <matz@suse.de>
5224
5225         * i386/i386.c (override_options): Move initialisation from
5226         flag_schedule_insns_after_reload to here from ...
5227         (optimization_options): ... here.
5228
5229 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
5230
5231         PR rtl-optimization/36998
5232         * dwarf2out.c (compute_barrier_args_size_1,
5233         compute_barrier_args_size): Temporarily remove assertions.
5234
5235 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5236
5237         PR middle-end/20644
5238         * tree-ssa.c (struct walk_data): Add new flag
5239         warn_possibly_uninitialized.
5240         (warn_uninitialized_var): Use it.
5241         (warn_uninitialized_vars): New.
5242         (execute_early_warn_uninitialized): Call it.
5243         (execute_late_warn_uninitialized): Likewise.
5244
5245 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5246
5247         PR middle-end/36238
5248         * reload1.c (gen_reload): Guard calls to get_secondary_mem
5249         for memory subregs.
5250
5251 2008-08-09  Jan Hubicka  <jh@suse.cz>
5252
5253         PR target/37055
5254         * optabs.c (maybe_emit_unop_insn): Remove produced code if
5255         expansion failed.
5256         (expand_fix): Be prepared for expansion to fail.
5257         (expand_sfix_optab): Remove instructions if expansion failed.
5258
5259 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
5260
5261         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
5262         avr31 architecture.
5263         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
5264         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
5265
5266 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5267
5268         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
5269         mips/t-libgcc-mips16 to tmake_file.
5270         * config/mips/mips-protos.h (mips_call_type): New enum.
5271         (mips_pic_base_register, mips_got_load): Declare.
5272         (mips_restore_gp): Take an rtx argument.
5273         (mips_use_pic_fn_addr_reg_p): Declare.
5274         (mips_expand_call): Replace the sibcall_p argument with
5275         a mips_call_type argument.  Add a lazy_p parameter.
5276         (mips_split_call): Declare.
5277         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
5278         (MIPS16_PIC_TEMP): Likewise.
5279         (reg_class): Delete M16_NA_REGS.
5280         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
5281         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
5282         (mips_split_hi_p): Declare.
5283         * config/mips/mips.c (mips_split_hi_p): New array.
5284         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
5285         (mips_got_symbol_type_p): New function.
5286         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
5287         (mips16_stub_function_p): New function.
5288         (mips16_local_function_p): Likewise.
5289         (mips_use_pic_fn_addr_reg_p): Likewise.
5290         (mips_cannot_force_const_mem): Return false for HIGHs.
5291         Extend CONST_INT and symbolic handling to MIPS16, using
5292         mips_symbol_insns to check that the base symbol type is a
5293         legitimate constant.  Reject GOT-based constants if
5294         TARGET_MIPS16_PCREL_LOADS.
5295         (mips_const_insns): Check targetm.cannot_force_const_mem when
5296         decomposing a symbolic base and a large offset.
5297         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
5298         When calling a function that needs $25 from MIPS16 code,
5299         move the target address into $25 separately and add a USE
5300         to the call insn.
5301         (mips16_gp_pseudo_reg): Insert the initializer immediately
5302         before the first real insn.
5303         (mips_pic_base_register, mips_got_load): New functions.
5304         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
5305         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
5306         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
5307         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
5308         (mips_call_tls_get_addr): Update the call to mips_expand_call,
5309         also passing NULL_RTX rather than const0_rtx as the aux argument.
5310         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
5311         instead of TARGET_EXPLICIT_RELOCS.
5312         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
5313         (mips_load_call_address): Replace the sibcall_p argument with
5314         a mips_call_type argument.  Use mips_got_load.
5315         (mips16_local_alias): New structure.
5316         (mips16_local_aliases): New variable.
5317         (mips16_local_aliases_hash): New function.
5318         (mips16_local_aliases_eq): Likewise.
5319         (mips16_local_alias): Likewise.
5320         (mips16_stub_function): Likewise.
5321         (mips16_build_function_stub): Create a local alias for the target
5322         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
5323         .cpload directive and an R_MIPS_NONE relocation for the target
5324         function, then load the alias rather than the function itself.
5325         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
5326         (mips16_copy_fpr_return_value): Use mips16_stub_function and
5327         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
5328         (mips16_build_call_stub): Replace the FN parameter with an
5329         FN_PTR parameter.  Force the address into a register if it
5330         isn't a call_insn_operand; don't rely on the caller to do this.
5331         If a call to a locally-defined and locally-binding MIPS16
5332         function must be made indirectly, redirect the call to the
5333         function's local alias.  Use mips16_stub_function_p,
5334         mips16_stub_function, mips_expand_call and use_reg.
5335         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
5336         Use explicit %hi and %lo accesses where possible.
5337         Use MIPS_CALL to generate the correct code form of a
5338         jal instruction.  Add clobbers of $18 instead of uses.
5339         Update the call to mips_emit_call_insn.
5340         (mips_expand_call): Replace the SIBCALL_P argument with a
5341         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
5342         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
5343         allowing it to modify the call address.  Update the calls to
5344         mips_load_call_address and mips_emit_call_insn.
5345         (mips_split_call): New function.
5346         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
5347         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
5348         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
5349         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
5350         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
5351         if TARGET_MIPS16.
5352         (mips_cprestore_slot): New function.
5353         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
5354         and use mips_cprestore_slot.
5355         (mips_output_function_prologue): Handle TARGET_MIPS16 for
5356         LOADGP_OLDABI.
5357         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
5358         then use a copygp_mips16 instruction to set up $28.
5359         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
5360         (mips16_lay_out_constants): Call split_all_insns_noflow.
5361         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
5362         false if TARGET_MIPS16.
5363         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
5364         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
5365         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
5366         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
5367         MIPS16 code.  Allow MIPS16 o32 PIC.
5368         (mips_override_options): Allow MIPS16 o32 PIC.
5369         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
5370         after reload if TARGET_USE_GOT.
5371         (UNSPEC_COPYGP): New constant.
5372         (length): Use a default length of 8 for MIPS16 GOT loads.
5373         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
5374         (*got_page<mode>): Check mips_split_hi_p.
5375         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
5376         (unspec_got<mode>, unspec_call<mode>): New expanders.
5377         (load_got<mode>, load_call<mode>): Remove the length attributes.
5378         Use a got attribute instead of a type attribute.
5379         (copygp_mips16): New insn.
5380         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
5381         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
5382         (sibcall, sibcall_value, call, call_value): Update the calls
5383         to mips_expand_call.
5384         (call_internal, call_value_internal): Use mips_split_call.
5385         (call_value_multiple_internal): Likewise.
5386         (call_split): Move after call_internal (the insn it is split from).
5387         (call_internal_direct, call_value_internal_direct): Turn into
5388         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
5389         (call_direct_split, call_value_direct_split): New patterns.
5390         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
5391         and use M16_REGS instead of M16_NA_REGS.
5392         * config/mips/predicates.md (const_call_insn_operand): Replace
5393         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
5394         mips_use_pic_fn_addr_reg_p check.
5395         (move_operand): Reject HIGHs if mips_split_hi_p.
5396         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
5397         (__mips16_floatunsisf): Inline __mips16_floatsisf.
5398         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
5399         * config/mips/libgcc-mips16.ver: New file.
5400         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
5401         $(srcdir)/config/mips/libgcc-mips16.ver.
5402
5403 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5404
5405         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
5406         (mips_unspec_address, mips_unspec_offset_high): Likewise.
5407         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
5408         (mips16_cfun_returns_in_fpr_p): Likewise.
5409
5410 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5411
5412         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
5413         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
5414         rather than 4 to PC.
5415
5416 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5417
5418         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
5419         (FUNCTION_PROFILER): Save the static chain pointer into $2
5420         beforehand and restore it aftewards.
5421         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
5422         address directly into $25 and call the function through $25;
5423         do not clobber $3.  Pad the DImode version to cover the space
5424         left by the deleted $25 <- $3 move.
5425         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
5426         the removal of the $25 <- $3 move.
5427         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
5428         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
5429
5430 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5431             Daniel Jacobowitz  <dan@codesourcery.com>
5432
5433         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
5434         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
5435         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
5436         * config/mips/mips.c (mips_start_function_definition): New function.
5437         (mips_end_function_definition): Likewise.
5438         (mips_output_function_prologue): Use mips_start_function_definition.
5439         (mips_output_function_epilogue): Use mips_end_function_definition.
5440         (build_mips16_function_stub): Use mips_start_function_definition
5441         and mips_end_function_definition.
5442         (build_mips16_call_stub): Likewise.
5443
5444 2008-08-09  Richard Guenther  <rguenther@suse.de>
5445
5446         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
5447         * gimple.h (gimple_call_fn): Adjust comment.
5448         (gimple_call_set_fndecl): New function.
5449         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
5450         longer having bare FUNCTION_DECL operand.
5451         (gimple_call_return_type): Likewise.
5452         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
5453
5454         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
5455         (gimple_mod_pow2): Likewise.
5456         (gimple_mod_subtract): Likewise.
5457         (gimple_ic): Likewise.
5458         (gimple_stringop_fixed_value): Likewise.
5459         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
5460         longer having bare FUNCTION_DECL operand.
5461         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
5462         * omp-low.c (optimize_omp_library_calls): Likewise.
5463         * cgraphunit.c (update_call_expr): Likewise.
5464         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
5465         (execute_convert_to_rsqrt): Likewise.
5466         * cfgexpand.c (gimple_to_tree): Simplify.
5467         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
5468         bare FUNCTION_DECL operand.
5469         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
5470         (convert_gimple_call): Use gimple_call_fndecl.
5471         * c-common.c (c_warn_unused_result): Likewise.
5472
5473 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5474
5475         PR c/17880
5476         * c-typeck.c (digest_init): Call verify_sequence_points from here.
5477         (c_finish_return): Likewise.
5478         (c_start_case): Likewise.
5479         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
5480         * c-parser.c (c_parser_condition): New. Call
5481         verify_sequence_points.
5482         (c_parser_paren_condition): Call c_parser_condition.
5483         (c_parser_for_statement): Call c_parser_condition.
5484
5485 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5486
5487         PR 36901
5488         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
5489         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
5490         Moved from diagnostic.h
5491         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
5492         DK_PERMERROR.
5493         (emit_diagnostic): New.
5494         (warning0, pedwarn0): Delete.
5495         (warning, warning_at, pedwarn, permerror): Return bool.
5496         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
5497         Moved to diagnostic.c.
5498         (struct diagnostic_context): Use correct type for
5499         classify_diagnostic.
5500         (diagnostic_report_diagnostic): Update declaration.
5501         (emit_diagnostic): Declare.
5502         * errors.c (warning): Return bool.
5503         * errors.h (warning): Update declaration.
5504         * toplev.h (warning0, pedwarn0): Delete.
5505         (warning, warning_at, pedwarn, permerror): Return bool.
5506         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
5507         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
5508         inform. Update all calls.
5509         (diagnose_mismatched_decls): Check return value of warning/pedwarn
5510         before giving informative note.
5511         (implicit_decl_warning): Likewise.
5512         * c-typeck.c (build_function_call): Likewise.
5513         * tree-sssa.c (warn_uninit): Likewise.
5514         * builtins.c (gimplify_va_arg_expr): Likewise.
5515
5516 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5517
5518         PR 7651
5519         * doc/invoke.texi (-Wextra): Move warning from here...
5520         (-Wuninitialized): ... to here.
5521
5522 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5523
5524         PR 28875
5525         * flags.h (set_Wunused): Delete
5526         * toplev.c (process_options): Handle Wunused flags here.
5527         * opts.c (maybe_warn_unused_parameter): Delete.
5528         (common_handle_option): Replace set_Wunused by warn_unused.
5529         (set_Wextra): Do not handle Wunused-parameter here.
5530         (set_Wunused): Delete.
5531         * c-opts.c (c_common_handle_option): Replace set_Wunused by
5532         warn_unused.
5533         * common.opt (Wunused): Add Var and Init.
5534         (Wunused-function): Likewise.
5535         (Wunused-label): Likewise.
5536         (Wunused-parameter): Likewise.
5537         (Wunused-value): Likewise.
5538         (Wunused-variable): Likewise.
5539
5540 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
5541
5542         * doc/invoke.texi: Add cpu_type power7.
5543         * config.in (HAVE_AS_VSX): New.
5544         * config.gcc: Add cpu_type power7.
5545         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
5546         VSX instructions.
5547         * configure: Regenerate.
5548         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
5549         power5.
5550         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
5551         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
5552         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
5553
5554 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
5555
5556         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
5557         type to vectorize.builtin_conversion.
5558         (vectorizable_conversion): Likewise.
5559         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
5560         integral type as input.
5561         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
5562         FIX_TRUNC_EXPR.
5563         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
5564         and ALTIVEC_BUILTIN_VCTSXS.
5565         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
5566         formatting.
5567
5568 2008-08-08  Richard Guenther  <rguenther@suse.de>
5569
5570         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
5571         (surely_varying_stmt_p): Calls are varying only if they are
5572         non-builtin and not indirect or have no result.
5573         (ccp_fold): Re-instantiate code before the tuples merge.
5574
5575 2008-08-08  Richard Guenther  <rguenther@suse.de>
5576
5577         PR tree-optimization/37056
5578         * gimple.h (gimple_assign_rhs_class): New helper function.
5579         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
5580         unary operations properly.
5581
5582 2008-08-07  Jan Hubicka  <jh@suse.cz>
5583
5584         * i386.h (ix86_size_cost): Declare.
5585         (ix86_cur_cost): New function macro.
5586         * i386.md (peepholes expanding size and splitters): Predicate by
5587         optimize_insn_for_speed_p.
5588         (peepholes reduce size and splitters): Predicate by
5589         optimize_insn_for_size_p.
5590         * i386.c (ix86_size_cost): Rename from ...
5591         (size_cost): This one.
5592         (override_options): Update.
5593         (decide_alg): Likewise.
5594         (ix86_expand_clear): Use RTL profile.
5595         (ix86_pad_returns): Use RTL profile.
5596
5597 2008-08-07  Jan Hubicka  <jh@suse.cz>
5598
5599         * recog.c (split_all_insns): Set RTL profile
5600         (peephole2_optimize): Likewise.
5601         * function.c (thread_prologue_and_epilogue_insns): Likewise.
5602         * combine.c (combine_instructions): Likewise.
5603
5604 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5605
5606         * c-common.c (c_common_reswords): Also warn about keyword "bool".
5607
5608 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
5609
5610         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
5611         value in a6 after the set_frame_ptr insn.
5612
5613 2008-08-07  Richard Henderson  <rth@redhat.com>
5614
5615         PR debug/37033
5616         * gcc.c (cpp_options): Pass along -g*.
5617
5618 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
5619
5620         * config/arm/arm.c (output_move_neon): Update comment describing
5621         big-endian vector layout.
5622         (arm_assemble_integer): Do not handle big-endian NEON vectors
5623         specially.
5624         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
5625         neon_vget_lane<mode>_sext_internal,
5626         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
5627         element indices for big-endian.
5628
5629 2008-08-07  Richard Henderson  <rth@redhat.com>
5630
5631         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
5632         * configure, config.in: Rebuild.
5633         * debug.h (dwarf2out_do_cfi_asm): Declare.
5634         * c-cppbuiltin.c (c_cpp_builtins): Use it.
5635         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
5636         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
5637         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
5638
5639 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
5640
5641         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
5642         movv2si_internal): Combine into mov<mode>_internal.
5643         (movv2si_internal_2): Remove.
5644
5645 2008-08-07  Jan Hubicka  <jh@suse.cz>
5646
5647         PR target/37048
5648         * i386.md (single stringop patterns): Enable unconditionally.
5649
5650 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
5651
5652         PR target/36992
5653         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
5654
5655         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
5656         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
5657
5658         * config/i386/sse.md (sse2_movq128): New.
5659
5660         * doc/extend.texi: Document __builtin_ia32_movq128.
5661
5662 2008-08-07  Richard Guenther  <rguenther@suse.de>
5663
5664         PR middle-end/37042
5665         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
5666         pointers can access anything.
5667
5668 2008-08-06  Jan Hubicka  <jh@suse.cz>
5669
5670         * optabs.c (emit_unop_insn): Break out to ...
5671         (maybe_emit_unop_insn): ... this one.
5672         (expand_sfix_optab): Use maybe variant.
5673         * optabs.h (maybe_emit_unop_insn): Declare.
5674
5675         * i386.md (mov0 patterns): Enable by default.
5676         (FP conversion expanders): Disable expansion of code expanding
5677         sequences when instruction should be optimized for size.
5678         (single strinop patterns): Enable when optimizing for size.
5679         (string expanders): Disable expanding of code expanding sequences
5680         when optimizning instruction for size.
5681         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
5682         per BB basis.
5683         (ix86_fp_comparison_sahf_cost): Likewise.
5684         (ix86_expand_branch): Likewise.
5685         (ix86_expand_ashl_const): Likewise.
5686         (ix86_split_ashl): Likewise.
5687         (ix86_expand_strlen): Likewise.
5688         (ix86_emit_fp_unordered_jump): Likewie.
5689
5690 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5691
5692         * c-common.c: Fix typo.
5693         (c_common_reswords): Activate more C++ keyword warnings.
5694
5695         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
5696
5697 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5698
5699         PR 26785
5700         * diagnostic.c (permerror_at): New.
5701         * toplev.h (permerror_at): Declare.
5702
5703 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
5704             Ira Rosen  <irar@il.ibm.com>
5705
5706         * tree-vect-transform.c (vect_model_simple_cost): Return
5707         immediately if stmt is pure SLP.
5708         (vect_model_store_cost): Ditto.
5709         (vect_model_load_cost): Ditto.
5710         (vectorizable_store): Remove PURE_SLP check before call
5711         to vect_model_store_cost.
5712         (vect_model_store_cost): When checking whether stmt describe
5713         strided access, add a check that it is not slp_node.
5714
5715 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5716
5717         PR 8715
5718         * c-common.c (warn_for_sign_compare): New. Handle separately the
5719         case that 'constant' is zero.
5720         * c-typeck.c (build_binary_op): Move code to c-common.c
5721
5722 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5723
5724         * config/alpha/alpha.c (alpha_preferred_reload_class,
5725         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
5726         alpha_output_mi_thunk_osf): Avoid C++ keywords.
5727         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
5728         * config/arm/arm.md: Likewise.
5729         * config/avr/avr-protos.h (preferred_reload_class,
5730         test_hard_reg_class, avr_simplify_comparison_p,
5731         out_shift_with_cnt, class_max_nregs): Likewise.
5732         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
5733         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
5734         preferred_reload_class, test_hard_reg_class): Likewise.
5735         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
5736         bfin_memory_move_cost, bfin_secondary_reload,
5737         bfin_output_mi_thunk): Likewise.
5738         * config/crx/crx.c (crx_secondary_reload_class,
5739         crx_memory_move_cost): Likewise.
5740         * config/frv/frv-protos.h (frv_secondary_reload_class,
5741         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
5742         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
5743         frv_secondary_reload_class, frv_class_likely_spilled_p,
5744         frv_class_max_nregs): Likewise.
5745         * config/h8300/h8300.c (h8300_classify_operand,
5746         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
5747         Likewise.
5748         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
5749         * config/ia64/ia64.c (ia64_preferred_reload_class,
5750         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
5751         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
5752         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
5753         Likewise.
5754         * config/m68hc11/m68hc11.c (preferred_reload_class,
5755         m68hc11_memory_move_cost): Likewise.
5756         * config/mcore/mcore.c (mcore_secondary_reload_class,
5757         mcore_reload_class): Likewise.
5758         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
5759         mips_class_max_nregs, mips_cannot_change_mode_class,
5760         mips_preferred_reload_class, mips_secondary_reload_class,
5761         mips_output_mi_thunk): Likewise.
5762         * config/mmix/mmix.c (mmix_preferred_reload_class,
5763         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
5764         Likewise.
5765         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
5766         Likewise.
5767         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
5768         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
5769         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
5770         * config/rs6000/rs6000.c (paired_expand_vector_init,
5771         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
5772         compare_section_name, rs6000_memory_move_cost): Likewise.
5773         * config/s390/s390.c (s390_emit_compare_and_swap,
5774         s390_preferred_reload_class, s390_secondary_reload,
5775         legitimize_pic_address, legitimize_tls_address,
5776         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
5777         s390_class_max_nregs): Likewise.
5778         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
5779         * config/s390/s390.md: Likewise.
5780         * config/score/score-protos.h (score_secondary_reload_class,
5781         score_preferred_reload_class): Likewise.
5782         * config/score/score.c (score_preferred_reload_class,
5783         score_secondary_reload_class): Likewise.
5784         * config/score/score3.c (score3_output_mi_thunk,
5785         score3_preferred_reload_class, score3_secondary_reload_class,
5786         score3_hard_regno_mode_ok): Likewise.
5787         * config/score/score3.h (score3_preferred_reload_class,
5788         score3_secondary_reload_class): Likewise.
5789         * config/score/score7.c (score7_output_mi_thunk,
5790         score7_preferred_reload_class, score7_secondary_reload_class,
5791         score7_hard_regno_mode_ok): Likewise.
5792         * config/score/score7.h (score7_preferred_reload_class,
5793         score7_secondary_reload_class): Likewise.
5794         * config/sh/sh.c (prepare_move_operands, output_far_jump,
5795         output_branchy_insn, add_constant, gen_block_redirect,
5796         sh_insn_length_adjustment, sh_cannot_change_mode_class,
5797         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
5798         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5799         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
5800         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
5801         xstormy16_preferred_reload_class): Likewise.
5802         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
5803         xtensa_expand_atomic, override_options,
5804         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
5805         Likewise.
5806         * reorg.c (try_merge_delay_insns): Likewise.
5807         * tree.c (merge_dllimport_decl_attributes): Likewise.
5808
5809         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
5810
5811 2008-08-06  Michael Matz  <matz@suse.de>
5812
5813         * Makefile.in (write_entries_to_file): Quote words.
5814         * gengtype.c: (read_input_line): Skip over leading white-space.
5815
5816 2008-08-06  Marc Gauthier  <marc@tensilica.com>
5817
5818         * config.gcc: Match more processor names for Xtensa.
5819         * configure.ac: Likewise.
5820         * doc/install.texi (Specific): Likewise.
5821         * configure: Regenerate.
5822
5823 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5824
5825         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
5826         * calls.c (avoid_likely_spilled_reg): Likewise.
5827         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
5828         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
5829         * config/i386/i386.c (ix86_expand_special_args_builtin,
5830         ix86_secondary_reload): Likewise.
5831         * except.c (struct eh_region, gen_eh_region_catch,
5832         remove_unreachable_regions, duplicate_eh_regions,
5833         assign_filter_values, build_post_landing_pads,
5834         sjlj_find_directly_reachable_regions, remove_eh_handler,
5835         reachable_next_level, foreach_reachable_handler,
5836         can_throw_internal_1, can_throw_external_1,
5837         collect_one_action_chain): Likewise.
5838         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
5839         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
5840         * function.c (update_temp_slot_address, instantiate_new_reg,
5841         instantiate_virtual_regs_in_rtx,
5842         instantiate_virtual_regs_in_insn): Likewise.
5843         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
5844         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
5845         gimplify_cleanup_point_expr): Likewise.
5846         * ipa-cp.c (ipcp_lattice_changed): Likewise.
5847         * passes.c (next_pass_1): Likewise.
5848         * print-tree.c (print_node_brief, print_node): Likewise.
5849         * profile.c (branch_prob): Likewise.
5850         * tree-dump.c (dump_register): Likewise.
5851         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
5852         Likewise.
5853         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
5854         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
5855         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
5856         copy_arguments_for_versioning, copy_static_chain): Likewise.
5857         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
5858         add_new_name_mapping, register_new_name_mapping): Likewise.
5859         * tree-mudflap.c (mf_xform_derefs): Likewise.
5860         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
5861         get_init_expr, combine_chains): Likewise.
5862         * tree-pretty-print.c (dump_generic_node): Likewise.
5863         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
5864         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
5865         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
5866         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
5867
5868 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
5869
5870         PR middle-end/37010
5871         * calls.c (expand_call): Use the biggest preferred stack
5872         boundary.
5873
5874 2008-08-06  Michael Matz  <matz@suse.de>
5875
5876         PR target/36613
5877         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
5878         for reused reload, instead of overwriting them.
5879
5880 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
5881
5882         PR middle-end/37009
5883         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
5884         for incoming stack boundary.
5885
5886         * function.c (assign_parm_find_entry_rtl): Update
5887         parm_stack_boundary.
5888
5889         * function.h (rtl_data): Add parm_stack_boundary.
5890
5891         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
5892         parm_stack_boundary for incoming stack boundary.
5893
5894 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
5895
5896         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
5897         for unrepresentable subregs or treat them as equal to other regs
5898         or subregs with the same register number.
5899
5900 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
5901
5902         PR middle-end/35432
5903         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
5904         if want_value.
5905
5906 2008-08-06  Jan Hubicka  <jh@suse.cz>
5907
5908         * predict.c (maybe_hot_frequency_p): When profile is absent, all
5909         frequencies might be hot.
5910
5911 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
5912
5913         * reload.c (find_reloads): Force constants into literal pool
5914         also if they are wrapped in a SUBREG.
5915
5916 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5917
5918         PR target/35659
5919         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
5920         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
5921         Don't allow predicated instructions for data speculation.
5922         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
5923         declaration.
5924
5925 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5926
5927         * haifa-sched.c (extend_global): Split to extend_global_data and
5928         extend_region_data.  Update all uses.
5929         (extend_all): Rename to extend_block_data.
5930
5931 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5932
5933         * sched-rgn.c (new_ready): Check if instruction can be
5934         speculatively scheduled before attempting speculation.
5935         (debug_rgn_dependencies): Remove wrongful assert.
5936
5937 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
5938
5939         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
5940
5941 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
5942
5943         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
5944         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
5945         va_size, and type_size.
5946
5947 2008-08-04  Jason Merrill  <jason@redhat.com>
5948
5949         PR c++/37016
5950         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
5951         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
5952
5953 2008-08-05  Richard Henderson  <rth@redhat.com>
5954
5955         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
5956         * configure: Rebuild.
5957
5958 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5959
5960         PR tree-opt/37024
5961         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
5962         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
5963         is a conversion.
5964
5965 2008-08-05  Richard Henderson  <rth@redhat.com>
5966
5967         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
5968         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
5969         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
5970         * common.opt (fdwarf2-cfi-asm): New.
5971         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
5972         * config.in, configure: Rebuild.
5973         * dwarf2asm.c (dw2_asm_output_data_raw): New.
5974         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
5975         (dw2_force_const_mem): Externalize.
5976         * dwarf2asm.h: Update.
5977         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
5978         generate a real label.
5979         (output_cfi_directive): New.
5980         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
5981         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
5982         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
5983         and .cfi_lsda.
5984         (dwarf2out_end_epilogue): Emit .cfi_endproc.
5985         (output_loc_operands_raw, output_loc_sequence_raw): New.
5986         (output_cfa_loc_raw): New.
5987
5988 2008-08-05  Paul Brook  <paul@codesourcery.com>
5989
5990         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
5991         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
5992         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
5993         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
5994         * config/arm/arm.h (TARGET_VFPD32): Define.
5995         (TARGET_VFP3): Use TARGET_VFPD32.
5996         (fputype): Add FPUTYPE_VFP3D16.
5997         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
5998         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
5999         * config/arm/arm-cores.def: Add cortex-r4f.
6000         * config/arm/arm-tune.md: Regenerate.
6001
6002 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6003
6004         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
6005         Reword some comments throughout the file.
6006
6007         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
6008         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
6009         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
6010         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
6011
6012         (MFC_START_ENABLE): Remove PPU-only define.
6013         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
6014         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
6015
6016         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
6017         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
6018         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
6019         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
6020         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
6021         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
6022         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
6023
6024         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
6025         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
6026         (mfc_sdcrt, mfc_sdcrtst): Likewise.
6027         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
6028
6029         (spu_read_machine_status): Fix typo.
6030
6031 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6032
6033         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
6034         SUBREG of multi-word hard register.
6035         * config/spu/spu.c (valid_subreg): Likewise.
6036         (adjust_operand): Handle SUBREGs of multi-word hard registers.
6037
6038 2008-08-04  Richard Guenther  <rguenther@suse.de>
6039
6040         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
6041         the candidate with the stripped base if that base is different
6042         from the original base even for offset zero.
6043
6044 2008-08-04  Richard Guenther  <rguenther@suse.de>
6045
6046         PR middle-end/36691
6047         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
6048         check for no_overflow.
6049
6050 2008-08-04  Richard Guenther  <rguenther@suse.de>
6051
6052         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
6053
6054 2008-08-04  Paul Brook  <paul@codesourcery.com>
6055
6056         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
6057         (arm_order_regs_for_local_alloc): New function.
6058         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
6059         prototype.
6060         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
6061
6062 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
6063
6064         PR target/37012
6065         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
6066         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
6067         (ix86_expand_epilogue): Likewise.
6068
6069 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
6070
6071         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
6072         in comments.
6073
6074 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
6075
6076         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
6077         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
6078         (*movv2sf_internal_rex64): Ditto.
6079
6080 2008-08-03  Jan Hubicka  <jh@suse.cz>
6081
6082         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
6083         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
6084         * expmed.c (expand_smod_pow2): Likewise.
6085
6086 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
6087
6088         PR target/36992
6089         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
6090         alternative 0 of operand 1.
6091         (*vec_concatv2di_rex64_sse): Ditto.
6092         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
6093         of operand 1.
6094         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
6095         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
6096         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
6097         (*movv2sf_internal_rex64): Ditto.
6098
6099 2008-08-02  Richard Guenther  <rguenther@suse.de>
6100
6101         PR target/35252
6102         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
6103         (ssedoublesizemode): New mode attribute.
6104         (sse_shufps): Call gen_sse_shufps_v4sf.
6105         (sse_shufps_1): Macroize.
6106         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
6107         (sse2_shufpd_1): Macroize.
6108         (vec_extract_odd, vec_extract_even): New expanders.
6109         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
6110         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
6111         * i386.c (ix86_expand_vector_init_one_nonzero): Call
6112         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
6113         (ix86_expand_vector_set): Likewise.
6114         (ix86_expand_reduc_v4sf): Likewise.
6115
6116 2008-08-01  Doug Kwan  <dougkwan@google.com>
6117
6118         * matrix-reorg.c: Re-enable all code.
6119         (struct malloc_call_data): Change CALL_STMT to gimple type.
6120         (collect_data_for_malloc_call): Tuplify.
6121         (struct access_site_info): Change STMT to gimple type.
6122         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
6123         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
6124         (struct free_info): Change STMT to gimple type.
6125         (struct matrix_access_phi_node):  Change PHI to gimple type.
6126         (get_inner_of_cast_expr): Remove.
6127         (may_flatten_matrices_1): Tuplify.
6128         (may_flatten_matrices): Ditto.
6129         (mark_min_matrix_escape_level): Ditto.
6130         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
6131         (ssa_accessed_in_call_rhs): New
6132         (ssa_accessed_in_assign_rhs): New
6133         (record_access_alloc_site_info): Tuplify.
6134         (add_allocation_site): Ditto.
6135         (analyze_matrix_allocation_site): Ditto.
6136         (analyze_transpose): Ditto.
6137         (get_index_from_offset): Ditto.
6138         (update_type_size): Ditto.
6139         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
6140         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
6141         (analyze_accesses_for_phi_node): Tuplify.
6142         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
6143         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
6144         (analyze_matrix_accesses): Tuplify.
6145         (check_var_data): New call-back type for check_var_notmodified_p.
6146         (check_var_notmodified_p): Tuplify and use call-back struct to
6147         return statement found.
6148         (can_calculate_expr_before_stmt): Factor out statement related code
6149         into ...
6150         (can_calculate_stmt_before_stmt): New.
6151         (check_allocation_function): Tuplify.
6152         (find_sites_in_func): Ditto.
6153         (record_all_accesses_in_func): Ditto.
6154         (transform_access_sites): Ditto.
6155         (transform_allocation_sites): Ditto.
6156         (matrix_reorg): Re-enable.
6157         (gate_matrix_reorg): Re-enable.
6158
6159 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
6160
6161         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
6162         for labels for which it hasn't been set yet.  If it has been set,
6163         stop walking insns and continue with next worklist item.
6164         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
6165         if the only BARRIER is at the very end of a function.
6166
6167 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
6168
6169         * cfgexpand.c (expand_stack_alignment): Assert that
6170         stack_realign_drap and drap_rtx must match.
6171
6172         * function.c (instantiate_new_reg): If DRAP is used to realign
6173         stack, replace virtual_incoming_args_rtx with internal arg
6174         pointer.
6175
6176 2008-08-01  Richard Guenther  <rguenther@suse.de>
6177
6178         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
6179         loop information only if we initialized it.
6180         (execute_pre): Call fini_pre with in_fre.
6181         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
6182         if we do not unroll because we hit max-completely-peeled-insns.
6183         Use our estimation for consistency, do allow shrinking.
6184
6185 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
6186
6187         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
6188         with MIN_STACK_BOUNDARY.
6189         (ix86_update_stack_boundary): Likewise.
6190         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
6191         STACK_BOUNDARY.
6192
6193         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
6194         (MIN_STACK_BOUNDARY): This.
6195
6196 2008-08-01  Richard Guenther  <rguenther@suse.de>
6197
6198         PR middle-end/36997
6199         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
6200
6201 2008-08-01  Richard Guenther  <rguenther@suse.de>
6202
6203         PR tree-optimization/36988
6204         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
6205         do not matter if that doesn't change volatile qualification.
6206
6207 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
6208
6209         * configure.ac: Do not generate libada-mk.  Do not subst
6210         host_cc_for_libada.
6211         * libada-mk.in: Remove.
6212         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
6213         * configure: Regenerate.
6214
6215 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
6216
6217         * tree-pass.h: Added comment about not dumping passes with name
6218         starting with star in struct opt_pass.
6219         * passes.c (register_dump_files_1): Don't do dump for a pass with
6220         name starting with star.
6221         * doc/passes.texi (Pass manager): Mention pass names and special
6222         meaning of star prefix to avoid dump.
6223
6224 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
6225
6226         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
6227         to MIPS64r2.
6228         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
6229         (ISA_MIPS64R2): New macro.
6230         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
6231         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
6232         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
6233         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
6234         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
6235         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
6236         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
6237         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
6238         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
6239         Move up to keep list alphabetically sorted.
6240         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
6241         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
6242         processor.
6243         * doc/invoke.texi (MIPS Options): Add -mips64r2.
6244         (-march=@var{arch}): Add mips64r2.
6245
6246 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
6247
6248         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
6249
6250 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
6251
6252         * expr.c (expand_assignment): Check for complete type.
6253
6254 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
6255
6256         PR debug/36977
6257         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
6258
6259         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
6260         for stack alignment.
6261
6262         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
6263
6264 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
6265
6266         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
6267         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
6268
6269 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
6270
6271         PR rtl-optimization/36419
6272         * dwarf2out.c (barrier_args_size): New variable.
6273         (compute_barrier_args_size, compute_barrier_args_size_1): New
6274         functions.
6275         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
6276         if not called yet in the current function, use barrier_args_size
6277         array to find the new args_size value.
6278         (dwarf2out_frame_debug): Free and clear barrier_args_size.
6279
6280 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
6281
6282         PR debug/36980
6283         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
6284         rule 19.
6285
6286 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
6287
6288         PR debug/36976
6289         * dwarf2out.c (dwarf2out_args_size_adjust): New.
6290         (dwarf2out_stack_adjust): Use it.
6291         (dwarf2out_frame_debug_expr): Likewise.
6292
6293 2008-07-31  Richard Guenther  <rguenther@suse.de>
6294
6295         PR tree-optimization/36978
6296         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
6297         the generated condition.
6298
6299 2008-07-31  Richard Guenther  <rguenther@suse.de>
6300
6301         * passes.c (init_optimization_passes): Always call
6302         pass_early_warn_uninitialized.
6303         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
6304         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
6305         * doc/passes.texi (Warn for uninitialized variables): Adjust.
6306
6307 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
6308
6309         PR c/36970
6310         * builtins.c (maybe_emit_free_warning): New function.
6311         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
6312         maybe_emit_free_warning for BUILT_IN_FREE.
6313
6314         PR debug/36278
6315         * dwarf2out.c (get_context_die): New function.
6316         (force_decl_die, force_type_die): Use it.
6317         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
6318         returns NULL, force generation of DW_TAG_typedef and put that into
6319         DW_AT_import.
6320
6321         PR preprocessor/36649
6322         * c-pch.c (c_common_read_pch): Save and restore
6323         line_table->trace_includes across PCH restore.
6324
6325 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
6326
6327         PR ada/36554
6328         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
6329
6330 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
6331
6332         PR 36974
6333         * final.c (call_from_call_insn): Handle COND_EXEC.
6334
6335 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
6336
6337         * builtins.c (std_gimplify_va_arg_expr): Replace
6338         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
6339         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
6340
6341 2008-07-30  Joey Ye  <joey.ye@intel.com>
6342             H.J. Lu  <hongjiu.lu@intel.com>
6343
6344         * builtins.c (expand_builtin_setjmp_receiver): Replace
6345         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
6346         (expand_builtin_apply_args_1): Likewise.
6347         (expand_builtin_longjmp): Need DRAP for stack alignment.
6348         (expand_builtin_apply): Likewise.
6349
6350         * caller-save.c (setup_save_areas): Call assign_stack_local_1
6351         instead of assign_stack_local to allow alignment reduction.
6352
6353         * calls.c (emit_call_1): Need DRAP for stack alignment if
6354         return pops.
6355         (expand_call): Replace virtual_incoming_args_rtx with
6356         crtl->args.internal_arg_pointer.
6357         * stmt.c (expand_nl_goto_receiver): Likewise.
6358
6359         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
6360         alignment and store to stack_alignment_estimated and
6361         max_used_stack_slot_alignment.
6362         (expand_one_var): Likewise.
6363         (expand_stack_alignment): New function.
6364         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
6365         and stack_alignment_estimated fields in rtl_data.  Call
6366         expand_stack_alignment at end.
6367
6368         * defaults.h (INCOMING_STACK_BOUNDARY): New.
6369         (MAX_STACK_ALIGNMENT): Likewise.
6370         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
6371         (SUPPORTS_STACK_ALIGNMENT): Likewise.
6372
6373         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
6374         stack alignment when generating virtual registers.
6375
6376         * function.c (assign_stack_local): Renamed to ...
6377         (assign_stack_local_1): This.  Add a parameter to indicate
6378         if it is OK to reduce alignment.
6379         (assign_stack_local): Use it.
6380         (instantiate_new_reg): Instantiate virtual incoming args rtx
6381         to vDRAP if stack realignment and DRAP is needed.
6382         (assign_parms): Collect parameter/return type alignment and
6383         contribute to stack_alignment_estimated.
6384         (locate_and_pad_parm): Likewise.
6385         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
6386         with crtl->args.internal_arg_pointer.
6387
6388         * function.h (rtl_data): Add new field drap_reg,
6389         max_used_stack_slot_alignment, stack_alignment_estimated,
6390         stack_realign_needed, need_drap, stack_realign_processed and
6391         stack_realign_finalized.
6392         (stack_realign_fp): New macro.
6393         (stack_realign_drap): Likewise.
6394
6395         * global.c (compute_regsets): Frame pointer is needed when
6396         stack is realigned.  Can eliminate frame pointer when stack is
6397         realigned and dynamic realigned argument pointer isn't used.
6398
6399         * reload1.c (update_eliminables):  Frame pointer is needed
6400         when stack is realigned.
6401         (init_elim_table): Can eliminate frame pointer when stack is
6402         realigned and dynamic realigned argument pointer isn't used.
6403
6404         * rtl.h (assign_stack_local_1): Declare new funtion.
6405
6406         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
6407         (TARGET_GET_DRAP_RTX): Likewise.
6408         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
6409         TARGET_GET_DRAP_RTX.
6410
6411         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
6412
6413         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
6414         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
6415
6416 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
6417             H.J. Lu  <hongjiu.lu@intel.com>
6418
6419         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
6420         vdrap_reg, stack_realign and drap_reg_saved.
6421         (add_cfi): Don't allow redefining CFA when DRAP is used.
6422         (reg_save): Handle stack alignment.
6423         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
6424         alignment.  Don't generate DWARF information for (set fp sp)
6425         when DRAP is used.
6426         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
6427         to INVALID_REGNUM.
6428         (int_loc_descriptor): Move prototype forward.  Also define if
6429         DWARF2_UNWIND_INFO is true.
6430         (output_cfa_loc): Handle DW_CFA_expression.
6431         (build_cfa_aligned_loc): New.
6432         (based_loc_descr): Update assert for stack realign.  For local
6433         variables, use sp+offset when stack is aligned without drap and
6434         fp+offset when stack is aligned with drap.  For arguments, use
6435         cfa+offset when drap is used to align stack.
6436
6437 2008-07-30  Joey Ye  <joey.ye@intel.com>
6438             H.J. Lu  <hongjiu.lu@intel.com>
6439
6440         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
6441         Break long line.
6442         (ix86_gen_andsp): New.
6443         (ix86_user_incoming_stack_boundary): Likewise.
6444         (ix86_default_incoming_stack_boundary): Likewise.
6445         (ix86_incoming_stack_boundary): Likewise.
6446         (ix86_can_eliminate): Likewise.
6447         (find_drap_reg): Likewise.
6448         (ix86_update_stack_boundary): Likewise.
6449         (ix86_get_drap_rtx): Likewise.
6450         (ix86_finalize_stack_realign_flags): Likewise.
6451         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
6452         (TARGET_GET_DRAP_RTX): Likewise.
6453         (override_options): Overide option value for new options.
6454         (ix86_function_ok_for_sibcall): Remove check for
6455         force_align_arg_pointer.
6456         (ix86_handle_cconv_attribute): Likewise.
6457         (ix86_function_regparm): Likewise.
6458         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
6459         (ix86_va_start): Replace virtual_incoming_args_rtx with
6460         crtl->args.internal_arg_pointer.
6461         (ix86_select_alt_pic_regnum): Check DRAP register.
6462         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
6463         (ix86_compute_frame_layout): Compute frame layout wrt stack
6464         realignment.
6465         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
6466         (ix86_expand_prologue): Decide if stack realignment is needed
6467         and generate prologue code accordingly.
6468         (ix86_expand_epilogue): Generate epilogue code wrt stack
6469         realignment is really needed or not.
6470
6471         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
6472         (ABI_STACK_BOUNDARY): Likewise.
6473         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
6474         (STACK_REALIGN_DEFAULT): Likewise.
6475         (INCOMING_STACK_BOUNDARY): Likewise.
6476         (MAX_STACK_ALIGNMENT): Likewise.
6477         (ix86_incoming_stack_boundary): Likewise.
6478         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
6479         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
6480         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
6481         (machine_function): Remove force_align_arg_pointer.
6482
6483         * config/i386/i386.md (BX_REG): New.
6484         (R13_REG): Likewise.
6485
6486         * config/i386/i386.opt (mforce_drap): New.
6487         (mincoming-stack-boundary): Likewise.
6488         (mstackrealign): Add Init(-1).
6489
6490         * config/i386/i386-protos.h (ix86_can_eliminate): New
6491
6492 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
6493
6494         * doc/extend.texi: Update force_align_arg_pointer.
6495
6496         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
6497         -mstackrealign.
6498
6499         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
6500         (INCOMING_STACK_BOUNDARY): Likewise.
6501         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
6502         (TARGET_GET_DRAP_RTX): Likewise.
6503
6504 2008-07-30  Andreas Schwab  <schwab@suse.de>
6505
6506         PR rtl-optimization/36929
6507         * dse.c (replace_inc_dec): Use emit_insn_before instead of
6508         add_insn_before and fix argument order.
6509         (replace_inc_dec_mem): Handle NULL rtx.
6510
6511 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
6512
6513         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
6514         function.
6515         (arm_compute_initial_elimination_offset): Use it.
6516         (arm_compute_save_reg_mask): Include static chain save slot when
6517         calculating alignment.
6518         (arm_get_frame_offsets): Ditto.
6519         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
6520         that we can use to decrement the stack when the stack decrement
6521         could be too big for an immediate value in a single insn.
6522         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
6523
6524 2008-07-30  Richard Guenther  <rguenther@suse.de>
6525
6526         PR tree-optimization/36967
6527         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
6528         Release defs of statements we remove.
6529
6530 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
6531
6532         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
6533         instead of NULL_RTVEC.
6534
6535 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
6536
6537         PR target/35866
6538
6539         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
6540         vector modes.
6541
6542 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
6543
6544         * final.c (call_from_call_insn): New.
6545         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
6546
6547 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
6548
6549         * configure.ac: Substitute ADA_CFLAGS.
6550         * configure: Regenerate.
6551         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
6552         * Makefile.in: Remove mention of X_* variables.
6553         * config/pa/x-ada-hpux10: Remove.
6554         * config/pa/x-ada: Remove.
6555
6556         * doc/fragments.texi: Update.
6557
6558 2008-07-30  Olivier Hainque  <hainque@adacore.com>
6559
6560         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
6561         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
6562         __dso_handle explicitly here.
6563
6564 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6565
6566         PR 34389
6567         * c-typeck.c (build_binary_op): Encapsulate code into...
6568         * c-common.c (shorten_binary_op): ...this new function.
6569         (conversion_warning): Use the new function. Handle non-negative
6570         constant in bitwise-and.
6571         * c-common.h (shorten_binary_op): Declare.
6572
6573 2008-07-30  Olivier Hainque  <hainque@adacore.com>
6574
6575         * scan.c (make_sstring_space): Add explicit conversions of
6576         allocator's return value.
6577         * fix-header.c (recognized_function): Likewise.
6578
6579 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6580
6581         * doc/cpp.texi: Update to GFDL 1.2.
6582         * doc/gcc.texi: Do not list GPL as Invariant Section.
6583         * doc/gccint.texi: Likewise.  Update copyright years.
6584         * doc/install.texi: Update copyright years.
6585
6586 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
6587
6588         PR target/36955
6589         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
6590         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
6591
6592 2008-07-29  Jan Hubicka  <jh@suse.cz>
6593
6594         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
6595         (grokdeclarator): Likewise.
6596         * langhooks.c (lhd_warn_unused_global_decl): Use
6597         DECL_DECLARED_INLINE_P.
6598         * print-tree.c (print_node): Remove DECL_INLINE check.
6599
6600 2008-07-29  Richard Guenther  <rguenther@suse.de>
6601
6602         PR tree-optimization/36945
6603         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
6604         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
6605         Record invariant addresses un-decomposed.
6606         (copy_reference_ops_from_call): Record reference call
6607         arguments properly.  Simplify.
6608         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
6609         helper split out from ...
6610         (create_component_ref_by_pieces): ... here.  Simplify.
6611         Prepare for recursive invocation for call arguments.
6612         (create_expression_by_pieces): Adjust call to
6613         create_component_ref_by_pieces.
6614         (compute_avail): Process operand 2 of reference ops.
6615
6616 2008-07-29  Richard Guenther  <rguenther@suse.de>
6617
6618         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
6619
6620 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
6621
6622         * c-format.c (check_format_types): Revert unwanted checkin.
6623
6624 2008-07-29  Jan Hubicka  <jh@suse.cz>
6625
6626         * flags.h (flag_really_no_inline): Remove.
6627         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
6628         * toplev.c (flag_really_no_inline): Remove.
6629         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
6630         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
6631         (cgraph_decide_inlining_incrementally): Likewise.
6632         (compute_inline_parameters): Likewise.
6633         * opts.c (decode_options): Simplify.
6634         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
6635         * common.opt (finline): Initialize to 1.
6636         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
6637
6638 2008-07-29  Jan Hubicka  <jh@suse.cz>
6639
6640         * predict.c (always_optimize_for_size_p): New function.
6641         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
6642         optimize_edge_for_size_p, optimize_edge_for_speed_p,
6643         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
6644         functions.
6645         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
6646         * function.c (prepare_function_start): Set default profile.
6647         * function.h (rtl_data): Add maybe_hot_insn_p.
6648         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
6649         (construct_exit_block): Likewise.
6650         (tree_expand_cfg): Likewise.
6651         * basic-block.h
6652         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
6653         optimize_edge_for_size_p, optimize_edge_for_speed_p,
6654         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
6655         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
6656         Declare.
6657
6658 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6659
6660         PR 34985
6661         * c-decl.c (merge_decls): Merge USED flags.
6662
6663 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
6664
6665         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
6666         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
6667         next_stack, lab_false and lab_over trees.
6668
6669 2008-07-28  Richard Guenther  <rguenther@suse.de>
6670
6671         PR tree-optimization/36957
6672         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
6673         (useless_type_conversion_p): Remove.
6674         (types_compatible_p): Remove.
6675         * gimple.h (tree_ssa_useless_type_conversion): Declare.
6676         (useless_type_conversion_p): Declare.
6677         (types_compatible_p): Declare.
6678         (gimple_expr_type): Return the base type only if it is
6679         trivially convertible to the subtype.
6680
6681 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
6682
6683         * configure.ac: Use the m4_do macro to concatenate the warnings into
6684         one string in ACX_PROG_CC_WARNING_OPTS,
6685         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
6686         * configure: Regenerate.
6687
6688 2008-07-28  Richard Guenther  <rguenther@suse.de>
6689
6690         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
6691         (insert_fake_stores): Remove.
6692         (realify_fake_stores): Likewise.
6693         (execute_pre): Remove dead code.
6694         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
6695         (find_func_aliases): Deal with it here instead.
6696         Re-enable gcc_unreachable call.
6697
6698 2008-07-28  Richard Guenther  <rguenther@suse.de>
6699
6700         Merge from gimple-tuples-branch.
6701
6702         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
6703         * gimple.def: New file.
6704         * gsstruct.def: Likewise.
6705         * gimple-iterator.c: Likewise.
6706         * gimple-pretty-print.c: Likewise.
6707         * tree-gimple.c: Removed.  Merged into ...
6708         * gimple.c: ... here.  New file.
6709         * tree-gimple.h: Removed.  Merged into ...
6710         * gimple.h: ... here.  New file.
6711
6712         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
6713         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
6714         --enable-checking=gimple flag.
6715         * config.in: Likewise.
6716         * configure: Regenerated.
6717
6718         * tree-ssa-operands.h: Tuplified.
6719         * tree-vrp.c: Likewise.
6720         * tree-loop-linear.c: Likewise.
6721         * tree-into-ssa.c: Likewise.
6722         * tree-ssa-loop-im.c: Likewise.
6723         * tree-dump.c: Likewise.
6724         * tree-complex.c: Likewise.
6725         * cgraphbuild.c: Likewise.
6726         * tree-ssa-threadupdate.c: Likewise.
6727         * tree-ssa-loop-niter.c: Likewise.
6728         * tree-pretty-print.c: Likewise.
6729         * tracer.c: Likewise.
6730         * gengtype.c: Likewise.
6731         * tree-loop-distribution.c: Likewise.
6732         * tree-ssa-loop-unswitch.c: Likewise.
6733         * cgraph.c: Likewise.
6734         * cgraph.h: Likewise.
6735         * tree-ssa-loop-manip.c: Likewise.
6736         * value-prof.c: Likewise.
6737         * tree-ssa-loop-ch.c: Likewise.
6738         * tree-tailcall.c: Likewise.
6739         * value-prof.h: Likewise.
6740         * tree.c: Likewise.
6741         * tree.h: Likewise.
6742         * tree-pass.h: Likewise.
6743         * ipa-cp.c: Likewise.
6744         * tree-scalar-evolution.c: Likewise.
6745         * tree-scalar-evolution.h: Likewise.
6746         * target.h: Likewise.
6747         * lambda-mat.c: Likewise.
6748         * tree-phinodes.c: Likewise.
6749         * diagnostic.h: Likewise.
6750         * builtins.c: Likewise.
6751         * tree-ssa-alias-warnings.c: Likewise.
6752         * cfghooks.c: Likewise.
6753         * fold-const.c: Likewise.
6754         * cfghooks.h: Likewise.
6755         * omp-low.c: Likewise.
6756         * tree-ssa-dse.c: Likewise.
6757         * ipa-reference.c: Likewise.
6758         * tree-ssa-uncprop.c: Likewise.
6759         * toplev.c: Likewise.
6760         * tree-gimple.c: Likewise.
6761         * tree-gimple.h: Likewise.
6762         * tree-chrec.c: Likewise.
6763         * tree-chrec.h: Likewise.
6764         * tree-ssa-sccvn.c: Likewise.
6765         * tree-ssa-sccvn.h: Likewise.
6766         * cgraphunit.c: Likewise.
6767         * tree-ssa-copyrename.c: Likewise.
6768         * tree-ssa-ccp.c: Likewise.
6769         * tree-ssa-loop-ivopts.c: Likewise.
6770         * tree-nomudflap.c: Likewise.
6771         * tree-call-cdce.c: Likewise.
6772         * ipa-pure-const.c: Likewise.
6773         * c-format.c: Likewise.
6774         * tree-stdarg.c: Likewise.
6775         * tree-ssa-math-opts.c: Likewise.
6776         * tree-ssa-dom.c: Likewise.
6777         * tree-nrv.c: Likewise.
6778         * tree-ssa-propagate.c: Likewise.
6779         * ipa-utils.c: Likewise.
6780         * tree-ssa-propagate.h: Likewise.
6781         * tree-ssa-alias.c: Likewise.
6782         * gimple-low.c: Likewise.
6783         * tree-ssa-sink.c: Likewise.
6784         * ipa-inline.c: Likewise.
6785         * c-semantics.c: Likewise.
6786         * dwarf2out.c: Likewise.
6787         * expr.c: Likewise.
6788         * tree-ssa-loop-ivcanon.c: Likewise.
6789         * predict.c: Likewise.
6790         * tree-ssa-loop.c: Likewise.
6791         * tree-parloops.c: Likewise.
6792         * tree-ssa-address.c: Likewise.
6793         * tree-ssa-ifcombine.c: Likewise.
6794         * matrix-reorg.c: Likewise.
6795         * c-decl.c: Likewise.
6796         * tree-eh.c: Likewise.
6797         * c-pretty-print.c: Likewise.
6798         * lambda-trans.c: Likewise.
6799         * function.c: Likewise.
6800         * langhooks.c: Likewise.
6801         * ebitmap.h: Likewise.
6802         * tree-vectorizer.c: Likewise.
6803         * function.h: Likewise.
6804         * langhooks.h: Likewise.
6805         * tree-vectorizer.h: Likewise.
6806         * ipa-type-escape.c: Likewise.
6807         * ipa-type-escape.h: Likewise.
6808         * domwalk.c: Likewise.
6809         * tree-if-conv.c: Likewise.
6810         * profile.c: Likewise.
6811         * domwalk.h: Likewise.
6812         * tree-data-ref.c: Likewise.
6813         * tree-data-ref.h: Likewise.
6814         * tree-flow-inline.h: Likewise.
6815         * tree-affine.c: Likewise.
6816         * tree-vect-analyze.c: Likewise.
6817         * c-typeck.c: Likewise.
6818         * gimplify.c: Likewise.
6819         * coretypes.h: Likewise.
6820         * tree-ssa-phiopt.c: Likewise.
6821         * calls.c: Likewise.
6822         * tree-ssa-coalesce.c: Likewise.
6823         * tree.def: Likewise.
6824         * tree-dfa.c: Likewise.
6825         * except.c: Likewise.
6826         * except.h: Likewise.
6827         * cfgexpand.c: Likewise.
6828         * tree-cfgcleanup.c: Likewise.
6829         * tree-ssa-pre.c: Likewise.
6830         * tree-ssa-live.c: Likewise.
6831         * tree-sra.c: Likewise.
6832         * tree-ssa-live.h: Likewise.
6833         * tree-predcom.c: Likewise.
6834         * lambda.h: Likewise.
6835         * tree-mudflap.c: Likewise.
6836         * ipa-prop.c: Likewise.
6837         * print-tree.c: Likewise.
6838         * tree-ssa-copy.c: Likewise.
6839         * ipa-prop.h: Likewise.
6840         * tree-ssa-forwprop.c: Likewise.
6841         * ggc-page.c: Likewise.
6842         * c-omp.c: Likewise.
6843         * tree-ssa-dce.c: Likewise.
6844         * tree-vect-patterns.c: Likewise.
6845         * tree-ssa-ter.c: Likewise.
6846         * tree-nested.c: Likewise.
6847         * tree-ssa.c: Likewise.
6848         * lambda-code.c: Likewise.
6849         * tree-ssa-loop-prefetch.c: Likewise.
6850         * tree-inline.c: Likewise.
6851         * tree-inline.h: Likewise.
6852         * tree-iterator.c: Likewise.
6853         * tree-optimize.c: Likewise.
6854         * tree-ssa-phiprop.c: Likewise.
6855         * tree-vect-transform.c: Likewise.
6856         * tree-object-size.c: Likewise.
6857         * tree-outof-ssa.c: Likewise.
6858         * cfgloop.c: Likewise.
6859         * system.h: Likewise.
6860         * tree-profile.c: Likewise.
6861         * cfgloop.h: Likewise.
6862         * c-gimplify.c: Likewise.
6863         * c-common.c: Likewise.
6864         * tree-vect-generic.c: Likewise.
6865         * tree-flow.h: Likewise.
6866         * c-common.h: Likewise.
6867         * basic-block.h: Likewise.
6868         * tree-ssa-structalias.c: Likewise.
6869         * tree-switch-conversion.c: Likewise.
6870         * tree-ssa-structalias.h: Likewise.
6871         * tree-cfg.c: Likewise.
6872         * passes.c: Likewise.
6873         * ipa-struct-reorg.c: Likewise.
6874         * ipa-struct-reorg.h: Likewise.
6875         * tree-ssa-reassoc.c: Likewise.
6876         * cfgrtl.c: Likewise.
6877         * varpool.c: Likewise.
6878         * stmt.c: Likewise.
6879         * tree-ssanames.c: Likewise.
6880         * tree-ssa-threadedge.c: Likewise.
6881         * langhooks-def.h: Likewise.
6882         * tree-ssa-operands.c: Likewise.
6883         * config/alpha/alpha.c: Likewise.
6884         * config/frv/frv.c: Likewise.
6885         * config/s390/s390.c: Likewise.
6886         * config/m32c/m32c.c: Likewise.
6887         * config/m32c/m32c-protos.h: Likewise.
6888         * config/spu/spu.c: Likewise.
6889         * config/sparc/sparc.c: Likewise.
6890         * config/i386/i386.c: Likewise.
6891         * config/sh/sh.c: Likewise.
6892         * config/xtensa/xtensa.c: Likewise.
6893         * config/stormy16/stormy16.c: Likewise.
6894         * config/ia64/ia64.c: Likewise.
6895         * config/rs6000/rs6000.c: Likewise.
6896         * config/pa/pa.c: Likewise.
6897         * config/mips/mips.c: Likewise.
6898
6899 2008-07-28  Simon Baldwin  <simonb@google.com>
6900
6901         * c-pragma.c (handle_pragma_message): New function.
6902         (init_pragma): Register handle_pragma_message.
6903         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
6904         documentation.
6905
6906 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
6907
6908         PR tree-optimization/35252
6909         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
6910         REALPART_EXPR to be considered as same load operation.
6911
6912 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
6913
6914         PR tree-optimization/36830
6915         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
6916         (expressions_equal_p): Return false if only one operand is null.
6917
6918 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
6919
6920         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
6921         version requirements.
6922
6923 2008-07-26  Olivier Hainque  <hainque@adacore.com>
6924
6925         * collect2.c (symkind): New enum.  Symbol kinds we care about.
6926         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
6927         code and head comment accordingly.
6928         (scan_prog_file): Use symkind names instead of bare integers.
6929
6930 2008-07-25  Jan Hubicka  <jh@suse.cz>
6931
6932         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
6933         DECL_INLINE.
6934         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
6935         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
6936         * dojump.c (clear_pending_stack_adjust): Likewise.
6937         * print-tree.c (print_node): Ignore DECL_INLINE.
6938         * tree-inline.c (inlinable_function_p): Likewise.
6939
6940 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
6941
6942         * doc/extend.texi (hot attribute): Document that the hot attribute
6943         turns on -O3 for some ports.
6944         (cold attribute): Document that the cold attribute turns on -Os
6945         for some ports
6946
6947         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
6948         reflect function specific option support.
6949
6950         * target.h (struct target_option_hooks): Add fields to say whether
6951         the cold attribute implies -Os and the hot attribute implies -O3.
6952
6953         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
6954         By default, do not turn on -Os for cold functions.
6955         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
6956         not turn on -O3 for hot functions.
6957
6958         * c-common.c (handle_hot_attribute): Use target hook to determine
6959         if hot functions should enable -O3.
6960         (handle_cold_attribute): Use target hook to determine if cold
6961         functions should enable -Os.
6962
6963         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
6964         (override_options): Move disable scheduling to
6965         optimization_options.
6966         (optimization_options): Disable scheduling here, not
6967         override_options.
6968         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6969         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6970
6971         * config/ia64/ia64.c (ia64_override_options): Move setting
6972         scheduling flags to ia64_optimization_options.
6973         (ia64_optimization_options): Disable scheduling options here, and
6974         not in ia64_override_options.
6975         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6976         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6977
6978 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
6979
6980         PR target/36936
6981         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
6982
6983 2008-07-25  Martin Jambor  <mjambor@suse.cz>
6984
6985         PR tree-optimization/36926
6986         * ipa-prop.c (ipa_analyze_call_uses): Call
6987         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
6988
6989 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
6990
6991         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
6992         movv2si_internal): Add mem = reg alternative.
6993
6994 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
6995
6996         PR bootstrap/36918
6997         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
6998         DEFAULT_PCC_STRUCT_RETURN to 127.
6999
7000 2008-07-24  Jan Hubicka  <jh@suse.cz>
7001
7002         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
7003         (build_cgraph_edges): Likewise.
7004         * cgraph.c (cgraph_node): Do not update assembler hash.
7005         (cgraph_remove_node): Drop non-unit-at-a-time code.
7006         * tree-pass.h (pass_O0_always_inline): Remove.
7007         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
7008         * toplev.c (process_options): Flag unit-at-a-time does not imply
7009         no section anchors.
7010         * cgraphunit.c: Update comments.
7011         (decide_is_function_needed): Drop non-unit-at-a-time mode.
7012         (cgraph_assemble_pending_functions): Remove.
7013         (cgraph_reset_node): Drop non-unit-at-a-time code.
7014         (cgraph_finalize_function): Likewise.
7015         (cgraph_analyze_function): Likewise.
7016         (cgraph_finalize_compilation_unit): Likewise.
7017         (cgraph_expand_function): Likewise.
7018         (cgraph_optimize): Likesise.
7019         (save_inline_function_body): Likewise.
7020         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
7021         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
7022         * ipa-inline.c: Update comments.
7023         (enum inlining_mode): remove INLINE_SPEED.
7024         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
7025         (cgraph_mark_inline_edge): Likewise.
7026         (try_inline): Likewise.
7027         (cgraph_decide_inlining_incrementally): Likewise.
7028         (cgraph_gate_inlining): Remove.
7029         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
7030         (cgraph_gate_early_inlining): Likewise.
7031         (gate_inline_passes): Remove.
7032         (pass_inline_parameters, pass_ipa_inline): Remove gates.
7033         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
7034         pass_O0_always_inline): Remove.
7035         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
7036         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
7037         * opts.c (no_unit_at_a_time_default): Remove.
7038         (decode_options): Remove flag_unit_at_a_time reset and warning.
7039         * opts.h (no_unit_at_a_time_default): Remove.
7040         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
7041         early in GNU dialect.
7042         (merge_decls): Update comment; drop unit-at-a-time check.
7043         (finish_decl): Likewise.
7044         (grok_declaration): Remove flag_inline_trees code.
7045         (finish_functions): Return on function returning non-void on all
7046         statics.
7047         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
7048         * cfgexpand.c (expand_one_static_var): Remove.
7049         (expand_one_var): Remove expand_one_static_var call.
7050         (expand_used_vars_for_block): Remove flag_unit_a_time check.
7051         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
7052         and flag_unit_at_a-time compatibility checks.
7053         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
7054         * tree-inline.c (flag_inline_trees): Remove.
7055         (inlinable_function_p): Don't check it.
7056         (expand_call_inline): Remove non-unit-at-a-time code.
7057         * tree-inline.h (flag_inline_trees): Remove.
7058         * tree-optimize.c (execute_early_local_optimizations): Remove
7059         unit-at-a-time checks.
7060         (tree_rest_of_compilation): Likewise.
7061         * combine.c (setup_incoming_promotions): Likewise.
7062         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
7063         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
7064         * passes.c (pass_inline_parameters): Update comments; remove
7065         O0_alwaysinline pass.
7066         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
7067         (execute_one_pass): Likewise.
7068         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
7069         (ix86_function_sseregparm): Likewise.
7070         * arm.c (arm_function_in_section_p): Likewise.
7071         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
7072         * varpool.c: Update comments.
7073         (decide_is_variable_needed): Remove unit-at-a-time checks.
7074         (varpool_finalize_decl): Likewise.
7075
7076 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
7077
7078         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
7079         to 2 instead of -1.
7080         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
7081
7082 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
7083
7084         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
7085         imp symbol extension.
7086
7087         2008-07-23  Ian Lance Taylor  <iant@google.com>
7088
7089         * tree-vrp.c (infer_value_range): Ignore asm statements when
7090         looking for memory accesses for -fdelete-null-pointer-checks.
7091
7092 2008-07-24  Ben Elliston  <bje@au.ibm.com>
7093
7094         * config/spu/spu-c.c (__vector_keyword): New variable.
7095         (vector_keyword): Likewise.
7096         (spu_categorize_keyword): New function.
7097         (spu_macro_to_expand): Likewise.
7098         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
7099         compiling an ISO C dialect.
7100
7101 2008-07-24  Ben Elliston  <bje@au.ibm.com>
7102
7103         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
7104         conventional usage.
7105
7106 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7107
7108         * configure: Regenerate.
7109         * configure.ac: Require texinfo 4.7.
7110         * doc/install.texi: Document texinfo 4.7 requirement.
7111
7112 2008-07-23  Martin Jambor  <mjambor@suse.cz>
7113
7114         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
7115         rather than for DECL_SAVED_TREE.
7116         * ipa-prop.c: Include diagnostic.h.
7117         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
7118         thoroughly.
7119         (ipa_detect_param_modifications): Function rewritten from scratch.
7120         (ipa_compute_jump_functions): Changed accesses to modification flags.
7121         (ipa_free_node_params_substructures): Update flags destruction.
7122         (ipa_node_duplication_hook): Update flags duplication.
7123         (ipa_print_all_params_modified): Updated flag access.
7124         * ipa-prop.h (struct ipa_param_flags): New structure.
7125         (struct ipa_node_params): New field modification_analysis_done,
7126         modified_flags changed into param_flags.
7127         (ipa_is_ith_param_modified): Changed to use new flags.
7128         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
7129
7130         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
7131         ipa-cp.c and split into two functions.
7132         (ipa_print_node_jump_functions): New function.
7133         (compute_scalar_jump_functions): New function.
7134         (type_like_member_ptr_p): New function.
7135         (compute_pass_through_member_ptrs): New function.
7136         (fill_member_ptr_cst_jump_function): New function.
7137         (determine_cst_member_ptr): New function.
7138         (compute_cst_member_ptr_arguments): New function.
7139         (ipa_compute_jump_functions): Complete rewrite.
7140         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
7141         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
7142         (struct ipa_member_ptr_cst): New structure.
7143         (union jump_func_value): New field member_cst.
7144         * ipa-cp.c (ipcp_lat_is_insertable): New function.
7145         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
7146         jump function types.
7147         (ipcp_print_all_lattices): Slight fprintf rearrangement.
7148         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
7149         instead of ipcp_print_all_jump_functions.
7150         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
7151         only for replacable scalars.
7152
7153         * doc/invoke.texi (Optimize options): Add description of
7154         -findirect-inlining.
7155         * common.opt (flag_indirect_inlining): New flag.
7156         * opts.c (decode_options): Set flag_indirect_inlining when
7157         optimize >= 3.
7158
7159         * ipa-inline.c: Include ipa-prop.h.
7160         (inline_indirect_intraprocedural_analysis): New function.
7161         (inline_generate_summary): Allocate parameter and argument info
7162         structures, call inline_indirect_intraprocedural_analysis on each
7163         node when doing indirect inlining and deallocate indirect inlining
7164         data structures in the end.
7165         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
7166         (free_all_ipa_structures_after_iinln): New function.
7167         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
7168         done.
7169         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
7170
7171         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
7172         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
7173         of computing the frequency separately.
7174         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
7175         of computing the frequency separately.
7176         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
7177         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
7178         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
7179         (ipa_get_stmt_member_ptr_load_param): New function.
7180         (ipa_is_ssa_with_stmt_def): New function.
7181         (ipa_note_param_call): New function.
7182         (ipa_analyze_call_uses): New function.
7183         (ipa_analyze_stmt_uses): New function.
7184         (ipa_analyze_params_uses): New function.
7185         (ipa_free_node_params_substructures): Also free the param_calls linked
7186         list.
7187         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
7188         (ipa_print_node_param_flags): New function.
7189         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
7190         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
7191         * ipa-prop.h (struct ipa_param_flags): New field called.
7192         (struct ipa_param_call_note): New structure.
7193         (struct ipa_node_params): New fields param_calls and
7194         uses_analysis_done.
7195         (ipa_is_ith_param_called): New function.
7196         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
7197         ipa_analyze_params_uses and dump parameter flags.
7198
7199         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
7200         ipa_propagate_indirect_call_infos if performing indirect inlining,
7201         pass a new parameter new_edges to it.
7202         (add_new_edges_to_heap): New fucntion.
7203         (cgraph_decide_inlining_of_small_functions): New vector
7204         new_indirect_edges for newly found indirect edges , call
7205         ipa_propagate_indirect_call_infos after inlining.
7206         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
7207         inlining if performing indirect inlining.  Call
7208         free_all_ipa_structures_after_iinln when doing so too.
7209         (inline_generate_summary): Do not call
7210         free_all_ipa_structures_after_iinln here.
7211         * ipa-prop.c (update_jump_functions_after_inlining): New function.
7212         (print_edge_addition_message): New function.
7213         (update_call_notes_after_inlining): New function.
7214         (propagate_info_to_inlined_callees): New function.
7215         (ipa_propagate_indirect_call_infos): New function.
7216         * ipa-prop.h: Include cgraph.h
7217         (struct ipa_param_call_note): Fields reordered, new field processed.
7218         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
7219         flag indirect_call.
7220         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
7221         rediscovered call statements.
7222         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
7223         (dump_cgraph_node): Dump also the indirect_call flag.
7224         (cgraph_clone_edge): Copy also the indirect_call flag.
7225         * tree-inline.c (copy_bb): Do not check for fndecls from call
7226         expressions, check for edge availability when moving clones.
7227         (get_indirect_callee_fndecl): New function.
7228         (expand_call_inline): If callee declaration is not apprent from
7229         the statement, try calling get_indirect_callee_fndecl.  Do not
7230         issue warnings or call sorry when not inlinings an indirect edge.
7231         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
7232
7233         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
7234         bit more frandly to matching.
7235         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
7236         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
7237         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
7238
7239 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
7240
7241         PR 36907
7242         * opth-gen.awk: Suppress function specific features when building
7243         target libraries.
7244         * optc-gen.awk: Ditto.
7245
7246 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7247
7248         PR 35058
7249         * diagnostic.c (pedwarn): Add opt parameter.
7250         (pedwarn0): New.
7251         * c-tree.h (pedwarn_init): Add opt parameter.
7252         (pedwarn_c90): Likewise.
7253         (pedwarn_c99): Likewise.
7254         * c-errors.c (pedwarn_c99): Likewise.
7255         (pedwarn_c90): Likewise.
7256         * toplev.h (pedwarn): Update declaration.
7257         (pedwarn0): Declare.
7258         * c-lex.c: All calls to pedwarn changed.
7259         * builtins.c: All calls to pedwarn changed.
7260         * toplev.c: All calls to pedwarn changed.
7261         * c-decl.c: All calls to pedwarn changed.
7262         * c-typeck.c: All calls to pedwarn changed.
7263         * c-common.c: All calls to pedwarn changed.
7264         * c-parser.c: All calls to pedwarn changed.
7265
7266 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
7267             Karthik Kumar  <karthikkumar@gmail.com>
7268
7269         * attribs.c (file scope): Include c-common.h.
7270         (decl_attributes): Add support for #pragma GCC optimize and
7271         #pragma GCC option.
7272
7273         * targhooks.c (default_can_inline_p): New function that is the
7274         default for the TARGET_CAN_INLINE_P target hook.
7275
7276         * targhooks.h (default_can_inline_p): Add declaration.
7277
7278         * tree.c (cl_optimization_node): New static tree for building
7279         OPTIMIZATION_NODE tree.
7280         (cl_target_option_node): New static tree for building
7281         TARGET_OPTION_NODE tree.
7282         (cl_option_hash_table): New hash table for hashing
7283         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
7284         (cl_option_hash_hash): New function to provide the hash value for
7285         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
7286         (cl_option_hash_eq): New function to provide an equality test for
7287         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
7288         (tree_code_size): Add support for OPTIMIZATION_NODE and
7289         TARGET_OPTION_NODE trees.
7290         (tree_code_structure): Add support for OPTIMIZATION_NODE and
7291         TARGET_OPTION_NODE trees.
7292         (build_optimization_node): Build a tree that has all of the
7293         current optimization options.
7294         (build_target_option_node): Build a tree that has the target
7295         options that might be changed on a per function basis.
7296
7297         * tree.h (file scope): Include options.h.
7298         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
7299         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
7300         (TREE_OPTIMIZATION): Ditto.
7301         (TREE_TARGET_SPECIFIC): Ditto.
7302         (struct tree_function_decl): Add fields for remembering the
7303         current optimization options and target specific options.
7304         (struct tree_optimization_option): New tree variant that remembers
7305         the optimization options.
7306         (struct tree_target_option): New tree variant that remembers the
7307         target specific flags that might change for compiling a particular
7308         function.
7309         (union tree_node): Include tree_optimization_option and
7310         tree_target_option fields.
7311         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
7312         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
7313         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
7314         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
7315         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
7316         optimization and target options.
7317         (optimization_default_node): New macro to refer to global_trees
7318         field.
7319         (optimization_current_node): Ditto.
7320         (optimization_cold_node): Ditto.
7321         (optimization_hot_node): Ditto.
7322         (target_option_default_node): Ditto.
7323         (target_option_current_node): Ditto.
7324         (current_option_pragma): Ditto.
7325         (current_optimize_pragma): Ditto.
7326
7327         * target.h (struct gcc_target): Add valid_option_attribute_p,
7328         target_option_save, target_option_restore, target_option_print,
7329         target_option_pragma_parse, and can_inline_p hooks.
7330
7331         * toplev.h (parse_optimize_options): Add declaration.
7332         (fast_math_flags_struct_set_p): Ditto.
7333
7334         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
7335         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
7336         optimize is used.
7337
7338         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
7339         tree_can_inline_p hook to see if one function can inline another.
7340         (cgraph_decide_inlining): Ditto.
7341         (cgraph_decide_inlining_incrementally): Ditto.
7342
7343         * opts.c (decode_options): Add support for running multiple times
7344         to allow functions with different target or optimization options
7345         than was specified on the command line.
7346         (fast_math_flags_struct_set_p): New function that is similar to
7347         fast_math_flags_set_p, except it uses the values in the
7348         cl_optimization structure instead of global variables.
7349
7350         * optc-gen.awk: Add support for TargetSave to allow a back end to
7351         declare new fields that need to be saved when using function
7352         specific options.  Include flags.h and target.h in the options.c
7353         source.  Add support for Save to indicate which options can be set
7354         for individual functions.  Generate cl_optimize_save,
7355         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
7356         cl_target_option_restore, cl_target_option_print functions to
7357         allow functions to use different optimization or target options.
7358
7359         * opt-functions.awk (var_type_struct): Return the type used for
7360         storing the field in a structure.
7361
7362         * opth-gen.awk: Add support for TargetSave to allow a back end to
7363         declare new fields that need to be saved when using function
7364         specific options.  Add support for Save to indicate which options
7365         can be set for individual functions.  Only generate one extern for
7366         Mask fields.  Generate cl_optimization and cl_target_option
7367         structures to remember optimization and target options.
7368
7369         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
7370         collecting new tree nodes.
7371         (TS_TARGET_OPTION): Ditto.
7372
7373         * c-decl.c (merge_decls): Merge function specific target and
7374         optimization options.
7375
7376         * function.c (invoke_set_current_function_hook): If the function
7377         uses different optimization options, change the global variables
7378         to reflect this.
7379
7380         * coretypes.h (struct cl_optimization): Add forward reference.
7381         (struct cl_target_option): Ditto.
7382
7383         * c-pragma.c (option_stack): New static vector to remember the
7384         current #pragma GCC option stack.
7385         (handle_pragma_option): New function to support #pragma GCC option
7386         to change target options.
7387         (optimize_stack): New static vector to remember the current
7388         #pragma GCC optimize stack.
7389         (handle_pragma_optimize): New function to support #pragma GCC
7390         optimize to change optimization options.
7391         (init_pragma): Add support for #pragma GCC optimize and #pragma
7392         GCC option.
7393
7394         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
7395         optimization options.
7396         (TARGET_OPTION_NODE): New tree code for remembering certain target
7397         options.
7398
7399         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
7400         TARGET_OPTION_NODE trees.
7401
7402         * common.opt (-O): Add Optimization flag.
7403         (-Os): Ditto.
7404         (-fmath-errno): Ditto.
7405         (-falign-functions): Add UInteger flag to make sure flag gets full
7406         int in cl_optimization structure.
7407         (-falign-jumps): Ditto.
7408         (-falign-labels): Ditto.
7409         (-falign-loops): Ditto.
7410         (-fsched-stalled-insns): Ditto.
7411         (-fsched-stalled-insns-dep): Ditto.
7412
7413         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
7414         definition.
7415         (TARGET_OPTION_SAVE): Ditto.
7416         (TARGET_OPTION_RESTORE): Ditto.
7417         (TARGET_OPTION_PRINT): Ditto.
7418         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
7419         (TARGET_CAN_INLINE_P): Ditto.
7420         (TARGET_INITIALIZER): Add new hooks.
7421
7422         * tree-inline.c (tree_can_inline_p): New function to determine
7423         whether one function can inline another.  Check if the functions
7424         use compatible optimization options, and also call the backend
7425         can_inline_p hook.
7426
7427         * tree-inline.h (tree_can_inline_p): Add declaration.
7428
7429         * c-common.c (c_common_attribute): Add support for option and
7430         optimize attributes.
7431         (handle_option_attribute): Add support for the option attribute to
7432         allow the user to specify different target options for compiling a
7433         specific function.
7434         (handle_optimize_attribute): Add support for the optimize
7435         attribute to allow the user to specify different optimization
7436         options for compiling a specific function.
7437         (handle_hot_attribute): Turn on -O3 optimization for this one
7438         function if it isn't the default optimization level.
7439         (handle_cold_attribute): Turn on -Os optimization for this one
7440         function if it insn't the default optimization.
7441         (const_char_p): New const char * typedef.
7442         (optimize_args): New static vector to remember the optimization
7443         arguments.
7444         (parse_optimize_options): New function to set up the optimization
7445         arguments from either the optimize attribute or #pragma GCC optimize.
7446
7447         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
7448         (builtin_define_std): Ditto.
7449
7450         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
7451         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
7452         (x86_64-*-*): Ditto.
7453
7454         * Makefile.in (TREE_H): Add options.h.
7455         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
7456
7457         * doc/extend.texi (option attribute): Document new attribute.
7458         (optimize attribute): Ditto.
7459         (hot attribute): Document hot attribute sets -O3.
7460         (cold attribute): Document cold attribute sets -Os.
7461         (#pragma GCC option): Document new pragma.
7462         (#pragma GCC optimize): Ditto.
7463
7464         * doc/options.texi (TargetSave): Document TargetSave syntax.
7465         (UInteger): Document UInteger must be used for certain flags.
7466         (Save): Document Save option to create target specific options
7467         that can be saved/restored on a function specific context.
7468
7469         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
7470         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
7471
7472         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
7473         (TARGET_OPTION_SAVE): Ditto.
7474         (TARGET_OPTION_RESTORE): Ditto.
7475         (TARGET_OPTION_PRINT): Ditto.
7476         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
7477         (TARGET_CAN_INLINE_P): Ditto.
7478
7479         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
7480         -mfpmath=sse,387.
7481         (-mfpmath=both): Ditto.
7482
7483 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
7484             Karthik Kumar  <karthikkumar@gmail.com>
7485
7486         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
7487         (TARGET_POPCNT): Ditto.
7488         (TARGET_SAHF): Ditto.
7489         (TARGET_AES): Ditto.
7490         (TARGET_PCLMUL): Ditto.
7491         (TARGET_CMPXCHG16B): Ditto.
7492         (TARGET_RECIP): Move switch into target_flags.
7493         (TARGET_FUSED_MADD): Ditto.
7494         (ix86_arch_features): Make an unsigned char type.
7495         (ix86_tune_features): Ditto.
7496         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
7497         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
7498         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
7499
7500         * config/i386/i386.opt (arch): New TargetSave field to define
7501         fields that need to be saved for function specific option support.
7502         (tune): Ditto.
7503         (fpmath): Ditto.
7504         (branch_cost): Ditto.
7505         (ix86_isa_flags_explicit): Ditto.
7506         (tune_defaulted): Ditto.
7507         (arch_specified): Ditto.
7508         (-m128-long-double): Add Save flag to save option for target
7509         specific option support.
7510         (-m80387): Ditto.
7511         (-maccumulate-outgoing-args): Ditto.
7512         (-malign-double): Ditto.
7513         (-malign-stringops): Ditto.
7514         (-mfancy-math-387): Ditto.
7515         (-mhard-float): Ditto.
7516         (-mieee-fp): Ditto.
7517         (-minline-all-stringops): Ditto.
7518         (-minline-stringops-dynamically): Ditto.
7519         (-mms-bitfields): Ditto.
7520         (-mno-align-stringops): Ditto.
7521         (-mno-fancy-math-387): Ditto.
7522         (-mno-push-args): Ditto.
7523         (-mno-red-zone): Ditto.
7524         (-mpush-args): Ditto.
7525         (-mred-zone): Ditto.
7526         (-mrtd): Ditto.
7527         (-msseregparm): Ditto.
7528         (-mstack-arg-probe): Ditto.
7529         (-m32): Ditto.
7530         (-m64): Ditto.
7531         (-mmmx): Ditto.
7532         (-m3dnow): Ditto.
7533         (-m3dnowa): Ditto.
7534         (-msse): Ditto.
7535         (-msse2): Ditto.
7536         (-msse3): Ditto.
7537         (-msse4.1): Ditto.
7538         (-msse4.2): Ditto.
7539         (-msse4): Ditto.
7540         (-mno-sse4): Ditto.
7541         (-msse4a): Ditto.
7542         (-msse5): Ditto.
7543         (-mrecip): Move flag into target_flags.
7544         (-mcld): Ditto.
7545         (-mno-fused-madd): Ditto.
7546         (-mfused-madd): Ditto.
7547         (-mabm): Move flag into ix86_isa_flags.
7548         (-mcx16): Ditto.
7549         (-mpopcnt): Ditto.
7550         (-msahf): Ditto.
7551         (-maes): Ditto.
7552         (-mpclmul): Ditto.
7553
7554         * config/i386/i386-c.c: New file for #pragma support.
7555         (ix86_target_macros_internal): New function to #define or #undef
7556         target macros based when the user uses the #pragma GCC option to
7557         change target options.
7558         (ix86_pragma_option_parse): New function to add #pragma GCC option
7559         support.
7560         (ix86_target_macros): Move defining the target macros here from
7561         TARGET_CPU_CPP_BUILTINS in i386.h.
7562         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
7563         defined, initialize any subtarget #pragmas.
7564
7565         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
7566         REGISTER_TARGET_PRAGMAS.
7567
7568         * config/i386/t-i386: New file for x86 dependencies.
7569         (i386.o): Make dependencies mirror the include files used.
7570         (i386-c.o): New file, add dependencies.
7571
7572         * config/i386/i386-protos.h (override_options): Add bool argument.
7573         (ix86_valid_option_attribute_tree): Add declaration.
7574         (ix86_target_macros): Ditto.
7575         (ix86_register_macros): Ditto.
7576
7577         * config/i386/i386.c (ix86_tune_features): Move initialization of
7578         the target masks to initial_ix86_tune_features to allow functions
7579         to have different target options.  Make type unsigned char,
7580         instead of unsigned int.
7581         (initial_ix86_tune_features): New static vector to hold processor
7582         masks for the tune variables.
7583         (ix86_arch_features): Move initialization of the target masks to
7584         initial_ix86_arch_features to allow functions to have different
7585         target options.  Make type unsigned char, instead of unsigned int.
7586         (initial_ix86_arch_features): New static vector to hold processor
7587         masks for the arch variables.
7588         (enum ix86_function_specific_strings): New enum to describe the
7589         string options used for attribute((option(...))).
7590         (ix86_target_string): New function to return a string that
7591         describes the target options.
7592         (ix86_debug_options): New function to print the current options in
7593         the debugger.
7594         (ix86_function_specific_save): New function hook to save the
7595         function specific global variables in the cl_target_option structure.
7596         (ix86_function_specific_restore): New function hook to restore the
7597         function specific variables from the cl_target_option structure to
7598         the global variables.
7599         (ix86_function_specific_print): New function hook to print the
7600         target specific options in the cl_target_option structure.
7601         (ix86_valid_option_attribute_p): New function hook to validate
7602         attribute((option(...))) arguments.
7603         (ix86_valid_option_attribute_tree): New function that is common
7604         code between attribute((option(...))) and #pragma GCC option
7605         support that parses the options and returns a tree holding the options.
7606         (ix86_valid_option_attribute_inner_p): New helper function for
7607         ix86_valid_option_attribute_tree.
7608         (ix86_can_inline_p): New function hook to decide if one function
7609         can inline another on a target specific basis.
7610         (ix86_set_current_function); New function hook to switch target
7611         options if the user used attribute((option(...))) or #pragma GCC
7612         option.
7613         (ix86_tune_defaulted): Move to static file scope from
7614         override_options.
7615         (ix86_arch_specified): Ditto.
7616         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
7617         ix86_isa_flags.
7618         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
7619         (OPTION_MASK_ISA_ABM_SET): Ditto.
7620         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
7621         (OPTION_MASK_ISA_CX16_SET): Ditto.
7622         (OPTION_MASK_ISA_SAHF_SET): Ditto.
7623         (OPTION_MASK_ISA_AES_UNSET): Ditto.
7624         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
7625         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
7626         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
7627         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
7628         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
7629         (struct ptt): Move to static file scope from override_options.
7630         (processor_target_table): Ditto.
7631         (cpu_names): Ditto.
7632         (ix86_handle_option): Add support for options that are now isa options.
7633         (override_options): Add support for declaring functions that
7634         support different target options than were specified on the
7635         command line.  Move struct ptt, processor_target_table, cpu_names,
7636         ix86_tune_defaulted, ix86_arch_specified to static file scope.
7637         Add bool argument.  Fix up error messages so the appropriate error
7638         is given for either command line or attribute.
7639         (ix86_previous_fndecl): New static to remember previous function
7640         declaration to see if we need to change target options.
7641         (ix86_builtins_isa): New array to record the ISA of each builtin
7642         function.
7643         (def_builtin): Always create the builtin function, even if the
7644         current ISA doesn't support it.
7645         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
7646         tests for those builtins.
7647         (ix86_init_builtins): Remove TARGET_MMX test for calling
7648         ix86_init_mmx_sse_builtins.
7649         (ix86_expand_builtin): If the current ISA doesn't support a given
7650         builtin, signal an error.
7651         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
7652         (TARGET_SET_CURRENT_FUNCTION): Ditto.
7653         (TARGET_OPTION_SAVE): Ditto.
7654         (TARGET_OPTION_RESTORE): Ditto.
7655         (TARGET_OPTION_PRINT): Ditto.
7656         (TARGET_CAN_INLINE_P): Ditto.
7657
7658 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
7659
7660         * c-typeck.c (build_external_ref): Don't call assemble_external.
7661         * final.c (output_operand): Call assemble_external.
7662
7663 2008-07-21  DJ Delorie  <dj@redhat.com>
7664
7665         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
7666         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
7667
7668 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7669
7670         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
7671         original insn and splitter contents into ...
7672         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
7673         flag_unsafe_math_optimizations.  Add dummy scratch register.
7674         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
7675         !flag_unsafe_math_optimizations.  Returns number with next
7676         highest magnitude if this is still less or equal to the true
7677         quotient in magnitude.
7678
7679 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
7680
7681         * Makefile.in: Replace toplev.h with TOPLEV_H.
7682         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
7683         * c-lex.c (fe_file_change): Don't set in_system_header.
7684         * c-parser.c (c_token): Remove in_system_header.
7685         (c_lex_one_token): Don't set in_system_header.
7686         (c_parser_set_source_position_from_token): Don't set in_system_header.
7687         * diagnostic.c (diagnostic_report_diagnostic): Use location from
7688         diagnostic_info.
7689         (warning_at): New.
7690         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
7691         * flags.h (in_system_header): Remove.
7692         * function.c (saved_in_system_header): Remove.
7693         (push_cfun): Don't set in_system_header.
7694         (pop_cfun): Don't set in_system_header.
7695         (push_struct_function): Don't set in_system_header.
7696         * input.h (expanded_location): Add sysp.
7697         (in_system_header_at): New.
7698         (in_system_header): New.
7699         * toplev.c (in_system_header): Remove.
7700         * toplev.h: Include input.h
7701         (warning_at): New.
7702         * tree-cfg.c (execute_warn_function_return): Call warning_at.
7703         * tree-ssa.c (warn_uninit): Call warning_at.
7704         (warn_uninitialized_var): Update calls to warn_uninit.
7705         (warn_uninitialized_phi): Update calls to warn_uninit.
7706         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
7707         (expand_location): Initialize xloc.sysp.
7708         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
7709         (tree_decl_with_vis): Remove in_system_header_flag.
7710
7711 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
7712
7713         PR target/36822
7714         * recog.c (asm_operand_ok): Change the order of the extra
7715         memory constraint checks.
7716
7717 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7718
7719         PR tree-opt/36879
7720         * tree-switch-conversion.c (build_one_array): Call
7721         varpool_mark_needed_node and varpool_finalize_decl
7722         instead of assemble_variable.
7723
7724 2008-07-19  Jan Hubicka  <jh@suse.cz>
7725
7726         * cgraph.c (cgraph_add_new_function): Do early local passes.
7727         * tree-nrv.c (gate_pass_return_slot): New gate.
7728         (pass_nrv): Add the gate.
7729         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
7730         functions.
7731         (coalesce_ssa_name): Coalesce SSA names.
7732         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
7733         not optimizing so unused user vars remains visible.
7734         * common.opt (flag_tree_ter): Always enable by default.
7735         * tree-ssa-ter.c: Include flags.h
7736         (is_replaceable_p): Check that locations match; when aliasing is missing
7737         be conservative about loads.
7738         * tree-optimize.c (gate_init_datastructures): Remove.
7739         (pass_init_datastructures): New.
7740         * passes.c: Reorder passes so we always go into SSA.
7741
7742 2008-07-19  Jan Hubicka  <jh@suse.cz>
7743
7744         * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
7745         * doc/invoke.texi (--combine): Likewise.
7746         (-finline-functions-called-once): Update levels when enabled.
7747         (-funit-at-a-time): Document new behaviour.
7748         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
7749         -fno-section-anchors when disabled explicitly.
7750         (inline params): They are not ignored now.
7751         (precompiled headers): Remove unit-at-a-time as being incompatible.
7752         * opts.c (decode_options): Handle unit-at-a-time as alias;
7753         imply -fno-section-anchors when toplevel reorder is disabled
7754         explicitly.
7755         * common.opt (ftoplevel-reorder): Set default value to 2.
7756         (funit-at-a-time): Set default value to 1.
7757         * config/rs6000/rs6000.c (optimization_options): Set section anchors
7758         to 2.
7759
7760 2008-07-19  Jan Hubicka  <jh@suse.cz>
7761
7762         * builtins.c (expand_builtin_int_roundingfn,
7763         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
7764         it is not useful.
7765
7766 2008-07-19  Richard Guenther  <rguenther@suse.de>
7767
7768         PR bootstrap/36864
7769         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
7770         * tree-ssa-sccvn.c (get_constant_value_id): New function.
7771         * tree-ssa-pre.c (get_expr_value_id): For newly created
7772         constant value-ids make sure to add the expression to its
7773         expression-set.
7774
7775 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
7776
7777         PR middle-end/36877
7778         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
7779         return value of the builtin is ignored.
7780
7781 2008-07-19  Olivier Hainque  <hainque@adacore.com>
7782
7783         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
7784         bits, a C conformant malloc implementation has to provide.
7785         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
7786
7787 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
7788
7789         PR target/36780
7790         PR target/36827
7791         * reload.c (find_reloads_subreg_address): Only reload address if
7792         reloaded == 0, not for reloaded != 1.
7793
7794         Revert:
7795         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
7796         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
7797         (m32c_legitimate_address_p): Handle "++rii" addresses created by
7798         m32c_legitimize_reload_address.
7799
7800         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7801         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
7802         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
7803
7804 2008-07-19  Olivier Hainque  <hainque@adacore.com>
7805
7806         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
7807         argument, saying whether nested array are to be collapsed
7808         into a single array type DIE with multiple subscripts.
7809         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
7810         issues, centralize the nested array types collapsing control and
7811         disable the transformation for Ada.
7812
7813 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
7814
7815         PR target/36786
7816         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
7817         x86_64_shift_adj.
7818         (x86_64_shift_adj_2): New expander.
7819         (x86_64_shift_adj_3): Ditto.
7820         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
7821         to split TImode operands.
7822         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
7823         (ix86_split_lshr): Ditto.
7824
7825 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
7826
7827         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
7828         and __CHAR32_TYPE__.
7829         * c-typeck.c (digest_init): Support char16_t and char32_t.
7830         (set_nonincremental_init_from_string): Idem.
7831
7832 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
7833
7834         PR middle-end/36859
7835         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
7836         PREFERRED_STACK_BOUNDARY.
7837         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7838
7839 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
7840
7841         PR middle-end/36858
7842         * function.c (locate_and_pad_parm): Cap boundary earlier.
7843
7844 2008-07-17  Julian Brown  <julian@codesourcery.com>
7845
7846         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
7847         no-op for targets which don't use DLLs.
7848
7849 2008-07-17  Martin Jambor  <mjambor@suse.cz>
7850
7851         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
7852         that nodes are relevant by examining the node->analyzed flag.
7853         (ipcp_init_stage): Check which nodes are relevant, assert that the
7854         relevant ones are also required.
7855         (ipcp_propagate_stage): Check on the side arrays are properly
7856         allocated.
7857         (ipcp_print_all_jump_functions): Make sure not to touch any node
7858         that is not analyzed or an edge that does not have a corresponding
7859         entry in the on-the-side vectors.
7860         (ipcp_function_scale_print): Likewise.
7861         (ipcp_update_callgraph): Check that the node is relevant.
7862         (ipcp_insert_stage): Check that the node is relevant.  Check there is
7863         an info for every node and edge.
7864         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
7865         (ipa_print_all_tree_maps): Likewise and a new variable info.
7866         (ipa_print_all_params_modified): Likewise.
7867         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
7868
7869 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
7870
7871         PR target/25343
7872         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
7873
7874 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
7875
7876         PR rtl-optimization/36753
7877         * fwprop.c (use_killed_between): Don't shortcut
7878         single-definition global registers.
7879
7880 2008-07-16  Jan Hubicka  <jh@suse.cz>
7881
7882         * cgraph.h (varpool_empty_needed_queue): Declare.
7883         * cgraphunit.c (output_in_order): Mark all variables as needed;
7884         empty the queue.
7885         * varpool.c (varpool_assemble_node): Update debug queue.
7886         (varpool_assemble_pending_decls): Don't do it here.
7887         (varpool_empty_needed_queue):  New function.
7888
7889 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7890
7891         * recog.c (peephole2_optimize): Fix formatting.
7892
7893 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7894
7895         * c-pch.c (get_ident): Avoid C++ keywords.
7896         * combine-stack-adj.c (single_set_for_csa): Likewise.
7897         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
7898         output_asm_insn): Likewise.
7899         * reload.c (push_secondary_reload, find_reusable_reload,
7900         push_reload, combine_reloads, find_reloads,
7901         debug_reload_to_stream): Likewise.
7902         * reload.h (struct reload): Likewise.
7903         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
7904         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
7905         emit_output_reload_insns): Likewise.
7906         * targhooks.c (default_secondary_reload): Likewise.
7907         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
7908
7909 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7910
7911         * recog.c (validate_change_1, validate_change,
7912         validate_unshare_change, validate_replace_rtx_1, struct
7913         funny_match, constrain_operands, peephole2_optimize): Avoid C++
7914         keywords.
7915         * reload.c (push_secondary_reload, secondary_reload_class,
7916         scratch_reload_class, find_valid_class, find_reusable_reload,
7917         push_reload, find_dummy_reload, find_reloads_address_1,
7918         find_reloads_address_part, find_equiv_reg): Likewise.
7919         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
7920         choose_reload_regs): Likewise.
7921         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
7922         Likewise.
7923         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
7924         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
7925         * sched-rgn.c (concat_INSN_LIST): Likewise.
7926         * stor-layout.c (mode_for_size, mode_for_size_tree,
7927         smallest_mode_for_size): Likewise.
7928
7929 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7930
7931         * cfg.c (dump_reg_info): Avoid C++ keywords.
7932         * dwarf2asm.c (dw2_force_const_mem,
7933         dw2_asm_output_encoded_addr_rtx): Likewise.
7934         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
7935         * expmed.c (expand_shift): Likewise.
7936         * global.c (find_reg): Likewise.
7937         * graph.c (draw_edge): Likewise.
7938         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
7939         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
7940         widen_clz, widen_bswap, expand_parity, expand_unop,
7941         emit_cmp_and_jump_insn_1): Likewise.
7942         * postreload.c (reload_cse_simplify_operands): Likewise.
7943         * ra.h (add_neighbor): Likewise.
7944         * reg-stack.c (remove_regno_note, change_stack): Likewise.
7945         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
7946         record_reg_classes, copy_cost, record_address_regs,
7947         invalid_mode_change_p): Likewise.
7948         * regrename.c (regrename_optimize, scan_rtx_reg,
7949         dump_def_use_chain, find_oldest_value_reg,
7950         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
7951
7952 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
7953
7954         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
7955         MASK_POWERPC64 for power4 in previous commit.
7956
7957 2008-07-16  Olivier Hainque  <hainque@adacore.com>
7958
7959         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
7960         instead of bare conversion to cast const-ness away.
7961
7962 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
7963
7964         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
7965         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
7966         * config/xtensa/xtensa.c (xtensa_function_value): New function.
7967         (TARGET_FUNCTION_VALUE): Define.
7968
7969 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
7970
7971         * config/rs6000/rs6000.c (processor_target_table): Add
7972         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
7973
7974 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
7975
7976         PR target/36827
7977         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
7978         (m32c_legitimate_address_p): Handle "++rii" addresses created by
7979         m32c_legitimize_reload_address.
7980
7981 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
7982
7983         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
7984         DECL_IN_SYSTEM_HEADER in sync.
7985
7986 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
7987
7988         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
7989         * tree-ssa-pre.c (pre_expr_eq): Ditto
7990         (get_constant_for_value_id): Take a type as an argument.
7991         (fully_constant_expression): Pass in type.
7992         (find_or_generate_expression): Short circuit constant case.
7993         (create_expression_by_pieces): Remove special casing of
7994         pointer_plus.
7995         (do_regular_insertion): Short circuit constant case.
7996         (do_partial_partial_insertion): Ditto.
7997
7998 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7999
8000         PR target/36782
8001         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
8002
8003 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
8004
8005         * config/xtensa/libgcc-xtensa.ver: New file.
8006         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
8007
8008 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8009
8010         * df-problems.c (df_set_note): Avoid C++ keywords.
8011         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
8012         * dse.c (record_store, remove_useless_values): Likewise.
8013         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
8014         gen_reg_rtx_offset, operand_subword, change_address_1,
8015         change_address, adjust_address_1, offset_address,
8016         widen_memory_access, emit_copy_of_insn_after): Likewise.
8017         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
8018         * fwprop.c (should_replace_address, propagate_rtx_1,
8019         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
8020         Likewise.
8021         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
8022         gcse_emit_move_after, update_ld_motion_stores): Likewise.
8023         * lcm.c (compute_insert_delete, pre_edge_lcm,
8024         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
8025         * lower-subreg.c (resolve_reg_notes): Likewise.
8026         * mode-switching.c (optimize_mode_switching): Likewise.
8027
8028 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8029
8030         * bt-load.c (add_btr_def, migrate_btr_def,
8031         branch_target_load_optimize): Avoid C++ keywords.
8032         * caller-save.c (insert_restore, insert_save, insert_one_insn):
8033         Likewise.
8034         * combine.c (subst, simplify_set, make_extraction,
8035         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
8036         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
8037         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
8038
8039 2008-07-15  Richard Guenther  <rguenther@suse.de>
8040
8041         PR middle-end/36369
8042         * c-common.c (strict_aliasing_warning): Do not warn for
8043         TYPE_REF_CAN_ALIAS_ALL pointers.
8044         (c_common_get_alias_set): may_alias types are not special.
8045         * tree.c (build_pointer_type_for_mode): Look up the may_alias
8046         attribute and set can_ref_all accordingly.
8047         (build_reference_type_for_mode): Likewise.
8048         * doc/extend.texi (may_alias): Clarify.
8049
8050 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
8051
8052         PR target/36780
8053         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
8054         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
8055
8056 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8057
8058         PR target/31568
8059         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
8060         gcc_assert, instead call output_operand_lossage.
8061
8062 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
8063
8064         * builtins.c (std_canonical_va_list): Treat structure based
8065         va_list types.
8066
8067 2008-07-15  Ben Elliston  <bje@au.ibm.com>
8068
8069         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
8070
8071 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
8072
8073         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
8074         is set.
8075
8076 2008-07-14  Jan Hubicka  <jh@suse.cz>
8077
8078         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
8079         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
8080         fix predicates and constraints.
8081         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
8082         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
8083
8084 2008-07-14  Doug Kwan  <dougkwan@google.com>
8085
8086         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
8087         additional option file arm/eabi.opt.
8088         * config/arm/eabi.h (File): New configuration file for EABI targets.
8089         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
8090         SUBSUBTARGET_EXTRA_SPECS.
8091         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
8092         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
8093         from STARTFILE_SPEC so that it can be referenced in an override.
8094         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
8095         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
8096         can be referenced in an override.
8097         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
8098         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
8099         so that it can be referenced in an override.
8100         (LINK_SPEC): Use BPABI_LINK_SPEC.
8101         * config/arm/eabi.opt (File): New.
8102
8103 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8104
8105         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
8106         (FIXED_VALUE_H): New variable.
8107         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
8108         input.h, fixed-value.h.
8109         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
8110         (BASIC_BLOCK_H): Use $(BITMAP_H).
8111         (FUNCTION_H): Add varray.h.
8112         (IPA_REFERENCE_H): Use $(BITMAP_H).
8113         (CGRAPH_H): Add $(BASIC_BLOCK_H).
8114         (DF_H): Use $(BITMAP_H).
8115         (GGC_H): Add statistics.h.
8116         (INSN_ADDR_H): New.
8117         (INSN_ATTR_H): Use it.
8118         (SYSTEM_H): Add safe-ctype.h, filenames.h.
8119         (INPUT_H): New.
8120         (SYMTAB_H): Add $(OBSTACK_H).
8121         (CPP_INTERNAL_H): New.
8122         (TREE_DUMP_H): Add tree-pass.h.
8123         (TREE_FLOW_H): Use $(BITMAP_H)
8124         (PRETTY_PRINT_H): Use $(INPUT_H).
8125         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
8126         (GSTAB_H): New.
8127         (BITMAP_H): New.
8128         (many object files): Fix lots of header dependencies throughout.
8129
8130 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8131
8132         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
8133         New macros.
8134         (s-gtyp-input): Use them to write tmp-gi.list.
8135         (echo_to_gi.list): Remove.
8136
8137 2008-07-14  Richard Guenther  <rguenther@suse.de>
8138
8139         * tree-ssa-sccvn.c (pre_info): Remove.
8140         (switch_to_PRE_table): Likewise.
8141         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
8142         (set_hashtable_value_ids): Do not create value-ids for the
8143         optimistic tables.
8144         (run_scc_vn): Remove double test.  Remove bogus special-case
8145         in value-number printing.
8146         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
8147         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
8148         SSA_NAME_VALUE.
8149         * tree-flow-inline.h (get_value_handle): Remove.
8150         * tree-flow.h (get_value_handle): Remove.
8151
8152 2008-07-14  Martin Jambor  <mjambor@suse.cz>
8153
8154         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
8155         in which we generate arithmetics is not a subrange.
8156
8157 2008-07-14  Martin Jambor  <mjambor@suse.cz>
8158
8159         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
8160
8161 2008-07-14  Richard Guenther  <rguenther@suse.de>
8162
8163         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
8164
8165 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
8166
8167         PR target/36745
8168         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
8169         reload for symbol refs moved to r0 with -fPIC.
8170         (legitimize_pic_address): Use the target register as temporary
8171         reg if possible.
8172         (emit_symbolic_move): Adjust comment.
8173         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
8174         New expanders.
8175
8176 2008-07-14  Ben Elliston  <bje@au.ibm.com>
8177
8178         * c-common.h (C_CPP_HASHNODE): New macro.
8179         * coretypes.h (struct cpp_token): Forward declare.
8180         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
8181         the context-sensitive keyword method.
8182         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
8183         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
8184         expand_bool_pixel): New.
8185         (altivec_categorize_keyword): New function.
8186         (init_vector_keywords): New function.
8187         (rs6000_macro_to_expand): Likewise.
8188         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
8189         compiling an ISO C dialect.
8190
8191 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
8192
8193         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
8194         (create_expression_by_pieces): Fix typo.
8195         (do_regular_insertion): Use debug counter here too.
8196
8197 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
8198
8199         PR target/35492.
8200         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
8201         CONST_OK_FOR_LETTER_P.  All port-local users changed.
8202         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
8203         implement Kp matching power-of-two.
8204         (CONSTRAINT_LEN): Define to match.
8205         * config/cris/cris.md: Replace all use of constraint K with Kc.
8206         ("*btst*): Use Kp for operand 0 of last alternative.
8207
8208 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8209
8210         PR testsuite/36440
8211         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
8212         and quad formats.
8213
8214 2008-07-13  Jan Hubicka  <jh@suse.cz>
8215
8216         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
8217         to be mangled too.
8218
8219 2008-07-13  Richard Guenther  <rguenther@suse.de>
8220
8221         PR middle-end/36811
8222         * langhooks.c (lhd_print_error_function): Deal with recursive
8223         BLOCK trees.
8224
8225 2008-07-12  Jan Hubicka  <jh@suse.cz>
8226
8227         * cgraph.c (assembler_name_hash): New static var.
8228         (hash_node_by_assembler_name, eq_assembler_name): New.
8229         (cgraph_node_for_asm): Use hashtable.
8230         (cgraph_remove_node): Maintain hashtable.
8231         (change_decl_assembler_name): Sanity check that names are not changing
8232         after aliasing was processed.
8233         * cgraph.h (varpoon_node): Add next GGC marker.
8234         * tree.c (decl_assembler_name_equal): Constify.
8235         (decl_assembler_name_hash): New.
8236         * tree.h (decl_assembler_name_equal): Constify.
8237         (decl_assembler_name_hash): Update.
8238
8239 2008-07-12  David Daney  <ddaney@avtrex.com>
8240
8241         * config/mips/driver-native.c (host_detect_local_cpu): Handle
8242         sb1 and r5000 cpus.
8243
8244 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
8245
8246         * doc/md.texi: Document the MIPS "v" constraint.
8247         * config/mips/mips.h (reg_class): Revert last change.
8248         (REG_CLASS_NAMES): Likewise.
8249         (REG_CLASS_CONTENTS): Likewise.
8250         * config/mips/mips.c (mips_regno_to_class): Likewise.
8251         * config/mips/constraints.md (v): Likewise, but add documentation.
8252         Add a comment to say that this constraint should not be used in
8253         gcc code.
8254
8255 2008-07-11  DJ Delorie  <dj@redhat.com>
8256
8257         * config/h8300/h8300.md (length): Fix branch offset limit.
8258
8259 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
8260
8261         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
8262         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
8263         (avr_hard_regno_scratch_ok): New function.
8264         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
8265         * config/avr/avr.md (all peepholes that request a scratch register):
8266         Remove avr_peep2_scratch_safe use.
8267
8268 2008-07-11  Tom Tromey  <tromey@redhat.com>
8269             Ian Lance Taylor  <iant@google.com>
8270
8271         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
8272         (struct c_common_resword): Define.
8273         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
8274         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
8275         (c_common_reswords, num_c_common_reswords): Declare.
8276         * c-common.c (c_common_reswords): New global const array.
8277         (num_c_common_reswords): New const int.
8278         * c-parser.c (struct resword, reswords): Don't define.
8279         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
8280         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
8281         than reswords.  If warning about C++ keywords, give them a special
8282         RID code.
8283         (c_lex_one_token): Warn about C++ keywords.  Call
8284         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
8285         (c_parser_external_declaration): Look for RID_xxx rather than
8286         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
8287         (c_parser_statement_after_labels): Likewise.
8288         (c_parser_objc_class_instance_variables): Likewise.
8289         (c_parser_objc_class_declaration): Likewise.
8290         (c_parser_objc_try_catch_statement): Likewise.
8291         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
8292         (declspecs_add_type): Likewise.
8293
8294 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
8295
8296         * ggc-page.c (alloc_page):
8297         Substituting xmalloc, xcalloc with
8298         XNEWVEC and XCNEWVAR macros which add the
8299         needed casts.
8300
8301 2008-07-11  Richard Guenther  <rguenther@suse.de>
8302
8303         PR tree-optimization/36765
8304         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
8305         aliases from HEAP vars to SMTs.
8306
8307 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8308
8309         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
8310         * configure.ac (loose_warn): Move -Wc++-compat from here...
8311         (strict_warn): ...to here.
8312         * configure: Regenerate.
8313
8314 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
8315
8316         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
8317         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
8318         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
8319         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
8320         excluding more specific h8300-*-* and sh-*-* targets.
8321
8322 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
8323
8324         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
8325         (eliminate): Ditto.
8326         (execute_pre): Call loop_optimizer_finalize in early exit.
8327
8328 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
8329
8330         PR middle-end/36790
8331         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
8332         uids in the bitmap, not just VAR_DECL uids.
8333
8334         PR rtl-optimization/36419
8335         * combine-stack-adj.c (adjust_frame_related_expr): New function.
8336         (combine_stack_adjustments_for_block): Call it if needed.  Delete
8337         correct insn.
8338         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
8339         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
8340         prologue sp adjustment.
8341
8342 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
8343
8344         PR other/28322
8345         * opts.c (print_ignored_options): Report postponed diagnostics for
8346         unknown -Wno-* options as warnings, not errors.
8347         (postpone_unknown_option_error): Renamed to...
8348         (postpone_unknown_option_warning): ... this.
8349
8350 2008-07-09  Doug Kwan  <dougkwan@google.com>
8351
8352         Revert:
8353         2008-07-08  Doug Kwan  <dougkwan@google.com>
8354
8355         * config/arm/arm.opt (mandroid): New option.
8356         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
8357         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
8358         (CC1_SPEC): Same.
8359         (CC1PLUS_SPEC): Same.
8360         (LIB_SPEC): Same.
8361         (STARTFILE_SPEC): Same.
8362         (ENDFILE_SPEC): Same.
8363         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
8364         used.
8365
8366 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
8367
8368         PR target/35802
8369         * config/mips/mips.h (reg_class): Remove V1_REG.
8370         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
8371         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
8372         instead of V1_REGS.
8373         (mips_get_tp): New function.
8374         (mips_legitimize_tls_address): Use it.
8375         * config/mips/constraints.md (v): Delete.
8376         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
8377         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
8378         After reload, split into a move and ...
8379         (*tls_get_tp_<mode>_split): ...this new instruction.
8380
8381 2008-07-09  David Daney  <ddaney@avtrex.com>
8382
8383         * config/mips/driver-native.c: Include coretypes.h and tm.h.
8384
8385 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
8386
8387         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
8388         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
8389         Add c argument.
8390         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
8391         htab_delete should be called.  Don't free c.
8392         (lookup_tmp_var): Create temp_htab lazily.
8393         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
8394         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
8395         callers.
8396         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
8397         lower_omp_ordered, lower_omp_critical, lower_omp_for,
8398         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
8399         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
8400         * tree-sra.c (generate_element_init): Likewise.
8401         * tree-mudflap.c (execute_mudflap_function_ops,
8402         execute_mudflap_function_decls): Likewise.
8403         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
8404         * tree-gimple.h (struct gimplify_ctx): New type.
8405         (push_gimplify_context): Adjust prototype.
8406
8407 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
8408
8409         * tree-ssa-pre.c (phi_translate_1): Update placement of
8410         add_to_value calls.
8411
8412 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
8413
8414         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
8415         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
8416         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
8417         * targhooks.c (default_hard_regno_scratch_ok): New function.
8418         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
8419         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
8420         * recog.c:  Include "target.h".
8421         (peep2_find_free_register): Add check for global regs. Add target
8422         specific check.
8423         * Makefile.in (recog.o): Depend on target.h.
8424
8425 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
8426
8427         * config/sh/sh.c (sh_canonical_va_list_type): New.
8428         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
8429
8430 2008-07-09  Raksit Ashok <raksit@google.com>
8431
8432         * doc/invoke.texi (Option Summary): Mention new option
8433         -Wdisallowed-function-list=...
8434         (Warning Options): Document -Wdisallowed-function-list=...
8435         * common.opt (Wdisallowed-function-list=): New flag.
8436         * flags.h (warn_disallowed_functions): External definition of new
8437         boolean warning flag.
8438         (warn_if_disallowed_function_p): Declare new function.
8439         * opts.c (warning_disallowed_functions): New static variable.
8440         (warn_disallowed_functions): New boolean warning flag.
8441         (warn_if_disallowed_function_p): New function.
8442         (add_comma_separated_to_vector): Rename
8443         add_instrument_functions_exclude_list to this.
8444         (common_handle_option): Handle new option. Rename calls to
8445         add_instrument_functions_exclude_list into calls to
8446         add_comma_separated_to_vector.
8447         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
8448         based on flag warn_disallowed_functions.
8449
8450 2008-07-09  Christian Bruel  <christian.bruel@st.com>
8451
8452         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
8453          instead of get_attr_length.
8454
8455 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8456
8457         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
8458         keywords.
8459         * genemit.c (gen_insn): Likewise.
8460         * gengtype.c (note_def_vec): Likewise.
8461         * gengtype.h (note_def_vec): Likewise.
8462         * genoutput.c (struct data, output_insn_data, process_template,
8463         gen_expand, gen_split, note_constraint): Likewise.
8464         * genrecog.c (new_decision, add_to_sequence, factor_tests,
8465         make_insn_sequence): Likewise.
8466         * gensupport.c (record_insn_name): Likewise.
8467
8468 2008-07-08  Doug Kwan  <dougkwan@google.com>
8469
8470         * config/arm/arm.opt (mandroid): New option.
8471         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
8472         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
8473         (CC1_SPEC): Same.
8474         (CC1PLUS_SPEC): Same.
8475         (LIB_SPEC): Same.
8476         (STARTFILE_SPEC): Same.
8477         (ENDFILE_SPEC): Same.
8478         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
8479         used.
8480
8481 2008-07-08  Raksit Ashok  <raksit@google.com>
8482
8483         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
8484         (set_storage_via_setmem): Fix expected_align parameter.
8485         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
8486         missing from the list.
8487         * doc/md.texi (movmem): Explicitly state that expected alignment is
8488         to be expressed in bytes.
8489         (setmem): Explicitly state that expected alignment is to be expressed
8490         in bytes.
8491
8492 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
8493
8494         * reload.c (find_reloads_subreg_address): Do not require validity
8495         of address in original mode before reloading address.
8496
8497 2008-07-07  Tianwei Sheng  <tianweis@google.com>
8498
8499         * df-core.c (df_remove_problem): Adjust the access to avoid out of
8500         bounds array access.
8501
8502 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
8503
8504         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
8505
8506 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
8507
8508         Fix PR tree-optimization/23455
8509         Fix PR tree-optimization/35286
8510         Fix PR tree-optimization/35287
8511         * Makefile.in (OBJS-common): Remove tree-vn.o.
8512         (tree-vn.o): Remove.
8513         * dbgcnt.def: Add treepre_insert debug counter.
8514         * gcc/tree-flow.h (add_to_value): Updated for other changes.
8515         (debug_value_expressions): Ditto.
8516         (print_value_expressions): Ditto.
8517         * tree-pretty-print.c (dump_generic_node): Updated for
8518         VALUE_HANDLE removal.
8519         * tree-ssa-dom.c (record_equality): Ditto.
8520         (cprop_operand): Ditto.
8521         (lookup_avail_expr): Ditto.
8522         * tree-ssa-threadedge.c
8523         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
8524         (simplify_control_stmt_condition): Ditto.
8525         * tree.c (tree_code_size): Ditto.
8526         (tree_node_structure): Ditto.
8527         (iterative_hash_expr): Ditto.
8528         * tree.def: Ditto.
8529         * tree.h (VALUE_HANDLE_ID): Ditto.
8530         (VALUE_HANDLE_EXPR_SET): Ditto.
8531         (struct tree_value_handle): Ditto.
8532         (union tree_node): Ditto.
8533         * treestruct.def: Ditto.
8534         * tree-vn.c: Removed.
8535         * tree-ssa-pre.c: Rewritten entirely.
8536         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
8537         (constant_value_ids): Ditto.
8538         (vn_nary_op_t): Moved to header.
8539         (vn_phi_t): Ditto.
8540         (vn_reference_op_t): Ditto
8541         (vn_reference_t): Ditto.
8542         (next_value_id): New variable.
8543         (VN_INFO): Add an assert.
8544         (vn_constant_eq): New function.
8545         (vn_constant_hash): Ditto.
8546         (get_or_alloc_constant_value_id): Ditto.
8547         (value_id_constant_p): Ditto.
8548         (vn_reference_compute_hash): De-staticify.
8549         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
8550         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
8551         (valueize_refs): Update opcode if it changes from ssa name to constant.
8552         (vn_reference_lookup_1): Add new argument.
8553         (vn_reference_lookup):  Ditto.
8554         (vn_reference_lookup_pieces): New function.
8555         (vn_reference_insert): Add return type. Modify to deal with value ids.
8556         (vn_reference_insert_pieces):  New function.
8557         (vn_nary_op_compute_hash): De-staticify.
8558         (vn_nary_op_eq): Ditto.
8559         (vn_nary_op_lookup_pieces): New function.
8560         (vn_nary_op_lookup): Add new argument.
8561         (vn_nary_op_insert_pieces): New function.
8562         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
8563         (vn_phi_insert): Ditto.
8564         (visit_unary_op): Update for callee changes.
8565         (visit_binary_op): Ditto.
8566         (visit_reference_op_load): Ditto.
8567         (visit_reference_op_store): Ditto.
8568         (init_scc_vn): Init next_value_id, constant_to_value_id and
8569         constant_value_ids.
8570         (free_scc_vn): Free them.
8571         (set_hashtable_value_ids): New function.
8572         (run_scc_vn): Use it.
8573         (get_max_value_id): New function.
8574         (get_next_value_id): Ditto.
8575         (expressions_equal_p): Moved from tree-vn.c
8576         (sort_vuses): Ditto.
8577         (sort_vuses_heap): Ditto.
8578         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
8579         above).
8580         * tree.c (iterative_hash_hashval_t): Made non-static
8581         * tree.h (iterative_hash_hashval_t): Declare it.
8582
8583 2008-07-08  Martin Jambor  <mjambor@suse.cz>
8584
8585         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
8586         instead of ipa_create_node_params.
8587         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
8588         ipa_check_create_edge_args, free them with
8589         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
8590
8591         * ipa-prop.c: Include flags.h and tree-inline.h.
8592         (ipa_node_params_vector): New variable.
8593         (ipa_edge_args_vector): New variable.
8594         (edge_removal_hook_holder): New variable.
8595         (node_removal_hook_holder): New variable.
8596         (edge_duplication_hook_holder): New variable.
8597         (node_duplication_hook_holder): New variable.
8598         (ipa_detect_param_modifications): Check for presence of modified flags.
8599         (ipa_compute_jump_functions): Check for presence of jump functions.
8600         (ipa_free_edge_args_substructures): New function.
8601         (ipa_create_node_params): Removed.
8602         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
8603         (ipa_free_node_params_substructures): New function.
8604         (ipa_free_all_node_params): Changed to deallocate the on-the-side
8605         vector.
8606         (ipa_edge_removal_hook): New function.
8607         (ipa_node_removal_hook): New function.
8608         (duplicate_array): New function.
8609         (ipa_edge_duplication_hook): New function.
8610         (ipa_node_duplication_hook): New function.
8611         (ipa_register_cgraph_hooks): New function.
8612         (ipa_unregister_cgraph_hooks): New function.
8613         (free_all_ipa_structures_after_ipa_cp): New function.
8614
8615         * ipa-prop.h: Include vec.h.
8616         (ipa_node_params_t): New typedef with vector types for it.
8617         (ipa_edge_args_t):  New typedef with vector types for it.
8618         (IPA_NODE_REF): Changed to access an on-the-side vector.
8619         (IPA_EDGE_REF): Changed to access an on-the-side vector.
8620         (ipa_check_create_node_params): New function.
8621         (ipa_check_create_edge_args): New function.
8622
8623         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
8624         all users.
8625
8626 2008-07-07  Tom Tromey  <tromey@redhat.com>
8627
8628         * configure, config.in: Rebuilt.
8629         * configure.ac: Don't check for scandir or alphasort.
8630
8631 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
8632
8633         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
8634         types immediately after creating them.
8635
8636 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
8637
8638         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
8639
8640 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
8641
8642         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
8643         dump_constraint_graph.
8644         (dump_constraint_edge): New function.
8645         (dump_constraint_graph): New function.
8646         (debug_constraint_graph): New function.
8647         (dump_constraint): Removed useless comparison.
8648         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
8649         (dump_constraint_graph): Declare.
8650         (debug_constraint_graph): Declare.
8651         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
8652
8653 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
8654
8655         * config/i386/i386.c (is_va_list_char_pointer): New.
8656         (ix86_va_start): Replace compare with ms_va_list_type_node
8657         by is_va_list_char_pointer.
8658         (ix86_gimplify_va_arg): Likewise.
8659
8660 2008-07-07  Martin Jambor  <mjambor@suse.cz>
8661
8662         * cgraph.c (cgraph_edge_max_uid): New variable.
8663         (struct cgraph_edge_hook_list): New type.
8664         (struct cgraph_node_hook_list): New type.
8665         (struct cgraph_2edge_hook_list): New type.
8666         (struct cgraph_2node_hook_list): New type.
8667         (first_cgraph_edge_removal_hook): New variable.
8668         (first_cgraph_node_removal_hook): New variable.
8669         (first_cgraph_edge_duplicated_hook): New variable.
8670         (first_cgraph_node_duplicated_hook): New variable.
8671         (cgraph_add_edge_removal_hook): New function.
8672         (cgraph_remove_edge_removal_hook): New function.
8673         (cgraph_call_edge_removal_hooks):  New function.
8674         (cgraph_add_node_removal_hook):  New function.
8675         (cgraph_remove_node_removal_hook):  New function.
8676         (cgraph_call_node_removal_hooks):  New function.
8677         (cgraph_add_edge_duplication_hook):  New function.
8678         (cgraph_remove_edge_duplication_hook):  New function.
8679         (cgraph_call_edge_duplication_hooks):  New function.
8680         (cgraph_add_node_duplication_hook):  New function.
8681         (cgraph_remove_node_duplication_hook):  New function.
8682         (cgraph_call_node_duplication_hooks):  New function.
8683         (cgraph_create_edge): Assign to edge uid.
8684         (cgraph_remove_edge): Call edge removal hooks.
8685         (cgraph_node_remove_callees): Call edge removal hooks.
8686         (cgraph_node_remove_callers): Call edge removal hooks.
8687         (cgraph_remove_node): Call node removal hooks.
8688         (cgraph_clone_edge): Call edge duplication hooks.
8689         (cgraph_clone_node): Call node duplication hooks.
8690
8691         * cgraph.h (cgraph_edge): New field uid.
8692         (cgraph_edge_hook): New type.
8693         (cgraph_node_hook): New type.
8694         (cgraph_2edge_hook): New type.
8695         (cgraph_2node_hook): New type.
8696
8697 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
8698
8699         * config.in: Regenerate.
8700
8701 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
8702
8703         * gcc.c (print_sysroot): New.
8704         (option_map, display_help, process_command): Handle the
8705         -print-sysroot option.
8706         (main): Print the sysroot if requested.
8707         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
8708
8709 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8710
8711         PR target/34780
8712         * unwind-pe.h (size_of_encoded_value): add attribute unused.
8713
8714 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
8715
8716         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
8717         (assign_parm_setup_block_p): Also check mode of entry_parm.
8718
8719 2008-07-07  Richard Guenther  <rguenther@suse.de>
8720
8721         * tree-ssa-structalias.h (set_used_smts): Remove.
8722         * tree-ssa-structalias.c (used_smts): Likewise.
8723         (set_used_smts): Likewise.
8724         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
8725         call to set_used_smts.
8726
8727 2008-07-07  Richard Guenther  <rguenther@suse.de>
8728
8729         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
8730         (new_var_info): Set it to false.
8731         (solution_set_add): Correctly handle pointers outside a var and
8732         inside a field.
8733         (type_safe): Treat variables with is_full_var properly.
8734         (do_sd_constraint): Likewise.
8735         (do_ds_constraint): Likewise.
8736         (process_constraint): Remove zeroing offset for !use_field_sensitive.
8737         (get_constraint_for_ptr_offset): New function.
8738         (get_constraint_for_component_ref): For addresses at least include
8739         the last field of the variable.  Handle is_full_vars properly.
8740         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
8741         (handle_ptr_arith): Remove.
8742         (find_func_aliases): Simplify assignment handling.
8743         (create_function_info_for): For parameter and result varinfos set
8744         is_full_var flag.
8745         (create_variable_info_for): Set is_full_var flag whenever we
8746         just created a single varinfo for a decl.
8747         (init_alias_vars): Initialize use_field_sensitive from
8748         max-fields-for-field-sensitive parameter.
8749
8750 2008-07-07  Richard Guenther  <rguenther@suse.de>
8751
8752         PR tree-optimization/36713
8753         * tree-flow-inline.h (is_call_used): New function.
8754         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
8755         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
8756         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
8757
8758 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
8759
8760         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
8761
8762 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
8763
8764         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
8765
8766 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
8767             Nathan Sidwell  <nathan@codesourcery.com>
8768
8769         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
8770         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
8771         tmake_file.
8772         * config/m68k/t-linux: New.
8773         * doc/install.texi: Document m68k-*-linux is now multilibbed by
8774         default.
8775
8776 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
8777
8778         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
8779         * config/m68k/m68k-devices.def: Remove multilibs that only differ
8780         by MAC/EMAC.
8781
8782 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8783
8784         * gcc.c (execute): Fix -Wc++-compat warning.
8785
8786 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
8787
8788         PR target/36720
8789         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
8790         constant for little endian.
8791
8792 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
8793
8794         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
8795         mips_base_mips16 instead of TARGET_MIPS16.
8796         (mips_base_mips16): Declare.
8797         * config/mips/mips.c (mips_base_mips16): Make global.
8798         (was_mips16_p): Remove GTY marker.
8799         (was_mips16_pch_p): New variable.
8800         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
8801         (mips_override_options): Force to non-MIPS16 mode initially.
8802         Do not complain about MIPS16 PIC incompatibilities here.
8803         Only allow -mgpopt if -mexplicit-relocs is in force for
8804         non-MIPS16 code.
8805
8806 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
8807
8808         * configure.ac: Check for caddr_t, define to char * if not defined.
8809         * configure: Regenerate.
8810         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
8811         (mmap_gt_pch_use_address): Likewise.
8812         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
8813
8814 2008-07-06  Richard Guenther  <rguenther@suse.de>
8815
8816         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
8817         (new_var_info): Deal with it.
8818         (solution_set_add): Likewise.
8819         (bitpos_of_field): Make signed, fix.
8820         (struct fieldoff): Remove type and decl fields.  Make size field
8821         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
8822         flags.
8823         (fieldoff_compare): Deal with it.
8824         (push_fields_onto_fieldstack): Remove has_union argument, glob
8825         adjacent non-pointer fields together.
8826         (create_function_info_for): Do not set has_union.
8827         (create_variable_info_for): Simplify.
8828
8829 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
8830
8831         * config.gcc (extra_headers): Add cross-stdarg.h for target
8832         x86_64-*-* and i?86-*-*.
8833         * config/i386/cross-stdarg.h: New.
8834         * builtins.c (std_fn_abi_va_list): New.
8835         (std_canonical_va_list_type): New.
8836         (stabilize_va_list): Replace va_list_type_node use by
8837         mtarget.canonical_va_list_type.
8838         (gimplify_va_arg_expr): Likewise.
8839         (expand_builtin_va_copy): Replace va_list_type_node use by
8840         mtarget.fn_abi_va_list.
8841         * tree-sra.c (is_va_list_type): New helper.
8842         (decl_can_be_decomposed_p): Replace
8843         va_list_type_node use by is_va_list_type.
8844         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
8845         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
8846         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
8847         * config/i386/i386-protos.h (ix86_get_valist_type): New.
8848         (ix86_enum_va_list): New.
8849         * config/i386/i386.c (sysv_va_list_type_node): New.
8850         (ms_va_list_type_node): New.
8851         (ix86_function_type_abi): Remove sorry.
8852         (ix86_build_builtin_va_list_abi): New.
8853         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
8854         for 64-bit targets.
8855         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
8856         (ix86_init_builtins_va_builtins_abi): New.
8857         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
8858         for 64-bit targets.
8859         (ix86_handle_abi_attribute): New.
8860         (attribute_spec): Add sysv_abi and ms_abi.
8861         (ix86_fn_abi_va_list): New.
8862         (ix86_canonical_va_list_type): New.
8863         (ix86_enum_va_list): New.
8864         (TARGET_FN_ABI_VA_LIST): New.
8865         (TARGET_CANONICAL_VA_LIST_TYPE): New.
8866         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
8867         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
8868         (TARGET_CANONICAL_VA_LIST_TYPE): New.
8869         (TARGET_ENUM_VA_LIST): New.
8870         * expr.h (std_fn_abi_va_list): New.
8871         (std_canonical_va_list_type): New.
8872         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
8873         (TARGET_CANONICAL_VA_LIST_TYPE): New.
8874         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
8875         TARGET_CANONICAL_VA_LIST_TYPE.
8876         * target.h (struct gcc_target): Add fn_abi_va_list hook
8877         and canonical_va_list_type hook.
8878
8879 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8880
8881         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
8882         integral and pointer types.
8883
8884 2008-07-04  Roger Sayle  <roger@eyesopen.com>
8885
8886         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
8887         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
8888
8889 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
8890
8891         PR target/36684
8892         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
8893
8894 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
8895
8896         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
8897         build_gimple_modify_stmt.
8898         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
8899         gimple operand.  Use fold_build* instead of build*.
8900
8901 2008-07-04  Richard Guenther  <rguenther@suse.de>
8902
8903         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
8904         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
8905         properly to compute the reachability set if we do field-sensitive PTA.
8906         * invoke.texi (max-fields-for-field-sensitive): Document default.
8907         * opts.c (decode_options): Set max-fields-for-field-sensitive to
8908         100 for optimize >= 2.
8909
8910 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8911
8912         * ggc-zone.c (lookup_page_table_if_allocated,
8913         set_page_table_entry, zone_find_object_size, alloc_small_page,
8914         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
8915         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
8916         -Wc++-compat and/or -Wcast-qual warnings.
8917
8918 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
8919
8920         PR target/36634
8921         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
8922         pic_offset_table_rtx to be marked as used here.
8923         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
8924         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
8925         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
8926         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
8927         !TARGET_SECURE_PLT.
8928
8929 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8930
8931         * alloc-pool.c (hash_descriptor, eq_descriptor,
8932         alloc_pool_descriptor): Fix -Wc++-compat warnings.
8933         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
8934         Likewise.
8935         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
8936         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
8937         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
8938         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
8939         Likewise.
8940
8941 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
8942
8943         * tree-flow.h (loop_only_exit_p): Declare.
8944         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
8945         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
8946         the number of iterations if it is constant.  Otherwise, if this is the
8947         only possible exit of the loop, use the conservative estimate on the
8948         number of iterations of the entire loop if available.
8949
8950 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
8951
8952         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
8953         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
8954         Add synchronization functions.
8955         * config/sync.c: New file.
8956         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
8957         (LIBGCC_SYNC_CFLAGS): Likewise.
8958
8959 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
8960
8961         PR target/36710
8962         * config/i386/i386.md (mode): Add TF to "mode" attribute.
8963         (*pushtf_sse): New insn pattern.
8964         (pushtf splitters): New splitters.
8965
8966 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
8967
8968         PR middle-end/35736
8969         * predict.c (build_predict_expr): Use void_type_node for the tree
8970         type, instead of NULL_TREE.
8971
8972 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
8973
8974         * config/i386/i386.c (contains_aligned_value_p): Return true
8975         for TCmode.
8976         (ix86_data_alignment): Align TCmode to 128bits.
8977         (ix86_local_alignment): Likewise.
8978
8979 2008-07-03  Andrew Haley  <aph@redhat.com>
8980
8981         PR bootstrap/33304
8982         * vec.h (VEC_TA): New.
8983         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
8984         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
8985         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
8986         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
8987         (C_COMMON_FIXED_TYPES): Remove first arg.
8988         (C_COMMON_FIXED_MODE_TYPES): Likewise.
8989         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
8990         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
8991         not to use empty macro arguments.
8992
8993 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
8994
8995         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
8996         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
8997         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
8998         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
8999         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
9000         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
9001         config/ia64/crtn.asm, config/m68hc11/larith.asm,
9002         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
9003         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
9004         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
9005         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
9006         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
9007         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
9008         config/rs6000/e500crtres64gpr.asm,
9009         config/rs6000/e500crtres64gprctr.asm,
9010         config/rs6000/e500crtrest32gpr.asm,
9011         config/rs6000/e500crtrest64gpr.asm,
9012         config/rs6000/e500crtresx32gpr.asm,
9013         config/rs6000/e500crtresx64gpr.asm,
9014         config/rs6000/e500crtsav32gpr.asm,
9015         config/rs6000/e500crtsav64gpr.asm,
9016         config/rs6000/e500crtsav64gprctr.asm,
9017         config/rs6000/e500crtsavg32gpr.asm,
9018         config/rs6000/e500crtsavg64gpr.asm,
9019         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
9020         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
9021         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
9022         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
9023         config/sparc/sol2-cn.asm: Remove .file directives.
9024
9025 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
9026
9027         * resource.c (mark_referenced_resources): Look inside
9028         UNSPEC_VOLATILEs and ASM_INPUTs.
9029
9030 2008-07-02  Ian Lance Taylor  <iant@google.com>
9031
9032         * rtlanal.c (add_reg_note): New function.
9033         * rtl.h (add_reg_note): Declare.
9034         * auto-inc-dec.c (attempt_change): Use add_reg_note.
9035         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
9036         * builtins.c (expand_builtin_longjmp): Likewise.
9037         (expand_builtin_nonlocal_goto): Likewise.
9038         * calls.c (emit_call_1, expand_call): Likewise.
9039         * cfgexpand.c (add_reg_br_prob_note): Likewise.
9040         * cfglayout.c (fixup_reorder_chain): Likewise.
9041         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
9042         (commit_one_edge_insertion): Likewise.
9043         * combine.c (move_deaths, distribute_notes): Likewise.
9044         * df-problems.c (df_set_note): Likewise.
9045         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
9046         (set_unique_reg_note): Likewise.
9047         (emit_copy_of_insn_after): Likewise.
9048         * expr.c (expand_expr_real): Likewise.
9049         * gcse.c (add_label_notes): Likewise.
9050         * haifa-sched.c (create_check_block_twin): Likewise.
9051         * jump.c (mark_jump_label_1): Likewise.
9052         * loop-doloop.c (add_test, doloop_modify): Likewise.
9053         * loop-unswitch.c (compare_and_jump_seq): Likewise.
9054         * lower-subreg.c (move_eh_region_note): Likewise.
9055         * optabs.c (emit_libcall_block): Likewise.
9056         * predict.c (predict_insn): Likewise.
9057         (combine_predictions_for_insn): Likewise.
9058         * recog.c (peephole2_optimize): Likewise.
9059         * regmove.c (try_auto_increment): Likewise.
9060         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
9061         * reload.c (find_reloads): Likewise.
9062         * reload1.c (fixup_eh_region_note): Likewise.
9063         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
9064         * reorg.c (delete_prior_computation): Likewise.
9065         (delete_computation, dbr_schedule): Likewise.
9066         * config/pa/pa.c (legitimize_pic_address): Likewise.
9067         * config/sh/sh.c (sh_reorg): Likewise.
9068
9069 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
9070
9071         PR target/36669
9072         * config/libgcc-glibc.ver: Add %exclude.
9073         * config/m32r/libgcc-glibc.ver: Likwise.
9074         * config/s390/libgcc-glibc.ver: Likwise.
9075         * config/sh/libgcc-glibc.ver: Likwise.
9076         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
9077
9078         * config/i386/libgcc-glibc.ver: New.
9079
9080         * config/i386/libgcc-x86_64-glibc.ver: Removed.
9081
9082 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
9083
9084         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
9085         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
9086         i[34567]86-*-linux*, x86_64-*-linux*.  Add
9087         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
9088         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
9089         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
9090         i[34567]86-*-linux*, x86_64-*-linux*.
9091
9092         * libgcc-std.ver: Add empty GCC_4.4.0.
9093
9094         * mkmap-symver.awk: Support multiple versions per symbol.
9095
9096         * config/i386/i386.c (ix86_init_builtins): Always define
9097         __builtin_fabsq and __builtin_copysignq with fallbacks.
9098         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
9099         and __builtin_copysignq if SSE2 isn't available.
9100
9101         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
9102         (LIBGCC2_TF_CEXT): Likwise.
9103         (TF_SIZE): Likwise.
9104
9105         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
9106
9107         * config/i386/sfp-machine.h: Moved to libgcc.
9108
9109         * config/i386/sfp-machine.h: New.
9110         * config/i386/t-linux: Likwise.
9111
9112         * config/i386/t-darwin: Remove softfp_wrap_start and
9113         softfp_wrap_end.
9114         * config/i386/t-darwin64: Likewise.
9115
9116         * config/i386/t-fprules-softfp64: Renamed to ...
9117         * config/i386/t-fprules-softfp: This.
9118
9119         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
9120         and softfp_wrap_end.
9121
9122 2008-07-02  Jason Merrill  <jason@redhat.com>
9123
9124         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
9125
9126         * tree.c (ctor_to_list): New fn.
9127         * tree.h: Declare it.
9128         (CONSTRUCTOR_ELT): New macro.
9129         (CONSTRUCTOR_NELTS): New macro.
9130
9131 2008-07-02  Richard Guenther  <rguenther@suse.de>
9132
9133         * tree-ssa-structalias.c (struct variable_info): Reorder
9134         to fill padding on 64bit hosts.  Make collapsed_to an int.
9135         (get_varinfo_fc): Deal with that.
9136         (new_var_info): Likewise.
9137         (collapse_rest_of_var): Likewise.
9138
9139 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
9140
9141         * doc/install.texi (--enable-java-home): Document.
9142         (--enable-aot-compile-rpm): Likewise.
9143         (--with-arch-directory): Likewise.
9144         (--with-os-directory): Likewise.
9145         (--with-origin-name): Likewise.
9146         (--with-arch-suffix): Likewise.
9147         (--with-jvm-root-dir): Likewise.
9148         (--with-jvm-jar-dir): Likewise.
9149         (--with-python-dir): Likewise.
9150
9151 2008-07-02  Richard Guenther  <rguenther@suse.de>
9152
9153         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
9154         from decls explicitly.  Merge operand checking from tuples.
9155
9156 2008-07-02  Martin Jambor  <mjambor@suse.cz>
9157
9158         * tree-switch-conversion.c: Included timevar.h which I forgot before.
9159
9160 2008-07-02  Martin Jambor  <mjambor@suse.cz>
9161
9162         * tree-switch-conversion.c: Included timevar.h
9163         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
9164
9165         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
9166
9167 2008-07-02  Martin Jambor  <mjambor@suse.cz>
9168
9169         * tree-switch-conversion.c: Corrected various comments and
9170         whitespace issues
9171         (build_constructors): Fixed minor formatting mistakes.
9172
9173         * invoke.texi (Optimize Options): Corrected the
9174         switch-conversion-max-branch-ratio parameter.
9175
9176 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
9177
9178         * final.c (asm_insn_count): Return zero for an empty asm body.
9179
9180 2008-07-02  Richard Guenther  <rguenther@suse.de>
9181
9182         * bitmap.h (bitmap_set_bit): Return bool.
9183         (bitmap_clear_bit): Likewise.
9184         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
9185         write to the bitmap if it would.
9186         (bitmap_clear_bit): Likewise.
9187         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
9188         bitmap_set_bit return value.
9189         (add_pred_graph_edge): Likewise.
9190         (add_graph_edge): Likewise.
9191         (do_sd_constraint): Likewise.
9192         (do_ds_constraint): Likewise.
9193
9194 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9195
9196         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
9197         Fix -Wc++-compat and/or -Wcast-qual warnings.
9198         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
9199         gen_regparm_prefix): Likewise.
9200         * vmsdbgout.c (write_modbeg, lookup_filename,
9201         vmsdbgout_source_line, vmsdbgout_init): Likewise.
9202
9203 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
9204
9205         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
9206         defaults.h definition apply.
9207
9208 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
9209
9210         * function.c (assign_parm_remove_parallels): New.
9211         (assign_parm_setup_block_p): Do not return true for non-BLKmode
9212         PARALLELs.
9213         (assign_parm_setup_block): Do not handle them.
9214         (assign_parm_setup_reg, assign_parm_setup_stack): Call
9215         assign_parm_remove_parallels.
9216
9217 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
9218
9219         * c-typeck.c (convert_for_assignment): Use
9220         vector_targets_convertible_p.
9221         * c-common.c (vector_targets_convertible_p): New.
9222         * c-common.h (vector_targets_convertible_p): New prototype.
9223         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
9224         opaque_p_V2SI_type_node.
9225
9226 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
9227
9228         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
9229         RFmode constants.
9230
9231 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
9232
9233         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
9234         TFmode constants via two element DImode vector for hosts with
9235         HOST_BITS_PER_WIDE_INT < 64.
9236         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
9237         also for HOST_BITS_PER_WIDE_INT < 64.
9238
9239 2008-07-01  Richard Guenther  <rguenther@suse.de>
9240
9241         PR tree-optimization/36666
9242         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
9243         (get_constraint_exp_from_ssa_var): Split into ...
9244         (get_constraint_exp_for_temp): ... this ...
9245         (get_constraint_for_ssa_var): ... and that.
9246         Return constraint expressions for all touched sub-fields
9247         if the results address is not taken.
9248         (process_constraint): Remove assertion that aggregate
9249         assignments do not happen at this place.
9250         (get_constraint_for_component_ref): Add address_p argument.
9251         Return constraint expressions for all touched sub-fields
9252         if the results address is not taken.
9253         (do_deref): Use get_constraint_exp_for_temp.
9254         (get_constraint_for_1): Rename from ...
9255         (get_constraint_for): ... this.  Add the old function as wrapper.
9256         (do_structure_copy): Use get_constraint_for_1.
9257
9258 2008-07-01  Martin Jambor  <mjambor@suse.cz>
9259
9260         * Makefile.in (tree-switch-conversion.o): Add.
9261         (OBJS-common): Add tree-swtch-conversion.o.
9262         * passes.c (init_optimization_passes): Add pass_convert_switch.
9263         * tree-pass.h: (pass_convert_switch): Add.
9264         * tree-switch-conversion.c: New file.
9265         * gcc.dg/tree-ssa/cswtch.c: New testcase.
9266         * common.opt (ftree-cswtch): New option.
9267         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
9268         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
9269         * opts.c (decode_options): Set flag_tree_switch_conversion when
9270         optimization level is >= 2.
9271         * doc/invoke.texi (Optimize Options): Added description of
9272         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
9273
9274 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9275
9276         * config/darwin-driver.c (darwin_default_min_version): Fix
9277         -Wc++-compat warnings.
9278
9279 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
9280
9281         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
9282         of operand 0.
9283
9284 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
9285
9286         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
9287
9288 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
9289
9290         PR rtl-optimization/34744
9291         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
9292         (df_scan_free_internal): Free data structures not
9293         allocated in storage pools.
9294         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
9295         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
9296         df_scan_free_mws_vec.
9297         * dse.c (dse_step6): Free offset_map_p and offset_map_n
9298         unconditionally.
9299
9300 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
9301
9302         * config/i386/i386.c (contains_aligned_value_p): Return true
9303         for __float128.
9304         (ix86_function_arg_boundary): Return its natural boundary
9305         for __float128.
9306         (return_in_memory_32): Don't check TDmode.
9307         (ix86_split_to_parts): Support splitting into 4 parts and
9308         support TFmode for 32bit target.
9309         (ix86_split_long_move): Support splitting into 4 parts.
9310         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
9311         for SSE2.
9312         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
9313         (ix86_init_builtins): Here.
9314         (ix86_scalar_mode_supported_p): Always return true for TFmode.
9315         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
9316         'q' and 'w', respectively.
9317
9318         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
9319         TARGET_64BIT.
9320         (movtf_internal): Likewise.
9321         (<code>tf2): Likewise.
9322         (*absnegtf2_sse): Likewise.
9323         (copysign<mode>3): Likewise.
9324         (copysign<mode>3_const): Likewise.
9325         (copysign<mode>3_var): Likewise.
9326         (define_split UNSPEC_COPYSIGN): Likewise.
9327         * config/i386/sse.md (*nandtf3): Likewise.
9328         (<code>tf3): Likewise.
9329         (*<code>tf3): Likewise.
9330
9331 2008-06-30  Joey Ye  <joey.ye@intel.com>
9332             H.J. Lu  <hongjiu.lu@intel.com>
9333
9334         * global.c (compute_regsets): Set frame_pointer_needed here.
9335         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
9336
9337 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
9338
9339         * doc/install.texi (specific): Expand Windows build notes.
9340
9341 2008-06-30  Ira Rosen  <irar@il.ibm.com>
9342
9343         PR tree-optimization/36648
9344         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
9345         number of prolog iterations by step. Fix the comment.
9346
9347 2008-06-30  Richard Guenther  <rguenther@suse.de>
9348
9349         PR middle-end/36671
9350         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
9351         handle calls from ECF_MALLOC functions.
9352         (handle_pure_call): ECF_MALLOC functions do not return
9353         call-used memory.
9354         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
9355
9356 2008-06-29  Andreas Schwab  <schwab@suse.de>
9357
9358         * config/m68k/m68k.c (print_operand): Always print a float
9359         constant in hex.
9360         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
9361         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
9362         Remove macros.
9363
9364         * config/rs6000/x-linux64: Remove never used file.
9365
9366 2008-06-29  Richard Guenther  <rguenther@suse.de>
9367
9368         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
9369         prototype.
9370         (struct alias_info): Move ...
9371         * tree-ssa-alias.c: ... here.
9372         (update_alias_info): Declare.
9373         (compute_may_aliases): Call it.
9374         (update_alias_info): New function.
9375         * tree-ssa-structalias.c (update_alias_info): Move ...
9376         * tree-ssa-alias.c (update_alias_info_1): ... here.
9377         * tree-ssa-structalias.c (process_constraint_1): Remove
9378         unused from_call argument.  Rename to ...
9379         (process_constraint): ... this.  Delete old wrapper.
9380         (make_constraint_to): Adjust callers.
9381         (handle_const_call): Likewise.
9382         (handle_pure_call): Likewise.
9383         (init_base_vars): Likewise.
9384         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
9385         (find_func_aliases): We don't need structure copies for
9386         complex types.
9387         (make_constraint_from_anything): Remove.
9388         (create_variable_info_for): For globals make constraints
9389         from escaped, not from anything.
9390         (compute_points_to_sets): Do not call update_alias_info.
9391         (ipa_pta_execute): Use make_constraint_from.
9392
9393 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9394
9395         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
9396         (bitmap.o-warn, dominance.o-warn): New.
9397         * configure.ac (cxx_compat_warn): Delete.
9398         (loose_warn): Add -Wcast-qual and -Wc++-compat.
9399         * system.h: Remove #pragma diagnostic for -Wcast-qual and
9400         -Wc++-compat.
9401         * configure: Regenerate.
9402
9403         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
9404         warnings.
9405
9406 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9407
9408         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
9409         * df-scan.c (df_notes_rescan): Likewise.
9410         * ggc-page.c (set_page_table_entry): Likewise.
9411         * intl.c (gcc_gettext_width): Likewise.
9412         * varasm.c (get_unnamed_section, get_noswitch_section,
9413         get_section): Likewise.
9414
9415 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
9416
9417         * regrename.c (build_def_use): Don't copy RTX.
9418
9419 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
9420
9421         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
9422         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
9423         punctuation.  Use @ref instead of @xref.
9424         (Function Names): Remove stray @display/@end display.
9425         (C++ Attributes): Use @ref instead of @xref.
9426         (Deprecated Features): Fix punctuation around @xref.
9427         (Backwards Compatibility): Likewise.
9428         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
9429
9430 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
9431
9432         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
9433         constants for E500 double.
9434
9435 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9436
9437         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
9438         element type of const_vector.
9439
9440 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
9441
9442         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
9443         Remove FLAGS_REG clobber from expander pattern.
9444         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
9445         (anddi3, andsi3, andhi3, andqi3): Ditto.
9446         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
9447         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
9448         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
9449         (ashlsi3, ashlhi3, ashlqi3): Ditto.
9450         (ashrsi3, ashrhi3, ashrqi3): Ditto.
9451         (lshrsi3, lshrhi3, lshrqi3): Ditto.
9452         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
9453         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
9454
9455 2008-06-28  Richard Guenther  <rguenther@suse.de>
9456
9457         * tree-ssa-structalias.c (callused_id, var_callused,
9458         callused_tree): Add.
9459         (handle_pure_call): New function.
9460         (find_func_aliases): Call it.
9461         (find_what_p_points_to): Handle the call-used set.
9462         (clobber_what_escaped): Likewise.
9463         (compute_call_used_vars): New function.
9464         (init_base_vars): Init the call-used variable.
9465         (do_sd_constraint): Do not propagate the solution from CALLUSED
9466         but use CALLUSED as a placeholder.
9467         (solve_graph): Likewise.
9468         * tree-flow-inline.h (gimple_call_used_vars): New function.
9469         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
9470         (compute_call_used_vars): Declare.
9471         * tree-ssa-alias.c (set_initial_properties): Call
9472         compute_call_used_vars.
9473         (reset_alias_info): Clear call-used variables.
9474         (add_call_clobber_ops): Assert we are not called for const/pure
9475         functions.  Remove handling of them.
9476         (add_call_read_ops): Handle pure functions by adding the
9477         call-used set of variables as VUSEs.
9478         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
9479         (delete_tree_ssa): Free it.
9480         * tree-dfa.c (remove_referenced_var): Clear the var from the
9481         call-used bitmap.
9482
9483 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
9484
9485         * tree.c (build_varargs_function_type_list): New.
9486         (build_function_type_list_1): New.
9487         (build_function_type_list): Use build_function_type_list_1.
9488         * tree.h (build_varargs_function_type_list): New.
9489
9490 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9491
9492         PR target/34856
9493         * config/spu/spu.c (spu_builtin_splats): Do not generate
9494         invalid CONST_VECTOR expressions.
9495         (spu_expand_vector_init): Likewise.
9496
9497 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
9498
9499         * optabs.c (libfunc_decls): New variable.
9500         (libfunc_decl_hash, libfunc_decl_eq): New functions.
9501         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
9502         for the same function twice.
9503
9504 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
9505
9506         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
9507         ix86_expand_binary_operator directly.
9508         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
9509         for operand 2.
9510         (*ashrti3_1): Ditto.
9511         (*lshrti3_1): Ditto.
9512         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
9513         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
9514         using only one splitter.  Conditionaly execute splitter before or
9515         after peephole2 pass.
9516         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
9517         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
9518         Use only one alternative in asm template.
9519         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
9520         in asm template.
9521         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
9522         "J" operand constraint for operand 2.
9523         (*ashldi3_cconly_rex64): Ditto.
9524         (*ashrdi3_cmp_rex64): Ditto.
9525         (*ashrdi3_cconly_rex64): Ditto.
9526         (*lshrdi3_cmp_rex64): Ditto.
9527         (*lshrdi3_cconly_rex64): Ditto.
9528         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
9529         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
9530         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
9531         gen_x86_shrd_1.
9532
9533 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
9534
9535         * gimplify.c (omp_is_private): Don't return true if decl is not
9536         already private on #pragma omp for or #pragma omp parallel for.
9537
9538         PR debug/36617
9539         * tree-cfg.c (struct move_stmt_d): Replace block field with
9540         orig_block and new_block fields.
9541         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
9542         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
9543         (move_block_to_fn): Replace vars_map and new_label_map arguments
9544         with struct move_stmt_d pointer.
9545         (replace_block_vars_by_duplicates): New function.
9546         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
9547         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
9548         all subblocks of ORIG_BLOCK to the new function.  Call
9549         replace_block_vars_by_duplicates.
9550         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
9551         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
9552         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
9553         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
9554         (expand_omp): Temporarily set input_location to the location of
9555         region's controlling stmt.
9556         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
9557         BIND_EXPR, push ctx->block_vars and gimplification vars into
9558         the BIND_EXPR and its block's BLOCK_VARS instead of directly
9559         into dest function.
9560         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
9561         there are any BLOCK_VARS.
9562         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
9563         OMP_PARALLEL or OMP_TASK stmt.
9564         (lower_omp): Save and restore input_location around the lower_omp_1
9565         call.
9566
9567 2008-06-27  Richard Guenther  <rguenther@suse.de>
9568
9569         PR tree-optimization/36400
9570         PR tree-optimization/36373
9571         PR tree-optimization/36344
9572         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
9573         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
9574         (update_alias_info): Remove call clobbering code.
9575         (make_constraint_to): New helper function.
9576         (make_escape_constraint): Likewise.
9577         (handle_rhs_call): Use it on all pointer containing arguments.
9578         Also mark the static chain escaped.
9579         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
9580         instead of ANYTHING.
9581         (make_constraint_from): New helper split out from ...
9582         (make_constraint_from_anything): ... here.
9583         (find_func_aliases): Add constraints for escape sites.
9584         (intra_create_variable_infos): Make constraints from NONLOCAL
9585         for parameters.
9586         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
9587         as ANYTHING.
9588         (clobber_what_p_points_to): Remove.
9589         (clobber_what_escaped): New function.
9590         (init_base_vars): Init NONLOCAL and ESCAPED.
9591         (do_sd_constraint): Do not propagate the solution from ESCAPED
9592         but use ESCAPED as a placeholder.
9593         (solve_graph): Likewise.
9594         * tree-flow.h (clobber_what_p_points_to): Remove.
9595         (clobber_what_escaped): Declare.
9596         * tree-ssa-alias.c (set_initial_properties): Call it.
9597         Remove code clobbering escaped pointers.
9598
9599 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
9600
9601         * function.c (allocate_struct_function): Only allocate a unique
9602         funcdef_no if the decl is nonzero.
9603
9604 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
9605
9606         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
9607         * config/mips/mips.c (mips_split_const_insns): New function.
9608         * config/mips/mips.md (move_type): New attribute.
9609         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
9610         (dword_mode): New attribute.
9611         (type): Avoid long line.  Map "move_type"s to "type"s,
9612         choosing "multi" for doubleword moves if appropriate.
9613         Swap MTC/MFC comments to match their declaration order.
9614         (extended_mips16): Default to "yes" if "move_type" is "sll0",
9615         "type" is "branch" or "jal" is "direct".
9616         (length): Handle "extended_mips16" first.  Make the default
9617         "0" for "ghost" instructions.  Set the length from "move_type".
9618         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
9619         of "type", with "sll0" for the register alternative.  Remove the
9620         "extended_mips16" attribute.
9621         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
9622         of "type", with "shift_shift" for the register alternative.
9623         Remove the "length" attribute.
9624         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
9625         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
9626         of "type", with "andi" for the register alternative.
9627         (*zero_extendqihi2): Likewise.
9628         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
9629         of "andi" instead of a "type" of "arith".
9630         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
9631         instead of "type".
9632         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
9633         (mov_<store>r, *mov<mode>_ra): Likewise.
9634         (extendsidi2): Use "move_type" instead of "type", with "move"
9635         for the register alternative.
9636         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
9637         of "type", with "signext" for the register alternative.
9638         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
9639         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
9640         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
9641         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
9642         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
9643         (unnamed branch insn): Likewise.
9644         (*movdi_gp32_fp64): Fold into...
9645         (*movdi_32bit): ...here.
9646         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
9647         (*movdf_hardfloat): ...this new pattern.
9648         (*movdf_softfloat): Remove redundant FPR alternatives.
9649         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
9650         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
9651         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
9652         the "move" attribute.
9653         (*movdi_32bit): Use "move_type" instead of "type" and remove the
9654         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
9655         and "store" for COP loads and stores.
9656         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
9657         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
9658         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
9659         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
9660         (*movtf_mips16, *movv2sf): Likewise.
9661         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
9662         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
9663         (mfhc1<mode>): Use "move_type" instead of "move".
9664         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
9665         (loadgp_blockage): Remove the "length" attribute.
9666         (blockage, set_got_version, update_got_version): Likewise.
9667         (call_internal): Remove the "extended_mips16" attribute.
9668         (call_value_internal, call_value_multiple_internal): Likewise.
9669         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
9670         instead of "move".
9671         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
9672         the "length" attribute.
9673
9674 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9675
9676         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
9677         -Wcast-qual warnings.
9678         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
9679         handle_pragma_pop_macro): Likewise.
9680         * collect2.c (resolve_lib_name): Likewise.
9681         * config/arc/arc.c (arc_init): Likewise.
9682         * config/arm/arm.c (neon_builtin_compare,
9683         locate_neon_builtin_icode): Likewise.
9684         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
9685         * config/bfin/bfin.c (bfin_init_machine_status,
9686         bfin_optimize_loop): Likewise.
9687         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
9688         * config/cris/cris.c (cris_init_expanders): Likewise.
9689         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
9690         * config/darwin.c (machopic_indirection_eq,
9691         machopic_indirection_name, machopic_output_indirection): Likewise.
9692         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
9693         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
9694         frv_optimize_membar): Likewise.
9695         * config/i386/cygwin.h (mingw_scan,
9696         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
9697         * config/i386/cygwin1.c (mingw_scan): Likewise.
9698         * config/i386/i386.c (machopic_output_stub): Likewise.
9699         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
9700         i386_pe_unique_section): Likewise.
9701         * config/ia64/ia64.c (ia64_init_machine_status,
9702         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
9703         Likewise.
9704         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
9705         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
9706         * config/m68k/m68k.c (m68k_handle_option,
9707         m68k_sched_md_init_global): Likewise.
9708         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
9709         mcore_unique_section): Likewise.
9710         * config/mips/mips.c (mips_block_move_straight,
9711         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
9712         Likewise.
9713         * config/mmix/mmix.c (mmix_init_machine_status,
9714         mmix_encode_section_info): Likewise.
9715         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
9716         * config/rs6000/rs6000.c (rs6000_init_machine_status,
9717         print_operand_address, output_toc, redefine_groups,
9718         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
9719         * config/s390/s390.c (s390_init_machine_status): Likewise.
9720         * config/score/score.c (score_block_move_straight,
9721         score_block_move_loop_body): Likewise.
9722         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
9723         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
9724         * emit-rtl.c (find_auto_inc): Likewise.
9725         * gcc.c (translate_options, process_command): Likewise.
9726         * reorg.c (dbr_schedule): Likewise.
9727         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
9728         * xcoffout.c (xcoffout_declare_function): Likewise.
9729
9730 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
9731
9732         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
9733         ipa-pta working again.
9734
9735 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
9736
9737         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
9738         genautomata.
9739
9740 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
9741
9742         * config.gcc (powerpc*-*-*): Add new core e500mc.
9743         * config/rs6000/e500mc.md: New file.
9744         * config/rs6000/rs6000.c (processor_costs): Add new costs for
9745         e500mc.
9746         (rs6000_override_options): Add e500mc case to
9747         processor_target_table. Altivec and Spe options not allowed
9748         with e500mc. Add isel instruction to e500mc by
9749         default. Initialize rs6000_cost for e500mc.
9750         (rs6000_issue_rate): Set issue rate for e500mc.
9751         * config/rs6000/rs6000.h (processor_type): Add
9752         PROCESSOR_PPCE500MC.
9753         (ASM_CPU_SPEC): Add e500mc.
9754         Set TARGET_ISEL to rs6000_isel.
9755         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
9756         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
9757         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
9758         Include e500mc.md.
9759         * doc/invoke.texi: Add e500mc to list of cpus.
9760
9761 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
9762
9763         PR c/34867
9764         * c-lex.c (lex_charconst): Initialize unsignedp.
9765
9766 2008-06-27  Olivier Hainque  <hainque@adacore.com>
9767
9768         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
9769         documented assumptions.
9770
9771 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
9772
9773         * dwarf2out.c: Remove trailing white spaces.  Break long line
9774         in comments.
9775
9776 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
9777
9778         * libfuncs.h (LTI_synchronize): New libfunc_index.
9779         (synchronize_libfunc): Declare.
9780         * builtins.c (expand_builtin_synchronize): Consider using
9781         synchronize_libfunc before falling back on an asm blockage.
9782         * config/mips/mips.c: Include libfuncs.h
9783         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
9784
9785 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
9786
9787         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
9788         parameter.  Copy stack_reg to r11 where appropriate.
9789         (no_global_regs_above): Add gpr parameter.
9790         (rs6000_stack_info): Only add padding for SPE save area if we
9791         are saving SPE GPRs and CR.
9792         (saveres_routine_syms): New variable.
9793         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
9794         Define.
9795         (rs6000_savres_routine_sym): New function.
9796         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
9797         split out of...
9798         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
9799         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
9800         Tweak FPR out-of-line saving.
9801         (rs6000_make_savres_rtx): New function.
9802         (rs6000_use_multiple_p): New function.
9803         (rs6000_savres_strategy): New function.
9804         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
9805         out-of-line if appropriate.
9806         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
9807         if we are optimizing for size.
9808         (GP_SAVE_INLINE): Define.
9809         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
9810         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
9811         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
9812         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
9813         (*save_fpregs_<mode>): Add use of r11.
9814         (*restore_gpregs_<mode>): New insn.
9815         (*return_and_restore_gpregs_<mode>): New insn.
9816         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
9817         use r11.
9818         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
9819         (*restore_gpregs_spe): New insn.
9820         (*return_and_restore_gpregs_spe): New insn.
9821         * config/rs6000/predicates.md (save_world_operation): Fix check.
9822
9823 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9824
9825         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
9826         this point, so assert that.
9827
9828 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9829
9830         * cfganal.c: Include vec.h and vecprim.h.
9831         (compute_idf): Import from...
9832         * tree-into-ssa (compute_idf): ...here.
9833         * basic-block.h (compute_idf): Export.
9834
9835 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
9836
9837         * c-decl.c (merge_decls): Use !current_function_decl to check for
9838         extern declaration of C99 inline function being at file scope.
9839
9840 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
9841
9842         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
9843
9844 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9845
9846         * alias.c (record_alias_subset, init_alias_analysis): Fix
9847         -Wc++-compat and/or -Wcast-qual warnings.
9848         * attribs.c (lookup_attribute_spec): Likewise.
9849         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
9850         copy_bb, connect_traces,
9851         find_rarely_executed_basic_blocks_and_cr): Likewise.
9852         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
9853         note_btr_set, migrate_btr_defs): Likewise.
9854         * builtins.c (result_vector, expand_builtin_memcpy,
9855         expand_builtin_mempcpy_args, expand_builtin_strncpy,
9856         builtin_memset_read_str, expand_builtin_printf,
9857         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
9858         Likewise.
9859         * caller-save.c (mark_set_regs): Likewise.
9860         * calls.c (expand_call, emit_library_call_value_1): Likewise.
9861         * cgraph.c (cgraph_edge): Likewise.
9862         * combine.c (likely_spilled_retval_1): Likewise.
9863         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
9864         htab_counts_entry_del, get_coverage_counts): Likewise.
9865         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
9866         new_cselib_val): Likewise.
9867         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
9868         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
9869         Likewise.
9870         * df-core.c (df_compact_blocks): Likewise.
9871         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
9872         * df-scan.c (df_grow_reg_info, df_ref_create,
9873         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
9874         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
9875         df_record_entry_block_defs, df_record_exit_block_uses,
9876         df_bb_verify): Likewise.
9877         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
9878         DF_REF_EXTRACT_MODE_CONST): New.
9879         * dominance.c (get_immediate_dominator, get_dominated_by,
9880         nearest_common_dominator, root_of_dom_tree,
9881         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
9882         -Wc++-compat and/or -Wcast-qual warnings.
9883         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
9884         record_store, replace_read, check_mem_read_rtx, scan_insn,
9885         dse_step1, dse_record_singleton_alias_set): Likewise.
9886         * dwarf2asm.c (dw2_force_const_mem): Likewise.
9887
9888 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9889
9890         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
9891         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
9892         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
9893         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
9894         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
9895         add_ranges_num, add_ranges_by_labels, file_info_cmp,
9896         file_name_acquire, output_file_names, add_const_value_attribute,
9897         premark_used_types_helper, file_table_eq, file_table_hash,
9898         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
9899         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
9900         -Wcast-qual warnings.
9901         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
9902         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
9903         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
9904         gen_reg_rtx, start_sequence, init_emit): Likewise.
9905         * et-forest.c (et_new_occ, et_new_tree): Likewise.
9906         * except.c (init_eh_for_function, gen_eh_region,
9907         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
9908         arh_to_landing_pad, arh_to_label, add_action_record,
9909         add_call_site, switch_to_exception_section): Likewise.
9910         * expmed.c (synth_mult): Likewise.
9911         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
9912         store_expr): Likewise.
9913         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
9914         Likewise.
9915         * function.c (assign_stack_temp_for_type,
9916         allocate_struct_function, match_asm_constraints_1): Likewise.
9917         * gcov-io.c (gcov_allocate): Likewise.
9918         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
9919         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
9920         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
9921         record_one_set, insert_expr_in_table, insert_set_in_table,
9922         dump_hash_table, compute_hash_table_work, alloc_hash_table,
9923         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
9924         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
9925         -Wcast-qual warnings.
9926
9927 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9928
9929         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
9930         -Wcast-qual warnings.
9931         * gcc.c (process_command): Likewise.
9932         * genattrtab.c (oballoc): Use XOBNEW.
9933         (oballocvec): Define.
9934         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
9935         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
9936         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
9937         -Wc++-compat and/or -Wcast-qual warnings.
9938         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
9939         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
9940         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
9941         gen_presence_absence_set, gen_automaton, gen_regexp_el,
9942         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
9943         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
9944         add_excls, process_presence_absence_names,
9945         process_presence_absence_patterns, add_presence_absence,
9946         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
9947         get_free_state, add_arc, get_free_automata_list_el,
9948         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
9949         transform_3, cache_presence, create_ainsns, create_automata,
9950         create_state_ainsn_table, dfa_insn_code_enlarge,
9951         output_trans_func, output_min_issue_delay_func,
9952         output_dead_lock_func, output_reset_func,
9953         output_get_cpu_unit_code_func, output_dfa_start_func,
9954         expand_automata): Likewise.
9955         * genextract.c (gen_insn): Likewise.
9956         * gengtype-lex.l: Likewise.
9957         * gengtype.c (read_input_list, adjust_field_type,
9958         process_gc_options): Likewise.
9959         * genoutput.c (note_constraint): Likewise.
9960         * genpreds.c (mangle, add_constraint): Likewise.
9961         * genrecog.c (process_define_predicate, new_decision,
9962         add_to_sequence): Likewise.
9963         * gensupport.c (record_insn_name): Likewise.
9964
9965 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9966
9967         * config/i386/driver-i386.c (detect_caches_amd,
9968         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
9969         and/or -Wcast-qual warnings.
9970         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
9971         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
9972         gt_pch_save): Likewise.
9973         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
9974         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
9975         * global.c (compute_regsets): Likewise.
9976         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
9977         finish_graph_dump_file): Likewise.
9978         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
9979         unlink_bb_notes): Likewise.
9980         * integrate.c (get_hard_reg_initial_val): Likewise.
9981         * ipa-prop.c (ipa_push_func_to_list): Likewise.
9982         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
9983         * local-alloc.c (update_equiv_regs): Likewise.
9984         * loop-invariant.c (check_invariant_table_size,
9985         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
9986         Likewise.
9987         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
9988         altered_reg_used, mark_altered): Likewise.
9989         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
9990         insert_var_expansion_initialization,
9991         combine_var_copies_in_loop_exit, apply_opt_in_copies,
9992         release_var_copies): Likewise.
9993         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
9994         analyze_matrix_decl, add_allocation_site, analyze_transpose,
9995         analyze_accesses_for_phi_node, check_var_notmodified_p,
9996         check_allocation_function, find_sites_in_func,
9997         record_all_accesses_in_func, transform_access_sites,
9998         transform_allocation_sites): Likewise.
9999         * omp-low.c (new_omp_region, create_omp_child_function_name,
10000         check_omp_nesting_restrictions, check_combined_parallel,
10001         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
10002         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
10003         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
10004         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
10005         Likewise.
10006         * opts-common.c (prune_options): Likewise.
10007         * opts.c (add_input_filename, print_filtered_help,
10008         get_option_state): Likewise.
10009         * params.c (add_params): Likewise.
10010         * passes.c (set_pass_for_id, next_pass_1,
10011         do_per_function_toporder, pass_fini_dump_file): Likewise.
10012         * postreload.c (reload_cse_simplify_operands): Likewise.
10013         * predict.c (tree_predicted_by_p, tree_predict_edge,
10014         clear_bb_predictions, combine_predictions_for_bb): Likewise.
10015
10016 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10017
10018         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
10019         warnings.
10020         * recog.c (check_asm_operands, validate_change_1): Likewise.
10021         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
10022         subst_asm_stack_regs): Likewise.
10023         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
10024         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
10025         * regmove.c (reg_is_remote_constant_p): Likewise.
10026         * regrename.c (regrename_optimize, scan_rtx_reg,
10027         kill_clobbered_value, kill_set_value, kill_autoinc_value):
10028         Likewise.
10029         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
10030         regstat_compute_calls_crossed): Likewise.
10031         * reload1.c (init_reload, new_insn_chain,
10032         has_nonexceptional_receiver, reload, copy_reloads,
10033         calculate_needs_all_insns, init_elim_table): Likewise.
10034         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
10035         * rtl.c (shallow_copy_rtx_stat): Likewise.
10036         * rtlanal.c (parms_set): Likewise.
10037         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
10038         sbitmap_resize, sbitmap_vector_alloc): Likewise.
10039         * sched-ebb.c (earliest_block_with_similiar_load,
10040         add_deps_for_risky_insns): Likewise.
10041         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
10042         schedule_region): Likewise.
10043         * see.c (eq_descriptor_pre_extension,
10044         hash_descriptor_pre_extension, hash_del_pre_extension,
10045         eq_descriptor_properties, hash_descriptor_properties,
10046         hash_del_properties, see_seek_pre_extension_expr,
10047         see_initialize_data_structures, see_print_register_properties,
10048         see_print_pre_extension_expr, see_delete_merged_def_extension,
10049         see_delete_unmerged_def_extension, see_emit_use_extension,
10050         see_pre_delete_extension, see_map_extension, see_commit_changes,
10051         see_analyze_merged_def_local_prop,
10052         see_analyze_merged_def_local_prop,
10053         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
10054         see_set_prop_merged_def, see_set_prop_unmerged_def,
10055         see_set_prop_unmerged_use, see_print_one_extension,
10056         see_merge_one_use_extension, see_merge_one_def_extension,
10057         see_store_reference_and_extension, see_update_uses_relevancy,
10058         see_update_defs_relevancy): Likewise.
10059         * statistics.c (hash_statistics_hash, hash_statistics_eq,
10060         hash_statistics_free, curr_statistics_hash): Likewise.
10061         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
10062         expand_asm_operands, expand_return, case_bit_test_cmp,
10063         expand_case): Likewise.
10064         * stor-layout.c (start_record_layout): Likewise.
10065         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
10066         gt_pch_save_stringpool): Likewise.
10067         * tree-data-ref.c (hash_stmt_vertex_info,
10068         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
10069         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
10070
10071 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
10072
10073         PR target/36627
10074         * config/i386/i386.md : Change constraints of HImode and QImode
10075         immediate operands from "i" to "n".  Change SImode "ni" constraint to
10076         "i" and SImode "rmi" constraint to "g".  Remove all constraints
10077         from const0_operand and const1_operand predicated operands.
10078         (i): Change QImode and HImode attribute from "i" to "n".
10079         (*subqi_2): Change HImode operands to QImode.
10080         (*subqi_3): Ditto.
10081
10082 2008-06-25  Olivier Hainque  <hainque@adacore.com>
10083
10084         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
10085         sed substitutions.
10086
10087 2008-06-25  Richard Guenther  <rguenther@suse.de>
10088
10089         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
10090         not overflow the result type.
10091
10092 2008-06-25  Richard Guenther  <rguenther@suse.de>
10093
10094         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
10095         (vn_lookup): Likewise.
10096
10097 2008-06-25  Richard Guenther  <rguenther@suse.de>
10098
10099         PR tree-optimization/35518
10100         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
10101         * tree-sra.c (instantiate_element): Use fold_build3 to build
10102         BIT_FIELD_REFs.
10103         (try_instantiate_multiple_fields): Likewise.
10104
10105 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10106
10107         * config/rs6000/rs6000.md: Change all string instruction's clobber to
10108         be early clobbers.
10109
10110 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10111
10112         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
10113         use_backchain_to_restore_sp to true
10114         if the offset of the link register save area would go over the 32k - 1
10115         offset limit of the load
10116         instructions.
10117
10118 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
10119
10120         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
10121         anchor for the type-punning blurb.  Cross-reference "Structures
10122         unions enumerations and bit-fields implementation".  Provide a
10123         cast-through-pointer example.  Make final sentence self-contained.
10124         * doc/implement-c.texi (Structures unions enumerations and
10125         bit-fields implementation): Cross-reference the type-punning blurb
10126         in the -fstrict-aliasing documentation.
10127
10128 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10129
10130         PR middle-end/36594
10131         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
10132         the memory instead of the memory itself for the save area.
10133
10134 2008-06-24  Olivier Hainque  <hainque@adacore.com>
10135             Nicolas Roche  <roche@adacore.com>
10136
10137         * gengtype.c (srcdir_len): size_t instead of int.
10138         (get_file_realbasename): New function.  For F a filename, the real
10139         basename of F, with all the path components stripped.
10140         (get_file_srcdir_relative_path): New function.  For F a filename, the
10141         relative path to F from $(srcdir).
10142         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
10143         get_file_realbasename.  Adjust the head comment.
10144         (get_prefix_langdir_index): New function. For F a filename, return the
10145         lang_dir_names[] relative index of the language directory that is
10146         a prefix in F.
10147         (get_file_langdir): For F a filename, return the name of the language
10148         directory where F is located.
10149         (get_file_gtfilename): New function. The gt- output file name for an
10150         input filename F.
10151         (get_output_file_with_visibility): Replace in-line computations with
10152         uses of get_file_gtfilename and get_prefix_langdir_index.
10153         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
10154
10155 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
10156
10157         PR tree-optimization/36504
10158         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
10159         references without base address.
10160
10161 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
10162
10163         PR middle-end/36584
10164         * calls.c (expand_call): Increase alignment for recursive functions.
10165
10166 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
10167
10168         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
10169         (TARGET_FUNCTION_VALUE): New define.
10170         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
10171         * config/avr/avr.h (FUNCTION_VALUE): Remove.
10172
10173 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
10174
10175         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
10176         (fmod<mode>3): Ditto.
10177         (remainderxf3): Ditto.
10178         (remainder<mode>3): Ditto.
10179
10180 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
10181
10182         PR target/36533
10183         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
10184         REG is a hard register.
10185
10186         PR tree-optimization/36508
10187         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
10188         499, don't check it at all in release compilers.
10189
10190 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
10191
10192         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
10193         together with SSE_TARGET_MATH to disable insn pattern.
10194         (*fop_<MODEF:mode>_2_i387): Ditto.
10195         (*fop_<MODEF:mode>_3_i387): Ditto.
10196
10197 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
10198
10199         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
10200
10201 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
10202
10203         PR middle-end/34906
10204         * gimplify.c (gimplify_asm_expr): Check the return code of
10205         parse_output_constraint call, set function return and is_inout
10206         value if it failed.
10207
10208 2008-06-22  Ian Lance Taylor  <iant@google.com>
10209
10210         * c-lex.c (narrowest_unsigned_type): Change itk to int.
10211         (narrowest_signed_type): Likewise.
10212         * c-typeck.c (c_common_type): Change local variable mclass to enum
10213         mode_class, twice.
10214         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
10215         tcc_comparison, not the tree code itself.
10216         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
10217         (c_expand_expr): Cast modifier to enum expand_modifier.
10218         * c-common.h (C_RID_CODE): Add casts.
10219         (C_SET_RID_CODE): Define.
10220         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
10221         (c_lex_one_token): Add cast to avoid warning.
10222         (c_parser_objc_type_name): Rename local typename to type_name.
10223         (check_no_duplicate_clause): Change code parameter to enum
10224         omp_clause_code.
10225         (c_parser_omp_var_list_parens): Change kind parameter to enum
10226         omp_clause_code.
10227         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
10228         c_parser_omp_list_var_parens.
10229         (c_parser_omp_threadprivate): Likewise.
10230         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
10231         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
10232         * c-format.c (NO_FMT): Define.
10233         (printf_length_specs): Use NO_FMT.
10234         (asm_fprintf_length_specs): Likewise.
10235         (gcc_diag_length_specs): Likewise.
10236         (scanf_length_specs): Likewise.
10237         (strfmon_length_specs): Likewise.
10238         (gcc_gfc_length_specs): Likewise.
10239         (printf_flag_specs): Change 0 to STD_C89.
10240         (asm_fprintf_flag_specs): Likewise.
10241         (gcc_diag_flag_specs): Likewise.
10242         (gcc_cxxdiag_flag_specs): Likewise.
10243         (scanf_flag_specs): Likewise.
10244         (strftime_flag_specs): Likewise.
10245         (strfmon_flag_specs): Likewise.
10246         (print_char_table): Likewise.
10247         (asm_fprintf_char_table): Likewise.
10248         (gcc_diag_char_table): Likewise.
10249         (gcc_tdiag_char_table): Likewise.
10250         (gcc_cdiag_char_table): Likewise.
10251         (gcc_cxxdiag_char_table): Likewise.
10252         (gcc_gfc_char_table): Likewise.
10253         (scan_char_table): Likewise.
10254         (time_char_table): Likewis.
10255         (monetary_char_table): Likewise.
10256         * c-format.h (BADLEN): Likewise.
10257
10258 2008-06-21  Ian Lance Taylor  <iant@google.com>
10259
10260         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
10261         Define END_OF_BASE_TREE_CODES around inclusion.
10262         * tree.c (tree_code_type): New global array.
10263         (tree_code_length, tree_code_name): Likewise.
10264         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
10265         $(lang_tree_files).
10266         (all-tree.def, s-alltree): New targets.
10267         (gencheck.h, s-gencheck): Remove.
10268         (tree.o): Depend upon all-tree.def.
10269         (build/gencheck.o): Remove gencheck.h dependency.
10270         (mostlyclean): Don't remove gencheck.h.
10271         * c-common.h (enum c_tree_code): Remove.
10272         * c-lang.c (tree_code_type): Remove.
10273         (tree_code_length, tree_code_name): Remove.
10274         * gencheck.c (tree_codes): Include all-tree.def, rather than
10275         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
10276         after it is used.
10277         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
10278         than tree.def.
10279         * cp/cp-tree.h (enum cplus_tree_code): Remove.
10280         (operator_name_info): Size to MAX_TREE_CODES.
10281         (assignment_operator_name_info): Likewise.
10282         * cp/cp-lang.c (tree_code_type): Remove.
10283         (tree_code_length, tree_code_name): Remove.
10284         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
10285         (assignment_operator_name_info): Likewise.
10286         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
10287         MAX_TREE_CODES.
10288         * cp/mangle.c (write_expression): Likewise.
10289         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
10290         * fortran/f95-lang.c (tree_code_type): Remove.
10291         (tree_code_length, tree_code_name): Remove.
10292         * java/java-tree.h (enum java_tree_code): Remove.
10293         * java/lang.c (tree_code_type): Remove.
10294         (tree_code_length, tree_code_name): Remove.
10295         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
10296         * objc/objc-act.h (enum objc_tree_code): Remove.
10297         * objc/objc-lang.c (tree_code_type): Remove.
10298         (tree_code_length, tree_code_name): Remove.
10299         * objcp/objcp-lang.c (tree_code_type): Remove.
10300         (tree_code_length, tree_code_name): Remove.
10301         * ada/ada-tree.h (enum gnat_tree_code): Remove.
10302         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
10303         * ada/misc.c (tree_code_type): Remove.
10304         (tree_code_length, tree_code_name): Remove.
10305
10306 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
10307
10308         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
10309         the grand_bitmap_obstack.
10310
10311 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10312
10313         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
10314         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
10315         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
10316         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
10317         move_stmt_r, new_label_mapper): Likewise.
10318         * tree-complex.c (cvc_lookup): Likewise.
10319         * tree-dfa.c (create_function_ann): Likewise.
10320         * tree-dump.c (dump_register): Likewise.
10321         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
10322         find_phi_replacement_condition): Likewise.
10323         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
10324         tree_function_versioning): Likewise.
10325         * tree-into-ssa.c (cmp_dfsnum): Likewise.
10326         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
10327         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
10328         get_nonlocal_debug_decl, convert_nonlocal_reference,
10329         convert_nonlocal_omp_clauses, get_local_debug_decl,
10330         convert_local_reference, convert_local_omp_clauses,
10331         convert_nl_goto_reference, convert_nl_goto_receiver,
10332         convert_tramp_reference, convert_call_expr): Likewise.
10333         * tree-outof-ssa.c (contains_tree_r): Likewise.
10334         * tree-parloops.c (reduction_phi, initialize_reductions,
10335         eliminate_local_variables_1, add_field_for_reduction,
10336         add_field_for_name, create_phi_for_local_result,
10337         create_call_for_reduction_1, create_loads_for_reductions,
10338         create_stores_for_reduction, create_loads_and_stores_for_name):
10339         Likewise.
10340         * tree-phinodes.c (allocate_phi_node): Likewise.
10341         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
10342         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
10343         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
10344         * tree-ssa-coalesce.c (compare_pairs): Likewise.
10345         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
10346         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
10347         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
10348         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
10349         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
10350         vn_nary_op_insert): Likewise.
10351         * tree-ssa.c (redirect_edge_var_map_add,
10352         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
10353         * tree-vectorizer.c (vectorize_loops): Likewise.
10354         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
10355         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
10356         tree_cons_stat, build1_stat, build_variant_type_copy,
10357         decl_init_priority_lookup, decl_fini_priority_lookup,
10358         decl_priority_info, decl_restrict_base_lookup,
10359         decl_restrict_base_insert, decl_debug_expr_lookup,
10360         decl_debug_expr_insert, decl_value_expr_lookup,
10361         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
10362         type_hash_add, get_file_function_name, tree_check_failed,
10363         tree_not_check_failed, tree_range_check_failed,
10364         omp_clause_range_check_failed, build_omp_clause,
10365         build_vl_exp_stat): Likewise.
10366         * value-prof.c (gimple_histogram_value,
10367         gimple_duplicate_stmt_histograms): Likewise.
10368         * var-tracking.c (attrs_list_insert, attrs_list_copy,
10369         unshare_variable, variable_union_info_cmp_pos, variable_union,
10370         dataflow_set_different_1, dataflow_set_different_2,
10371         vt_find_locations, variable_was_changed, set_variable_part,
10372         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
10373         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
10374         section_entry_hash, object_block_entry_eq,
10375         object_block_entry_hash, create_block_symbol,
10376         initialize_cold_section_name, default_function_rodata_section,
10377         strip_reg_name, set_user_assembler_name, const_desc_eq,
10378         build_constant_desc, output_constant_def, lookup_constant_def,
10379         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
10380         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
10381         default_internal_label): Likewise.
10382         * varray.c (varray_init, varray_grow): Likewise.
10383         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
10384
10385 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
10386
10387         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
10388         operators for "test" insn.  Macroize insn using SWI mode macro.
10389         (*jcc_fused_2): Ditto.
10390         (*jcc_fused_3): Macroize insn using SWI mode macro.
10391         (*jcc_fused_4): Ditto.
10392
10393 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
10394
10395         * tree-ssa-pre.c: Fix typo in comment.
10396         (init_antic, fini_antic): Add explicit funtions for
10397         initializing and deinitializing ANTIC and AVAIL sets.
10398         (create_expression_by_pieces): Fix typo in comment.
10399         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
10400         (execute_pre): Eventually dump details about ANTIC_IN.
10401
10402 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10403
10404         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
10405         * gcc.c (translate_options, init_spec, store_arg, read_specs,
10406         add_to_obstack, file_at_path, find_a_file, execute,
10407         add_preprocessor_option, add_assembler_option, add_linker_option,
10408         process_command, insert_wrapper, do_option_spec, do_self_spec,
10409         spec_path, do_spec_1, is_directory, main, used_arg,
10410         getenv_spec_function): Likewise.
10411         * tlink.c (symbol_hash_lookup, file_hash_lookup,
10412         demangled_hash_lookup, symbol_push, file_push, frob_extension):
10413         Likewise.
10414
10415 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
10416
10417         * doc/rtl.texi: Updated subreg section.
10418
10419 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
10420
10421         PR c++/36523
10422         * cgraphunit.c (cgraph_process_new_functions): Don't clear
10423         node->needed and node->reachable.
10424         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
10425         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
10426         (expand_task_call): Don't call expand_task_copyfn.
10427         (expand_task_copyfn): Renamed to...
10428         (finalize_task_copyfn): ... this.
10429
10430 2008-06-19  Jan Hubicka  <jh@suse.cz>
10431
10432         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
10433         clobbering framepointer.
10434
10435 2008-06-19  Jan Hubicka  <jh@suse.cz>
10436
10437         * tree-optimize.c (execute_early_local_optimizations): Set
10438         cgraph_state only at first invocation.
10439
10440 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10441
10442         * system.h (-Wc++-compat): Activate as a warning, no an error.
10443
10444 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
10445
10446         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
10447         instead of "#" in insn asm template.
10448         (*jcc_fused_2): Ditto.
10449
10450 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
10451
10452         * config/i386/i386.h (ix86_tune_indices)
10453         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
10454         (TARGET_FUSE_CMP_AND_BRANCH): New define.
10455         * config/i386/i386.md (*jcc_fused_1): New insn pattern
10456         (*jcc_fused_2): Ditto.
10457         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
10458         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
10459         (print operand): Handle 'E' and 'e' code.
10460
10461 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
10462
10463         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
10464         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10465         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10466
10467 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
10468
10469         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
10470         node->decl.
10471         (cgraph_expand_function): Use local copy of decl.
10472         (cgraph_expand_all_functions): Remove redundant initialization of
10473         order_pos.
10474         (cgraph_optimize): Reword internal_error message.
10475
10476 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
10477
10478         * arm-protos.h (arm_return_in_memory): Remove public
10479         arm_return_in_memory() prototype.
10480         * arm.c (arm_return_in_memory): Add static prototype, add target
10481         hook macro, change definition and comments.
10482         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
10483
10484 2008-06-19  Ben Elliston  <bje@au.ibm.com>
10485
10486         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
10487         real.c: Remove references to IEEE 754R.
10488         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
10489         * doc/libgcc.texi (Decimal float library routines): Likewise.
10490
10491 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10492
10493         * targhooks.h (struct gcc_target): New member unwind_word_mode.
10494         (default_unwind_word_mode): Add prototype.
10495         * targhooks.c (default_unwind_word_mode): New function.
10496         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
10497         instead of word_mode.
10498         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
10499         (TARGET_INITIALIZER): Use it.
10500
10501         * c-common.c (handle_mode_attribute): Support "unwind_word"
10502         mode attribute.
10503         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
10504
10505         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
10506         word_mode to access SjLj_Function_Context member "data".
10507         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
10508         conversion from targetm.eh_return_filter_mode () to
10509         targetm.unwind_word_mode () if they differ.
10510
10511         * builtin-types.def (BT_UNWINDWORD): New primitive type.
10512         (BT_FN_UNWINDWORD_PTR): New function type.
10513         (BT_FN_WORD_PTR): Remove.
10514         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
10515         * except.c (expand_builtin_extend_pointer): Convert pointer to
10516         targetm.unwind_word_mode () instead of word_mode.
10517
10518         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
10519         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
10520         (spu_unwind_word_mode): New function.
10521         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
10522         (TARGET_UNWIND_WORD_MODE): Define.
10523         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
10524
10525 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10526
10527         * config/spu/spu.c (reg_align): Remove.
10528         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
10529         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
10530         (spu_split_store): Likewise.
10531
10532 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
10533
10534         * gcc/tree-vn.c: Fix typo in comment.
10535
10536 2008-06-18  Jan Hubicka  <jh@suse.cz>
10537
10538         * cgraphunit.c (cgraph_optimize): Output debug info when doing
10539         toplevel reorder too.
10540
10541 2008-06-18  Jan Hubicka  <jh@suse.cz>
10542
10543         * c-opts.c (c_common_post_options): PCH is not compatible with
10544         no-unit-at-a-time.
10545         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
10546         -fno-toplevel-reorder by default now.
10547
10548 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10549
10550         PR documentation/30739
10551         * doc/install.texi (Prerequisites): Document dependency on awk.
10552
10553 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
10554             Ian Lance Taylor  <iant@google.com>
10555
10556         PR rtl-optimization/35604
10557         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
10558         only want to change jump destinations, not eventual label comparisons.
10559
10560 2008-06-16  Jan Hubicka  <jh@suse.cz>
10561
10562         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
10563         syntax errors.
10564         (cgraph_analyze_function): Likewise.
10565
10566 2008-06-16  Jan Hubicka  <jh@suse.cz>
10567
10568         * cgraph.h (cgraph_mark_if_needed): New function.
10569         * cgraphunit.c (cgraph_mark_if_needed): New function.
10570         * c-decl.c (duplicate_decl): Use it.
10571
10572 2008-06-16  Jan Hubicka  <jh@suse.cz>
10573
10574         * cgraph.c (cgraph_add_new_function): When in expansion state, do
10575         lowering.
10576
10577 2008-06-16  Jan Hubicka  <jh@suse.cz>
10578
10579         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
10580
10581 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
10582             Kazu Hirata  <kazu@codesourcery.com>
10583             Maxim Kuvyrkov  <maxim@codesourcery.com
10584
10585         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
10586         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
10587         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
10588         EXTRA_SPEC_FUNCTIONS.
10589         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
10590         (DRIVER_SELF_SPECS): Adjust.
10591         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
10592         * config/mips/st.h, config/mips/t-st: New.
10593         * config/mips/driver-native.c, config/mips/x-native: New.
10594         * doc/invoke.texi (MIPS): Document 'native' value for -march and
10595         -mtune options.
10596
10597 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
10598
10599         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
10600         from it.
10601         (ISA_HAS_FP_CONDMOVE): New macro.
10602         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
10603         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
10604         (ISA_HAS_NMADD3_NMSUB3): New macro.
10605         * config/mips/mips.c (mips_rtx_costs): Update.
10606         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
10607         compiling for ST Loongson 2E/2F.
10608         (madd<mode>): Rename to madd4<mode>.  Update.
10609         (madd3<mode>): New pattern.
10610         (msub<mode>): Rename to msub4<mode>.  Update.
10611         (msub3<mode>): New pattern.
10612         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
10613         (nmadd3<mode>): New pattern.
10614         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
10615         (nmadd3<mode>_fastmath): New pattern.
10616         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
10617         (nmsub3<mode>): New pattern.
10618         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
10619         (nmsub3<mode>_fastmath): New pattern.
10620         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
10621
10622 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
10623
10624         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
10625         (DF_REF_INSN_INFO): New.
10626         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
10627         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
10628         with a NULL DF_REF_INSN_INFO.
10629         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
10630         DF_INSN_SET.
10631         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
10632         DF_INSN_INFO_EQ_USES): New.
10633         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
10634         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
10635         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
10636         * df-core.c: Update comment for above changes.
10637         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
10638         DF_INSN_UID_* macros.
10639         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
10640         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
10641         insn rtx.  Update all callers.
10642         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
10643         df_ref_create_structure, df_insn_refs_collect): Likewise.
10644         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
10645         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
10646         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
10647         macros to access the insn refs.
10648         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
10649         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
10650         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
10651         for accessing the refs.
10652         (try_fwprop_subst): Likewise.
10653         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
10654         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
10655         for accessing the refs.
10656         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
10657         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
10658         to look at the insn refs.
10659         (record_uses): Likewise.
10660         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
10661         function anymore.
10662         (mark_artificial_uses): Don't mark_insn for artificial refs.
10663         (mark_reg_rependencies): Likewise.
10664
10665         * doc/rtl.texi: Remove documentation of ADDRESSOF.
10666
10667 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10668
10669         * configure: Regenerate.
10670
10671 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
10672
10673         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
10674         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10675         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10676
10677 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
10678
10679         * config/avr/avr.c (avr_mcu_t): Add attiny167.
10680         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10681         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10682
10683 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
10684
10685         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
10686         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10687         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10688
10689 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
10690
10691         * tree-ssa-sccvn.c: Fix format of comments.
10692
10693 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
10694
10695         * cgraph.c: Remove unneeded forward declarations of eq_node()
10696         and hash_node().
10697
10698 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
10699
10700         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
10701         REG_RETVAL notes.
10702         (see_update_relevancy): Likewise.
10703         * fwprop.c (try_fwprop_subst): Likewise.
10704         * rtlanal.c (noop_move_p): Likewise.
10705         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
10706         notes to non-existing libcall blocks.
10707         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
10708         Remove orig_set.
10709         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
10710         (dead_libcall_p): Remove.
10711         (delete_trivially_dead_insns): Don't use it.
10712         * web.c (union_defs): Remove comment about keeping nops.
10713         * gcse.c (hash_scan_insn): Don't take libcall pointers.
10714         (compute_hash_table_work): Don't track libcall notes.
10715         (do_local_cprop): Don't take libcall pointers.  Don't update
10716         libcall notes.
10717         (adjust_libcall_notes): Deleted.
10718         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
10719         ever have existed in the first place).
10720         (replace_store_insn): Don't try to remove libcall notes.
10721         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
10722         (resolve_reg_notes): Don't call them.
10723         (resolve_simple_move): Likewise.
10724         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
10725         Don't remove REG_RETVAL notes.
10726         * emit-rtl.c (try_split): Don't update libcall notes.
10727         (emit_copy_of_insn_after): Dito.
10728         * cselib.c (cselib_current_insn_in_libcall): Remove.
10729         (cselib_process_insn): Don't set/clear it.
10730         (new_elt_loc_list): Don't record it.
10731         (cselib_init): Don't initialize it.
10732         * cselib.c (struct elt_loc_list): Remove in_libcall field.
10733         * loop-invariant.c (find_invariant_insn): Don't look for libcall
10734         notes.
10735         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
10736         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
10737         (init_deps): Don't initialize it.
10738         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
10739         * combine.c (delete_noop_moves): Don't update libcall notes.
10740         (can_combine_p): Remove now pointless #if 0 block.
10741         (try_combine): Remove another obsolete #if 0 block.
10742         (distribute_notes): Don't distribute libcall notes.
10743         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
10744         * dce.c (libcall_dead_p): Remove.
10745         (delete_unmarked_insns): Don't handle libcall blocks.
10746         (preserve_libcall_for_dce): Remove.
10747         (prescan_insns_for_dce): Don't special-case libcall block insns.
10748         * reload1 (reload): Don't handle libcall notes.
10749         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
10750         documentation.
10751
10752 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
10753
10754         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
10755         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10756         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10757
10758 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
10759
10760         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
10761         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10762         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10763
10764 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10765
10766         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
10767
10768 2008-06-16  Ira Rosen  <irar@il.ibm.com>
10769
10770         PR tree-optimization/36493
10771         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
10772         the arguments list. Use VECTYPE to create vector pointer.
10773         (vectorizable_store): Fail if accesses through a pointer to vectype
10774         do not alias the original memory reference operands.
10775         Call vect_create_data_ref_ptr without the removed argument.
10776         (vectorizable_load): Likewise.
10777         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
10778         removed argument.
10779
10780 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
10781
10782         PR target/36336
10783         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
10784         reg_equiv_constant.
10785
10786 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
10787
10788         * config/mips/loongson2ef.md: New file.
10789         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
10790         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
10791         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
10792         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
10793         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
10794         and loongson_2f.
10795         (loongson2ef.md): New include.
10796         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
10797         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
10798         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
10799         (loongson_gt_<mode>, loongson_extract_halfword)
10800         (loongson_insert_halfword_0, loongson_insert_halfword_2)
10801         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
10802         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
10803         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
10804         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
10805         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
10806         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
10807         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
10808         (vec_interleave_low<mode>): Define type attribute.
10809         * config/mips/mips.c (mips_ls2): New static variable.
10810         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
10811         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
10812         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
10813         Implement target scheduling hooks.
10814         (mips_multipass_dfa_lookahead): Update to handle tuning for
10815         Loongson 2E/2F.
10816         (mips_sched_init): Initialize data for Loongson scheduling.
10817         (mips_ls2_variable_issue): New static function.
10818         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
10819         Add sanity check.
10820         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
10821         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
10822         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
10823         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
10824         Handle ST Loongson 2E/2F cores.
10825         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
10826
10827 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10828
10829         * omp-low.c (extract_omp_for_data): Fix comment typo.
10830         * c.opt: Fix typo.
10831
10832 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10833
10834         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
10835         FIXME note about gcc/config.guess.
10836         * doc/options.texi (Option file format): Remove non-ASCII bytes.
10837         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
10838         * doc/cppopts.texi: Likewise.
10839         * doc/extend.texi: Likewise.
10840         * doc/gcc.texi: Likewise.
10841         * doc/gccint.texi: Likewise.
10842         * doc/gcov.texi: Likewise.
10843         * doc/gty.texi: Likewise.
10844         * doc/hostconfig.texi: Likewise.
10845         * doc/install.texi: Likewise.
10846         * doc/invoke.texi: Likewise.
10847         * doc/loop.texi: Likewise.
10848         * doc/makefile.texi: Likewise.
10849         * doc/md.texi: Likewise.
10850         * doc/passes.texi: Likewise.
10851         * doc/tm.texi: Likewise.
10852         * doc/tree-ssa.texi: Likewise.
10853         * doc/trouble.texi: Likewise.
10854
10855 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
10856             Nathan Sidwell  <nathan@codesourcery.com>
10857             Maxim Kuvyrkov  <maxim@codesourcery.com>
10858             Richard Sandiford  <rdsandiford@googlemail.com>
10859
10860         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
10861         * config/mips/mips-protos.h (mips_expand_vector_init): New.
10862         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
10863         builtins.
10864         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
10865         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
10866         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
10867         V8QImode cases.
10868         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
10869         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
10870         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
10871         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
10872         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
10873         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
10874         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
10875         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
10876         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
10877         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
10878         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
10879         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
10880         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
10881         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
10882         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
10883         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
10884         (mips_builtins): Add Loongson builtins.
10885         (mips_loongson_2ef_bdesc): New.
10886         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
10887         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
10888         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
10889         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
10890         New.
10891         (mips_expand_vector_init): New.
10892         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
10893         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
10894         if appropriate.
10895         * config/mips/mips.md: Add unspec numbers for Loongson
10896         builtins.  Include loongson.md.
10897         (MOVE64): Include Loongson vector modes.
10898         (SPLITF): Include Loongson vector modes.
10899         (HALFMODE): Handle Loongson vector modes.
10900         * config/mips/loongson.md: New.
10901         * config/mips/loongson.h: New.
10902         * config.gcc: Add loongson.h header for mips*-*-* targets.
10903         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
10904
10905 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
10906
10907         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
10908         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
10909         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
10910         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
10911         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
10912         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
10913         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
10914         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
10915         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
10916         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
10917         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
10918         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
10919         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
10920         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
10921         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
10922         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
10923         Remove use_fixproto=yes.
10924         (ia64*-*-hpux*): Remove comment about using fixproto.
10925         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
10926
10927 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10928
10929         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
10930         library rebuilds.
10931         * configure: Regenerate.
10932
10933 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
10934
10935         PR middle-end/36520
10936         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
10937         before evaluating it.
10938
10939 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
10940
10941         PR c/36507
10942         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
10943         nested inline functions.
10944         (start_decl, start_function): Don't invert DECL_EXTERNAL
10945         for nested inline functions.
10946
10947 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
10948
10949         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
10950         splits that must be made for correctness.
10951
10952 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
10953
10954         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
10955         (AVAIL_NON_MIPS16): Likewise.
10956         (mips_builtin_description): Replace target_flags with a predicate.
10957         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
10958         (dspr2_32): New availability predicates.
10959         (MIPS_BUILTIN): New macro.
10960         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
10961         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
10962         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
10963         Replace the TARGET_FLAGS parameters with AVAIL parameters.
10964         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
10965         (mips_dsp_32only_bdesc): Merge into...
10966         (mips_builtins): ...this new array.
10967         (mips_bdesc_map, mips_bdesc_arrays): Delete.
10968         (mips_init_builtins): Update after above changes.
10969         (mips_expand_builtin_1): Merge into...
10970         (mips_expand_builtin): ...here and update after above changes.
10971
10972 2008-06-12  Paul Brook  <paul@codesourcery.com>
10973
10974         * longlong.h (__arm__): Define count_leading_zeros.
10975         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
10976         (clzsi2, clzdi2): New functions.
10977         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
10978         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
10979         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
10980         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
10981         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
10982         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
10983         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
10984         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
10985         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
10986         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
10987
10988 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
10989
10990         * config/m68k/m68k.c (m68k_tune_flags): New.
10991         (override_options): Compute m68k_tune_flags.
10992         (MULL_COST, MULW_COST): Update for various variants of CFV2.
10993         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
10994
10995 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
10996
10997         PR middle-end/36506
10998         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
10999
11000 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
11001
11002         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
11003         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
11004
11005 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
11006
11007         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
11008         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
11009
11010 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
11011
11012         PR middle-end/36506
11013         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
11014         reductions.
11015
11016 2008-06-12  Richard Guenther  <rguenther@suse.de>
11017
11018         PR tree-optimization/36345
11019         * tree-flow.h (struct ptr_info_def): Align escape_mask,
11020         add memory_tag_needed flag.
11021         (may_alias_p): Declare.
11022         * tree-ssa-alias.c (may_alias_p): Export.
11023         (set_initial_properties): Use memory_tag_needed flag.
11024         (update_reference_counts): Likewise.
11025         (reset_alias_info): Reset memory_tag_needed flag.
11026         (create_name_tags): Check memory_tag_needed flag.
11027         (dump_points_to_info_for): Dump it.
11028         * tree-ssa-structalias.c (struct variable_info): Remove
11029         directly_dereferenced flag.
11030         (new_var_info): Do not initialize it.
11031         (process_constraint_1): Do not set it.
11032         (update_alias_info): Set is_dereferenced flag.
11033         (set_uids_in_ptset): Use may_alias_p.
11034         (set_used_smts): Check memory_tag_needed flag.
11035         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
11036         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
11037         memory_tag_needed flag.
11038         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
11039         from broken design.
11040
11041 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
11042
11043         * config/i386/i386.c (ix86_compute_frame_layout): Disable
11044         red zone for w64 abi.
11045         (ix86_expand_prologue): Likewise.
11046         (ix86_force_to_memory): Likewise.
11047         (ix86_free_from_memory): Likewise.
11048
11049 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
11050
11051         PR target/36425
11052         * config/rs6000/rs6000.c (rs6000_override_options): Set
11053         rs6000_isel conditionally to the absence of comand line override.
11054         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
11055         Remove duplicate rs6000_isel setting.
11056         * config/rs6000/eabispe.h: Ditto.
11057
11058 2008-06-11  Richard Guenther  <rguenther@suse.de>
11059
11060         * alias.c (get_alias_set): Use the element alias-set for arrays.
11061         (record_component_aliases): For arrays and vectors do nothing.
11062         * c-common.c (strict_aliasing_warning): Handle the cases
11063         of alias set zero explicitly.
11064         * Makefile.in (dfp.o-warn): Add -Wno-error.
11065
11066 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
11067
11068         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
11069         tune_32 tune_64.
11070         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
11071         tune_32 tune_64 to supported_defaults.  Allow values not
11072         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
11073         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
11074         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
11075         with_cpu_64 to generic for 64-bit-supporting configurations, not
11076         with_cpu.  Remove FIXMEs.
11077         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
11078         --with-arch-64, --with-tune-32, --with-tune-64): Document.
11079         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
11080         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
11081         arch_32 and arch_64.
11082
11083 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
11084             Olivier Hainque  <hainque@adacore.com>
11085
11086         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
11087         Use DECL_SIZE_UNIT to retrieve the size of the field.
11088
11089 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
11090
11091         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
11092         with function calls after declarations.  Lay out
11093         neon_float_type_node before further use.
11094
11095 2008-06-11  Richard Guenther  <rguenther@suse.de>
11096
11097         * tree-flow.h (may_point_to_global_var): Declare.
11098         * tree-ssa-alias.c (may_point_to_global_var): New function.
11099         * tree-ssa-sink.c (is_hidden_global_store): Use it.
11100
11101 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
11102
11103         * configure.ac: Teach that fido supports .debug_line.
11104         * configure: Regenerate.
11105
11106 2008-06-10  Tom Tromey  <tromey@redhat.com>
11107
11108         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
11109         debug hook.
11110
11111 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
11112
11113         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
11114         (encode_decimal64, decode_decimal64, encode_decimal128,
11115         decode_decimal128): Reverse order of 32-bit parts of value if host
11116         and target endianness differ.
11117
11118 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
11119
11120         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
11121         Avoid division by 0.
11122         (tree_mod_pow2_value_transform): Likewise.
11123         (tree_ic_transform): Likewise.
11124         (tree_stringops_transform): Likewise.
11125         (tree_mod_subtract_transform): Likewise.
11126         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
11127         (copy_edges_for_bb): Likewise.
11128         (initialize_cfun): Likewise.
11129
11130 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
11131
11132         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
11133         nonmemory_operand. Add "N" operand constraint.
11134         (*btsi): Ditto.
11135         (*jcc_btdi_mask_rex64): New instruction and split pattern.
11136         (*jcc_btsi_mask): Ditto.
11137         (*jcc_btsi_mask_1): Ditto.
11138
11139 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
11140
11141         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
11142         TYPE_CANONICAL for copied element type.
11143
11144 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
11145
11146         PR target/36473
11147         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
11148         Add m_CORE2 and m_GENERIC.
11149         * config/i386/predicates.md (bt_comparison_operator): New predicate.
11150         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
11151         (*btsi): Ditto.
11152         (*jcc_btdi_rex64): New instruction and split pattern.
11153         (*jcc_btsi): Ditto.
11154         (*jcc_btsi_1): Ditto.
11155         (*btsq): Fix Intel asm dialect operand order.
11156         (*btrq): Ditto.
11157         (*btcq): Ditto.
11158
11159 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
11160
11161         PR middle-end/36447
11162         * simplify-rtx.c (simplify_subreg): Add check for shift count
11163         greater than size.
11164
11165 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
11166
11167         * doc/md.texi: Synchronize with later constraints.md change.
11168         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
11169         with a C implementation.
11170         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
11171         MFLO handling.
11172         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
11173         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
11174         when moving to and from MD_REGNUM.
11175         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
11176         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
11177         Handle byte and halfword moves.
11178         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
11179         separately.
11180         * config/mips/constraints.md (h): Turn into NO_REGS.
11181         (l, x): Update documentation.
11182         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
11183         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
11184         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
11185         (HILO): New mode iterator.
11186         (MOVE128): Add TI.
11187         (any_div): New code iterator.
11188         (u): Extend code attribute to div and udiv.
11189         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
11190         d_operand in the splitters.  Remove redundant CONST_INT checks.
11191         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
11192         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
11193         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
11194         accordingly, using normal moves instead of unspecs to move LO into
11195         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
11196         (<u>mulsidi3): Handle expansion in C code.
11197         (<u>mulsidi3_32bit_internal): Rename to...
11198         (<u>mulsidi3_32bit): ...this.
11199         (<u>mulsidi3_32bit_r4000): Fix insn separator.
11200         (*<u>mulsidi3_64bit): Rename to...
11201         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
11202         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
11203         to set LO and HI to the multiplication result.  Use a normal move
11204         for MFLO and an unspec for MFHI.
11205         (*<u>mulsidi3_64bit_parts): Replace with...
11206         (<u>mulsidi3_64bit_hilo): ...this new instruction.
11207         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
11208         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
11209         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
11210         instead of HI.  Split the instruction into a separate multiplication
11211         and MFHI if !TARGET_FIX_R4000.
11212         (<su>muldi3_highpart): Likewise.
11213         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
11214         and the "=h" clobber.
11215         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
11216         (<u>mulditi3): New expander.
11217         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
11218         (madsi): Remove "=h" clobber.
11219         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
11220         Force the modulus result to be a GPR and split the instruction into
11221         a division followed by an MFHI after reload.
11222         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
11223         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
11224         the MIPS16 HIGH define_split.
11225         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
11226         of acc<->gpr moves to "multi".
11227         (*movdi_64bit): Replace the single "x" alternative with
11228         alternatives for moving into and out of "a".
11229         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
11230         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
11231         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
11232         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
11233         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
11234         (movti): New expander.
11235         (*movti, *movti_mips16): New insns.
11236         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
11237         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
11238         (mthi<GPR:mode>_<HILO:mode>): Likewise.
11239         * config/mips/predicates.md (fpr_operand): Delete.
11240         (d_operand): New predicate.
11241
11242 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
11243
11244         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
11245         failure on some Bourne shells.
11246         (x86_64-*-*): Ditto.
11247
11248 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
11249
11250         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
11251
11252 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
11253
11254         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
11255         (sparc-sun-solaris2*): Likewise.
11256
11257 2008-06-09  Arnaud Charlet  <charlet@adacore.com
11258
11259         * doc/install.texi: Update requirements to build the Ada compiler.
11260
11261 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
11262
11263         * df-scan.c (struct df_scan_problem_data): Remove the
11264         mw_link_pool alloc pool.
11265         (df_scan_free_internal): Don't free it.
11266         (df_scan_alloc): Don't allocate it.
11267         * df.h (struct df_link): Update comment.
11268
11269 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
11270
11271         * except.h: Correct checks for when SJLJ exceptions must be used.
11272
11273 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11274
11275         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
11276         default.
11277
11278 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
11279
11280         PR tree-optimization/36218
11281         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
11282         configure for the build system.
11283         (BUILD_LDFLAGS): Define.
11284         * configure: Regenerate.
11285         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
11286
11287 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
11288
11289         PR target/36424
11290         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
11291         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
11292         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
11293
11294 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
11295
11296         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
11297
11298 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
11299
11300         * config.gcc (Obsolete configurations): Remove list of
11301         configurations.
11302         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
11303         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
11304         targets matched by those patterns.
11305         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
11306         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
11307         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
11308         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
11309         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
11310         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
11311         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
11312         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
11313         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
11314         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
11315         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
11316         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
11317         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
11318         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
11319         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
11320         Make code for Solaris 7 and greater unconditional for Solaris.
11321         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
11322         Remove --with-* handling.
11323         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
11324         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
11325         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
11326         LINK_OS_WINDISS_SPEC): Remove.
11327         * config/rs6000/sysv4.opt (mwindiss): Remove.
11328         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
11329         * configure: Regenerate.
11330         * doc/cpp.texi: Don't mention BeOS.
11331         * doc/extend.texi (interrupt): Don't mention MS1.
11332         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
11333         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
11334         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
11335         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
11336         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
11337         Remove.
11338         * doc/invoke.texi (MT Options): Remove.
11339         (-mwindiss): Remove.
11340         (CRIS Options): Remove cris-axis-aout references.
11341         (HPPA Options): Don't mention hppa1.1-*-pro.
11342         * doc/md.texi: (MorphoTech family): Remove.
11343         * libgcc2.c: Don't handle UWIN.
11344         * config/alpha/t-unicosmk: Remove.
11345         * config/alpha/unicosmk.h: Remove.
11346         * config/arm/kaos-arm.h: Remove.
11347         * config/arm/kaos-strongarm.h: Remove.
11348         * config/arm/strongarm-coff.h: Remove.
11349         * config/arm/strongarm-elf.h: Remove.
11350         * config/arm/strongarm-pe.h: Remove.
11351         * config/arm/t-strongarm-pe: Remove.
11352         * config/arm/t-xscale-coff: Remove.
11353         * config/arm/t-xscale-elf: Remove.
11354         * config/arm/xscale-coff.h: Remove.
11355         * config/arm/xscale-elf.h: Remove.
11356         * config/chorus.h: Remove.
11357         * config/cris/aout.h: Remove.
11358         * config/cris/aout.opt: Remove.
11359         * config/cris/t-aout: Remove.
11360         * config/i386/beos-elf.h: Remove.
11361         * config/i386/kaos-i386.h: Remove.
11362         * config/i386/ptx4-i.h: Remove.
11363         * config/i386/sco5.h: Remove.
11364         * config/i386/sco5.opt: Remove.
11365         * config/i386/sysv4-cpp.h: Remove.
11366         * config/i386/sysv5.h: Remove.
11367         * config/i386/t-beos: Remove.
11368         * config/i386/t-sco5: Remove.
11369         * config/i386/t-uwin: Remove.
11370         * config/i386/uwin.asm: Remove.
11371         * config/i386/uwin.h: Remove.
11372         * config/kaos.h: Remove.
11373         * config/mips/windiss.h: Remove.
11374         * config/mt: Remove directory.
11375         * config/pa/pa-osf.h: Remove.
11376         * config/pa/pa-pro-end.h: Remove.
11377         * config/pa/t-pro: Remove.
11378         * config/ptx4.h: Remove.
11379         * config/rs6000/beos.h: Remove.
11380         * config/rs6000/kaos-ppc.h: Remove.
11381         * config/rs6000/t-beos: Remove.
11382         * config/rs6000/windiss.h: Remove.
11383         * config/sh/kaos-sh.h: Remove.
11384         * config/sol2-6.h: Remove.
11385         * config/sparc/sol26-sld.h: Remove.
11386         * config/sparc/sysv4-only.h: Remove.
11387         * config/vax/bsd.h: Remove.
11388         * config/vax/t-memfuncs: Remove.
11389         * config/vax/ultrix.h: Remove.
11390         * config/vax/vaxv.h: Remove.
11391         * config/windiss.h: Remove.
11392
11393 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
11394
11395         PR rtl-optimization/36438
11396         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
11397         for vector shifts with constant scalar shift operands.
11398
11399 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
11400
11401         * doc/invoke.texi: Document -march=xlr.
11402         * config/mips/xlr.md: New file.
11403         * config/mips/mips.md: Include it.
11404         (cpu): Add "xlr".
11405         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
11406         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
11407         (mips_rtx_cost_data): Likewise.
11408
11409 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
11410
11411         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
11412         PRE_INC and PRE_DEC cases.
11413
11414 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
11415
11416         PR rtl-optimization/36419
11417         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
11418         the emitting jump insn.
11419
11420         PR target/36362
11421         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
11422         is not bool, boolify the whole *expr_p and convert to the desired type.
11423
11424 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
11425
11426         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
11427         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
11428         Add omp_private_outer_ref hook, add another argument to
11429         omp_clause_default_ctor hook.
11430         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
11431         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
11432         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
11433         hook_tree_tree_tree_tree_null.
11434         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
11435         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
11436         * hooks.c (hook_tree_tree_tree_tree_null): New function.
11437         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
11438         * tree.def (OMP_TASK): New tree code.
11439         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
11440         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
11441         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
11442         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
11443         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
11444         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
11445         OMP_CLAUSE_COLLAPSE_EXPR): Define.
11446         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
11447         (OMP_DIRECTIVE_P): Add OMP_TASK.
11448         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
11449         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
11450         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
11451         and OMP_CLAUSE_UNTIED entries.
11452         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
11453         num_ops to 2.
11454         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
11455         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
11456         * tree-pretty-print.c (dump_omp_clause): Handle
11457         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
11458         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
11459         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
11460         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
11461         warning about unsigned iterators.  Change decl/init/cond/incr
11462         arguments to TREE_VECs, check arguments for all collapsed loops.
11463         (c_finish_omp_taskwait): New function.
11464         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
11465         ws_clauses.
11466         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
11467         default_function_array_conversion on init.  Add par_clauses argument.
11468         If decl is present in parallel's lastprivate clause, change it to
11469         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
11470         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
11471         collapse count in clauses.
11472         (c_parser_omp_for, c_parser_omp_parallel): Adjust
11473         c_parser_omp_for_loop callers.
11474         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
11475         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
11476         (c_parser_omp_clause_name): Handle collapse and untied clauses.
11477         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
11478         functions.
11479         (c_parser_omp_clause_schedule): Handle schedule(auto).
11480         Include correct location in the error message.
11481         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
11482         and PRAGMA_OMP_CLAUSE_UNTIED.
11483         (OMP_TASK_CLAUSE_MASK): Define.
11484         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
11485         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
11486         * tree-nested.c (convert_nonlocal_omp_clauses,
11487         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
11488         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
11489         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
11490         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
11491         OMP_CLAUSE_DECL.
11492         (conver_nonlocal_reference, convert_local_reference,
11493         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
11494         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
11495         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
11496         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
11497         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
11498         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
11499         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
11500         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
11501         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
11502         OMP_CLAUSE_UNTIED.
11503         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
11504         * c-common.h (c_finish_omp_taskwait): New prototype.
11505         * gimple-low.c (lower_stmt): Handle OMP_TASK.
11506         * tree-parloops.c (create_parallel_loop): Create 1 entry
11507         vectors for OMP_FOR_{INIT,COND,INCR}.
11508         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
11509         (make_edges): Handle OMP_TASK.
11510         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
11511         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
11512         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
11513         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
11514         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
11515         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
11516         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
11517         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
11518         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
11519         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
11520         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
11521         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
11522         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
11523         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
11524         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
11525         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
11526         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
11527         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
11528         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
11529         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
11530         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
11531         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
11532         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
11533         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
11534         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
11535         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
11536         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
11537         original iterator is present in lastprivate clause or if
11538         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
11539         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
11540         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
11541         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
11542         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
11543         if it is set, lookup var in outer contexts too.  Handle
11544         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
11545         to be implicitly determined firstprivate for task regions.
11546         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
11547         if it is set, lookup var in outer contexts too.  Set
11548         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
11549         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
11550         OMP_CLAUSE_UNTIED.  Take region_type as last argument
11551         instead of in_parallel and in_combined_parallel.
11552         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
11553         Adjust callers.
11554         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
11555         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
11556         (new_omp_context): Set default_kind to
11557         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
11558         (omp_region_type): New enum.
11559         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
11560         fields, add region_type.
11561         (new_omp_context): Take region_type as argument instead of is_parallel
11562         and is_combined_parallel.
11563         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
11564         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
11565         ctx->is_combined_parallel checks.
11566         (gimplify_omp_task): New function.
11567         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
11568         OMP_CLAUSE_UNTIED.
11569         * omp-low.c (extract_omp_for_data): Use schedule(static)
11570         for schedule(auto).  Handle pointer and unsigned iterators.
11571         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
11572         Add loops argument.  Extract data for collapsed OMP_FOR loops.
11573         (expand_parallel_call): Assert sched_kind isn't auto,
11574         map runtime schedule to index 3.
11575         (struct omp_for_data_loop): New type.
11576         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
11577         Add loop, loops, collapse and iter_type fields.
11578         (workshare_safe_to_combine_p): Disallow combined for if
11579         iter_type is unsigned long long.  Don't combine collapse > 1 loops
11580         unless all bounds and steps are constant.  Adjust extract_omp_for_data
11581         caller.
11582         (expand_omp_for_generic): Handle pointer, unsigned and long long
11583         iterators.  Handle collapsed OMP_FOR loops.  Adjust
11584         for struct omp_for_data changes.  If libgomp function doesn't return
11585         boolean_type_node, add comparison of the return value with 0.
11586         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
11587         pointer, unsigned and long long iterators.  Adjust for struct
11588         omp_for_data changes.
11589         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
11590         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
11591         unsigned long long.  Allocate loops array, pass it to
11592         extract_omp_for_data.  For collapse > 1 loops use always
11593         expand_omp_for_generic.
11594         (omp_context): Add sfield_map and srecord_type fields.
11595         (is_task_ctx, lookup_sfield): New functions.
11596         (use_pointer_for_field): Use is_task_ctx helper.  Change first
11597         argument's type from const_tree to tree.  Clarify comment.
11598         In OMP_TASK disallow copy-in/out sharing.
11599         (build_sender_ref): Call lookup_sfield instead of lookup_field.
11600         (install_var_field): Add mask argument.  Populate both record_type
11601         and srecord_type if needed.
11602         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
11603         in srecord_type.
11604         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
11605         and DECL_FIELD_OFFSET.
11606         (scan_sharing_clauses): Adjust install_var_field callers.  For
11607         firstprivate clauses on explicit tasks allocate the var by value in
11608         record_type unconditionally, rather than by reference.
11609         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
11610         Use is_taskreg_ctx instead of is_parallel_ctx.
11611         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
11612         (create_omp_child_function_name): Add task_copy argument, use
11613         *_omp_cpyfn* names if it is true.
11614         (create_omp_child_function): Add task_copy argument, if true create
11615         *_omp_cpyfn* helper function.
11616         (scan_omp_parallel): Adjust create_omp_child_function callers.
11617         Rename parallel_nesting_level to taskreg_nesting_level.
11618         (scan_omp_task): New function.
11619         (lower_rec_input_clauses): Don't run constructors for firstprivate
11620         explicit task vars which are initialized by *_omp_cpyfn*.
11621         Pass outer var ref to omp_clause_default_ctor hook if
11622         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
11623         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
11624         OMP_CLAUSE_REDUCTION_INIT.
11625         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
11626         avoid duplicate setting of fields.  Handle
11627         OMP_CLAUSE_PRIVATE_OUTER_REF.
11628         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
11629         copy-out if TREE_READONLY, only copy-in.
11630         (expand_task_copyfn): New function.
11631         (expand_task_call): New function.
11632         (struct omp_taskcopy_context): New type.
11633         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
11634         New functions.
11635         (lower_omp_parallel): Rename to...
11636         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
11637         Call create_task_copyfn if srecord_type is needed.  Adjust
11638         sender_decl type.
11639         (task_shared_vars): New variable.
11640         (check_omp_nesting_restrictions): Warn if work-sharing,
11641         barrier, master or ordered region is closely nested inside OMP_TASK.
11642         Add warnings for barrier if closely nested inside of work-sharing,
11643         ordered, or master region.
11644         (scan_omp_1): Call check_omp_nesting_restrictions even for
11645         GOMP_barrier calls.  Rename parallel_nesting_level to
11646         taskreg_nesting_level.  Handle OMP_TASK.
11647         (lower_lastprivate_clauses): Even if some lastprivate is found on a
11648         work-sharing construct, continue looking for them on parent parallel
11649         construct.
11650         (lower_omp_for_lastprivate): Add lastprivate clauses
11651         to the beginning of dlist rather than end.  Adjust for struct
11652         omp_for_data changes.
11653         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
11654         not after it.  Handle collapsed OMP_FOR loops, adjust for
11655         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
11656         (get_ws_args_for): Adjust extract_omp_for_data caller.
11657         (scan_omp_for): Handle collapsed OMP_FOR
11658         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
11659         (lower_omp_single_simple): If libgomp function doesn't return
11660         boolean_type_node, add comparison of the return value with 0.
11661         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
11662         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
11663         (parallel_nesting_level): Rename to...
11664         (taskreg_nesting_level): ... this.
11665         (is_taskreg_ctx): New function.
11666         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
11667         of is_parallel_ctx.
11668         (execute_lower_omp): Rename parallel_nesting_level to
11669         taskreg_nesting_level.
11670         (expand_omp_parallel): Rename to...
11671         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
11672         Call omp_task_call for OMP_TASK regions.
11673         (expand_omp): Adjust caller, handle OMP_TASK.
11674         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
11675
11676         * bitmap.c (bitmap_default_obstack_depth): New variable.
11677         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
11678         if argument is NULL and bitmap_default_obstack is already initialized.
11679         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
11680         at the end.
11681         * matrix-reorg.c (matrix_reorg): Likewise.
11682
11683 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
11684
11685         * config/i386/i386.md (*indirect_jump): Macroize using P
11686         mode iterator.  Remove !TARGET_64BIT from insn constraints.
11687         (*tablejump_1): Ditto.
11688         (*indirect_jump_rex64): Remove insn pattern.
11689         (*tablejump_1_rex64): Ditto.
11690         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
11691         and eh_return_si insn patterns.
11692
11693 2008-06-06  Richard Guenther  <rguenther@suse.de>
11694
11695         * tree-ssa-structalias.c (merge_smts_into): Remove.
11696         (find_what_p_points_to): Do not bother to compute the
11697         points-to set for pt_anything pointers.
11698         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
11699         for pt_anything pointers is ok.
11700
11701 2008-06-06  Jan Hubicka  <jh@suse.cz>
11702
11703         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
11704
11705 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11706
11707         * cgraph.c: Fix typos in comments.
11708         (cgraph_availability_names): Fix string typo.
11709         * fold-const.c: Fix typos in comments.
11710         (fold_binary): Fix typo in warning.
11711         * genautomata.c: Fix typos in comments.
11712         (check_presence_pattern_sets): Fix typo in local variable.
11713         (output_description): Fix typo in output.
11714         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
11715         * hwint.h: Likewise.
11716         * matrix-reorg.c (check_allocation_function): Likewise.
11717         * omega.c (smooth_weird_equations): Likewise.
11718         * auto-inc-dec.c: Fix typos in comments.
11719         * bb-reorder.c: Likewise.
11720         * builtins.c: Likewise.
11721         * c-common.c: Likewise.
11722         * c-cppbuiltin.c: Likewise.
11723         * c-parser.c: Likewise.
11724         * c-pretty-print.c: Likewise.
11725         * cfgcleanup.c: Likewise.
11726         * cfgexpand.c: Likewise.
11727         * cfghooks.c: Likewise.
11728         * cfglayout.c: Likewise.
11729         * cfgloopmanip.c: Likewise.
11730         * cgraphunit.c: Likewise.
11731         * coverage.c: Likewise.
11732         * dbxout.c: Likewise.
11733         * df-byte-scan.c: Likewise.
11734         * df-core.c: Likewise.
11735         * df-problems.c: Likewise.
11736         * df-scan.c: Likewise.
11737         * dfp.c: Likewise.
11738         * dominance.c: Likewise.
11739         * domwalk.c: Likewise.
11740         * dse.c: Likewise.
11741         * dwarf2out.c: Likewise.
11742         * emit-rtl.c: Likewise.
11743         * et-forest.c: Likewise.
11744         * function.c: Likewise.
11745         * function.h: Likewise.
11746         * gcc.c: Likewise.
11747         * gcov-io.c: Likewise.
11748         * gcov.c: Likewise.
11749         * gcse.c: Likewise.
11750         * genattrtab.c: Likewise.
11751         * ggc-page.c: Likewise.
11752         * gimplify.c: Likewise.
11753         * gthr-lynx.h: Likewise.
11754         * haifa-sched.c: Likewise.
11755         * ipa-cp.c: Likewise.
11756         * ipa-inline.c: Likewise.
11757         * ipa-prop.h: Likewise.
11758         * ipa-pure-const.c: Likewise.
11759         * ipa-struct-reorg.c: Likewise.
11760         * ipa-struct-reorg.h: Likewise.
11761         * ipa-type-escape.c: Likewise.
11762         * ipa.c: Likewise.
11763         * loop-doloop.c: Likewise.
11764         * mips-tfile.c: Likewise.
11765         * mkmap-flat.awk: Likewise.
11766         * mkmap-symver.awk: Likewise.
11767         * modulo-sched.c: Likewise.
11768         * omp-low.c: Likewise.
11769         * optabs.c: Likewise.
11770         * optabs.h: Likewise.
11771         * opts.c: Likewise.
11772         * passes.c: Likewise.
11773         * postreload-gcse.c: Likewise.
11774         * postreload.c: Likewise.
11775         * predict.c: Likewise.
11776         * pretty-print.h: Likewise.
11777         * profile.c: Likewise.
11778         * protoize.c: Likewise.
11779         * ra-conflict.c: Likewise.
11780         * real.c: Likewise.
11781         * recog.c: Likewise.
11782         * regclass.c: Likewise.
11783         * regs.h: Likewise.
11784         * reload.c: Likewise.
11785         * rtl-error.c: Likewise.
11786         * rtlanal.c: Likewise.
11787         * scan.h: Likewise.
11788         * sched-rgn.c: Likewise.
11789         * see.c: Likewise.
11790         * stmt.c: Likewise.
11791         * target.h: Likewise.
11792         * tree-dfa.c: Likewise.
11793         * tree-eh.c: Likewise.
11794         * tree-flow-inline.h: Likewise.
11795         * tree-inline.c: Likewise.
11796         * tree-into-ssa.c: Likewise.
11797         * tree-loop-distribution.c: Likewise.
11798         * tree-nested.c: Likewise.
11799         * tree-parloops.c: Likewise.
11800         * tree-pass.h: Likewise.
11801         * tree-pretty-print.c: Likewise.
11802         * tree-profile.c: Likewise.
11803         * tree-scalar-evolution.c: Likewise.
11804         * tree-sra.c: Likewise.
11805         * tree-ssa-alias-warnings.c: Likewise.
11806         * tree-ssa-ccp.c: Likewise.
11807         * tree-ssa-coalesce.c: Likewise.
11808         * tree-ssa-dom.c: Likewise.
11809         * tree-ssa-dse.c: Likewise.
11810         * tree-ssa-forwprop.c: Likewise.
11811         * tree-ssa-live.c: Likewise.
11812         * tree-ssa-live.h: Likewise.
11813         * tree-ssa-loop-im.c: Likewise.
11814         * tree-ssa-loop-ivopts.c: Likewise.
11815         * tree-ssa-loop-niter.c: Likewise.
11816         * tree-ssa-loop-prefetch.c: Likewise.
11817         * tree-ssa-phiopt.c: Likewise.
11818         * tree-ssa-phiprop.c: Likewise.
11819         * tree-ssa-sccvn.c: Likewise.
11820         * tree-ssa-ter.c: Likewise.
11821         * tree-ssa-threadupdate.c: Likewise.
11822         * tree-ssa.c: Likewise.
11823         * tree-vect-analyze.c: Likewise.
11824         * tree-vect-transform.c: Likewise.
11825         * tree-vectorizer.c: Likewise.
11826         * tree-vn.c: Likewise.
11827         * tree-vrp.c: Likewise.
11828         * tree.c: Likewise.
11829         * tree.def: Likewise.
11830         * tree.h: Likewise.
11831         * unwind-dw2-fde.c: Likewise.
11832         * unwind.inc: Likewise.
11833         * value-prof.c: Likewise.
11834         * vmsdbgout.c: Likewise.
11835
11836 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
11837
11838         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
11839         always place FP constants in the TOC for TARGET_POWERPC64.
11840         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
11841
11842 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
11843
11844         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
11845         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
11846         enable for TARGET_E500_DOUBLE.
11847         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
11848         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
11849         floating-point modes like integer modes for E500 double.
11850         (rs6000_legitimate_offset_address_p): Likewise.
11851         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
11852         addressing for DDmode for E500 double.
11853         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
11854         modes as using 64-bits of registers for E500 double.
11855         (spe_build_register_parallel): Do not handle DDmode or TDmode.
11856         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
11857         specially for E500 double.
11858         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
11859         TDmode for E500 double.
11860         (rs6000_gimplify_va_arg): Only handle SDmode in registers
11861         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
11862         (rs6000_split_multireg_move): Do not handle TDmode specially for
11863         E500 double.
11864         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
11865         using 64-bit registers for E500 double.
11866         (emit_frame_save): Do not handle DDmode specially for E500 double.
11867         (gen_frame_mem_offset): Likewise.
11868         (rs6000_function_value): Do not call spe_build_register_parallel
11869         for DDmode or TDmode.
11870         (rs6000_libcall_value): Likewise.
11871         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
11872         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
11873         for E500 double.
11874
11875 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
11876
11877         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
11878         in comments.
11879
11880 2008-06-04  Junjie Gu <jgu@tensilica.com>
11881
11882         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
11883         comparison for frame pointers.
11884
11885 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
11886
11887         PR target/27386
11888         * config/avr/avr.h (PUSH_ROUNDING): Remove.
11889
11890 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
11891
11892         PR target/30243
11893         * builtins.c (expand_builtin_signbit): Don't take lowpart when
11894         register is already smaller or equal to required mode.
11895
11896 2008-06-04  Xinliang David Li  <davidxl@google.com>
11897
11898         * tree-call-cdce.c: New file.
11899         (cond_dead_built_in_calls): New static variable.
11900         (input_domain): New struct.
11901         (check_pow): New function.
11902         (check_builtin_call): Ditto.
11903         (check_target_format): Ditto.
11904         (is_call_dce_candidate): Ditto.
11905         (gen_one_condition): Ditto.
11906         (gen_conditions_for_domain): Ditto.
11907         (get_domain): Ditto.
11908         (gen_conditions_for_pow_cst_base): Ditto.
11909         (gen_conditions_for_pow_int_base): Ditto.
11910         (gen_conditions_for_pow): Ditto.
11911         (get_no_error_domain): Ditto.
11912         (gen_shrink_wrap_conditions): Ditto.
11913         (shrink_wrap_one_built_in_call): Ditto.
11914         (shink_wrap_conditional_dead_built_in_calls): Ditto.
11915         (tree_call_cdce): Ditto.
11916         (gate_call_cdce): Ditto.
11917         (pass_call_cdce): New gimple pass.
11918         * passes.c: (init_optimization_passes): New pass.
11919         * tree-pass.h: New pass declaration.
11920         * opts.c (decode_options): New flag setting.
11921         * common.opt: Add -ftree-builtin-call-dce flag.
11922         * Makefile.in: Add new source file.
11923         * tempvar.def: New tv_id.
11924         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
11925
11926 2008-06-04  Richard Guenther  <rguenther@suse.de>
11927
11928         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
11929         (is_call_clobbered): Always check var_ann->call_clobbered.
11930         (mark_call_clobbered): Always set var_ann->call_clobbered.
11931         (clear_call_clobbered): Always clear var_ann->call_clobbered.
11932         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
11933         (reset_alias_info): Clear call clobbering info on MTAGs and
11934         globals as well.
11935         (set_pt_anything): Set pt_global_mem.
11936         (create_tag_raw): Adjust comment.
11937         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
11938
11939 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
11940             Maxim Kuvyrkov  <maxim@codesourcery.com>
11941
11942         * config/m68k/m68k.opt (mxgot): New option.
11943         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
11944         (m68k_output_addr_const_extra): New.
11945         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
11946         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
11947         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
11948         * doc/invoke.texi (M680x0 Options): Document -mxgot.
11949
11950 2008-06-04  Richard Guenther  <rguenther@suse.de>
11951
11952         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
11953         negative or non-representable offsets.
11954
11955 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
11956
11957         * config/i386/i386.c (ix86_gen_leave): New.
11958         (ix86_gen_pop1): Likewise.
11959         (ix86_gen_add3): Likewise.
11960         (ix86_gen_sub3): Likewise.
11961         (ix86_gen_sub3_carry): Likewise.
11962         (ix86_gen_one_cmpl2): Likewise.
11963         (ix86_gen_monitor): Likewise.
11964         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
11965         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
11966         ix86_gen_one_cmpl2 and ix86_gen_monitor.
11967         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
11968         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
11969         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
11970         (ix86_expand_epilogue): Updated.
11971         (print_operand): Handle integer register operand for 'z'.
11972         (ix86_expand_strlensi_unroll_1): Likewise.
11973         (ix86_expand_strlen): Likewise.
11974         (ix86_expand_builtin): Likewise.
11975         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
11976         mov{q}/mov{l} and add{q}/add{l}.
11977
11978 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11979
11980         * config/i386/i386.md (P): New mode iterator.
11981         (SFmode push_operand splitter): Macroize DImode and SImode pushes
11982         using P mode iterator.
11983         (DFmode push_operand splitter): Ditto.
11984         (XFmode push_operand splitter): Ditto.
11985         (DFmode float_extend SFmode push_operand splitter): Ditto.
11986         (XFmode float_extend SFmode push_operand splitter): Do not generate
11987         SImode pushes for 64bit target.  Macroize Dimode and SImode
11988         pushes using P mode iterator.
11989         (XFmode float_extend DFmode push_operand splitter): Ditto.
11990
11991 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11992
11993         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
11994         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
11995         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
11996         return type to int.
11997         (ix86_call_abi_override): Remove check for call_used_regs.
11998
11999 2008-06-03  Richard Guenther  <rguenther@suse.de>
12000
12001         * tree-ssa-structalias.c (find_func_aliases): Add constraints
12002         for the lhs of calls if the return type contains pointers.
12003
12004 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
12005
12006         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
12007         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
12008         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
12009         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
12010         of cfun and DEFAULT_ABI to deceide abi mode.
12011         (DEFAULT_ABI): New.
12012         (REG_PARM_STACK_SPACE): Removed.
12013         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
12014         (STACK_BOUNDARY): Use default target to deceide stack boundary.
12015         * config/i386/i386-protos.h (ix86_cfun_abi): New.
12016         (ix86_function_abi): Likewise.
12017         (ix86_function_type_abi): Likewise.
12018         (ix86_call_abi_override): Likewise.
12019         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
12020         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
12021         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
12022         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
12023         specific defines.
12024         (X86_64_REGPARM_MAX): New.
12025         (X86_64_SSE_REGPARM_MAX): New.
12026         (X64_REGPARM_MAX): New.
12027         (X64_SSE_REGPARM_MAX): New.
12028         (X86_32_REGPARM_MAX): New.
12029         (X86_32_SSE_REGPARM_MAX): New.
12030         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
12031         (ix86_function_regparm): Handle user calling abi.
12032         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
12033         by DEFAULT_ABI versus SYSV_ABI check.
12034         (ix86_reg_parm_stack_space): New.
12035         (ix86_function_type_abi): New.
12036         (ix86_call_abi_override): New.
12037         (ix86_function_abi): New.
12038         (ix86_cfun_abi): New.
12039         (init_cumulative_args): Call abi specific initialization.
12040         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
12041         (function_arg_64): Extend SSE_REGPARM_MAX check.
12042         (function_arg (): Remove TARGET_64BIT_MS_ABI.
12043         (ix86_pass_by_reference): Likewise.
12044         (ix86_function_value_regno_p): Likewise.
12045         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
12046         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
12047         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
12048         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
12049         (setup_incoming_varargs_64): Adjust regparm for call abi.
12050         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
12051         (ix86_va_start): Likewise.
12052         (ix86_gimplify_va_arg): Likewise.
12053         (ix86_expand_prologue): Likewise.
12054         (output_pic_addr_const): Likewise.
12055         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
12056         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
12057         (x86_output_mi_thunk): Likewise.
12058         (x86_function_profiler): Likewise.
12059         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
12060         (SYSV_ABI, MS_ABI): New constants.
12061         (DEFAULT_ABI): New.
12062         (init_regs): Add prototype of function in regclass.c file.
12063         (OVERRIDE_ABI_FORMAT): New.
12064         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
12065         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
12066         (OUTGOING_REG_PARM_STACK_SPACE): New.
12067         (ix86_reg_parm_stack_space): New prototype.
12068         (CUMULATIVE_ARGS): Add call_abi member.
12069         (machine_function): Add call_abi member.
12070         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
12071         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
12072
12073 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
12074
12075         PR target/34879
12076         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
12077         (avr_builtin_setjmp_frame_value): New function.
12078         * config/avr/avr.md (nonlocal_goto_receiver): Define.
12079         (nonlocal_goto): Define.
12080
12081 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
12082
12083         * config/mips/mips.c (mips_emit_loadgp): Return early if
12084         there is nothing do to, otherwise emit a blockage if
12085         !TARGET_EXPLICIT_RELOCS || crtl->profile.
12086         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
12087
12088 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12089
12090         * configure.ac: Drop unneeded backslash ending up in config.in.
12091         * acinclude.m4: Likewise.
12092         * config.in: Regenerate.
12093
12094 2008-05-26  Jan Hubicka  <jh@suse.cz>
12095
12096         * predict.c (maybe_hot_frequency_p): Break out of...
12097         (maybe_hot_bb_p): ... here.
12098         (maybe_hot_edge_p): New.
12099         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
12100         * basic-block.h (maybe_hot_edge_p): Declare.
12101
12102 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
12103
12104         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
12105         (*cmpfp_<mode>_cc): Ditto.
12106         (*fp_jcc_8<mode>_387): Ditto.
12107         (*fop_<MODEF:mode>_2_i387): Ditto.
12108         (*fop_<MODEF:mode>_3_i387): Ditto.
12109         (*fop_xf_2_i387): Ditto.
12110         (*fop_xf_3_i387): Ditto.
12111
12112 2008-06-02  Tomas Bily  <tbily@suse.cz>
12113
12114         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
12115
12116 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
12117
12118         * config/mips/mips.c (mips_valid_offset_p): New function.
12119         (mips_valid_lo_sum_p): Likewise.
12120         (mips_classify_address): Use them.
12121         (mips_force_address): New function.
12122         (mips_legitimize_address): Use it.
12123         * config/mips/mips.md (MOVE128): New mode iterator.
12124         (movtf): Require TARGET_64BIT.  Remove empty strings.
12125         (*movtf_internal): Rename to...
12126         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
12127         of "R" and use {,fp}{load,store} attributes instead of "multi".
12128         Use a separate define_split.
12129         (*movtf_mips16): New pattern.
12130
12131 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
12132
12133         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
12134         * config/mips/mips.c (mips_expand_before_return): New function.
12135         (mips_expand_epilogue): Call it.
12136         * config/mips/mips.md (return): Turn into a define_expand.
12137         (*return): New insn.
12138
12139 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
12140
12141         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
12142         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
12143         functions.  Do not emit uses and clobbers of CONCATs; individually
12144         use and clobber their operands.
12145         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
12146         gen_clobber, emit_use and gen_use.
12147         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
12148         (expand_builtin_return): Likewise.
12149         * cfgbuild.c (count_basic_blocks): Likewise.
12150         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
12151         * explow.c (emit_stack_restore): Likewise.
12152         * expmed.c (extract_bit_field_1): Likewise.
12153         * expr.c (convert_move, emit_move_complex_parts): Likewise.
12154         (emit_move_multi_word, store_constructor): Likewise.
12155         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
12156         (thread_prologue_and_epilogue_insns): Likewise.
12157         * lower-subreg.c (resolve_simple_move): Likewise.
12158         * optabs.c (widen_operand, expand_binop): Likewise.
12159         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
12160         * reload.c (find_reloads): Likewise.
12161         * reload1.c (eliminate_regs_in_insn): Likewise.
12162         * stmt.c (expand_nl_goto_receiver): Likewise.
12163         * config/alpha/alpha.md (builtin_longjmp): Likewise.
12164         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
12165         * config/arm/arm.c (arm_load_pic_register): Likewise.
12166         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
12167         * config/arm/arm.md (untyped_return): Likewise.
12168         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
12169         * config/avr/avr.c (expand_prologue): Likewise.
12170         * config/bfin/bfin.c (do_unlink): Likewise.
12171         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
12172         * config/cris/cris.c (cris_expand_prologue): Likewise.
12173         * config/darwin.c (machopic_indirect_data_reference): Likewise.
12174         (machopic_legitimize_pic_address): Likewise.
12175         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
12176         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
12177         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
12178         (ix86_expand_convert_uns_didf_sse): Likewise.
12179         (ix86_expand_vector_init_general): Likewise.
12180         * config/ia64/ia64.md (eh_epilogue): Likewise.
12181         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
12182         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
12183         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
12184         (config/iq2000/iq2000.c): Likewise.
12185         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
12186         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
12187         (builtin_longjmp): Likewise.
12188         * config/mn10300/mn10300.md (call, call_value): Likewise.
12189         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
12190         * config/pdp11/pdp11.md (abshi2): Likewise.
12191         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
12192         * config/s390/s390.c (s390_emit_prologue): Likewise.
12193         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
12194         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
12195         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
12196         * config/sh/sh.c (prepare_move_operands): Likewise.
12197         (output_stack_adjust, sh_expand_epilogue): Likewise.
12198         (sh_set_return_address, sh_expand_t_scc): Likewise.
12199         * config/sparc/sparc.c (load_pic_register): Likewise.
12200         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
12201         * config/spu/spu.c (spu_expand_epilogue): Likewise.
12202         * config/v850/v850.c (expand_epilogue): Likewise.
12203
12204 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
12205
12206         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
12207         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
12208         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
12209         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
12210         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
12211         stack pointer register.
12212         (output_movhi): Remove code for interrupt specific writing to the
12213         stack pointer register.
12214
12215 2008-05-31  Richard Guenther  <rguenther@suse.de>
12216
12217         PR tree-optimization/34244
12218         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
12219         (tree_expr_nonzero_warnv_p): Likewise.
12220         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
12221         ssa_name_nonnegative_p.
12222         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
12223         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
12224         not tree_expr_nonzero_warnv_p.
12225
12226         PR tree-optimization/36262
12227         Revert
12228         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
12229
12230         PR tree-optimization/34244
12231         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
12232         (record_numbers_of_iterations): New function.
12233         (execute_vrp): Cache the numbers of iterations of loops.
12234         * tree-scalar-evolution.c (scev_reset_except_niters):
12235         New function.
12236         (scev_reset): Use scev_reset_except_niters.
12237         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
12238
12239 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
12240
12241         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
12242         __WORKAROUND_RETS when appropriate.
12243
12244 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
12245
12246         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
12247         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
12248         mode iterator.
12249         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
12250         *fop_df_comm_sse insn patterns using MODEF mode iterator.
12251         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
12252         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
12253         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
12254         *fop_df_1_mixed insn patterns using MODEF mode iterator.
12255         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
12256         *fop_df_1_sse insn patterns using MODEF mode iterator.
12257         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
12258         *fop_df_1_i387 insn patterns using MODEF mode iterator.
12259         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
12260         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
12261         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
12262         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
12263         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
12264         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
12265         (*fop_xf_4_i387): Use <MODE> for mode attribute.
12266         (*fop_xf_5_i387): Ditto.
12267         (*fop_xf_6_i387): Ditto.
12268
12269 2008-05-30  Richard Guenther  <rguenther@suse.de>
12270
12271         * builtins.c (build_string_literal): Avoid generating
12272         a non-gimple_val result.
12273
12274 2008-05-30  DJ Delorie  <dj@redhat.com>
12275
12276         * exec-tool.in: Use an environment variable (private) instead of a
12277         file (shared) as a semaphore, so as to not break parallel builds.
12278
12279 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
12280
12281         * optabs.c (maybe_encapsulate_block): Remove.
12282         (emit_libcall_block): Adjust accordingly.
12283         * optabs.h (maybe_encapsulate_block): Remove prototype.
12284
12285         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
12286         Don't use maybe_encapsulate_block.
12287
12288 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
12289
12290         * config/rs6000/rs6000.c (rs6000_legitimize_address,
12291         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
12292         rtx is a SYMBOL_REF before calling get_pool_constant.
12293
12294 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
12295
12296         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
12297
12298 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
12299
12300         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
12301         rather than OS names to choose INO_T_EQ definition.
12302         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
12303         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
12304
12305 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
12306
12307         PR target/36348
12308         * config/darwin-f.c: New.
12309         * config/t-darwin: Added rule to build darwin-f.o.
12310         * config.gcc: Defined new variable, fortran_target_objs.
12311         (*-*-darwin*): Set fortran_target_objs.
12312         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
12313         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
12314         * configure: Regenerated.
12315
12316 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
12317
12318         PR target/35771
12319         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
12320         canonical type if needed.
12321
12322 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
12323
12324         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
12325
12326 2008-05-29  Richard Guenther  <rguenther@suse.de>
12327
12328         PR tree-optimization/36343
12329         PR tree-optimization/36346
12330         PR tree-optimization/36347
12331         * tree-flow.h (clobber_what_p_points_to): Declare.
12332         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
12333         pointed-to variable is dereferenced is irrelevant to whether
12334         the pointer can access the pointed-to variable.
12335         (clobber_what_p_points_to): New function.
12336         * tree-ssa-alias.c (set_initial_properties): Use it.
12337         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
12338         call clobber check for NMTs.
12339
12340 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
12341
12342         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
12343         for printing gcov_type.
12344
12345 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
12346
12347         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
12348         and the eh region information.
12349         * value-prof.c (gimple_move_stmt_histograms): New function.
12350         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
12351
12352 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
12353
12354         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
12355
12356 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
12357
12358         * value-prof.c (tree_ic_transform): Print counts.
12359         * tree-profile.c (tree_gen_ic_func_profiler):
12360         Clear __gcov_indreict_call_callee variable to avoid misattribution
12361         of the profile.
12362
12363 2008-05-28  Rafael Espíndola  <espindola@google.com>
12364
12365         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
12366         invalid sharing.
12367
12368 2008-05-28  Richard Guenther  <rguenther@suse.de>
12369
12370         PR tree-optimization/36339
12371         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
12372         and clobbering code out of the loop.
12373
12374 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
12375
12376         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
12377         letters defined.
12378
12379         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
12380         s390_contiguous_bitmask_p, s390_symref_operand_p,
12381         s390_check_symref_alignment, s390_reload_larl_operand,
12382         s390_reload_symref_address): New functions.
12383         (s390_branch_condition_mnemonic): Support compare and branch
12384         instructions.
12385         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
12386         and 'W' constraints.
12387         (s390_secondary_reload): Add secondary reloads for unaligned
12388         symbol refs or symbol refs to floating point or QI/TI mode
12389         integer values.
12390         (legitimate_address_p): Accept symbol references as addresses.
12391         (s390_expand_insv): Use rotate and insert selected bits
12392         instruction for insv when building for z10.
12393         (print_operand_address): Handle symbol ref addresses.
12394         (print_operand): Output modifier 'c' added for signed byte values.
12395         (s390_encode_section_info): Mark symbol refs with
12396         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
12397
12398         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
12399         (length attribute): RRF, RRR have 4 byte length.
12400         (FPALL, INTALL): New mode iterators added.
12401         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
12402         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
12403         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
12404         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
12405         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
12406         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
12407         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
12408         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
12409         instructions.
12410         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
12411         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
12412         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
12413         reload<INTALL:mode><P:mode>_toreg_z10,
12414         reload<FPALL:mode><P:mode>_tomem_z10,
12415         reload<FPALL:mode><P:mode>_toreg_z10,
12416         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
12417         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
12418         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
12419         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
12420         definition.
12421         (movmem, clrmem, cmpmem): New splitters added.
12422
12423         * config/s390/predicates.md (larl_operand): Use
12424         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
12425         SYMBOL_REF_ALIGN1_P.
12426         (s390_signed_integer_comparison,
12427         s390_unsigned_integer_comparison): New predicates.
12428
12429         * config/s390/s390-protos.h (s390_check_symref_alignment,
12430         s390_contiguous_bitmask_p, s390_reload_larl_operand,
12431         s390_reload_symref_address,
12432         s390_compare_and_branch_condition_mask): Prototypes added.
12433
12434         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
12435         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
12436         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
12437
12438 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
12439
12440         * config/s390/s390.c (z10_cost): New cost function for z10.
12441         (s390_handle_arch_option, override_options): Support -march=z10 switch.
12442         (s390_issue_rate): Adjust issue rate for z10.
12443         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
12444         (processor_flags): Add PF_Z10.
12445         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
12446         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
12447         * gcc/config.gcc: Add z10.
12448
12449 2008-05-28  Richard Guenther  <rguenther@suse.de>
12450
12451         PR tree-optimization/36291
12452         * tree-flow. h (struct gimple_df): Remove var_anns member.
12453         * tree-flow-inline.h (gimple_var_anns): Remove.
12454         (var_ann): Simplify.
12455         * tree-dfa.c (create_var_ann): Simplify.
12456         (remove_referenced_var): Clear alias info from var_anns of globals.
12457         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
12458         (delete_tree_ssa): Clear alias info from var_anns of globals.
12459         Do not free var_anns.
12460         (var_ann_eq): Remove.
12461         (var_ann_hash): Likewise.
12462
12463 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
12464
12465         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
12466         and loongson2f entries.
12467         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
12468         * config/mips/mips.h (processor_type): Add Loongson-2E
12469         and Loongson-2F entries.
12470         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
12471         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
12472         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
12473         * doc/invoke.texi (MIPS Options): Document loongson2e
12474         and loongson2f processor names.
12475
12476 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
12477
12478         PR target/35767
12479         PR target/35771
12480         * config/i386/i386.c (ix86_function_arg_boundary): Use
12481         alignment of canonical type.
12482         (ix86_expand_vector_move): Check unaligned memory access for
12483         all SSE modes.
12484
12485 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
12486
12487         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
12488         Moved to the front of file.
12489
12490 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
12491             H.J. Lu  <hongjiu.lu@intel.com>
12492
12493         * dwarf2out.c (current_fde): New.
12494         (add_cfi): Use it.
12495         (lookup_cfa:): Likewise.
12496         (dwarf2out_end_epilogue): Likewise.
12497         (dwarf2out_note_section_used): Likewise.
12498
12499 2008-05-27  Michael Matz  <matz@suse.de>
12500
12501         PR c++/27975
12502         * c.opt (Wenum-compare): New warning option.
12503         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
12504
12505 2008-05-27  Michael Matz  <matz@suse.de>
12506
12507         PR middle-end/36326
12508         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
12509         non-BLKmode types.
12510         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
12511         into memory as tail calls.
12512
12513 2008-05-27  Richard Guenther  <rguenther@suse.de>
12514
12515         PR tree-optimization/36339
12516         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
12517         pointers cause all addressable variables to be call clobbered.
12518
12519 2008-05-27  Richard Guenther  <rguenther@suse.de>
12520
12521         PR tree-optimization/36245
12522         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
12523
12524 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
12525
12526         * config/s390/s390.md: Replace all occurences of the 'm'
12527         constraint with 'RT'.
12528
12529 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
12530
12531         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
12532         definitions added.
12533         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
12534         "*movdi_64".
12535         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
12536         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
12537         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
12538
12539 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
12540
12541         * reload.c: (find_reloads): Skip alternatives according to the
12542         "enabled" attribute. Constify the constraint variable.
12543         * recog.c (get_attr_enabled): Add default implementation.
12544         (extract_insn): Set the alternative_enabled_p array
12545         in the recog_data struct.
12546         (preprocess_constraints, constrain_operands): Skip
12547         alternatives according to the "enabled" attribute
12548         * recog.h (struct recog_data): New field alternative_enabled_p.
12549         (skip_alternative): New inline function.
12550         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
12551         (record_reg_classes): Skip alternative according to the
12552         "enabled" attribute.
12553
12554         * doc/md.texi: Add documention for the "enabled" attribute.
12555
12556 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
12557
12558         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
12559         * postreload.c (reload_cse_simplify_operands): Replace 'm'
12560         constraint with TARGET_MEM_CONSTRAINT.
12561         * recog.c (asm_operand_ok, preprocess_constraints,
12562         constrain_operands): Likewise.
12563         * regclass.c (record_reg_classes): Likewise.
12564         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
12565         * reload1.c (maybe_fix_stack_asms): Likewise.
12566         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
12567         * recog.h: Adjust comment.
12568         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
12569         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
12570         * doc/md.texi: Add a note to description of 'm' constraint.
12571         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
12572
12573 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
12574
12575         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
12576         that the bitfield is of integral type before testing its precision.
12577
12578 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
12579             Sa Liu  <saliu@de.ibm.com>
12580
12581         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
12582         __modti3, __udivti3, __umodti3 and __udivmodti4.
12583         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
12584         that implement TImode mul and div functions.
12585         * config/spu/multi3.c: New. Implement __multi3.
12586         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
12587         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
12588         functions on SPU.
12589
12590 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
12591
12592         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
12593         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
12594         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
12595         tls_sysv_suffix): New mode and mode attribute iterators.
12596         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
12597         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
12598         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
12599         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
12600         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
12601         iterators.
12602
12603 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
12604
12605         PR tree-optimization/36329
12606         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
12607         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
12608         * cgraphbuild.c (initialize_inline_failed): Use the latter
12609         macro in lieu of the former.
12610         * ipa-inline.c (cgraph_mark_inline): Likewise.
12611         (cgraph_decide_inlining_of_small_function): Likewise.
12612         (cgraph_decide_inlining): Likewise.
12613         (cgraph_decide_inlining_incrementally): Likewise.
12614
12615 2008-05-26  Tristan Gingold  <gingold@adacore.com>
12616             Anatoly Sokolov  <aesok@post.ru>
12617
12618         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
12619         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
12620         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
12621         optimization for 'avr6' architecture.
12622
12623 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
12624
12625         PR target/34932
12626         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
12627
12628 2008-05-26  Richard Guenther  <rguenther@suse.de>
12629
12630         * tree-ssa-sccvn.c (expr_has_constants): Declare.
12631         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
12632
12633 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
12634
12635         PR middle-end/36253
12636         * caller-save.c (insert_restore): Verify alignment of spill space.
12637         (insert_save): Likewise.
12638         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
12639         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
12640         (STACK_SLOT_ALIGNMENT): Likewise.
12641         * function.c (LOCAL_ALIGNMENT): Removed.
12642         (get_stack_local_alignment): New.
12643         (assign_stack_local): Use it.  Set alignment on stack slot.
12644         (assign_stack_temp_for_type): Use get_stack_local_alignment.
12645         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
12646         (STACK_SLOT_ALIGNMENT): New.
12647         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
12648         stack slot in XFmode.
12649
12650         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
12651
12652 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
12653
12654         PR/36321
12655         * config/i386/i386.md (allocate_stack_worker_64): Make sure
12656         argument operand in rax isn't removed.
12657
12658 2008-05-26  Richard Guenther  <rguenther@suse.de>
12659
12660         PR middle-end/36300
12661         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
12662         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
12663
12664 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
12665
12666         PR bootstrap/36331
12667         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
12668
12669 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
12670
12671         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
12672         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
12673
12674 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
12675
12676         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
12677         build a trampoline if we don't want one.
12678         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
12679         return zero for nested functions if we don't want a trampoline.
12680
12681 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
12682
12683         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
12684
12685 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
12686
12687         PR fortran/18428
12688         * c.opt: Removed undocumented option '-lang-fortran'.
12689         * c-common.h: Removed global variable 'lang_fortran'.
12690         * c-opts.c (c_common_handle_option): Removed code to handle
12691         option '-lang-fortran'. Updated includes.
12692         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
12693         definition of '__GFORTRAN__'.
12694         (define__GNUC__): Reimplemented to use BASEVER and
12695         cpp_define_formatted.
12696         (builtin_define_with_value_n): Removed.
12697         * c-incpath.h: Renamed to ...
12698         * incpath.h: ... this.
12699         * c-incpath.c: Renamed to ...
12700         * incpath.c: ... this. Updated includes.
12701         * fix-header.c: Updated includes.
12702         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
12703         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
12704         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
12705
12706 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
12707
12708         * tree.h: Update the table of flags used on tree nodes.
12709         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
12710         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
12711         (FORCED_LABEL): Add access check.
12712         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
12713         (ASM_INPUT_P): Likewise.
12714         (ASM_VOLATILE_P): Likewise.
12715         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
12716         (OMP_SECTION_LAST): Access private_flag directly.
12717         (OMP_RETURN_NOWAIT): Likewise.
12718         (OMP_PARALLEL_COMBINED): Likewise.
12719         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
12720         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
12721         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
12722         deprecated_flag directly.
12723
12724 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
12725
12726         * final.c (frame_pointer_needed): Removed.
12727         * flags.h (frame_pointer_needed): Likewise.
12728
12729         * function.h (rtl_data): Add frame_pointer_needed.
12730         (frame_pointer_needed): New.
12731
12732 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
12733
12734         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
12735
12736 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
12737
12738         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
12739         SRC is a REG.
12740
12741 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
12742
12743         * c-common.c (strip_array_types): Move function to..
12744         * tree.c: ..here.
12745         (get_inner_array_type): Delete.
12746         * c-common.h (strip_array_types): Move declaration to..
12747         * tree.h: ..here.
12748         (get_inner_array_type): Delete.
12749         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
12750         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
12751         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
12752         * config/pa/pa.c (emit_move_sequence): Likewise.
12753
12754 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
12755
12756         * config/i386/i386.md (*sse_prologue_save_insn): Set length
12757         attribute to 34.
12758
12759 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
12760
12761         * function.c: Include target hook for nonlocal_goto frame value.
12762
12763 2008-05-24  Richard Guenther  <rguenther@suse.de>
12764
12765         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
12766         variable can be only accessed through a pointer or a union.
12767
12768 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12769
12770         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
12771         * doc/extend.texi: Likewise.
12772
12773 2008-05-23  DJ Delorie  <dj@redhat.com>
12774
12775         * config/m32c/jump.md (untyped_call): Add.
12776
12777         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
12778         for A24 to PSImode.
12779         (m32c_address_cost): Detail costs for indirect offsets.
12780
12781 2008-05-23  Rafael Espíndola  <espindola@google.com>
12782
12783         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
12784         if a node is a SUBREG.
12785         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
12786         is a SUBREG.
12787
12788 2008-05-23  Paul Brook  <paul@codesourcery.com>
12789             Carlos O'Donell  <carlos@codesourcery.com>
12790
12791         * doc/extend.texi: Clarify use of __attribute__((naked)).
12792         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
12793         * target.h (gcc_target): Add allocate_stack_slots_for_args.
12794         * function.c (use_register_for_decl): Use
12795         targetm.calls.allocate_stack_slots_for_args.
12796         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
12797         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
12798         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
12799
12800 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
12801
12802         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
12803
12804 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
12805
12806         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
12807         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
12808         is only rounded once.
12809
12810 2008-05-23  Richard Guenther  <rguenther@suse.de>
12811
12812         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
12813
12814 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
12815             Jakub Jelinek  <jakub@redhat.com>
12816
12817         PR target/36079
12818         * configure.ac: Handle --enable-cld.
12819         * configure: Regenerated.
12820         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
12821         * config/i386/i386.h (struct machine_function): Add needs_cld field.
12822         (ix86_current_function_needs_cld): New define.
12823         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
12824         (cld): New isns pattern.
12825         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
12826         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
12827         * config/i386/i386.opt (mcld): New option.
12828         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
12829         TARGET_CLD and ix86_current_function_needs_cld.
12830         (override_options): Use -mcld by default for 32-bit code if
12831         USE_IX86_CLD.
12832
12833         * doc/install.texi (Options specification): Document --enable-cld.
12834         * doc/invoke.texi (Machine Dependent Options)
12835         [i386 and x86-64 Options]: Add -mcld option.
12836         (Intel 386 and AMD x86-64 Options): Document -mcld option.
12837
12838 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
12839         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
12840         (return_in_memory_64): Likewise.
12841         (return_in_memory_ms_64): Likewise.
12842
12843 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12844
12845         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
12846         * builtins.c (fold_builtin_fpclassify): New.
12847         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
12848         * builtins.def (BUILT_IN_FPCLASSIFY): New.
12849         * c-common.c (handle_type_generic_attribute): Adjust to accept
12850         fixed arguments before an elipsis.
12851         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
12852         * doc/extend.texi: Document __builtin_fpclassify.
12853
12854 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
12855
12856         * omp-low.c (gate_expand_omp_ssa): Remove.
12857         (pass_expand_omp_ssa): Remove.
12858         (gate_expand_omp): Do not check for flag_openmp_ssa.
12859         * common.opt (-fopenmp-ssa): Remove.
12860         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
12861
12862 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12863
12864         * config/sh/sh.opt (mfixed-range): New option.
12865         * config/sh/sh-protos.h (sh_fix_range): Declare.
12866         * config/sh/sh.c (sh_fix_range): New function.
12867         * config/sh/sh.h (sh_fixed_range_str): Declare.
12868         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
12869         is not empty.
12870         * doc/invoke.texi (SH Options): Document -mfixed-range.
12871
12872 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
12873
12874         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
12875         it before the redeclaration.
12876
12877 2008-05-22  Anatoly Sokolov <aesok@post.ru>
12878
12879         * config/avr/avr.c (get_sequence_length): Add new function.
12880         (expand_prologue, expand_epilogue): Remove duplicate code.
12881
12882 2008-05-22  Rafael Espíndola  <espindola@google.com>
12883
12884         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
12885         sharing.
12886
12887 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
12888
12889         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
12890         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
12891
12892         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
12893         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
12894         (vect_update_misalignment_for_peel): Likewise.
12895         (vector_alignment_reachable_p): Likewise.
12896         * tree-vect-transform.c (vectorizable_load): Likewise.
12897         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
12898         (get_vectype_for_scalar_type): Pass mode of scalar_type
12899         to UNITS_PER_SIMD_WORD.
12900
12901         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
12902         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
12903         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
12904         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
12905         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
12906
12907 2008-05-22  Ira Rosen  <irar@il.ibm.com>
12908
12909         PR tree-optimization/36293
12910         * tree-vect-transform.c (vect_transform_strided_load): Don't check
12911         if the first load must be skipped because of a gap.
12912
12913 2008-05-22  Richard Guenther  <rguenther@suse.de>
12914
12915         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
12916         more cases of offset disambiguation that is possible if
12917         strict-aliasing rules apply.
12918         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
12919         for basic offset and type-based disambiguation.
12920
12921 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12922
12923         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
12924         ix86_expand_vector_set on V16QImode for SSE4.1.
12925
12926 2008-05-21  Tom Tromey  <tromey@redhat.com>
12927
12928         * c.opt (Wimport): Mark as undocumented.
12929         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
12930         -Wno-import.
12931         (Warning Options): Likewise.
12932         * doc/cppopts.texi: Don't mention -Wimport.
12933
12934 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
12935
12936         PR tree-optimization/36287
12937         PR tree-optimization/36286
12938         * lambda-code.c (build_access_matrix): Do not use the loop->num
12939         for computing the number of induction variables: use the loop depth
12940         instead.
12941
12942 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
12943
12944         PR/36280
12945         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
12946         option -f(no-)leading-underscore.
12947
12948 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12949
12950         * config/i386/i386.c (ix86_expand_vector_init_general): Use
12951         GET_MODE_NUNITS (mode).
12952
12953 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
12954
12955         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
12956         (-mmulhw): Add 464 to description.
12957         (-mdlmzb): Likewise.
12958         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
12959         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
12960         464fp entries.
12961         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
12962         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
12963         * config/rs6000/rs6000.md: Update comments for 464.
12964
12965 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
12966
12967         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
12968
12969 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12970
12971         * config/i386/sse.md (vec_extractv4sf): Removed.
12972         (vec_extractv2df): Likewise.
12973         (vec_extractv2di): Likewise.
12974         (vec_extractv4si): Likewise.
12975         (vec_extractv8hi): Likewise.
12976         (vec_extractv16qi): Likewise.
12977         (vec_extract<mode>): New.
12978
12979 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12980
12981         * config/i386/sse.md (vec_setv4sf): Removed.
12982         (vec_setv2df): Likewise.
12983         (vec_setv2di): Likewise.
12984         (vec_setv4si): Likewise.
12985         (vec_setv8hi): Likewise.
12986         (vec_setv16qi): Likewise.
12987         (vec_set<mode>): New.
12988
12989 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12990
12991         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
12992         goto for vec_concat and vec_interleave.
12993
12994 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12995
12996         * config/i386/sse.md (vec_initv4sf): Removed.
12997         (vec_initv2df): Likewise.
12998         (vec_initv2di): Likewise.
12999         (vec_initv4si): Likewise.
13000         (vec_initv8hi): Likewise.
13001         (vec_initv16qi): Likewise.
13002         (vec_init<mode>): New.
13003
13004 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
13005
13006         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
13007
13008 2008-05-21  Tom Tromey  <tromey@redhat.com>
13009
13010         * ggc-zone.c (lookup_page_table_if_allocated): New function.
13011         (zone_find_object_offset): Likewise.
13012         (gt_ggc_m_S): Likewise.
13013         (highest_bit): Likewise.
13014         * ggc-page.c (gt_ggc_m_S): New function.
13015         * stringpool.c (string_stack): Remove.
13016         (init_stringpool): Update.
13017         (ggc_alloc_string): Use ggc_alloc.
13018         (maybe_delete_ident): New function.
13019         (ggc_purge_stringpool): Likewise.
13020         (gt_ggc_m_S): Remove.
13021         * ggc-common.c (ggc_protect_identifiers): New global.
13022         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
13023         ggc_protect_identifiers.
13024         * ggc.h (ggc_protect_identifiers): Declare.
13025         (gt_ggc_m_S): Update.
13026         (ggc_purge_stringpool): Declare.
13027         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
13028         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
13029         special case.
13030         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
13031
13032 2008-05-21  David S. Miller  <davem@davemloft.net>
13033
13034         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
13035         tmake_file.
13036
13037 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
13038
13039         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
13040         once finished.
13041
13042 2008-05-20  David Daney  <ddaney@avtrex.com>
13043
13044         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
13045         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
13046         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
13047         UNSPEC_UPDATE_GOT_VERSION): Renumber.
13048         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
13049         (atomic_hiqi_op): New define_code_iterator.
13050         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
13051         mips_expand_compare_and_swap_12.
13052         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
13053         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
13054         (sync_<optab><mode>, sync_old_<optab><mode>,
13055         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
13056         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
13057         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
13058         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
13059         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
13060         (test_and_set_12): New insn.
13061         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
13062         sync_new_<optab><mode>, sync_old_nand<mode>,
13063         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
13064         clobber to operand 0 for SI and DI mode insns.
13065         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
13066         mips_gen_fn_4): New typedefs.
13067         (mips_gen_fn_ptrs): Define new union type.
13068         (mips_expand_compare_and_swap_12): Remove declaration.
13069         (mips_expand_atomic_qihi): Declare function.
13070         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
13071         (mips_expand_atomic_qihi): ... this.  Use new generator function
13072         parameter.
13073         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
13074         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
13075         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
13076         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
13077         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
13078         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
13079         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
13080         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
13081         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
13082         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
13083         New macros.
13084
13085 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
13086
13087         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
13088         the missing break.
13089
13090 2008-05-20  Anatoly Sokolov <aesok@post.ru>
13091
13092         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
13093         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
13094         (avr_attribute_table): Add 'OS_main' function attribute.
13095         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
13096         functions with 'OS_main' attribute.
13097
13098 2008-05-20  Richard Guenther  <rguenther@suse.de>
13099
13100         PR tree-optimization/35204
13101         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
13102         helper, split out from ...
13103         (DFS): ... here.  Make the DFS walk non-recursive.
13104
13105 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
13106             Jan Sjodin  <jan.sjodin@amd.com>
13107
13108         PR tree-optimization/36181
13109         * tree-parloops.c (loop_has_vector_phi_nodes): New.
13110         (parallelize_loops): Don't parallelize when the loop has vector
13111         phi nodes.
13112
13113 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
13114             Sebastian Pop  <sebastian.pop@amd.com>
13115
13116         * tree-loop-linear.c (gather_interchange_stats): Look in the access
13117         matrix, and never look at the tree representation of the memory
13118         accesses.
13119         (linear_transform_loops): Computes parameters and access matrices.
13120         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
13121         when fails.
13122         (access_matrix_get_index_for_parameter): New.
13123         * tree-data-ref.h (struct access_matrix): New.
13124         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
13125         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
13126         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
13127         am_vector_index_for_loop): New.
13128         (struct data_reference): Add field access_matrix.
13129         (DR_ACCESS_MATRIX): New.
13130         (compute_data_dependences_for_loop): Update declaration.
13131         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
13132         * lambda.h (lambda_vector_vec_p): Declared.
13133         * lambda-code.c: Depend on pointer-set.h.
13134         (lambda_collect_parameters_from_af, lambda_collect_parameters,
13135         av_for_af_base, av_for_af, build_access_matrix,
13136         lambda_compute_access_matrices): New.
13137         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
13138
13139 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
13140
13141         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
13142         $SOURCEDIR/include.
13143
13144 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
13145             Sebastian Pop  <sebastian.pop@amd.com>
13146
13147         PR tree-optimization/36206
13148         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
13149         FOLD_CONVERSIONS.
13150         (instantiate_scev_1): Rename flags to fold_conversions.
13151         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
13152         outeside instantiation_loop.
13153         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
13154         (evolution_function_is_affine_or_constant_p): Removed.
13155         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
13156         instantiate_scev.
13157         (analyze_siv_subscript): Pass in the loop nest number.
13158         Call evolution_function_is_affine_in_loop instead of
13159         evolution_function_is_affine_p.
13160         (analyze_overlapping_iterations): Pass in the loop nest number.
13161
13162 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
13163             Sebastian Pop  <sebastian.pop@amd.com>
13164
13165         PR tree-optimization/36206
13166         * tree-chrec.h (chrec_fold_op): New.
13167         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
13168         and other trees.
13169
13170 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
13171
13172         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
13173         (DIRS_EQ): New.
13174         (remove_duplicates): Do not set inode on non-inode systems.
13175         Use DIRS_EQ.
13176
13177 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
13178
13179         * config.gcc (tm_file): Update comments about relative pathnames.
13180
13181 2008-05-20  Richard Guenther  <rguenther@suse.de>
13182
13183         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
13184         * tree-ssa-sccvn.c (process_scc): Likewise.
13185         * tree-ssa-sink.c (execute_sink_code): Likewise.
13186         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
13187         * tree-vrp.c (process_assert_insertions): Likewise.
13188         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
13189         (perform_tree_ssa_dce): Likewise.
13190         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
13191         (dump_dominator_optimization_stats): Likewise.
13192         * tree-vectorizer.c (vectorize_loops): Likewise.
13193
13194 2008-05-20  Richard Guenther  <rguenther@suse.de>
13195
13196         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
13197
13198 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
13199
13200         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
13201         (ix86_i386elf_return_in_memory): Likewise.
13202         (ix86_i386interix_return_in_memory): Likewise.
13203         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
13204         (SUBTARGET_RETURN_IN_MEMORY): New.
13205         * config/i386/i386elf.h: Likewise.
13206         * config/i386/ptx4-i.h: Likewise.
13207         * config/i386/sol2-10.h: Likewise.
13208         * config/i386/sysv4.h: Likewise.
13209         * config/i386/vx-common.h: Likewise.
13210         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
13211         * config/i386/i386.c (ix86_return_in_memory): Made static and
13212         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
13213         (ix86_i386elf_return_in_memory): Removed.
13214         (ix86_i386interix_return_in_memory): Removed.
13215         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
13216         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
13217
13218 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
13219
13220         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
13221
13222 2008-05-19  Xinliang David Li  <davidxl@google.com>
13223
13224         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
13225         * opts.c: Ditto.
13226         * common.opt: Ditto.
13227         * doc/invoke.texi: Ditto.
13228
13229 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
13230
13231         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
13232         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
13233
13234 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13235
13236         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
13237         sizes of operand array from 8/4 to 4/2.
13238         (ix86_expand_vector_init_general): Change size of operand array
13239         from 32 to 16.  Remove op0, op1 and half_mode.
13240
13241 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13242
13243         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
13244         (ix86_expand_vector_init_interleave): Likewise.
13245         (ix86_expand_vector_init_general): Use them.  Assert
13246         word_mode == SImode when n_words == 4.
13247
13248 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
13249
13250         * config/i386/i386.c (ix86_secondary_reload): New static function.
13251         (TARGET_SECONDARY_RELOAD): New define.
13252         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
13253         * config/i386/i386.md (reload_outqi): Remove.
13254
13255 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13256
13257         PR middle-end/35509
13258         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
13259         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
13260         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
13261         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
13262         (fold_builtin_1): Likewise.
13263         * builtins.def (BUILT_IN_ISINF_SIGN): New.
13264         c-common.c (check_builtin_function_arguments): Handle
13265         BUILT_IN_ISINF_SIGN.
13266         * doc/extend.texi: Document __builtin_isinf_sign.
13267         * fold-const.c (operand_equal_p): Handle COND_EXPR.
13268
13269 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
13270
13271         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
13272         EH cleanup at the end of the pass, search for those that have been
13273         turned into forwarder blocks and do the cleanup on their successor.
13274
13275 2008-05-18  Richard Guenther  <rguenther@suse.de>
13276
13277         * tree-cfg.c (verify_gimple_expr): Allow conversions from
13278         pointers to sizetype and vice versa.
13279
13280 2008-05-18 Xinliang David Li   <davidxl@google.com>
13281
13282         * gcc/tree-ssa-dce.c: Coding style fix.
13283         (check_pow): Documentation comment.
13284         (check_log): Documenation comment. Coding style fix.
13285         (is_unnecessary_except_errno_call): Ditto.
13286         (gen_conditions_for_pow): Ditto.
13287         (gen_conditions_for_log): Ditto.
13288         (gen_shrink_wrap_conditions): Ditto.
13289         (shrink_wrap_one_built_in_calls): Ditto.
13290         * gcc/doc/invoke.texi: Better documentation string.
13291         * ChangeLog: Fix wrong change log entries from
13292         May 17 checkin on function call DCE.
13293
13294 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
13295
13296         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
13297
13298 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
13299
13300         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
13301         * df-problems.c (simulation routines): Fixed block comment to
13302         properly say how to add forwards scanning functions.
13303
13304 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
13305
13306         * tree-inline.c (setup_one_parameter): Remove dead code.
13307
13308 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
13309
13310         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
13311         a BIT_AND_EXPR only for an INTEGER_TYPE.
13312
13313 2008-05-17 Xinliang David Li   <davidxl@google.com>
13314
13315         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
13316         (check_pow, check_log, is_unnecessary_except_errno_call): New
13317         functions to check for eliminating math functions that are pure
13318         except for setting errno.
13319         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
13320         general condition expressions for shrink-wrapping pow/log calls.
13321         (gen_shrink_wrap_conditions): Ditto.
13322         (shrink_wrap_one_built_in_call): Ditto.
13323         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
13324         (mark_operand_necessary): If debugging, output if OP is necessary.
13325         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
13326         unnecessary.
13327         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
13328         opt level >= 2.
13329         * gcc/common.opt: New user flag -ftree-builtin-dce.
13330         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
13331
13332 2008-05-16  David S. Miller  <davem@davemloft.net>
13333
13334         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
13335         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
13336
13337 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
13338
13339         PR target/36246
13340         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
13341
13342 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
13343
13344         * ifcvt.c (dead_or_predicable): Rename
13345         df_simulate_one_insn_backwards to df_simulate_one_insn.
13346         * recog.c (peephole2_optimize): Ditto.
13347         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
13348         Ditto.
13349         * df.h: Rename df_simulate_one_insn_backwards to
13350         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
13351         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
13352         scanning of defs and uses.
13353         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
13354         (df_simulate_one_insn_forwards): Removed.
13355
13356 2008-05-16  Doug Kwan  <dougkwan@google.com>
13357
13358         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
13359         QNaN & SNaN.
13360         (real_from_string): Handle NaNs and Inf as approriate.
13361
13362 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
13363
13364         * doc/gty.texi (Source Files Containing Type Information): Note
13365         that headers should appear first in the gtfiles list.
13366
13367 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
13368
13369         * tree.def (COND_EXEC): Properly documented this code.
13370
13371 2008-05-16  Diego Novillo  <dnovillo@google.com>
13372
13373         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
13374         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
13375         the new field.
13376
13377 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
13378
13379         * tree-ssa-dse (max_stmt_uid): Removed.
13380         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
13381         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
13382         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
13383         * function.h (cfun.last_stmt_uid): New field.
13384         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
13385         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
13386         New functions.
13387         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
13388         (create_stmt_ann): Initialize the ann->uid field.
13389         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
13390         with new calls.
13391         * tree-flow.h (renumber_gimple_stmt_uids): New function.
13392
13393 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
13394
13395         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
13396         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
13397         (init_empty_tree_cfg): Call it.
13398
13399 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
13400
13401         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
13402         Update all users.
13403
13404 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
13405
13406         * doc/invoke.text (-fdump-tree-*-verbose): New option.
13407         * tree-dump.c (dump_options): New verbose option.
13408         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
13409         Add verbose dump.
13410         * tree-pass.h (TDF_VERBOSE): New dump flag.
13411         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
13412         (tree-flow.h): Added include.
13413         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
13414
13415 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
13416
13417         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
13418
13419         From Jie Zhang  <jie.zhang@analog.com>
13420         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
13421         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
13422         mcpu=bf561-none and mcpu=bf561-0.2.
13423         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
13424         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
13425         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
13426         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
13427         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
13428         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
13429         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
13430         option.
13431         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
13432         (cputype_selected): Remove.
13433         (bfin_handle_option): Don't use cputype_selected.
13434         (override_options): When no mcpu option, enable all workarounds.
13435         Don't use bfin_workarounds.
13436         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
13437         processor type.
13438         (DEFAULT_CPU_TYPE): Don't define.
13439
13440 2008-05-16  Richard Guenther  <rguenther@suse.de>
13441
13442         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
13443         on deletion of the last stmt.
13444
13445 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
13446
13447         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
13448         V8HImode for SSE2 and V16QImode for SSE4.1.
13449
13450 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
13451
13452         * cgraph.h (compute_inline_parameters): Made public.
13453         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
13454         variable_generate_summary, function_write_summary,
13455         variable_write_summary, variable_read_summary.  Added generate_summary,
13456         write_summary, read_summary.
13457         * cgraphunit.c (cgraph_process_new_functions): Changed call from
13458         pass_ipa_inline.function_generate_summary, to
13459         compute_inline_parameters.
13460         * ipa-inline.c (compute_inline_parameters): Made public and added
13461         node parameter.
13462         (compute_inline_parameters_for_current): New function.
13463         (pass_inline_param): Now calls compute_inline_parameters_for_current.
13464         (inline_generate_summary): Removed parameter and made to loop over
13465         all cgraph nodes.
13466         (pass_ipa_inline): Updated for new IPA_PASS structure.
13467         * passes.c (execute_ipa_summary_passes): Now is called once per
13468         pass rather than once per node*pass.
13469
13470 2008-05-15  Anatoly Sokolov <aesok@post.ru>
13471
13472         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
13473         avr_have_mul_p, avr_asm_only_p): Remove variables.
13474         (avr_override_options): Remove initialization of removed variables.
13475         (avr_file_start):  Convert removed variables to fields of
13476         'struct base_arch_s *avr_current_arch'.
13477         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
13478         (AVR_HAVE_MUL): (Ditto.).
13479         (AVR_HAVE_MOVW): (Ditto.).
13480         (AVR_HAVE_LPMX): (Ditto.).
13481         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
13482         avr_asm_only_p): Remove declaration.
13483
13484 2008-05-15  Diego Novillo  <dnovillo@google.com>
13485
13486         * config/arm/arm.c (arm_return_in_memory): Fix return type.
13487         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
13488
13489 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
13490
13491         PR middle-end/36194
13492         * combine.c (check_conversion): Rename back to check_promoted_subreg.
13493         Don't call record_truncated_value from here.
13494         (record_truncated_value): Turn it into a for_each_rtx callback.
13495         (record_truncated_values): New function.
13496         (combine_instructions): Call note_uses with record_truncated_values.
13497         Change name of check_conversion to check_promoted_subreg.
13498
13499 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
13500
13501         * doc/sourcebuild.texi: Document support for torture tests.
13502
13503 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
13504
13505         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
13506         to alternative 4 of operand 2.
13507
13508 2008-05-15  Richard Guenther  <rguenther@suse.de>
13509
13510         * tree-pass.h (current_pass): Declare.
13511         (get_pass_for_id): Likewise.
13512         * passes.c (passes_by_id, passes_by_id_size): New globals.
13513         (set_pass_for_id): New function.
13514         (get_pass_for_id): Likewise.
13515         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
13516         (execute_function_todo): Flush per function statistics.
13517         * toplev.c (compile_file): Init statistics.
13518         (general_init): Do early statistics initialization.
13519         (finalize): Finish statistics.
13520         * statistics.h (statistics_early_init): Declare.
13521         (statistics_init): Likewise.
13522         (statistics_fini): Likewise.
13523         (statistics_fini_pass): Likewise.
13524         (statistics_counter_event): Likewise.
13525         (statistics_histogram_event): Likewise.
13526         * statistics.c: New file.
13527         * Makefile.in (OBJS-common): Add statistics.o.
13528         (statistics.o): Add dependencies.
13529         * doc/invoke.texi (-fdump-statistics): Document.
13530
13531         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
13532         (insert): Likewise.
13533         (execute_pre): Use statistics_counter_event.
13534         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
13535         (substitute_and_fold): Increment it.  Use statistics_counter_event.
13536
13537 2008-05-15  Diego Novillo  <dnovillo@google.com>
13538
13539         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
13540
13541         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
13542         * tree-ssa-alias.c (new_type_alias): Remove references to
13543         sub-variables from comment.
13544         * tree-ssa-operands.c (swap_tree_operands): Likewise.
13545
13546 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
13547
13548         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
13549         attribute to 1 only for insertps alternative.
13550
13551 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
13552
13553         * config/bfin/bfin.md (loadbytes): New pattern.
13554         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
13555         (bfin_init_builtins): Initialize it.
13556         (bdesc_1arg): Add it.
13557
13558 2008-05-15  Sa Liu  <saliu@de.ibm.com>
13559
13560         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
13561         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
13562         * testsuite/lib/target-supports.exp: Add
13563         check_effective_target_fortran_integer_16.
13564
13565 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
13566
13567         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
13568         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
13569         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
13570         (TARGET_RETURN_IN_MEMORY): Define.
13571
13572 2008-05-15  Richard Guenther  <rguenther@suse.de>
13573
13574         PR middle-end/36244
13575         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
13576         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
13577         represent unmodifiable vars.
13578
13579 2008-05-15  Richard Guenther  <rguenther@suse.de>
13580
13581         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
13582         INDIRECT_REF and TARGET_MEM_REF.
13583         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
13584         TARGET_MEM_REF.
13585
13586 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
13587             H.J. Lu  <hongjiu.lu@intel.com>
13588
13589         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
13590         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
13591         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
13592         insn alternatives.  Add missing alternatives.
13593         (*vec_concatv2di_rex64_sse4_1): Likewise.
13594         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
13595         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
13596         Require TARGET_SSE.
13597
13598 2008-05-15  Richard Guenther  <rguenther@suse.de>
13599
13600         PR tree-optimization/36009
13601         PR tree-optimization/36204
13602         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
13603         (determine_invariantness_stmt): Record the loop a store is
13604         always executed in.
13605         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
13606         dependency.
13607
13608 2008-05-15  Richard Guenther  <rguenther@suse.de>
13609
13610         PR tree-optimization/34330
13611         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
13612         through the pointer will alias the SMT.
13613
13614 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
13615
13616         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
13617
13618 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
13619
13620         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
13621
13622 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
13623             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13624
13625         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
13626         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
13627         (vashl_optab): New optab for vector/vector shifts.
13628         (vashr_optab): Ditto.
13629         (vlshr_optab): Ditto.
13630         (vrotl_optab): Ditto.
13631         (vrotr_optab): Ditto.
13632         (optab_subtype): New enum for optab_for_tree_code call.
13633         (optab_for_tree_code): Add enum optab_subtype argument.
13634
13635         * optabs.c (optab_for_tree_code): Take an additional argument to
13636         distinguish between a vector shift by a scalar and vector shift by
13637         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
13638         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
13639         vector shift by a vector.
13640         (expand_widen_pattern_expr): Pass additional argument to
13641         optab_for_tree_code.
13642
13643         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
13644         vrotl_optab, vrotr_optab.
13645
13646         * expr.c (expand_expr_real_1): Update calls to
13647         optab_for_tree_code to distinguish between vector shifted by a
13648         scalar and vector shifted by a vector.
13649         * tree-vectorizer.c (supportable_widening_operation): Ditto.
13650         (supportable_narrowing_operation): Ditto.
13651         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
13652         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
13653         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
13654         (vect_create_epilog_for_reduction): Ditto.
13655         (vectorizable_reduction): Ditto.
13656         (vectorizable_operation): Ditto.
13657         (vect_strided_store_supported): Ditto.
13658         (vect_strided_load_supported): Ditto.
13659         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
13660         * expmed.c (expand_shift): Ditto.
13661
13662         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
13663         scalar type.
13664         (ashr@var{m}3): Ditto.
13665         (vashl@var{m}3): Document new vector/vector shift standard name.
13666         (vashr@var{m}3): Ditto.
13667         (vlshr@var{m}3): Ditto.
13668         (vrotl@var{m}3): Ditto.
13669         (vrotr@var{m}3): Ditto.
13670
13671         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
13672         (PPERM_INVERT): Ditto.
13673         (PPERM_REVERSE): Ditto.
13674         (PPERM_REV_INV): Ditto.
13675         (PPERM_ZERO): Ditto.
13676         (PPERM_ONES): Ditto.
13677         (PPERM_SIGN): Ditto.
13678         (PPERM_INV_SIGN): Ditto.
13679         (PPERM_SRC1): Ditto.
13680         (PPERM_SRC2): Ditto.
13681
13682         * config/i386/sse.md (mulv2di3): Add SSE5 support.
13683         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
13684         allows a memory operand to be the value being added, and split it
13685         to improve vectorization.
13686         (sse5_pmacsdqh_mem): Ditto.
13687         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
13688         (sse5_mulv2div2di3_high): Ditto.
13689         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
13690         (vec_pack_trunc_v4si): Ditto.
13691         (vec_pack_trunc_v2di): Ditto.
13692         (sse5_pcmov_<mode>): Remove code that tried to use use
13693         andps/andnps instead of pcmov.
13694         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
13695         pmacsdqh instructions.
13696         (vec_widen_smult_lo_v4si): Ditto.
13697
13698         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
13699         (PPERM_INVERT): Ditto.
13700         (PPERM_REVERSE): Ditto.
13701         (PPERM_REV_INV): Ditto.
13702         (PPERM_ZERO): Ditto.
13703         (PPERM_ONES): Ditto.
13704         (PPERM_SIGN): Ditto.
13705         (PPERM_INV_SIGN): Ditto.
13706         (PPERM_SRC1): Ditto.
13707         (PPERM_SRC2): Ditto.
13708         (ix86_expand_sse_movcc): Move the SSE5 test after the if
13709         true/false tests.
13710         (ix86_expand_int_vcond): If SSE5 generate all possible integer
13711         comparisons.
13712         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
13713         says ignore whether the last reference is a memory operand.
13714
13715 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
13716             Paolo Bonzini <bonzini at gnu dot org>
13717
13718         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
13719         shift patterns.
13720
13721         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
13722         (vlshr<mode>3): Rename from vlshr<mode>3.
13723         (vashr<mode>3): Rename from vashr<mode>3.
13724         (mulv4sf3): Change the names of vector shift patterns.
13725         (mulv4si3): Ditto.
13726         (negv4sf2): Ditt.
13727
13728         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
13729         shift insns.
13730
13731         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
13732         (SI_SHLHI): Ditto.
13733         (SI_SHL): Ditto.
13734         (SI_SHLI): Ditto.
13735         (SI_ROTH): Ditto.
13736         (SI_ROTHI): Ditto.
13737         (SI_ROT): Ditto.
13738         (SI_ROTI): Ditto.
13739         (SPU_RL_0): Ditto.
13740         (SPU_RL_1): Ditto.
13741         (SPU_RL_2): Ditto.
13742         (SPU_RL_3): Ditto.
13743         (SPU_RL_4): Ditto.
13744         (SPU_RL_5): Ditto.
13745         (SPU_RL_6): Ditto.
13746         (SPU_RL_7): Ditto.
13747         (SPU_SL_0): Ditto.
13748         (SPU_SL_1): Ditto.
13749         (SPU_SL_2): Ditto.
13750         (SPU_SL_3): Ditto.
13751         (SPU_SL_4): Ditto.
13752         (SPU_SL_5): Ditto.
13753         (SPU_SL_6): Ditto.
13754         (SPU_SL_7): Ditto.
13755
13756         * config/spu/spu.md (v): New iterator macro to add v for vector types.
13757         (floatunssidf2_internal): Change vector/vector shift names.
13758         (floatunsdidf2_internal): Ditto.
13759         (mulv8hi3): Ditto.
13760         (ashrdi3): Ditto.
13761         (ashrti3): Ditto.
13762         (cgt_df): Ditto.
13763         (cgt_v2df): Ditto.
13764         (dftsv): Ditto.
13765         (vashl<mode>3): Rename from ashl<mode>3.
13766         (vashr<mode>3): Rename from ashr<mode>3.
13767         (vlshr<mode>3): Rename from lshr<mode>3.
13768         (vrotl<mode>3): Rename from rotl<mode>3.
13769
13770 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
13771
13772         PR target/36224
13773         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
13774         multiply gives the wrong value when doing widening multiplies.
13775         (vec_widen_smult_lo_v4si): Ditto.
13776
13777 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
13778
13779         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
13780         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
13781         emit_library_call_value.
13782         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
13783         * tree.h (ECF_LIBCALL_BLOCK): Removed.
13784         * calls.c (initialize_argument_information, precompute_arguments,
13785         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
13786         (precompute_arguments): Removed flags parameter.
13787         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
13788
13789 2008-05-14  Richard Guenther  <rguenther@suse.de>
13790
13791         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
13792         Make sure to register the store if the use is a PHI_NODE.
13793
13794 2008-05-14  Olivier Hainque  <hainque@adacore.com>
13795
13796         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
13797         memory if the component is to be referenced in BLKmode according
13798         to get_inner_reference.
13799
13800 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
13801
13802         * calls.c (emit_library_call_value_1): Restore code clearing
13803         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
13804
13805 2008-05-14  Olivier Hainque  <hainque@adacore.com>
13806             Nicolas Roche  <roche@adacore.com>
13807
13808         * configure.ac: Add support for a "gcc_subdir" variable in
13809         config-lang.in, to denote a subdirectory where the language/GCC
13810         integration files are to be found.
13811         * configure: Regenerate.
13812
13813 2008-05-14  Ira Rosen  <irar@il.ibm.com>
13814
13815         PR tree-optimization/36098
13816         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
13817         value for the first load in the group in case of a gap.
13818         (vect_build_slp_tree): Check that there are no gaps in loads.
13819
13820 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
13821
13822         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
13823         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
13824         expand_copysign_bit, ): Change call to emit_no_conflict_block to
13825         emit_insn and remove unneeded code to construct extra args.
13826         (emit_no_conflict_block): Removed.
13827         * optabls.h: (emit_no_conflict_block): Removed.
13828         * cse.c (cse_extended_basic_block): Remove search for
13829         REG_NO_CONFLICT note.
13830         * global.c: Removed incorrect comment added in revision 117.
13831         * expr.c (convert_move): Change call to emit_no_conflict_block to
13832         emit_insn.
13833         * recog.c: Change comments so that they do not mention
13834         REG_NO_CONFLICT.
13835         * local_alloc.c (combine_regs): Removed last parameter.
13836         (no_conflict_p): Removed.
13837         (block_alloc): Removed note, no_conflict_combined_regno and set
13838         local vars. Removed all code to process REG_NO_CONFLICT blocks.
13839         (combine_regs): Removed already_dead and code to look for
13840         REG_NO_CONFLICT notes.
13841         * lower_subreg (remove_retval_note): Removed code to look for
13842         REG_NO_CONFLICT block.
13843         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
13844         (resolve_clobber): Remove code to process libcalls that have
13845         REG_NO_CONFLICT notes.
13846         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
13847         case.
13848         * combine.c (can_combine_p, distribute_notes):  Removed
13849         REG_NO_CONFLICT case.
13850         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
13851         to emit_insns.
13852         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
13853         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
13854         Ditto.
13855         * reg-notes.def (NO_CONFLICT): Removed.
13856
13857 2008-05-14  David S. Miller  <davem@davemloft.net>
13858
13859         * config/sparc/sparc.c (sparc_profile_hook): If
13860         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
13861         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
13862         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
13863
13864 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
13865
13866         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
13867
13868 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
13869
13870         PR target/36222
13871         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
13872         and op1 expansion before vector concat to have less live pseudos.
13873
13874 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
13875
13876         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
13877         ix86_expand_vector_set if supported.
13878
13879 2008-05-13  Diego Novillo  <dnovillo@google.com>
13880             Kenneth Zadeck  <zadeck@naturalbridge.com>
13881
13882         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
13883
13884         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
13885         phinodes_print_statistics, init_ssanames, fini_ssanames,
13886         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
13887         release_ssa_name, release_defs, replace_ssa_name_symbol,
13888         ssanames_print_statistics): Move ...
13889         * tree-flow.h: ... here.
13890         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
13891         Use FN instead of cfun.
13892         (make_ssa_name_fn): Rename from make_ssa_name.
13893         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
13894         * tree-flow-inline.h (make_ssa_name): Move from
13895         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
13896         * omp-low.c (expand_omp_parallel):
13897         * tree-flow-inline.h (redirect_edge_var_map_result):
13898         * tree-ssa.c (init_tree_ssa): Add argument FN.
13899         Use it instead of cfun.  Update all users.
13900
13901 2008-05-13  Tom Tromey  <tromey@redhat.com>
13902
13903         PR preprocessor/22168:
13904         * doc/cpp.texi (Top): Update menu.
13905         (Alternatives to Wrapper #ifndef): New node.
13906         (Other Directives): Document deprecation.
13907         (Obsolete Features): Remove menu.
13908         (Assertions): Merge node into Obsolete Features.
13909         (Obsolete once-only headers): Move earlier; rename to Alternatives
13910         to Wrapper #ifndef.
13911         * doc/cppopts.texi: Update.
13912         * c.opt (Wdeprecated): Enable for C and ObjC.
13913         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
13914         (C++ Dialect Options): Move -Wno-deprecated from here to...
13915         (Warning Options): ... here.
13916
13917 2008-05-13  Richard Guenther  <rguenther@suse.de>
13918
13919         PR middle-end/36227
13920         * fold-const.c (fold_sign_changed_comparison): Do not allow
13921         changes in pointer-ness.
13922
13923 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13924
13925         PR target/24713
13926         * config/sh/sh.c (sh_expand_prologue): Don't clear
13927         RTX_FRAME_RELATED_P for push insns.
13928
13929 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
13930
13931         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
13932
13933 2008-05-12  Anatoly Sokolov <aesok@post.ru>
13934
13935         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
13936         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
13937         Use 'machine->is_leaf' instead of 'leaf_func_p'.
13938
13939 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
13940
13941         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
13942         (*vec_concatv4sf_sse): This.
13943         (*sse2_concatv2si): Renamed to ...
13944         (*vec_concatv2si_sse2): This.
13945         (*sse1_concatv2si): Renamed to ...
13946         (*vec_concatv2si_sse): This.
13947         (*vec_concatv2di_rex): Renamed to ...
13948         (*vec_concatv2di_rex64): This.
13949         (*vec_concatv2si_sse4_1): New.
13950         (*vec_concatv2di_rex64_sse4_1): Likewise.
13951
13952 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
13953
13954         PR rtl-optimization/36111
13955         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
13956         that was created for swappable operands.
13957
13958 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
13959
13960         PR ada/36001
13961         * Makefile.in: Substitute GNATMAKE and GNATBIND.
13962         * configure.ac: Add call to ACX_PROG_GNAT.
13963
13964 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
13965
13966         * optc-gen.awk: Fix comment typo.
13967
13968 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
13969
13970         * pretty-print.c (pp_integer_with_precision): Use
13971         HOST_LONG_LONG_FORMAT.
13972
13973 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
13974
13975         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
13976
13977 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
13978
13979         * config/i386/i386.c (bdesc_ptest): Removed.
13980         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
13981         (bdesc_args): Add __builtin_ia32_ptestz128,
13982         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
13983         (ix86_init_mmx_sse_builtins): Updated.
13984         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
13985         (ix86_expand_builtin): Updated.
13986
13987 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
13988
13989         * tree-cfg.c (valid_fixed_convert_types_p): New function.
13990         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
13991
13992 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
13993
13994         * value-prof.c (interesting_stringop_to_profile): Do not
13995         return early for BUILT_IN_MEMPCPY.
13996
13997 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
13998
13999         * calls.c (expand_call): Don't use callgraph to increase
14000         preferred_stack_boundary.
14001
14002         * cgraph.h (cgraph_rtl_info): Use unsigned on
14003         preferred_incoming_stack_boundary.
14004
14005         * final.c (rest_of_clean_state): Use unsigned on
14006         preferred_stack_boundary.
14007
14008 2008-05-09  Tom Tromey  <tromey@redhat.com>
14009
14010         PR preprocessor/22231:
14011         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
14012         proceeding.
14013
14014 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
14015
14016         PR tree-optimization/36129
14017         * tree-ssa-ccp.c: Include value-prof.h.
14018         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
14019         built-in function was folded to a constant.
14020         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
14021
14022 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
14023             Sebastian Pop  <sebastian.pop@amd.com>
14024
14025         * tree-scalar-evolution.c: Document instantiate_scev.
14026         (instantiate_parameters_1): Renamed instantiate_scev_1.
14027         Don't use the same loop for instantiation_loop and evolution_loop.
14028         (instantiate_scev): New.
14029         (instantiate_parameters): Moved...
14030         (resolve_mixers): Update call to instantiate_scev_1 to pass the
14031         same loop twice.  Maintains the semantics for this function.
14032         * tree-scalar-evolution.h (instantiate_scev): Declare.
14033         (instantiate_parameters): ...here.  Now static inline.
14034         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
14035         instead of resolve_mixers.
14036
14037 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14038
14039         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
14040
14041 2008-05-09  Tomas Bily  <tbily@suse.cz>
14042
14043         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
14044         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
14045         * tree-ssa-structalias.c (get_constraint_for): Likewise.
14046         * c-common.c (c_common_truthvalue_conversion): Likewise.
14047         * tree-object-size.c (compute_object_offset): Likewise.
14048         * tree-inline.c (estimate_num_insns_1): Likewise.
14049         * varasm.c (const_hash_1, compare_constant, copy_constant)
14050         (compute_reloc_for_constant, output_addressed_constants)
14051         (initializer_constant_valid_p): Likewise.
14052         * c-omp.c (check_omp_for_incr_expr): Likewise.
14053         * gimplify.c (gimplify_expr): Likewise.
14054         * c-typeck.c (c_finish_return): Likewise.
14055         * tree-vectorizer.c (supportable_widening_operation)
14056         (supportable_narrowing_operation): Likewise.
14057         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
14058         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
14059         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
14060         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
14061         (descr_info_loc): Likewise.
14062         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
14063         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
14064         (fold_unary): Likewise.
14065         * builtins.c (get_pointer_alignment): Likewise.
14066         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
14067         (instantiate_parameters_1): Likewise.
14068         * tree.c (expr_align, stabilize_reference): Likewise.
14069         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
14070         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
14071         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
14072         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
14073         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
14074         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
14075         Likewise.
14076         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
14077         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
14078         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
14079         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
14080         (forward_propagate_comparison)
14081         (tree_ssa_forward_propagate_single_use_vars): Likewise.
14082         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
14083         * emit-rtl.c (component_ref_for_mem_expr)
14084         (set_mem_attributes_minus_bitpos): Likewise.
14085         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
14086         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
14087         Likewise.
14088         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
14089         (build_function_call, pointer_diff, build_compound_expr)
14090         (c_finish_return): Likewise.
14091         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
14092         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
14093         Likewise.
14094         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
14095         * expr.c (is_aligning_offset): Likewise.
14096         * tree-ssa-alias.c (is_escape_site): Likewise.
14097         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
14098         (check_all_va_list_escapes): Likewise.
14099         * tree-ssa-loop-ivopts.c (determine_base_object)
14100         (determine_common_wider_type): Likewise.
14101         * dojump.c (do_jump): Likewise.
14102         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
14103         * tree-gimple.c (is_gimple_cast): Likewise.
14104         * fold-const.c (decode_field_reference, )
14105         (fold_sign_changed_comparison, fold_unary, fold_comparison)
14106         (fold_binary): Likewise.
14107         * tree-ssa-alias-warnings.c (find_alias_site_helper)
14108         (already_warned_in_frontend_p): Likewise.
14109         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
14110         * tree.c (really_constant_p, get_unwidened): Likewise.
14111         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
14112         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
14113         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
14114         Likewise.
14115         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
14116         CONVERT_EXPR_P.
14117         (CONVERT_EXPR_P): Define.
14118         (CASE_CONVERT): Define.
14119
14120 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
14121
14122         PR middle-end/36117
14123         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
14124         (delete_unmarked_insns): When deleting a call, call
14125         delete_unreachable_blocks.
14126         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
14127         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
14128
14129 2008-05-08  Richard Guenther  <rguenther@suse.de>
14130
14131         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
14132         (-ftree-salias): Likewise.
14133         (salias-max-implicit-fields): Remove param documentation.
14134         (salias-max-array-elements): Likewise.
14135         * tree-pass.h (pass_create_structure_vars): Remove.
14136         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
14137         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
14138         * tree-ssa-alias.c (create_structure_vars): Remove.
14139         (gate_structure_vars): Likewise.
14140         (pass_create_structure_vars): Likewise.
14141         (gate_build_alias): Likewise.
14142         (pass_build_alias): Adjust to run always and dump the function.
14143         * common.opt (ftree-salias): Hide.
14144         * passes.c (init_optimization_passes): Remove
14145         pass_create_structure_vars, adjust comment.
14146         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
14147         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
14148         * opts.c (decode_options): Do not set flag_tree_salias.
14149         (common_handle_option): Add OPT_ftree_salias to the backward
14150         compatibility section.
14151
14152 2008-05-08  Richard Guenther  <rguenther@suse.de>
14153
14154         * tree-flow-inline.h (var_can_have_subvars): Move ...
14155         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
14156         * tree-flow.h (var_can_have_subvars): Remove.
14157         (push_fields_onto_fieldstack): Remove.
14158         (sort_fieldstack): Likewise.
14159         (struct fieldoff): Move ...
14160         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
14161         alias_set and base_for_components fields.
14162         (sort_fieldstack): Make static.
14163         (push_fields_onto_fieldstack): Likewise.  Remove code that
14164         handles anything but RECORD_TYPEs.  Remove alias_set and
14165         base_for_components handling.
14166         (create_variable_info_for): Adjust.
14167
14168 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
14169
14170         * common.opt (Wframe-larger-than=): Shorten the help message
14171         to one line.
14172         * doc/invoke.texi (Wframe-larger-than=): Add more description.
14173
14174 2008-05-08  Rafael Espíndola  <espindola@google.com>
14175
14176         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
14177         trap.
14178         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
14179         trap and that both operands are gimple values.
14180         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
14181         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
14182         is a fp operation.
14183
14184 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
14185
14186         * read-rtl.c (join_c_conditions): Return the first string if the
14187         two strings are equal.
14188
14189 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
14190
14191         * gensupport.h (pred_data): Add a "num_codes" field.
14192         (add_predicate_code): Declare.
14193         * gensupport.c (add_predicate_code): New function.
14194         (std_pred_table): Add an "allows_const_p" field.
14195         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
14196         Remove the (incomplete) list of such codes from the codes field.
14197         (init_predicate_table): Use add_predicate_code.  Add all
14198         RTX_CONST_OBJs if allows_const_p is true.
14199         * genrecog.c (process_define_predicate): Use add_predicate_code.
14200
14201 2008-05-08  David Daney  <ddaney@avtrex.com>
14202             Richard Sandiford  <rsandifo@nildram.co.uk>
14203
14204         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
14205         special case of constant zero operands.
14206         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
14207         old and new values.  Special case constant zero values.
14208         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
14209         fails.
14210         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
14211         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
14212
14213 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
14214
14215         PR target/36090
14216         * simplify-rtx.c (simplify_plus_minus): Create CONST of
14217         similar RTX_CONST_OBJ before CONST_INT.
14218
14219 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
14220
14221         * stmt.c (expand_stack_restore): Change sa mode if needed.
14222
14223 2008-05-08  Richard Guenther  <rguenther@suse.de>
14224
14225         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
14226         return type to bool.
14227         (ix86_sol10_return_in_memory): Likewise.
14228         (ix86_i386elf_return_in_memory): Likewise.
14229         (ix86_i386interix_return_in_memory): Likewise.
14230         * config/i386/i386.c (ix86_return_in_memory): Likewise.
14231         (ix86_sol10_return_in_memory): Likewise.
14232         (ix86_i386elf_return_in_memory): Likewise.
14233         (ix86_i386interix_return_in_memory): Likewise.
14234
14235 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
14236
14237         PR bootstrap/36180
14238         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
14239         fndecl argument.
14240         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
14241         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
14242         declared in front.
14243
14244 2008-05-08  Richard Guenther  <rguenther@suse.de>
14245
14246         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
14247         * tree-data-ref.h (struct dr_alias): Remove subvars field.
14248         (DR_SUBVARS): Remove.
14249         * tree-dfa.c (dump_subvars_for): Remove.
14250         (debug_subvars_for): Likewise.
14251         (dump_variable): Do not dump subvars.
14252         (remove_referenced_var): Do not remove subvars.
14253         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
14254         (lookup_subvars_for_var): Remove.
14255         (get_subvars_for_var): Likewise.
14256         (get_subvars_at): Likewise.
14257         (get_first_overlapping_subvar): Likewise.
14258         (overlap_subvar): Likewise.
14259         * tree-flow.h (subvar_t): Remove.
14260         (struct var_ann_d): Remove subvars field.
14261         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
14262         argument.  Remove special handling of SFTs.
14263         (compute_tag_properties): Likewise.
14264         (set_initial_properties): Likewise.
14265         (compute_call_clobbered): Likewise.
14266         (count_mem_refs): Likewise.
14267         (compute_memory_partitions): Likewise.
14268         (compute_flow_insensitive_aliasing): Likewise.
14269         (setup_pointers_and_addressables): Likewise.
14270         (new_type_alias): Likewise.
14271         (struct used_part): Remove.
14272         (used_portions): Likewise.
14273         (struct used_part_map): Likewise.
14274         (used_part_map_eq): Likewise.
14275         (used_part_map_hash): Likewise.
14276         (free_used_part_map): Likewise.
14277         (up_lookup): Likewise.
14278         (up_insert): Likewise.
14279         (get_or_create_used_part_for): Likewise.
14280         (create_sft): Likewise.
14281         (create_overlap_variables_for): Likewise.
14282         (find_used_portions): Likewise.
14283         (create_structure_vars): Likewise.
14284         * tree.def (STRUCT_FIELD_TAG): Remove.
14285         * tree.h (MTAG_P): Adjust.
14286         (struct tree_memory_tag): Remove base_for_components and
14287         unpartitionable flags.
14288         (struct tree_struct_field_tag): Remove.
14289         (SFT_PARENT_VAR): Likewise.
14290         (SFT_OFFSET): Likewise.
14291         (SFT_SIZE): Likewise.
14292         (SFT_NONADDRESSABLE_P): Likewise.
14293         (SFT_ALIAS_SET): Likewise.
14294         (SFT_UNPARTITIONABLE_P): Likewise.
14295         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
14296         (union tree_node): Remove sft field.
14297         * alias.c (get_alias_set): Remove special handling of SFTs.
14298         * print-tree.c (print_node): Remove handling of SFTs.
14299         * tree-dump.c (dequeue_and_dump): Likewise.
14300         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
14301         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
14302         * tree-predcom.c (set_alias_info): Do not set subvars.
14303         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
14304         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
14305         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
14306         (add_vars_for_offset): Remove.
14307         (add_virtual_operand): Remove special handling of SFTs.
14308         (add_call_clobber_ops): Likewise.
14309         (add_call_read_ops): Likewise.
14310         (get_asm_expr_operands): Likewise.
14311         (get_modify_stmt_operands): Likewise.
14312         (get_expr_operands): Likewise.
14313         (add_to_addressable_set): Likewise.
14314         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
14315         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
14316         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
14317         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
14318         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
14319         (tree_node_structure): Likewise.
14320         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
14321         handling of SFTs.
14322         (find_what_p_points_to): Likewise.
14323
14324 2008-05-08  Sa Liu  <saliu@de.ibm.com>
14325
14326         * config/spu/spu.md: Fixed subti3 pattern.
14327
14328 2008-05-08  Richard Guenther  <rguenther@suse.de>
14329
14330         PR middle-end/36154
14331         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
14332         sure to create a representative for trailing arrays for PTA.
14333
14334 2008-05-08  Richard Guenther  <rguenther@suse.de>
14335
14336         PR middle-end/36172
14337         * fold-const.c (operand_equal_p): Two objects which types
14338         differ in pointerness are not equal.
14339
14340 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
14341
14342         * calls.c (compute_argument_block_size): Add argument tree fndecl.
14343         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
14344         (emit_library_call_value_1): Add new variable fndecl initialized by
14345         NULL_TREE. It should be the decl type of orgfun, but this information
14346         seems not to be available here, so it uses the default calling abi.
14347         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
14348         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
14349         by TARGET_RETURN_IN_MEMORY.
14350         * config/i386/i386-interix.h: Likewise.
14351         * config/i386/i386.h: Likewise.
14352         * config/i386/i386elf.h: Likewise.
14353         * config/i386/ptx4-i.h: Likewise.
14354         * config/i386/sol2-10.h: Likewise.
14355         * config/i386/sysv4.h: Likewise.
14356         * config/i386/vx-common.h: Likewise.
14357         * config/cris/cris.h: Removed #if 0 clause.
14358         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
14359         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
14360         argument.
14361         (ix86_sol10_return_in_memory): Likewise.
14362         (ix86_i386elf_return_in_memory): New.
14363         (ix86_i386interix_return_in_memory): New.
14364         * config/mt/mt-protos.h (mt_return_in_memory): New.
14365         * config/mt/mt.c: Likewise.
14366         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
14367         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
14368         * config/bfin/bfin.h: Likewise.
14369         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
14370         argument.
14371         * config/bfin/bfin.c: Likewise.
14372         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
14373         * config/alpha/unicosmk.h: Likewise.
14374         * config/i386/cygming.h: Likewise.
14375         * config/iq2000/iq2000.h: Likewise.
14376         * config/mips/mips.h: Likewise.
14377         * config/mn10300/mn10300.h: Likewise.
14378         * config/rs6000/rs6000.h: Likewise.
14379         * config/score/score.h: Likewise.
14380         * config/spu/spu.h: Likewise.
14381         * config/v850/v850.h: Likewise.
14382         * defaults.h: Likewise.
14383         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
14384         * expr.c (emit_block_move): Adjust use of
14385         OUTGOING_REG_PARM_STACK_SPACE.
14386         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
14387         OUTGOING_REG_PARM_STACK_SPACE.
14388         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
14389
14390 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
14391
14392         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
14393         on OMP_RETURN for OMP_FOR.
14394
14395         PR debug/35896
14396         * dwarf2out.c (dw_expand_expr, common_check): Removed.
14397         (fortran_common): New function.
14398         (gen_variable_die): Call fortran_common instead of common_check,
14399         adjust for it returning tree instead of rtx.  Formatting.
14400
14401 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
14402
14403         PR rtl/7335
14404         PR rtl/33826
14405         * see.c (see_copy_insn): Copy new pure const attributes for new call.
14406         * c-decl.c (merge_decls): Ditto.
14407         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
14408         to RTL_CONST_OR_PURE_CALL_P.
14409         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
14410         Initialized DECL_LOOPING_CONST_PURE.
14411         (process_call_operands): Set tree_side_effects properly.
14412         * tree.h (TREE_READONLY_DECL_P): Removed.
14413         (DECL_IS_PURE): Renamed to DECL_PURE_P.
14414         (DECL_LOOPING_OR_CONST_P): New macro.
14415         (struct tree_function_decl): Added looping_const_or_pure_p.
14416         (ECF_*) Renumbered.
14417         (ECF_LOOPING_OR_CONST_P): New macro.
14418         * rtlanal.c (pure_const_p): Removed.
14419         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
14420         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
14421         to RTL_CONST_CALL_P.
14422         * ipa-pure-const.c (pure_const_state_e): Added looping field.
14423         (check_decl, check_tree, check_call, scan_function): Initialize
14424         looping.
14425         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
14426         (static_execute): Set looping true for recursive functions.
14427         Undo setting state to IPA_NEITHER for recursive functions.
14428         * cse.c (cse_insn):
14429         * ifcvt.c (noce_can_store_speculate_p): Changed
14430         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
14431         RTL_CONST_OR_PURE_CALL_P.
14432         * dse.c (scan_insn): Ditto.
14433         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
14434         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
14435         RTL_CONST_OR_PURE_CALL_P.
14436         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
14437         pure_call_p to RTL_CONST_CALL_P.
14438         * gimplify.c (gimplify_call_expr): Clear side effects for
14439         non-looping pure and constant calls.
14440         * calls.c (emit_call_1): Set rtl flags from ecf flags.
14441         (flags_from_decl_or_type): Set ecf flags from decl flags.
14442         (initialize_argument_information): Turn off
14443         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
14444         Change const to pure if callee_copies is true rather than just
14445         turning off const.
14446         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
14447         way of marking pure calls.
14448         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
14449         Remove hack that was supposed to fix pr7335 and remove old
14450         way of marking pure calls.
14451         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
14452         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
14453         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
14454         RTL_CONST_OR_PURE_CALL_P.
14455         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
14456         * loop-invariant.c (find_exits, find_invariant_bb): Changed
14457         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
14458         * sched-deps.c (schedule_analyze): Ditto.
14459         * rtl.h (struct rtx_def): Use call field, unchanging field, and
14460         return_val field of calls to represent pure and const function info.
14461         (CONST_OR_PURE_CALL_P): Deleted macro.
14462         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
14463         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
14464         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
14465         TREE_READONLY.
14466         * tree-optimize.c (execute_fixup_cfg): Added test for
14467         ECF_LOOPING_CONST_OR_PURE.
14468         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
14469         DECL_PURE_P.
14470         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
14471         effects for looping pure or const calls.
14472         (verify_gimple_expr): Added verification code.
14473         * config/alpha/alpha.c (alpha_legitimize_address,
14474         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
14475         RTL_CONST_CALL_P.
14476         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
14477         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
14478         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
14479         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
14480         RTL_CONST_OR_PURE_CALL_P.
14481         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
14482         and const calls to be deleted.
14483
14484 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
14485
14486         PR target/35714
14487         * config/i386/mmx.md (mmx_subv2sf3): New expander.
14488         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
14489         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
14490         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
14491         to handle nonimmediate operands.
14492         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
14493         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
14494         to handle nonimmediate operands.
14495         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
14496         (mmx_pmulhrwv4hi3): New expander.  Use
14497         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14498         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
14499         (sse2_umulv1siv1di3): New expander.  Use
14500         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14501         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
14502         (mmx_eq<mode>3): New expander.  Use
14503         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14504         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
14505         (mmx_uavgv8qi3): New expander.  Use
14506         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14507         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
14508         (mmx_uavgv4hi3): New expander.  Use
14509         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14510
14511         * config/i386/sse.md
14512         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
14513         to handle nonimmediate operands.
14514         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
14515         to handle nonimmediate operands.
14516         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
14517         to handle nonimmediate operands.
14518         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
14519         to handle nonimmediate operands.
14520         (sse2_unpckhpd_exp): New expander.  Use
14521         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14522         (sse2_unpcklpd_exp): New expander.  Use
14523         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14524         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
14525         to handle nonimmediate operands.
14526         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
14527         to handle nonimmediate operands.
14528         (*sse2_<plusminus_insn><mode>3): Rename from
14529         sse2_<plusminus_insn><mode>3 insn pattern.
14530         (sse2_<plusminus_insn><mode>3): New expander.  Use
14531         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14532         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
14533         (sse2_umulv2siv2di3): New expander.  Use
14534         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14535         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
14536         (sse4_1_mulv2siv2di3): New expander.  Use
14537         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14538         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
14539         (sse2_pmaddwd): New expander.  Use
14540         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14541         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
14542         (sse2_eq<mode>3): New expander.  Use
14543         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14544         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
14545         (sse4_1_eqv2di3): New expander.  Use
14546         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14547         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
14548         (sse2_uavgv16qi3): New expander.  Use
14549         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14550         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
14551         (sse2_uavgv16qi3): New expander.  Use
14552         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14553         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
14554         (sse2_uavgv8hi3): New expander.  Use
14555         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14556         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
14557         (ssse3_pmulhrswv8hi3): New expander.  Use
14558         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14559         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
14560         (ssse3_pmulhrswv4hi3): New expander.  Use
14561         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14562
14563         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
14564         (<sse>_vmmul<mode>3): Ditto.
14565         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
14566         (divv2df3): Ditto.
14567         (ssse3_pmaddubsw128): Use register_operand for operand 1.
14568         (ssse3_pmaddubsw): Ditto.
14569
14570         * config/i386/i386.c (struct_builtin_description)
14571         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
14572         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
14573         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
14574         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
14575         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
14576         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
14577         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
14578         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
14579         (ix86_fixup_binary_operands): Assert that src1
14580         and src2 must have the same mode when swapped.
14581         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
14582         and ix86_binary_operator_ok.  Do not force operands in registers
14583         when optimizing.
14584
14585 2008-05-07  Jan Hubicka  <jh@suse.cz>
14586
14587         * cgraph.c (dump_cgraph_node): Update.
14588         * cgraph.h (cgraph_local_info): Break out inline summary.
14589         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
14590         hook.
14591         * ipa-inline (inline_summary): New accestor function.
14592         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
14593         cgraph_decide_inlining, compute_inline_parameters): Update.
14594         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
14595
14596 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
14597
14598         Cleanup ColdFire scheduling support and add V4 pipeline model.
14599
14600         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
14601         (define_attr cpu): Add cfv4 value.
14602         (define_attr type, define_attr type1): Merge into a single 'type'
14603         attribute.  Update all uses.
14604         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
14605         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
14606         Update all uses.
14607         (define_attr opx_mem, define_attr opy_mem): Remove.
14608         (define_attr op_mem): Clean up, update comment.
14609         (define_attr size): Use specific values instead of general int.
14610         (define_attr guess, define_attr split): Remove.  Update all uses.
14611         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
14612         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
14613         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
14614         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
14615         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
14616         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
14617         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
14618         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
14619         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
14620         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
14621         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
14622         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
14623         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
14624         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
14625         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
14626         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
14627         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
14628         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
14629         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
14630         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
14631         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
14632         Update or set attributes.
14633         (stack_tie): New fake instruction.
14634
14635         * config/m68k/m68k.h (TUNE_CFV4): New macro.
14636         (m68k_sched_attr_size): Update declaration.
14637         (m68k_sched_attr_type2): Remove.
14638         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
14639         Declare new bypass predicates.
14640
14641         * config/m68k/m68k.c (m68k_sched_issue_rate,
14642         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
14643         implementations.
14644         (TARGET_SCHED_ISSUE_RATE,
14645         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
14646         (override_options): Handle scheduling for ColdFire V4 core.
14647         (m68k_expand_prologue): Emit stack_tie.
14648         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
14649         'OP_TYPE_FPN'.  Update all uses.
14650         (sched_guess_p): Remove.
14651         (sched_address_type): Handle symbolic addresses.
14652         (sched_get_operand): New static function.
14653         (sched_operand_type): Merge into sched_attr_op_type.
14654         (sched_attr_op_type): Handle FP registers, handle quick constants,
14655         update.
14656         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
14657         (m68k_sched_attr_size): Update.  Move logic to ...
14658         (sched_get_attr_size_int): New static function.
14659         (sched_get_opxy_mem_type): New static function.
14660         (m68k_sched_attr_op_mem): Update.
14661         (m68k_sched_attr_type2): Remove.
14662         (sched_cfv4_bypass_data): New static variable.
14663         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
14664         (m68k_sched_issue_rate): Implement scheduler hook.
14665         (struct _sched_ib: enabled_p): New field.
14666         (m68k_sched_variable_issue): Update.  Handle V4.
14667         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
14668         sched_dump_class_func_t, sched_dump_split_class,
14669         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
14670         sched_dump_dfa_class, m68k_sched_dump): Remove.
14671         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
14672         hook.
14673         (m68k_sched_init_global): Remove statisctics dumping, introduce
14674         sanity check that all instructions have pipeline reservations.  Handle
14675         ColdFire V4 core.
14676         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
14677         Handle ColdFire V4 core.
14678         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
14679         New static functions.
14680         (m68k_sched_address_bypass_p): New bypass predicate.
14681         (sched_get_indexed_address_scale): New static function.
14682         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
14683
14684         * cf.md: Update comments.
14685         (define_attr type2): Remove.  Use 'type' attribute instead.
14686         Update all uses.
14687         (cf_ib): Rename to cfv123_ib.  Update all uses.
14688         (cf_oep): Rename to cfv123_oep.  Update all uses.
14689         (cf_chr): Rename to cfv123_chr.  Update all uses.
14690         (cf_mem): Rename to cfv123_mem.  Update all uses.
14691         (cf_mac): Move to more appropriate place.
14692         (cfv123_guess): New automaton and cpu_unit.
14693         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
14694         Update uses of 'size' attribute.  Handle before reload scheduling.
14695         (cfv123_guess): New dummy reservation for unhandled instructions.
14696         (cfv4_*): Pipeline description of ColdFire V4 core.
14697         (ignore): New reservation to handle 'ignore' type.
14698
14699 2008-05-07  Ian Lance Taylor  <iant@google.com>
14700
14701         PR middle-end/36013
14702         * gimplify.c (find_single_pointer_decl_1): Don't look through
14703         indirections.
14704         (find_single_pointer_decl): Adjust comments.
14705
14706 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
14707
14708         PR middle-end/36137
14709         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
14710         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
14711
14712         PR middle-end/36106
14713         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
14714         integral type rather than floating point, then VIEW_CONVERT_EXPR
14715         to the floating point type.
14716
14717 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
14718
14719         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
14720         TFmode op0 to register.
14721
14722 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
14723
14724         * c-decl.c (grokdeclarator): Comment typo.
14725
14726 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
14727
14728         * tree-flow.h: Remove prototype for computed_goto_p.
14729         * tree-cfg.c (computed_goto_p): Make static.
14730
14731 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
14732
14733         PR target/35657
14734         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
14735         (contains_aligned_value_p): This.  Handle _Decimal128.
14736         (ix86_function_arg_boundary): Only align _Decimal128 to its
14737         natural boundary and handle it properly.
14738
14739 2008-05-06  Martin Jambor  <mjambor@suse.cz>
14740
14741         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
14742         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
14743         (ipcp_method_set_orig_node): Removed.
14744         (ipcp_cval_get_cvalue_type): Removed.
14745         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
14746         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
14747         (ipcp_cval_set_cvalue_type): Removed.
14748         (ipcp_cval_get_cvalue): Removed.
14749         (ipcp_cval_set_cvalue): Removed.
14750         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
14751         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
14752         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
14753         (ipcp_cval_meet): Renamed to ipa_lattice_meet
14754         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
14755         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
14756         (ipcp_get_ith_lattice): Changed parameters.
14757         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
14758         (ipcp_lattice_from_jfunc): Changed parameters.
14759         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
14760         (ipcp_method_cval_print): Added temporary variable info.
14761         (ipcp_redirect): Removed already unused local variable caller.
14762         (ipcp_redirect): New temporary variable orig_callee_info
14763         (ipcp_redirect): Removed newly unused local variable callee.
14764         (ipcp_redirect): Removed (a bit confusing) local variable type.
14765         (ipcp_insert_stage): Added local variable info.
14766         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
14767         renamed too
14768         (ipcp_formal_create): Removed.
14769         (ipcp_method_cval_set): Removed.
14770         (ipcp_propagate_stage): Renamed lattice variables.
14771         (ipcp_method_cval_set_cvalue_type): Removed.
14772         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
14773         (ipcp_print_all_lattices): Changed printed strings to refer to
14774         lattices rather than cvals.
14775         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
14776         (ipcp_propagate_const): Changed formal parameters.
14777         (build_const_val): Changed formal parameters.
14778         (ipcp_insert_stage): Removed useless variable cvalue
14779         (build_const_val): Changed formal parameters.
14780         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
14781         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
14782         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
14783         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
14784         (ipcp_print_func_profile_counts): Changed string from "method" to
14785         "function"
14786         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
14787         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
14788         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
14789         (ipcp_structures_print): Renamed to ipcp_print_all_structures
14790         (ipcp_profile_print): Renamed to ipcp_print_profile_data
14791         (ipcp_lat_is_const): Changed parameters and made inline.
14792         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
14793         (ipcp_redirect): Renamed to ipcp_need_redirect_p
14794         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
14795         the predicate condition directly
14796         (ipcp_propagate_stage): Added local variable args. Removed local
14797         variable callee.  (Both are mere code simplifications.)
14798         (ipcp_method_dont_insert_const): Renamed to
14799         ipcp_node_not_modifiable_p.
14800         (ipcp_node_not_modifiable_p): Made inline.
14801         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
14802         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
14803         (ipcp_print_all_lattices): Removed variable cvalue
14804         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
14805         Updated comments.
14806
14807 2008-05-06  Olivier Hainque  <hainque@adacore.com>
14808
14809         * tree-sra.c (try_instantiate_multiple_fields): Early return
14810         if field has POINTER_TYPE.
14811
14812 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
14813
14814         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
14815         by using 'q' specifier for instruction.
14816         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
14817
14818 2008-05-06  Anatoly Sokolov <aesok@post.ru>
14819
14820         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
14821         Change mode of zero_extract from QImode to HImode.
14822         (sign bit tests peepholes): (Ditto.).
14823
14824 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
14825
14826         * config/i386/mmx.md: Remove double backslashes from asm templates.
14827         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
14828         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
14829         to handle nonimmediate operands.
14830         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
14831         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
14832         to handle nonimmediate operands.
14833         (*mmx_<code>v2sf3_finite): New insn pattern.
14834         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
14835         (mmx_<code>v2sf3): New expander.  Use
14836         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14837         (mmx_<plusminus_insn><mode>3): New expander.  Use
14838         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14839         (*mmx_<plusminus_insn><mode>3): New insn pattern.
14840         (mmx_add<mode>3): Removed.
14841         (mmx_ssadd<mode>3): Ditto.
14842         (mmx_usadd<mode>3): Ditto.
14843         (mmx_sub<mode>3): Ditto.
14844         (mmx_sssub<mode>3): Ditto.
14845         (mmx_ussub<mode>3): Ditto.
14846         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
14847         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
14848         to handle nonimmediate operands.
14849         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
14850         insn pattern.
14851         (mmx_smulv4hi3_highpart): New expander.  Use
14852         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14853         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
14854         insn pattern.
14855         (mmx_umulv4hi3_highpart): New expander.  Use
14856         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14857         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
14858         (mmx_<code>v4hi3): New expander.  Use
14859         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14860         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
14861         (mmx_<code>v8qi3): New expander.  Use
14862         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14863         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
14864         (mmx_<code><mode>3): New expander.  Use
14865         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14866
14867 2008-05-05  Jan Hubicka  <jh@suse.cz>
14868
14869         PR tree-optimization/36118
14870         * passes.c (pass_init_dump_file): Fix dump header.
14871
14872 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14873
14874         PR middle-end/36141
14875         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
14876         VCE for function decls.
14877
14878 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
14879
14880         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
14881
14882 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
14883
14884         * config/i386/i386.md (sat_plusminus): New.
14885         (plusminus_insn): Likewise.
14886         (plusminus_mnemonic): Likewise.
14887         (addsub): Removed.
14888         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
14889         (*<addsub><mode>3_cc_overflow): Renamed to ...
14890         (*<plusminus_insn><mode>3_cc_overflow): This.
14891         (*<addsub>si3_zext_cc_overflow): Renamed to ...
14892         (*<plusminus_insn>si3_zext_cc_overflow): This.
14893
14894         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
14895         (<plusminus_insn><mode>3): This.
14896         (*<addsub><mode>3): Renamed to ...
14897         (*<plusminus_insn><mode>3): This.
14898         (<sse>_vm<addsub><mode>3): Renamed to ...
14899         (<sse>_vm<plusminus_insn><mode>3): This.
14900         (sse3_h<addsub>v4sf3): Renamed to ...
14901         (sse3_h<plusminus_insn>v4sf3): This.
14902         (sse3_h<addsub>v2df3): Renamed to ...
14903         (sse3_h<plusminus_insn>v2df3): This.
14904         (<plusminus_insn><mode>3): New.
14905         (*<plusminus_insn><mode>3): Likewise.
14906         (sse2_<plusminus_insn><mode>3): Likewise.
14907         (add<mode>): Removed.
14908         (*add<mode>3): Likewise.
14909         (sse2_ssadd<mode>3): Likewise.
14910         (sse2_usadd<mode>3): Likewise.
14911         (sub<mode>3): Likewise.
14912         (*sub<mode>3): Likewise.
14913         (sse2_sssub<mode>3): Likewise.
14914         (sse2_ussub<mode>3): Likewise.
14915
14916 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
14917
14918         * gthr-single.h: Add in required interface elements as per gthr.h.
14919         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
14920         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
14921         Generalize UNUSED macro.
14922         (__gthread_once): Add.
14923         (__gthread_key_create): Add.
14924         (__gthread_key_delete): Add.
14925         (__gthread_getspecific): Add.
14926         (__gthread_setspecific): Add.
14927
14928 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
14929
14930         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
14931         the same size types for the indirect reference on the rhs, then
14932         create a VCE.
14933
14934 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
14935
14936         * config/i386/i386.md
14937         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
14938         one insn template instead of template series.
14939         (*xordi_1_rex64): Ditto.
14940         (*xordi_2_rex64): Ditto.
14941
14942 2008-05-05  Ira Rosen  <irar@il.ibm.com>
14943
14944         PR tree-optimization/36119
14945         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
14946         in case of SLP.
14947
14948 2008-06-04  Jan Hubicka  <jh@suse.cz>
14949
14950         tree-optimization/36100
14951         * tree-pass.h (pass_O0_always_inline): Declare.
14952         * ipa-inline.c (inline_transform): Remove dead code.
14953         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
14954         pass_O0_always_inline): New.
14955         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
14956
14957 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
14958
14959         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
14960         mnemonic in this_param move for TARGET_64BIT.
14961
14962 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
14963
14964         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
14965         (*strmovsi_rex_1): Ditto.
14966         (*strsetsi_1): Ditto.
14967         (*strsetsi_rex_1): Ditto.
14968
14969         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
14970         adddicc expanders using SWI mode iterator.
14971
14972 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
14973
14974         PR target/36121
14975         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
14976         argument handling.
14977
14978 2008-05-04  David S. Miller  <davem@davemloft.net>
14979
14980         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
14981         (sparc*-*-linux*): Use linux.h in tm_file.
14982         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
14983         compiler defaulting to 32-bit.
14984         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
14985         no longer needed.
14986         * config/sparc/linux.h: Remove definitions now obtained
14987         properly from linux.h
14988         * config/sparc/linux64.h: Likewise.
14989         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
14990         don't want this setting for 32-bit builds in a biarch compiler.
14991         * doc/install.texi: Add sparc-linux to list of targets
14992         supporting --enable-targets=all.
14993
14994 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
14995
14996         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
14997
14998 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
14999
15000         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
15001         after V4SI_FTYPE_V8HI.
15002         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
15003         case V4SI_FTYPE_V2DF.
15004
15005 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
15006
15007         * doc/invoke.texi (max-flow-memory-locations): Removed.
15008         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
15009
15010 2008-05-03  Richard Guenther  <rguenther@suse.de>
15011
15012         PR middle-end/34973
15013         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
15014
15015 2008-05-02  David S. Miller  <davem@davemloft.net>
15016
15017         * config.gcc (need_64bit_hwint): Document libcpp dependency.
15018
15019 2008-05-02  Simon Baldwin <simonb@google.com>
15020
15021         PR bootstrap/36108
15022         * c-common.h (warn_array_subscript_range): Removed.
15023         * c-common.c (warn_array_subscript_range): Ditto.
15024         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
15025         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
15026
15027 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
15028
15029         * config/i386/i386.c (ix86_special_builtin_type): New.
15030         (bdesc_special_args): Likewise.
15031         (ix86_expand_special_args_builtin): Likewise.
15032         (ix86_init_mmx_sse_builtins): Updated.
15033         (ix86_expand_builtin): Updated.
15034         (ix86_expand_store_builtin): Removed.
15035         (ix86_expand_unop_builtin): Likewise.
15036
15037         * config/i386/mm3dnow.h (__v2sf): Moved to ...
15038         * config/i386/mmintrin.h (__v2sf): Here.
15039
15040         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
15041         const __v2sf.
15042         (_mm_loadl_pi): Likewise.
15043         (_mm_storeh_pi): Replace __v2si with __v2sf.
15044         (_mm_storel_pi): Likewise.
15045
15046         * doc/extend.texi: Correct __builtin_ia32_loadhps,
15047         __builtin_ia32_loadlps, __builtin_ia32_storehps,
15048         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
15049         __builtin_ia32_loadlpd.
15050
15051 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
15052
15053         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
15054         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
15055         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
15056         (ix86_init_mmx_sse_builtins): Updated.
15057         (ix86_expand_args_builtin): Likewise.
15058         (ix86_expand_builtin): Likewise.
15059         (ix86_expand_unop1_builtin): Renamed to ...
15060         (ix86_expand_unop_vec_merge_builtin): This.
15061
15062 2008-05-01  Jan Hubicka  <jh@suse.cz>
15063
15064         PR bootstrap/36100
15065         * ipa-inline.c (inline_generate_summary): Make static.
15066         (inline_transform): Do not call inlining at -O0; make static.
15067         * passes.c (execute_todo): Add sanity check.
15068         (execute_one_ipa_transform_pass): Execute proper flags.
15069
15070 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
15071
15072         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
15073         (DECL_NONADDRESSABLE_P): Likewise.
15074         * alias.c (record_component_aliases): Fix comment.
15075
15076 2008-05-01  Simon Baldwin <simonb@google.com>
15077
15078         * c-common.h (warn_array_subscript_range): New function.
15079         * c-common.c (warn_array_subscript_range): Ditto.
15080         * tree-vrp.c (check_array_ref): Corrected code to agree with
15081         comment, ignoring only arrays of size 0 or size 1.
15082         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
15083
15084 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15085
15086         * config/i386/i386.c (ix86_builtin_type): Replace
15087         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
15088         (bdesc_args): Updated.
15089         (ix86_init_mmx_sse_builtins): Likewise.
15090         (ix86_expand_args_builtin): Likewise.
15091
15092         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
15093         with __v1di.
15094
15095         * doc/extend.texi: Correct __builtin_ia32_palignr.
15096
15097 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15098
15099         PR target/36095
15100         * config/i386/i386.c (bdesc_crc32): Removed.
15101         (ix86_expand_crc32): Likewise.
15102         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
15103         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
15104         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
15105         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
15106         UINT_FTYPE_UINT_UCHAR.
15107         (bdesc_args): Updated. Add crc32 builtins.
15108         (ix86_init_mmx_sse_builtins): Updated.
15109         (ix86_expand_args_builtin): Updated to support subreg.
15110
15111         * doc/extend.texi: Correct __builtin_ia32_crc32di.
15112
15113 2008-05-01  Jan Hubicka  <jh@suse.cz>
15114
15115         * tree-pass.h (opt_pass): Add IPA_PASS.
15116         (varpool_node, cgraph_node): Forward declare.
15117         (ipa_opt_pass): Define.
15118         (pass_ipa_inline): Turn into ipa_opt_pass.
15119         (pass_apply_inline): Remove.
15120         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
15121         (apply_inline): Turn into ....
15122         (inline_transform): ... this one.
15123         (inline_generate_summary): New function.
15124         (pass_apply_inline): Remove.
15125         * function.h (ipa_opt_pass): Forward declare structure; typedef;
15126         vector.
15127         (struct function): Add ipa_transforms_to_apply.
15128         * passes.c (register_one_dump_file): Work on IPA_PASS.
15129         (init_optimization_passes): Remove pass_inline_parameters and
15130         pass_apply_inline.
15131         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
15132         (execute_one_pass) ... here; apply transforms when possible.
15133         (add_ipa_transform_pass, execute_ipa_summary_asses,
15134         execute_one_ipa_transform_pass): New.
15135         (execute_ipa_pass_list): Update for IPA_PASS type.
15136
15137 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15138
15139         * config/i386/i386.c (ix86_builtin_type): Add
15140         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
15141         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
15142         (bdesc_args): Add SSE4a builtins.
15143         (ix86_init_mmx_sse_builtins): Updated.
15144         (ix86_expand_args_builtin): Likewise.
15145         (ix86_expand_builtin): Likewise.
15146
15147 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15148
15149         * config/i386/i386.c (ix86_builtin_type): Add
15150         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
15151         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
15152         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
15153         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
15154         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
15155         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
15156         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
15157         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
15158         and DI_FTYPE_DI_DI_INT.
15159         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
15160         (ix86_init_mmx_sse_builtins): Updated.
15161         (ix86_expand_args_builtin): Likewise.
15162         (ix86_expand_builtin): Likewise.
15163         (ix86_expand_binop_imm_builtin): Removed.
15164
15165         * doc/extend.texi: Correct __builtin_ia32_palignr128.
15166
15167 2008-04-30  Richard Guenther  <rguenther@suse.de>
15168
15169         PR tree-optimization/32921
15170         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
15171
15172 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
15173
15174         * config/arm/arm.c (arm_unwind_emit): Use
15175         crtl->all_throwers_are_sibcalls instead of
15176         cfun->all_throwers_are_sibcalls.
15177         (arm_output_fn_unwind): Likewise.
15178         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
15179         instead of cfun->uses_pic_offset_table.
15180         (frv_expand_prologue): Likewise.
15181         (frv_frame_pointer_required): Likewise.
15182         (frv_expand_fdpic_call): Likewise.
15183         (frv_emit_movsi): Likewise.
15184         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
15185         cfun->returns_pcc_struct instead of
15186         current_function_returns_pcc_struct.
15187         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
15188         instead of cfun->calls_eh_return.
15189         (m32c_pushm_popm): Likewise.
15190         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
15191         "extern" declaration.
15192
15193 2008-04-30  Richard Guenther  <rguenther@suse.de>
15194
15195         PR tree-optimization/21636
15196         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
15197         constant address.
15198         (evaluate_stmt): Print the likely value.
15199         (ccp_visit_stmt): Avoid excessive vertical spacing.
15200
15201 2008-04-30  Rafael Espíndola  <espindola@google.com>
15202
15203         * builtins.c (fold_call_expr): Return realret.
15204         * tree-ssa-threadedge.c
15205         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
15206         __builtin_object_size.
15207
15208 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
15209
15210         * gcc.c (wrapper_string): New variable.
15211         (insert_wrapper): New function.
15212         (execute): New option -wrapper.
15213         * doc/invoke.texi (Overall Options): New driver option -wrapper.
15214
15215 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
15216
15217         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
15218         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
15219         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
15220         from...
15221         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
15222         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
15223         config/rs6000/e500crtres64gprctr.asm,
15224         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
15225         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
15226         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
15227         config/rs6000/e500crtsav64gprctr.asm,
15228         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
15229         config/rs6000/e500crtsavg64gprctr.asm: New files.
15230         * config/rs6000/t-ppccomm: Add build rules for new files.
15231         (LIB2FUNCS_STATIC_EXTRA): Add new files.
15232         * config/rs6000/t-netbsd: Add build rules for new files.
15233         (LIB2FUNCS_STATIC_EXTRA): New variable.
15234         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
15235         (CRTSAVRES_DEFAULT_SPEC): Likewise.
15236         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
15237
15238 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
15239
15240         * config/i386/i386.c (ix86_builtin_type): Add
15241         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
15242         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
15243         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
15244         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
15245         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
15246         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
15247         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
15248         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
15249         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
15250         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
15251         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
15252         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
15253         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
15254         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
15255         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
15256         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
15257         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
15258         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
15259         V1DI_FTYPE_V2SI_V2SI.
15260         (bdesc_2arg): Moved to ...
15261         (bdesc_args): Here.
15262         (ix86_init_mmx_sse_builtins): Updated.
15263         (ix86_expand_args_builtin): Updated.  Take a pointer
15264         to const struct builtin_description.  Handle comparison
15265         builtin functions.
15266         (ix86_expand_sse_compare): Take a new argument for swapping operands.
15267         (ix86_expand_builtin): Updated.
15268
15269         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
15270         (ssse3_pmaddubsw128): This.
15271         (ssse3_pmaddubswv4hi3): Renamed to ...
15272         (ssse3_pmaddubsw): This.
15273
15274         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
15275         (__builtin_ia32_packssdw128): Likewise.
15276         (__builtin_ia32_packuswb128): Likewise.
15277         (__builtin_ia32_pmaddubsw): Likewise.
15278         (__builtin_ia32_pmaddubsw128): Likewise.
15279
15280 2008-04-30  Richard Guenther  <rguenther@suse.de>
15281
15282         PR tree-optimization/14847
15283         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
15284         (recognize_bits_test): Use it.
15285         (recognize_single_bit_test): Likewise.
15286
15287 2008-04-30  Martin Jambor  <mjambor@suse.cz>
15288
15289         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
15290         instead of setting number of formal parameters to zero.
15291         (ipcp_init_stage): Do not set the number of actual parameters to zero
15292         either.
15293         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
15294         which are called with variable number of arguments.
15295         (ipcp_insert_stage): Explicitely skipping all nodes which are
15296         called with variable number of arguments.
15297         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
15298         number of parameters.
15299
15300         * ipa-prop.h (struct ipa_node_params): Added flag
15301         called_with_var_arguments
15302         (ipa_set_param_count): Added.  Changed sole setter to use it.
15303         (ipa_get_param_count): Added.  All readers of param_count
15304         converted to use it instead.
15305         (ipa_set_called_with_variable_arg): Added.
15306         (ipa_is_called_with_var_arguments): Added.
15307         (ipa_get_ith_param): Added.  All readers of param_decls converted
15308         to use it instead.
15309         (ipa_set_cs_argument_count): Added, sole writer to argument_count
15310         changed to use it.
15311         (ipa_get_cs_argument_count): Added, all readers of argument_count
15312         changed to cal it.
15313         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
15314         to use it.
15315
15316         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
15317         (struct ipcp_lattice): Renamed cval_type to type
15318         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
15319
15320         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
15321         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
15322         (ipcp_insert_stage): Changed the type of variable cvalue to tree
15323         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
15324         (build_const_val): Changed the type of parameter cvalue to tree
15325         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
15326         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
15327
15328         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
15329         constant
15330
15331         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
15332         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
15333         (ipa_add_method): Renamed to ipa_push_func_to_list
15334         (ipa_remove_method): Renamed to ipa_pop_func_from_list
15335         (ipa_callsite_param_count): Removed.
15336         (ipa_callsite_param_count_set): Removed.
15337         (ipa_callsite_param): Removed.
15338         (ipa_callsite_callee): Removed.
15339         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
15340         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
15341         (ipa_method_formal_count): Removed.
15342         (ipa_method_formal_count_set): Removed.
15343         (ipa_method_get_tree): Removed.
15344         (ipa_method_tree_map_create): Removed.
15345         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
15346         (ipa_create_param_decls_array): Creates the array itself
15347         (ipa_create_param_decls_array): Temporary variable info instead of
15348         a few dereferences.
15349         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
15350         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
15351         (get_type): Removed.
15352         (ipa_jf_get_info_type): Removed.
15353         (ipa_node_create): Renamed to ipa_create_node_params
15354         (ipa_free): Renamed to ipa_free_all_node_params
15355         (ipa_nodes_create): Renamed to ipa_create_all_node_params
15356         (ipa_edges_create): Renamed to ipa_create_all_edge_args
15357         (ipa_edges_free): Renamed to ipa_free_all_edge_args
15358         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
15359         (ipa_free_all_node_params): Deallocation to jump_functions moved to
15360         ipa_free_all_edge_args
15361         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
15362         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
15363         (ipa_create_methodlist_node): Removed.
15364         (ipa_methodlist_method): Removed.
15365         (ipa_methodlist_method_set): Removed.
15366         (ipa_methodlist_next_method): Removed.
15367         (ipa_methodlist_next_method_set): Removed.
15368         (ipa_method_is_modified): Removed.
15369         (ipa_method_modify_create): Removed.
15370         (ipa_method_modify_init): Temporary variable info instead of a few
15371         dereferences.
15372         (ipa_detect_param_modifications): Temporary variable info instead of
15373         a few dereferences.
15374         (ipa_compute_jump_functions): Temporary variable info instead of
15375         a few dereferences.
15376         (ipa_method_modify_set): Removed.
15377         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
15378         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
15379         than craph_node as the first parameter.
15380         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
15381         (ipa_method_modify_init): Removed.
15382         (ipa_compute_jump_functions): Added a temp variable instead of
15383         repeatadly dereferencing the cgraph_edge.aux pointer
15384         (ipa_callsite_param_set_type): Removed.
15385         (ipa_compute_jump_functions): i renamed to index and moved to
15386         an inner block
15387         (ipa_callsite_param_set_info_type_formal): Removed.
15388         (ipa_callsite_param_set_info_type): Removed.
15389         (ipa_callsite_param_map_create): Removed.
15390         (ipa_callsite_tree): Removed.
15391         (ipa_callsite_caller): Removed.
15392         (ipa_pop_func_from_list): return_method removed to return_func
15393
15394         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
15395         prefixed all values with IPA_. Changed all users.
15396         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
15397         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
15398         and FORMAL_IPATYPE IPA_PASS_THROUGH.
15399         (union parameter_info): Renamed to jump_func_value.
15400         (union jump_func_value): Renamed value to constant
15401         (struct ipa_jump_func): Renamed info_type to value
15402         (struct ipa_node): Renamed to ipa_node_params
15403         (struct ipa_node_params): Renamed ipa_arg_num to param_count
15404         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
15405         (struct ipa_node_params): Renamed ipa_mod to modified_flags
15406         (struct ipa_edge): Renamed to ipa_edge_args
15407         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
15408         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
15409         (struct ipa_methodlist): Renamed to ipa_func_list
15410         (struct ipa_func_list): method_p renamed to node, next_method
15411         renamed to next
15412         (ipa_methodlist_p): Removed, switched all users to struct pointer
15413         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
15414
15415 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
15416
15417         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
15418         (rs6000_emit_epilogue): Use backchain to restore only when we
15419         have a large frame.  Make use of frame pointer to restore if we
15420         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
15421
15422 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
15423
15424         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
15425         Add mode to zero_extract.
15426         (sign bit tests peepholes): (Ditto.).
15427
15428 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
15429
15430         * config/i386/i386.c (ix86_builtins): Replace Prescott New
15431         Instructions in comments with SSE3.
15432         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
15433         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
15434         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
15435         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
15436         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
15437         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
15438         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
15439         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
15440         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
15441         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
15442         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
15443         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
15444         (bdesc_sse_args): Renamed to ...
15445         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
15446         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
15447         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
15448         IX86_BUILTIN_FABSQ.
15449         (bdesc_1arg): Moved to ...
15450         (bdesc_args): Here.
15451         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
15452         Instructions in comments with SSE3.
15453         (ix86_expand_sse_operands_builtin): Renamed to ...
15454         (ix86_expand_args_builtin): This.  Updated.
15455         (ix86_expand_unop1_builtin): Update comments.
15456         (ix86_expand_builtin): Updated.
15457
15458 2008-04-29  Richard Guenther  <rguenther@suse.de>
15459
15460         PR tree-optimization/36078
15461         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
15462         Update virtual SSA form after cleaning up the CFG.
15463
15464 2008-04-29  Richard Guenther  <rguenther@suse.de>
15465
15466         PR middle-end/15255
15467         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
15468
15469 2008-04-29  Richard Guenther  <rguenther@suse.de>
15470
15471         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
15472         (compute_may_aliases): Do not call finalize_ref_all_pointers.
15473         (compute_flow_insensitive_aliasing): Do not treat
15474         PTR_IS_REF_ALL pointers special.
15475         (get_smt_for): Likewise.
15476         (may_alias_p): Re-structure.
15477         (is_escape_site): A ref-all pointer conversion is not an escape site.
15478         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
15479         PTR_IS_REF_ALL pointers special.
15480         * tree-ssa-structalias.h (struct alias_info): Remove
15481         ref_all_symbol_mem_tag field.
15482         (PTR_IS_REF_ALL): Remove.
15483
15484 2008-04-29  Richard Guenther  <rguenther@suse.de>
15485
15486         PR middle-end/36077
15487         * fold-const.c (extract_muldiv_1): In combining division constants
15488         make sure to never overflow.
15489
15490 2008-04-29  Nick Clifton  <nickc@redhat.com>
15491
15492         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
15493
15494 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15495
15496         PR bootstrap/35169
15497         * optc-gen.awk: Work around HP-UX/IA awk bug.
15498
15499 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
15500
15501         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
15502         2008-04-25 commit.
15503
15504 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
15505
15506         PR target/36073
15507         * config/i386/i386.md
15508         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
15509         Change operand 1 predicate to nonimmediate_operand.
15510
15511 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
15512
15513         PR debug/36060
15514         * dwarf2out.c (struct die_struct): Mark as chain_circular through
15515         die_sub field.
15516         * gengtype.c (walk_type, write_func_for_structure): Handle
15517         chain_circular.
15518         * doc/gty.texi: Document chain_circular.
15519
15520 2008-04-28  Richard Guenther  <rguenther@suse.de>
15521
15522         PR tree-optimization/36066
15523         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
15524         SCEV and loop.
15525
15526 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
15527
15528         PR target/36064
15529         * config/i386/i386.md
15530         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
15531         Use match_scratch instead of match_operand for operands 3 and 4.
15532
15533 2008-04-27  Richard Guenther  <rguenther@suse.de>
15534
15535         PR tree-optimization/18754
15536         PR tree-optimization/34223
15537         * tree-pass.h (pass_complete_unrolli): Declare.
15538         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
15539         loop size before and after unconditionally of UL_NO_GROWTH in effect.
15540         Rewrite loop into loop closed SSA form if it is not already.
15541         (tree_unroll_loops_completely): Re-structure to iterate over
15542         innermost loops with intermediate CFG cleanups.
15543         Unroll outermost loops only if requested or the code does not grow
15544         doing so.
15545         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
15546         loops are available.
15547         (tree_vectorize): Instead do so here.
15548         (tree_complete_unroll): Also unroll outermost loops.
15549         (tree_complete_unroll_inner): New function.
15550         (gate_tree_complete_unroll_inner): Likewise.
15551         (pass_complete_unrolli): New pass.
15552         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
15553         uses outside of the loop.
15554         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
15555         form if it is available.
15556         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
15557         * passes.c (init_optimization_passes): Schedule complete inner
15558         loop unrolling pass before the first CCP pass after final inlining.
15559
15560 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
15561
15562         * targhooks.h (default_emutls_var_fields,
15563         default_emutls_var_init): Declare.
15564         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
15565         * target.h (struct gcc_target): Add struct emutls member.
15566         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
15567         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
15568         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
15569         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
15570         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
15571         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
15572         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
15573         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
15574         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
15575         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
15576         emit debug information.
15577         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
15578         * varasm.c: Include targhooks.h.
15579         (emutls_object_section, emutls_tmpl_section): New.
15580         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
15581         (EMUTLS_SEPARATOR): New.
15582         (prefix_name): New.
15583         (get_emutls_object_name): New.
15584         (default_emutls_var_fields): New, broken out of ...
15585         (get_emutls_object_type): ... here.  Adjust to use target hooks.
15586         (get_emutls_init_templ_addr): Adjust to use target hooks.
15587         (emutls_decl): Adjust to use target hooks.
15588         (emutls_finish): Likewise.
15589         (default_emutls_var_init): New, broken out of ...
15590         (assemble_variable): ... here.  Adjust to use target hooks.
15591         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
15592         SECCAT_EMUTLS_TMPL.
15593         * c-common.c (handle_section_attribute): Prevent overriding
15594         sections for emulated tls with special sections.
15595         * config/i386/i386.c (x86_64_elf_select_section): Add
15596         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
15597         (x86_64_elf_unique_section): Likewise.
15598         * config/vxworks.c: Include tree.h.
15599         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
15600         (vxworks_override_options): Set TLS scheme.
15601         * doc/tm.texi (Emulated TLS): New node.
15602
15603 2008-04-26  Simon Baldwin <simonb@google.com>
15604
15605         PR c/35652
15606         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
15607         with propagated string constants.
15608
15609 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
15610
15611         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
15612         constraint for operand 2 when operand 0 is memory operand.
15613         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
15614         operand 0 is memory operand.
15615         (fix_trunc<mode>_i387_with_temp): Ditto.
15616         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
15617         operand 2 when operand 1 is memory operand.
15618         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
15619         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
15620         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
15621         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
15622         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
15623         operands 2,3 and 4 when operand 1 is memory operand.
15624         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
15625         is memory operand.
15626         (fistdi2_floor_with_temp): Ditto.
15627         (fist<mode>2_floor_with_temp): Ditto.
15628         (fistdi2_ceil_with_temp): Ditto.
15629         (fist<mode>2_ceil_with_temp): Ditto.
15630         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
15631
15632 2008-04-26  David Daney  <ddaney@avtrex.com>
15633
15634         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
15635         unspec_volitile.
15636         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
15637         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
15638         UNSPEC_UPDATE_GOT_VERSION): Renumber.
15639         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
15640         (compare_and_swap_12): New insn.
15641         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
15642         * config/mips/mips.c (mips_force_binary): New function.
15643         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
15644         (mips_expand_compare_and_swap_12): New function.
15645         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
15646
15647 2008-04-25  Jan Hubicka  <jh@suse.cz>
15648
15649         PR testsuite/35843
15650         * cfgexpand.c (pass_expand): Turn into RTL pass.
15651         * passes.c (execute_one_pass): Do pass typechecking after execution.
15652         * tree-pass.h (pass_expand): Turn into RTL pass.
15653
15654         * function.h (struct rtl_data): Move here fields
15655         accesses_prior_frames, calls_eh_return, saves_all_registers,
15656         has_nonlocal_goto, has_asm_statement, is_thunk,
15657         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
15658         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
15659         arg_pointer_save_area_init from struct function; turn into bool.
15660         (struct function): Move
15661         calls_eh_return, saves_all_registers, has_nonlocal_goto,
15662         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
15663         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
15664         tail_call_emit, arg_pointer_save_area_init
15665         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
15666         (current_function_returns_struct, current_function_returns_pcc_struct,
15667         current_function_calls_setjmp, current_function_calls_alloca,
15668         current_function_accesses_prior_frames,
15669         current_function_calls_eh_return, current_function_is_thunk,
15670         current_function_stdarg, current_function_profile,
15671         current_function_limit_stack, current_function_uses_pic_offset_table,
15672         current_function_uses_const_pool, current_function_has_nonlocal_label,
15673         current_function_saves_all_registers,
15674         current_function_has_nonlocal_goto,
15675         current_function_has_asm_statement): Remove accesor macros.
15676         * ra-conflict.c (global_conflicts): Update.
15677         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
15678         (suitable_for_tail_call_opt_p): Update.
15679         * builtins.c (expand_builtin_return_addr): Update.
15680         (expand_builtin_setjmp_setup): Update.
15681         (expand_builtin_nonlocal_goto): Update.
15682         * final.c (final_start_function): Update.
15683         (profile_function): Update.
15684         (leaf_function_p): Update.
15685         (only_leaf_regs_used): Update.
15686         * df-scan.c (df_get_exit_block_use_set): Update.
15687         * dojump.c (clear_pending_stack_adjust): Update.
15688         * tree-stdarg.c (gate_optimize_stdarg): Update.
15689         * gimple-low.c (lower_function_body): Update.
15690         * global.c (compute_regsets): Update.
15691         (global_alloc): Update.
15692         * dwarf2out.c (dwarf2out_begin_prologue): Update.
15693         * expr.c (expand_assignment): Update.
15694         * dse.c (dse_step0): Update.
15695         (dse_step1): Update.
15696         * c-decl.c (store_parm_decls): Update.
15697         * local-alloc.c (combine_regs): Update.
15698         (find_free_reg): Update.
15699         * function.c (assign_parms_augmented_arg_list): Update.
15700         (assign_parm_find_data_types): Update.
15701         (assign_parms): Update.
15702         (allocate_struct_function): Update.
15703         (expand_function_start): Update.
15704         (expand_function_end): Update.
15705         (get_arg_pointer_save_area): Update.
15706         (thread_prologue_and_epilogue_insns): Update.
15707         (rest_of_match_asm_constraints): Update.
15708         * stor-layout.c (variable_size): Update.
15709         * gcse.c (gcse_main): Update.
15710         (bypass_jumps): Update.
15711         * gimplify.c (gimplify_function_tree): Update.
15712         * calls.c (emit_call_1): Update.
15713         (expand_call): Update.
15714         * bt-load.c (compute_defs_uses_and_gen): Update.
15715         * except.c (sjlj_assign_call_site_values): Update.
15716         (sjlj_emit_function_enter): Update.
15717         (can_throw_external): Update.
15718         (set_nothrow_function_flags): Update.
15719         (expand_builtin_unwind_init): Update.
15720         (expand_eh_return): Update.
15721         (convert_to_eh_region_ranges): Update.
15722         (output_function_exception_table): Update.
15723         * emit-rtl.c (gen_tmp_stack_mem): Update.
15724         * cfgexpand.c (expand_used_vars): Update.
15725         (tree_expand_cfg): Update.
15726         * cfgcleanup.c (rest_of_handle_jump): Update.
15727         * explow.c (allocate_dynamic_stack_space): Update.
15728         * varasm.c (assemble_start_function): Update.
15729         (force_const_mem): Update.
15730         (mark_constant_pool): Update.
15731         * tree-optimize.c (tree_rest_of_compilation): Update.
15732         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
15733         * tree-cfg.c (notice_special_calls): Update.
15734         (is_ctrl_altering_stmt): Update.
15735         (tree_can_make_abnormal_goto): Update.
15736         (tree_purge_dead_abnormal_call_edges): Update.
15737         * config/alpha/predicates.md: Update.
15738         * config/alpha/alpha.c (alpha_sa_mask): Update.
15739         (alpha_sa_size): Update.
15740         (alpha_does_function_need_gp): Update.
15741         (alpha_expand_prologue): Update.
15742         (alpha_start_function): Update.
15743         (alpha_output_function_end_prologue): Update.
15744         (alpha_expand_epilogue): Update.
15745         * config/frv/frv.c (frv_stack_info): Update.
15746         (frv_expand_epilogue): Update.
15747         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
15748         (s390_register_info): Update.
15749         (s390_frame_info): Update.
15750         (s390_init_frame_layout): Update.
15751         (s390_can_eliminate): Update.
15752         (save_gprs): Update.
15753         * config/spu/spu.c (spu_split_immediate): Update.
15754         (need_to_save_reg): Update.
15755         (spu_expand_prologue): Update.
15756         (spu_expand_epilogue): Update.
15757         * config/sparc/sparc.md: Update.
15758         * config/sparc/sparc.c (eligible_for_return_delay): Update.
15759         (sparc_tls_got): Update.
15760         (legitimize_pic_address): Update.
15761         (sparc_emit_call_insn): Update.
15762         (sparc_expand_prologue): Update.
15763         (output_return): Update.
15764         (print_operand): Update.
15765         (sparc_function_ok_for_sibcall): Update.
15766         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
15767         * config/m32r/m32r.md: Update.
15768         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
15769         (m32r_compute_frame_size): Update.
15770         (m32r_expand_prologue): Update.
15771         (m32r_expand_epilogue): Update.
15772         (m32r_legitimize_pic_address): Update.
15773         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
15774         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
15775         * config/i386/i386.c (ix86_frame_pointer_required): Update.
15776         (gen_push): Update.
15777         (ix86_save_reg): Update.
15778         (ix86_compute_frame_layout): Update.
15779         (ix86_expand_prologue): Update.
15780         (ix86_expand_epilogue): Update.
15781         * config/sh/sh.c (output_stack_adjust): Update.
15782         (calc_live_regs): Update.
15783         (sh5_schedule_saves): Update.
15784         (sh_expand_prologue): Update.
15785         (sh_expand_epilogue): Update.
15786         (sh_setup_incoming_varargs): Update.
15787         (sh_allocate_initial_value): Update.
15788         (sh_get_pr_initial_val): Update.
15789         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
15790         * config/sh/sh.md (label:): Update.
15791         * config/avr/avr.c (out_movhi_mr_r): Update.
15792         * config/crx/crx.h (enum): Update.
15793         * config/xtensa/xtensa.h (along): Update.
15794         * config/stormy16/stormy16.c Update.
15795         (xstormy16_compute_stack_layout): Update.
15796         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
15797         (fr30_expand_prologue): Update.
15798         * config/cris/cris.c (cris_conditional_register_usage): Update.
15799         (cris_reg_saved_in_regsave_area): Update.
15800         (cris_initial_frame_pointer_offset): Update.
15801         (cris_simple_epilogue): Update.
15802         (cris_expand_prologue): Update.
15803         (cris_expand_epilogue): Update.
15804         (cris_expand_pic_call_address): Update.
15805         (cris_asm_output_symbol_ref): Update.
15806         (cris_asm_output_label_ref): Update.
15807         * config/cris/cris.md Update.
15808         * config/iq2000/iq2000.c (compute_frame_size): Update.
15809         (iq2000_expand_epilogue): Update.
15810         * config/mt/mt.h (save_direction): Update.
15811         * config/mn10300/mn10300.c (mn10300_function_value): Update.
15812         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
15813         (ia64_secondary_reload_class): Update.
15814         * config/m68k/m68k.c (m68k_save_reg): Update.
15815         (m68k_expand_prologue): Update.
15816         (m68k_expand_epilogue): Update.
15817         (legitimize_pic_address): Update.
15818         * config/rs6000/rs6000.c (rs6000_got_register): Update.
15819         (first_reg_to_save): Update.
15820         (first_altivec_reg_to_save): Update.
15821         (compute_vrsave_mask): Update.
15822         (compute_save_world_info): Update.
15823         (rs6000_stack_info): Update.
15824         (spe_func_has_64bit_regs_p): Update.
15825         (rs6000_ra_ever_killed): Update.
15826         (rs6000_emit_eh_reg_restore): Update.
15827         (rs6000_emit_allocate_stack): Update.
15828         (rs6000_emit_prologue): Update.
15829         (rs6000_emit_epilogue): Update.
15830         (rs6000_output_function_epilogue): Update.
15831         (output_profile_hook): Update.
15832         (rs6000_elf_declare_function_name): Update.
15833         * config/rs6000/rs6000.h (rs6000_args): Update.
15834         * config/rs6000/rs6000.md: Update.
15835         * config/mcore/mcore.c (mcore_expand_prolog): Update.
15836         * config/arc/arc.c (arc_output_function_epilogue): Update.
15837         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
15838         * config/darwin.c (machopic_function_base_name): Update.
15839         * config/score/score3.c (score3_compute_frame_size): Update.
15840         (rpush): Update.
15841         (rpop): Update.
15842         (score3_epilogue): Update.
15843         * config/score/score7.c (score7_compute_frame_size): Update.
15844         (score7_prologue): Update.
15845         (score7_epilogue): Update.
15846         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
15847         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
15848         * config/arm/arm.c (use_return_insn): Update.
15849         (require_pic_register): Update.
15850         (arm_load_pic_register): Update.
15851         (arm_compute_save_reg0_reg12_mask): Update.
15852         (arm_compute_save_reg_mask): Update.
15853         (thumb1_compute_save_reg_mask): Update.
15854         (output_return_instruction): Update.
15855         (arm_output_function_prologue): Update.
15856         (arm_output_epilogue): Update.
15857         (arm_get_frame_offsets): Update.
15858         (arm_expand_prologue): Update.
15859         (thumb_pushpop): Update.
15860         (thumb_exit): Update.
15861         (thumb1_expand_prologue): Update.
15862         (thumb1_expand_epilogue): Update.
15863         (arm_unwind_emit): Update.
15864         (arm_output_fn_unwind): Update.
15865         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
15866         * config/arm/arm.md: Update.
15867         * config/pa/pa.md: Update.
15868         * config/pa/pa.c (legitimize_pic_address): Update.
15869         (compute_frame_size): Update.
15870         (hppa_expand_prologue): Update.
15871         (hppa_expand_epilogue): Update.
15872         (borx_reg_operand): Update.
15873         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
15874         (HARD_REGNO_RENAME_OK): Update.
15875         * config/mips/mips.c (mips_global_pointer): Update.
15876         (mips_save_reg_p): Update.
15877         (mips_compute_frame_info): Update.
15878         (mips_frame_pointer_required): Update.
15879         (mips_expand_prologue): Update.
15880         (mips_expand_epilogue): Update.
15881         (mips_can_use_return_insn): Update.
15882         (mips_reorg_process_insns): Update.
15883         * config/v850/v850.c (compute_register_save_size): Update.
15884         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
15885         * config/mmix/mmix.c (along): Update.
15886         (mmix_expand_epilogue): Update.
15887         * config/bfin/bfin.c (legitimize_pic_address): Update.
15888         (must_save_p): Update.
15889         (stack_frame_needed_p): Update.
15890         (add_to_reg): Update.
15891         (bfin_expand_prologue): Update.
15892         * stmt.c (expand_asm_operands): Update.
15893         * reload1.c (reload): Update.
15894         (init_elim_table): Update.
15895
15896 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
15897
15898         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
15899
15900 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
15901
15902         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
15903         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
15904         (mov<mode>): Removed.
15905         (*movv4sf_internal): Likewise.
15906         (*movv2df_internal): Likewise.
15907
15908 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
15909
15910         * config.gcc (crx-*-elf): Remove deprecation.
15911
15912 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
15913
15914         * config/i386/cygming-crtend.c (register_frame_ctor): Register
15915         __gcc_deregister_frame with atexit.
15916         (deregister_frame_dtor): Remove.
15917
15918 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
15919             Nathan Sidwell  <nathan@codesourcery.com>
15920
15921         * config/rs6000/rs6000.opt (mspe): Remove Var property.
15922         (misel): Likewise.
15923         * config/rs6000/rs6000.h (rs6000_spe): Declare.
15924         (rs6000_isel): Likewise.
15925         * config/rs6000/rs6000.c (rs6000_spe): New variable.
15926         (rs6000_isel): New variable.
15927         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
15928
15929 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15930
15931         PR c++/35758
15932         * c-common.c (handle_vector_size_attribute): Call
15933         lang_hooks.types.reconstruct_complex_type instead of
15934         reconstruct_complex_type.
15935         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
15936         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
15937         * langhooks.h (struct lang_hooks_for_types): Add
15938         reconstruct_complex_type hook.
15939         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
15940         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
15941
15942 2008-04-24  Richard Guenther  <rguenther@suse.de>
15943
15944         * c-common.h (check_builtin_function_arguments): Declare.
15945         * c-common.c (validate_nargs): New function.
15946         (check_builtin_function_arguments): Likewise.
15947         * c-typeck.c (build_function_call): Call
15948         check_builtin_function_arguments.
15949         * builtins.c (fold_builtin_classify): Remove error reporting code.
15950         (fold_builtin_unordered_cmp): Likewise.
15951         (fold_builtin_1): Likewise.
15952         (fold_builtin_n): Likewise.
15953
15954 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15955
15956         PR tree-optimization/36008
15957         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
15958         the original op1, rather than delta by step.
15959
15960 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
15961             Sebastian Pop  <sebastian.pop@amd.com>
15962
15963         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
15964         eliminate_local_variables_stmt, eliminate_local_variables,
15965         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
15966         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
15967         of code delimited by two edges in the CFG.
15968         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
15969         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
15970         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
15971         the case of parallelisation of reductions.
15972         (expr_invariant_in_region_p): New.
15973
15974         * tree-flow.h (gather_blocks_in_sese_region): Declared.
15975         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
15976
15977 2008-04-24  Ira Rosen  <irar@il.ibm.com>
15978             Richard Guenther  <rguenther@suse.de>
15979
15980         PR tree-optimization/36034
15981         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
15982         incapable of dealing with loads with gaps.
15983
15984 2008-04-24  Rafael Espíndola  <espindola@google.com>
15985
15986         * tree-flow.h (vrp_evaluate_conditional): Change signature.
15987         * tree-ssa-propagate.c (fold_predicate_in): Update call to
15988         vrp_evaluate_conditional.
15989         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
15990         (vrp_evaluate_conditional): Split the cond argument.
15991         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
15992         (simplify_stmt_for_jump_threading): Update call to
15993         vrp_evaluate_conditional.
15994
15995 2008-04-24  Ira Rosen  <irar@il.ibm.com>
15996
15997         PR tree-optimization/35982
15998         * tree-vect-analyze.c (vect_check_interleaving): Check that the
15999         interleaved data-refs are of the same type.
16000
16001 2008-04-24  Danny Smith  <dannysmith@users.net>
16002
16003         * c-format.c (check_format_info_main): Use strncmp rather than a
16004         magic prefix to handle multichar length specs.
16005         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
16006         Don't prefix "I64" and "I32" with '\0'.
16007
16008 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
16009
16010         PR target/36015
16011         * config/i386/i386.c (init_cumulative_args): Don't pass anything
16012         in registers for -m32 only if stdarg_p (fntype).
16013
16014 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
16015
16016         PR rtl-optimization/36006
16017         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
16018         temp to op0 in order to avoid invalid rtx sharing.
16019
16020 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
16021
16022         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
16023         check TREE_INVARIANT.
16024         * tree-gimple.c (is_gimple_address): New.
16025         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
16026         * tree-gimple.h (is_gimple_address): New.
16027         * tree.h (decl_address_invariant_p): New.
16028         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
16029         (build_string): Likewise.
16030         (decl_address_invariant_p): New, from is_gimple_invariant_address.
16031         (tree_invariant_p_1): Likewise.
16032         (save_expr): Use it.
16033         (tree_invariant_p): New.
16034         (skip_simple_arithmetic): Use it.
16035         (stabilize_reference_1): Use it.
16036         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
16037         simplify.
16038         (build1_stat): Drop code to compute TREE_INVARIANT.
16039         (build2_stat): Drop code to compute TREE_INVARIANT.
16040         (build3_stat): Drop code to compute TREE_INVARIANT.
16041         (build4_stat): Drop code to compute TREE_INVARIANT.
16042         (build5_stat): Drop code to compute TREE_INVARIANT.
16043         (build7_stat): Drop code to compute TREE_INVARIANT.
16044         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
16045         * tree.h (struct tree_base): Remove invariant_flag.
16046         (TREE_INVARIANT): Remove.
16047         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
16048         (fold_builtin_expect): Check TREE_CONSTANT.
16049         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
16050         * c-tree.h (c_expr_to_decl): Drop third parameter.
16051         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
16052         (build_c_cast): Don't set TREE_INVARIANT.
16053         (pop_init_level): Don't set TREE_INVARIANT.
16054         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
16055         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
16056         TREE_CONSTANT.
16057         (gimplify_init_constructor): Don't set TREE_INVARIANT.
16058         (gimplify_addr_expr): Adjust comment.
16059         * tree-mudflap.c (mf_build_string):
16060         * print-tree.c (print_node): Don't print TREE_INVARIANT.
16061         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
16062         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
16063         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
16064         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
16065         * langhooks.h (struct lang_hooks): Drop third parameter from
16066         expr_to_decl.
16067
16068 2008-04-23  Richard Guenther  <rguenther@suse.de>
16069
16070         PR tree-optimization/27799
16071         PR tree-optimization/32921
16072         PR tree-optimization/32624
16073         * tree-ssa-structalias.c (merge_smts_into): Only merge the
16074         SMTs aliases and the tag itself into the solution.
16075         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
16076         merge the points-to solution back into the SMT aliases.
16077         (may_alias_p): Use alias_set_subset_of instead of
16078         aliases_conflict_p.  A pointer which points to
16079         memory with alias set zero may access any variable.
16080
16081 2008-04-23  Richard Guenther  <rguenther@suse.de>
16082
16083         * alias.c (alias_set_subset_of): Correctly handle asking
16084         if zero is a subset of an alias set with zero child.
16085         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
16086         (compute_flow_insensitive_aliasing): Correctly walk all
16087         pointers.  Do not unnecessarily union sets.
16088
16089 2008-04-23  Richard Guenther  <rguenther@suse.de>
16090
16091         PR middle-end/36021
16092         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
16093
16094 2008-04-22  Tomas Bily  <tbily@suse.cz>
16095
16096         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
16097         unreachable case.
16098         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
16099         NON_LVALUE_EXPR.
16100         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
16101         * tree-ssa-structalias.c (get_constraint_for): Likewise.
16102         * tree-inline.c (estimate_num_insns_1): Likewise.
16103         * varasm.c (const_hash_1, compare_constant, copy_constant)
16104         (compute_reloc_for_constant, output_addressed_constants): Likewise.
16105         * emit-rtl.c (component_ref_for_mem_expr)
16106         (set_mem_attributes_minus_bitpos): Likewise.
16107         * expr.c (highest_pow2_factor, expand_expr_real_1, )
16108         (is_aligning_offset): Likewise.
16109         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
16110         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
16111         * dojump.c (do_jump): Likewise.
16112         * builtins.c (get_pointer_alignment, get_memory_rtx)
16113         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
16114         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
16115
16116 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
16117
16118         PR rtl-optimization/36017
16119         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
16120         expanding the library call.
16121
16122 2008-04-22  Ian Lance Taylor  <iant@google.com>
16123
16124         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
16125         than size_in_bytes.
16126
16127 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
16128
16129         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
16130         of LR/CTR moves for Power6.
16131
16132 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
16133
16134         PR middle-end/36003
16135         * passes.c (init_optimization_passes): Remove
16136         pass_fast_rtl_byte_dce.
16137
16138 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
16139
16140         PR target/29096
16141         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
16142         builtin functions to generate faster code.
16143         (_mm_cvtpu16_ps): Ditto.
16144         (_mm_cvtpi32x2_ps): Ditto.
16145
16146 2008-04-22  Nick Clifton  <nickc@redhat.com>
16147
16148         * common.opt (ftree-loop-distribution): Add Optimization
16149         attribute.
16150
16151         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
16152         (frv_expand_builtin_va_start): Likewise.
16153
16154         * config/arm/arm.c (thumb_find_work_register): Fix location of
16155         argument register count.
16156
16157 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16158
16159         Support scheduling for ColdFire V1 and V3 microarchitecture.
16160         Improve scheduling of multiplication instructions.
16161
16162         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
16163         (mac): New instruction attribute.
16164         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
16165         (m68k_sched_mac): New variable.
16166         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
16167         Handle cfv1 and cfv3.
16168         (max_insn_size): New static variable.
16169         (struct _sched_ib): New type.
16170         (sched_ib): New static variable.
16171         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
16172         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
16173         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
16174         Update.
16175         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
16176         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
16177         new variables.  Update.
16178         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
16179         Add modeling of cfv3 instruction buffer.  Update.
16180         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
16181         * config/m68k/m68k.h (TUNE_CFV3): New macro.
16182         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
16183         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
16184         a particular reservation applies to.
16185         (type2): Reorganize attribute values.  Rename alu to alu_reg,
16186         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
16187         to mul_l and mul_w.
16188         (cf_ib_*): Simplify description of instruction buffer.
16189         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
16190         (cf_mem): Split into cf_mem1 and cf_mem2.
16191         (cf_v2_move_??): Rename to cfv12_alu_??.
16192         (cf_v2_move_l_??): Rename to cfv12_omove_??.
16193         (cf_v2_mul_??): Remove reservations.
16194         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
16195         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
16196         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
16197         appropriate place.
16198         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
16199         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
16200         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
16201         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
16202         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
16203         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
16204         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
16205         expansions of the above reservations for instructions of sizes
16206         1, 2 and 3 words.
16207
16208 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16209
16210         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
16211
16212 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
16213
16214         * coverage.c: Include tree-pass.h.
16215         (coverage_counter_alloc): Print da_file_name to the dump file.
16216
16217 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
16218
16219         * sbitmap.c (sbitmap_range_empty_p): New function.
16220         * sbitmap.h (sbitmap_range_empty_p): New function.
16221         * bitmap.h: Now includes obstack.h.
16222
16223 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
16224             Kenneth Zadeck  <zadeck@naturalbridge.com>
16225
16226         * dbgcnt.def (ra_byte_scan): Added.
16227         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
16228         when the last hit happens for a counter.
16229         * timevar.def (TV_DF_BYTE_LR): New variable.
16230         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
16231         * passes.c (pass_fast_rtl_byte_dce): New pass.
16232         * fwprop.c (update_df): Added mode to call df_ref_create.
16233         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
16234         DF_REF_EXTRACT_OFFSET.
16235         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
16236         DF_BYTE_LR_OUT, df_byte_lr): New macro.
16237         (df_mm): New enum.
16238         (df_ref_extract): Added mode field.
16239         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
16240         DF_REF_EXTRACT_OFFSET.
16241         (DF_REF_EXTRACT_MODE): New macro.
16242         (df_byte_lr_bb_info): New structure.
16243         (df_print_byte_regset, df_compute_accessed_bytes,
16244         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
16245         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
16246         df_byte_lr_simulate_uses,
16247         df_byte_lr_simulate_artificial_refs_at_top,
16248         df_byte_lr_simulate_artificial_refs_at_end,
16249         df_compute_accessed_bytes): New function.
16250         (df_ref_create): Add parameter.
16251         (df_byte_lr_get_bb_info): New inline function.
16252         * df-scan.c (df_ref_record, df_uses_record,
16253         df_ref_create_structure): Added mode parameter.
16254         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
16255         df_defs_record, df_uses_record, df_get_conditional_uses,
16256         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
16257         df_entry_block_defs_collect, df_exit_block_uses_collect):
16258         Added mode parameter to calls to df_ref_record, df_uses_record,
16259         df_ref_create_structure.
16260         (df_ref_equal_p, df_ref_compare): Added test for modes.
16261         (df_ref_create_structure): Added code to set mode.  Renamed
16262         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
16263         DF_REF_EXTRACT_OFFSET.
16264         * df-core.c (df_print_byte_regset): New function.
16265         * df-byte-scan.c: New file.
16266         * df-problems.c (df_rd_transfer_function): Removed unnecessary
16267         calls to BITMAP_FREE.
16268         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
16269         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
16270         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
16271         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
16272         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
16273         df_byte_lr_local_compute, df_byte_lr_init,
16274         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
16275         df_byte_lr_transfer_function, df_byte_lr_free,
16276         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
16277         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
16278         df_byte_lr_simulate_uses,
16279         df_byte_lr_simulate_artificial_refs_at_top,
16280         df_byte_lr_simulate_artificial_refs_at_end): New function.
16281         * dce.c (byte_dce_process_block): New function.
16282         (dce_process_block): au is now passed in rather than computed
16283         locally.  Changed loops that look at artificial defs to not look
16284         for conditional or partial ones, because there never are any.
16285         (fast_dce): Now is able to drive byte_dce_process_block or
16286         dce_process_block depending on the kind of dce being done.
16287         (rest_of_handle_fast_dce): Add parameter to fast_dce.
16288         (rest_of_handle_fast_byte_dce): New function.
16289         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
16290         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
16291
16292 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
16293
16294         PR fortran/35019
16295         * gcc.h: Added fortran options that take arguments to
16296         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
16297         macros.
16298
16299 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
16300
16301         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
16302         scalarization if on the LHS and not a full access.
16303
16304 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16305
16306         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
16307
16308 2008-04-18  Rafael Espíndola  <espindola@google.com>
16309
16310         * tree-vrp.c (find_case_label_index): Fix the binary search.
16311         (find_case_label_range): New.
16312         (vrp_visit_switch_stmt): Use find_case_label_range.
16313         (simplify_switch_using_ranges): Use find_case_label_range.
16314
16315 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
16316
16317         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
16318         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
16319
16320 2008-04-18  Tom Tromey  <tromey@redhat.com>
16321
16322         PR libcpp/15500:
16323         * doc/cpp.texi (Implementation-defined behavior): Mention
16324         -finput-charset.
16325
16326 2008-04-18  Ian Lance Taylor  <iant@google.com>
16327
16328         * fold-const.c (pointer_may_wrap_p): New static function.
16329         (fold_comparison): Add another test for pointer overflow.  Use
16330         pointer_may_wrap_p to disable some false positives.
16331
16332 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
16333
16334         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
16335         (fname_as_string): Match updated cpp_interpret_string prototype.
16336         (fix_string_type): Support char16_t* and char32_t*.
16337         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
16338         derivative) nodes.  Register as builtin if C++0x.
16339         (c_parse_error): Support CPP_CHAR{16,32}.
16340         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
16341         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
16342         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
16343         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
16344         CTI_CHAR32_ARRAY_TYPE>: New elements.
16345         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
16346         char32_type_node, signed_char32_type_node, char16_array_type_node,
16347         char32_array_type_node): New defines.
16348         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
16349         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
16350         (lex_string): Support CPP_STRING{16,32}, match updated
16351         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
16352         (lex_charconst): Support CPP_CHAR{16,32}.
16353         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
16354         and CPP_STRING{16,32}.
16355
16356 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
16357
16358         PR bootstrap/35457
16359         * aclocal.m4: Regenerate.
16360         * configure: Regenerate.
16361
16362 2008-04-18  Jan Hubicka  <jh@suse.cz>
16363
16364         * except.c (dw2_size_of_call_site_table,
16365         sjlj_size_of_call_site_table): Use vector API for call_site_record.
16366
16367         * cgraphbuild.c (build_cgraph_edges): Update.
16368         * tree-pass.h: Update comment.
16369         * final.c (leaf_function_p): Update.
16370         (leaf_renumber_regs): Update.
16371         (rest_of_clean_state): Update.
16372         * omp-low.c (expand_omp_parallel): Update.
16373         * ipa-reference.c (analyze_function): Update.
16374         * reorg.c (find_end_label): Update.
16375         (optimize_skip): Update.
16376         (fill_simple_delay_slots): Update.
16377         (fill_simple_delay_slots): Update.
16378         (make_return_insns): Update.
16379         (dbr_schedule): Update.
16380         * gimple-low.c (record_vars_into): Update.
16381         * cfgbuild.c (make_edges): Update.
16382         * function.c (assign_stack_local): Update.
16383         (assign_parm_adjust_stack_rtl): Update.
16384         (locate_and_pad_parm): Update.
16385         (allocate_struct_function): Do not initialize stack_alignment_needed
16386         and preferred_stack_boundary here.
16387         (stack_protect_prologue): Update.
16388         (stack_protect_epilogue): Update.
16389         (expand_function_start): Initialize stack_alignment_needed,
16390         preferred_stack_boundary and max_jumptable_ents.
16391         (expand_function_end): Update.
16392         (free_after_compilation): Do not NULLify epilogue_delay_list.
16393         * function.h (struct rtl_data): Add stack_protect_guard,
16394         stack_alignment_needed,
16395         preferred_stack_boundary, epilogue_delay_list.
16396         (struct function): Remove value_histograms, stack_alignment_needed,
16397         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
16398         last_label_uid,
16399         unexpanded_var_list, stack_protect_guard.
16400         (current_function_epilogue_delay_list): Remove.
16401         * ipa-type-escape.c (analyze_function): Update.
16402         * gimplify.c (pop_gimplify_context): Update comment.
16403         * calls.c (expand_call): Update.
16404         (emit_library_call_value_1): Update.
16405         * except.c (set_nothrow_function_flags): Update.
16406         * cfgexpand.c (get_decl_align_unit): Update.
16407         (create_stack_guard): Update.
16408         (estimated_stack_frame_size): Update.
16409         (expand_used_vars): Update.
16410         (tree_expand_cfg): Free histogram earliers, init expansion variables.
16411         * explow.c (allocate_dynamic_stack_space): Update.
16412         * tree-ssa-live.c (remove_unused_locals): Update.
16413         * varasm.c (mark_constant_pool): Update.
16414         * tree-inline.c (remap_decls): Update.
16415         (initialize_cfun): Update.
16416         (declare_return_variable): Update.
16417         (inline_forbidden_p): Update.
16418         (expand_call_inline): Update.
16419         (declare_inline_vars): Update.
16420         (tree_function_versioning): Update.
16421         * tree-flow.h (value_histograms): New.
16422         (VALUE_HISTOGRAMS): New macro.
16423         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
16424         last_label_uid.
16425         * tree-cfg.c (set_bb_for_stmt): Update.
16426         (replace_by_duplicate_decl): Update.
16427         (move_block_to_fn): Update.
16428         (new_label_mapper): Update.
16429         (dump_function_to_file): Update.
16430         * ipa-struct-reorg.c (build_data_structure): Update.
16431         * cfgrtl.c (print_rtl_with_bb): Update.
16432         * reload1.c (reload): Update.
16433         (reload): Update.
16434         * config/i386/i386.c (setup_incoming_varargs_64,
16435         ix86_compute_frame_layout): Update.
16436         * config/arc/arc.c (arc_output_function_epilogue): Update.
16437
16438 2008-04-18  Marius Strobl <marius@FreeBSD.org>
16439
16440         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
16441         for FreeBSD as well.
16442         * gthr-posix95.h: Likewise.
16443
16444 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
16445
16446         PR rtl-optimization/35838
16447         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
16448         out the byte offset of the first subreg.
16449
16450 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
16451
16452         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
16453         to split_ti instead of three separate calls with single member arrays.
16454         (subti3 splitter): Ditto.
16455         (adddi3 splitter): Ditto with split_di.
16456         (subdi3 splitter): Ditto.
16457         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
16458         two separate calls with single member arrays.  Swap match_dup
16459         operands 1 and 2 to better fit into the array.
16460         (negdi2 splitter): Ditto with split_di.
16461         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
16462         two separate calls with single member arrays.  Swap match_dup operands
16463         6 and 7 to better fit into the array.
16464
16465 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
16466
16467         * config/i386/i386.c (sse_builtin_type): New.
16468         (bdesc_sse_args): Likewise.
16469         (bdesc_sse_3arg): Removed.
16470         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
16471         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
16472         IX86_BUILTIN_ROUNDPS.
16473         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
16474         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
16475         IX86_BUILTIN_ROUNDPS.
16476         (ix86_expand_sse_4_operands_builtin): Removed.
16477         (ix86_expand_sse_operands_builtin): New.
16478         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
16479         and CODE_FOR_sse4_1_roundps.
16480         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
16481         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
16482
16483 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
16484
16485         PR target/35907
16486         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
16487         regs before frame pop when needed.  If use_backchain_to_restore_sp
16488         then load backchain into a temp reg to restore vr and vrsave.  Add
16489         code to restore vr after frame pop if possible.
16490
16491 2008-04-17  Richard Guenther  <rguenther@suse.de>
16492
16493         * tree-vn.c (expressions_equal_p): Do not check type
16494         equality or compatibility before calling operand_equal_p.
16495         * fold-const.c (operand_equal_p): Check equivalence of
16496         integer constants before bailing out due to signedness or
16497         precision differences.
16498         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
16499         spurious differences in type qualification.  Ignore types
16500         for COMPONENT_REFs at all.
16501
16502 2008-04-17  Christian Bruel  <christian.bruel@st.com>
16503
16504         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
16505         msw_skip comparison.
16506
16507 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
16508
16509         PR c/35739
16510         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
16511         reg type.
16512
16513         PR tree-optimization/35899
16514         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
16515         rather than TREE_OPERAND.
16516
16517 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
16518
16519         PR target/35944
16520         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
16521         temporary registers.  Change operand predicate to general_operand.
16522         (remainderxf3): Ditto.
16523
16524 2008-04-16  Richard Guenther  <rguenther@suse.de>
16525
16526         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
16527         * tree-affine.c (aff_combination_expand): Look through some
16528         conversions.
16529
16530 2008-04-15  Doug Kwan  <dougkwan@google.com>
16531
16532         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
16533         for hex printing.
16534         * tree-pretty-print.c (dump_generic_node): Ditto.
16535         * final.c (output_addr_const): Ditto.
16536         * dwarf2out.c (output_cfi): Ditto.
16537         * c-pretty-print.c (pp_c_integer_constant): Ditto.
16538         * print-rtl.c (print_rtx): Ditto.
16539         * print-tree.c (print_node_brief, print_node): Ditto.
16540         * c-common.c (match_case_to_enum_1): Ditto.
16541         * sched-vis.c (print_value): Ditto.
16542         * config/i386/i386.c (print_operand): Cast to long unsigned int
16543         for hex printing.
16544
16545 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
16546         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
16547         MS Windows VirtualProtect function.
16548
16549 2008-04-15  Jan Hubicka  <jh@suse.cz>
16550
16551         * gengtype.c (write_root): Param_is argument is OK.
16552         * expr.c (expand_expr_real_1): Update call of get_exception_*.
16553         * function.h: Include varray.h
16554         (rtl_eh): New stucture based on except.c one.
16555         (call_site_record): New forward declaration and vector type.
16556         * calls.c (emit_call_1): Do not call
16557         note_current_region_may_contain_throw.
16558         * except.c (eh_status): Remove cur_region, try_region since they are
16559         unused.
16560         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
16561         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
16562         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
16563         Remove call_site_data_used, call_site_data_size.
16564         Turn call_site_record into vector in function.h.
16565         (note_current_region_may_contain_throw): Remove.
16566         (get_exception_pointer, get_exception_filter): Do not take struct
16567         function argument; update.
16568         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
16569         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
16570         build_post_landing_pads, dw2_build_landing_pads,
16571         sjlj_assign_call_site_values, sjlj_mark_call_sites,
16572         sjlj_emit_function_enter, sjlj_emit_function_enter,
16573         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
16574         sjlj_build_landing_pads, finish_eh_generation,
16575         remove_exception_handler_label, remove_eh_handler,
16576         maybe_remove_eh_handler, add_reachable_handler,
16577         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
16578         add_action_record, collect_one_action_chain, add_call_site,
16579         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
16580         sjlj_output_call_site_table, output_function_exception_table,
16581         * except.h (note_current_region_may_contain_throw): Remove
16582         (get_exception_pointer, get_exception_filter): Do not take struct
16583         function argument.
16584         * Makefile.in (GTFILES): Put varargs before struct function.
16585
16586 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
16587
16588         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
16589         punt for STRING_CST.
16590         (get_constraint_for): Deal with STRING_CST here instead.
16591
16592 2008-04-15  Richard Guenther  <rguenther@suse.de>
16593
16594         * tree-ssa-propagate.c (substitute_and_fold): Substitute
16595         statements in a basic-block with a backward walk.  Do not
16596         substitute into dead statements but instead remove those.
16597
16598 2008-04-15  Richard Guenther  <rguenther@suse.de>
16599
16600         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
16601         to zero, thus disable creation of SFTs.
16602
16603 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
16604
16605         * tree-predcom.c (suitable_reference_p): Return false if the
16606         reference can throw.
16607
16608 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
16609
16610         PR c/35751
16611         * c-decl.c (finish_decl): If extern or static var has variable
16612         size, set TREE_TYPE (decl) to error_mark_node.
16613
16614 2008-04-15  Rafael Espíndola  <espindola@google.com>
16615
16616         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
16617         variable arg1.
16618
16619 2008-04-15  Richard Guenther  <rguenther@suse.de>
16620
16621         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
16622         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
16623         (visit_reference_op_load): Do walk vuse-vdef chains on
16624         vn_reference_lookup.
16625         (visit_reference_op_store): But do not here.
16626         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
16627         vn_reference_lookup.
16628         (vn_lookup_with_vuses): But do so here.
16629
16630 2008-04-14  Ian Lance Taylor  <iant@google.com>
16631
16632         * fold-const.c (fold_overflow_warning): Remove assertion.
16633
16634 2008-04-15  Ben Elliston  <bje@au.ibm.com>
16635
16636         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
16637         temp1 local variables.
16638
16639 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
16640
16641         PR target/35661
16642         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
16643         ".text.unlikely" section as executable.
16644
16645 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
16646
16647         * config/ia64/ia64.c (rtx_needs_barrier): Handle
16648         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
16649         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
16650         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
16651         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
16652         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
16653         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
16654
16655 2008-04-14  Ian Lance Taylor  <iant@google.com>
16656
16657         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
16658         * fold-const.c (fold_comparison): If appropriate, test
16659         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
16660         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
16661         reassociating a pointer type.
16662         * doc/invoke.texi (Optimize Options): Document that
16663         -fstrict-overflow applies to pointer wraparound.
16664
16665 2008-04-13  Jan Hubicka  <jh@suse.cz>
16666
16667         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
16668
16669 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
16670
16671         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
16672         we are going to "save the world".
16673
16674 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
16675
16676         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
16677         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
16678         operand 0 constraint, not "=".
16679
16680 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
16681
16682         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
16683
16684 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
16685
16686         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
16687         of size of positions_needed * CHAR_BIT.
16688
16689 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
16690
16691         PR middle-end/35897
16692         * dse.c (store_info): Change positions_needed to unsigned
16693         HOST_WIDE_INT.
16694         (lowpart_bitmask): New.
16695         (record_store): Cast to unsigned HOST_WIDE_INT for
16696         positions_needed.  Assert width <= size of positions_needed *
16697         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
16698         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
16699         lowpart_bitmask to set mask.
16700
16701 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
16702
16703         * config/bfin/constraints.md: New file.
16704         * config/bfin/bfin.md: Include it.
16705         (adddi3): Use satisfies_constraint functions instead of the old macros.
16706         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
16707         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
16708         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
16709         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
16710         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
16711         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
16712         EXTRA_CONSTRAINT): Delete.
16713         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
16714         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
16715         of the old macros.
16716         * config/bfin/bfin.c: Include "tm-constrs.h".
16717         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
16718         Use satisfies_constraint functions instead of the old macros.
16719         * doc/md.texi (Blackfin Constraints): Update file name reference.
16720
16721 2008-04-11  Richard Guenther  <rguenther@suse.de>
16722
16723         PR tree-optimization/35869
16724         * tree-vrp.c (execute_vrp): Move switch statement update after
16725         jump threading.  Schedule another cfg cleanup run.
16726
16727 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
16728
16729         PR c/35744
16730         * attribs.c (decl_attributes): Return early on errorneous node.
16731
16732 2008-04-10  Oleg Ryjkov  <olegr@google.com>
16733
16734         * tree.h (struct tree_base): Added a new flag default_def_flag.
16735         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
16736
16737 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
16738
16739         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
16740
16741 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16742
16743         PR target/35768
16744         * pa.md: Define mode iterator P.  Define mode attribute dwc.
16745         (dcacheflush): Update pattern to use iterator P and attribute dwc.
16746         (icacheflush): Likewise.
16747         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
16748         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
16749
16750 2008-04-11  Ben Elliston  <bje@au.ibm.com>
16751
16752         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
16753
16754 2008-04-10  Rafael Espíndola  <espindola@google.com>
16755
16756         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
16757         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
16758         (extract_range_from_expr): The same.
16759
16760 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
16761
16762         * config/mips/mips.md (GPR2): New mode iterator.
16763         (seq): Add comment.
16764         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
16765         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
16766         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
16767         Rewrite these to take two modes, the mode of comparison and the
16768         mode of the destination.
16769         * config/mips/mips.c (mips_expand_scc): Instead of having
16770         paradoxical subreg as destination, expand "narrowing" scc if mode
16771         of comparison is SI and target is requested in DI mode.
16772         (mips_emit_int_order_test): Update comment.  Make mode of
16773         comparison match CMP0 rather than TARGET.  When creating inverse
16774         target use mode of TARGET.
16775
16776 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
16777
16778         * gcov-dump.c (tag_summary): Only print summaries for the first
16779         GCOV_COUNTERS_SUMMABLE counters.
16780
16781 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
16782
16783         * config/i386/i386.md (absneg): New code iterator.
16784         (absnegprefix): New code attribute.
16785         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
16786         patterns using absneg code iterator.
16787         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
16788         using absneg code iterator.
16789         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
16790         *neg<mode>2 patterns using absneg code iterator.
16791         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
16792         *negextendsfdf2 patterns using absneg code iterator.
16793         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
16794         *negextendsfxf2 patterns using absneg code iterator.
16795         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
16796         *negextendsfdf2 patterns using absneg code iterator.
16797         * config/i386/sse.md (<code><mode>2): Macroize expander from
16798         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
16799
16800 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
16801
16802         * config/s390/s390.h: Remove the remains of the recent search
16803         & replace action of current_function_outgoing_args_size.
16804
16805 2008-04-10  Ira Rosen  <irar@il.ibm.com>
16806
16807         PR tree-optimization/35821
16808         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
16809         NEW_STMT_LIST is not NULL.
16810
16811 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
16812
16813         PR libstdc++/35597
16814         * toplev.c (process_options): Remove -ffunction-sections debugging
16815         warning.
16816
16817 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
16818
16819         PR middle-end/PR28690
16820         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
16821         than gen_rtx_fmt_ee to perform more canonicalizations.
16822
16823 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16824
16825         PR driver/35665
16826         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
16827
16828 2008-04-09  Richard Guenther  <rguenther@suse.de>
16829
16830         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
16831         (dump_function_to_file): Dump function arguments with types.
16832
16833 2008-04-08  Richard Guenther  <rguenther@suse.de>
16834
16835         * fold-const.c (fold_widened_comparison): Do not allow
16836         sign-changes that change the result.
16837
16838 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
16839
16840         PR target/35839
16841         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
16842         kinds of indirect references.
16843
16844 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
16845
16846         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
16847         GNU Fortran language string.
16848
16849 2008-04-08  Rafael Espíndola  <espindola@google.com>
16850
16851         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
16852         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
16853         * tree.h (tree_call_nonnegative_warnv_p): New.
16854
16855 2008-04-08  Jan Hubicka  <jh@suse.cz>
16856
16857         * function.c (free_after_compilation): Clear out regno_reg_rtx
16858         pointer.
16859
16860 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
16861
16862         Revert
16863         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
16864
16865         PR middle-end/PR28690
16866         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
16867         same precedence as REG_POINTER and MEM_POINTER operands.
16868
16869 2008-04-08  Richard Guenther  <rguenther@suse.de>
16870
16871         PR middle-end/35834
16872         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
16873         for adding index to base.
16874
16875 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
16876
16877         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
16878         (MINGW_ENABLE_EXECUTE_STACK): New.
16879         (IN_LIBGCC2): For libgcc include windows.h file for
16880         function declarations.
16881
16882 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
16883
16884         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
16885         and tem2 if tem1 is not a REG or MULT.
16886
16887 2008-04-08  Jan Hubicka  <jh@suse.cz>
16888
16889         * function.h (incomming_args): Break out of struct function.
16890         (function_subsections): Break out of struct function.
16891         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
16892         return_rtx and hard_reg_initial_vals from struct function.
16893         Kill inl_max_label_num.
16894         (current_function_pops_args, current_function_args_info,
16895         current_function_args_size, current_function_args_size,
16896         current_function_pretend_args_size,
16897         current_function_outgoing_args_size,
16898         current_function_internal_arg_pointer, current_function_return_rtx):
16899         Kill compatibility accestor macros.
16900         * builtins.c (expand_builtin_apply_args_1): Update.
16901         (expand_builtin_next_arg): Update.
16902         * df-scan.c (df_get_call_refs): Update.
16903         * dbxout.c (dbxout_function_end): Update.
16904         * dwarf2out.c (dwarf2out_switch_text_section): Update.
16905         (output_line_info): Update.
16906         (secname_for_decl): Update.
16907         (dwarf2out_var_location): Update.
16908         * function.c (free_after_compilation): Update.
16909         (assign_parm_find_stack_rtl): Update.
16910         (assign_parms): Update.
16911         (expand_dummy_function_end): Update.
16912         (expand_function_end): Update.
16913         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
16914         (expand_call): Update.
16915         (emit_library_call_value_1): Update.
16916         (store_one_arg): Update.
16917         * varasm.c (initialize_cold_section_name): Update.
16918         (unlikely_text_section): Update.
16919         (unlikely_text_section_p): Update.
16920         (assemble_start_function): Update.
16921         (assemble_end_function): Update.
16922         (default_section_type_flags): Update.
16923         (switch_to_section): Update.
16924         * integrate.c (set_decl_abstract_flags): Update.
16925         (get_hard_reg_initial_val): Update.
16926         (has_hard_reg_initial_val): Update.
16927         (allocate_initial_values): Update.
16928         * resource.c (init_resource_info): Update.
16929         * config/alpha/alpha.c (NUM_ARGS): Update.
16930         (direct_return): Update.
16931         (alpha_va_start): Update.
16932         (alpha_sa_size): Update.
16933         (alpha_initial_elimination_offset): Update.
16934         (alpha_expand_prologue): Update.
16935         (alpha_start_function): Update.
16936         (alpha_expand_epilogue): Update.
16937         (unicosmk_initial_elimination_offset):
16938         * config/alpha/alpha.md (call expander): Update.
16939         * config/s390/s390.c (s390_register_info): Update.
16940         (s390_register_info): Update.
16941         (s390_frame_info): Update.
16942         (s390_initial_elimination_offset): Update.
16943         (s390_build_builtin_va_list): Update.
16944         (s390_va_start): Update.
16945         * config/spu/spu.c (direct_return): Update.
16946         (spu_expand_prologue): Update.
16947         (spu_initial_elimination_offset): Update.
16948         (spu_build_builtin_va_list): Update.
16949         (spu_va_start): Update.
16950         * config/sparc/sparc.c (sparc_init_modes): Update.
16951         (sparc_compute_frame_size): Update.
16952         (function_value): Update.
16953         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
16954         * config/i386/i386.md (return expander): Update.
16955         * config/i386/i386.c (ix86_va_start): Update.
16956         (ix86_can_use_return_insn_p): Update.
16957         (ix86_compute_frame_layout): Update.
16958         (ix86_expand_epilogue): Update.
16959         * config/sh/sh.c (output_stack_adjust): Update.
16960         (calc_live_regs): Update.
16961         (sh_expand_prologue): Update.
16962         (sh_builtin_saveregs): Update.
16963         (sh_va_start): Update.
16964         (initial_elimination_offset): Update.
16965         (sh_allocate_initial_value): Update.
16966         (sh_function_ok_for_sibcall): Update.
16967         (sh_get_pr_initial_val): Update.
16968         * config/sh/sh.md (return expander): Update.
16969         * config/avr/avr.c (frame_pointer_required_p): UPdate.
16970         * config/crx/crx.c (crx_compute_frame): UPdate.
16971         (crx_initial_elimination_offset): UPdate.
16972         * config/xtensa/xtensa.c (compute_frame_size): Update
16973         (xtensa_builtin_saveregs): Update.
16974         (xtensa_va_start): Update.
16975         (order_regs_for_local_alloc): Update.
16976         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
16977         (xstormy16_expand_builtin_va_start): Update.
16978         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
16979         * config/m68hc11/m68hc11.md (return expanders): Update.
16980         * config/m68hc11/m68hc11.c (expand_prologue): Update.
16981         (expand_epilogue): Update.
16982         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
16983         (cris_simple_epilogue): Update.
16984         (cris_expand_prologue): Update.
16985         (cris_expand_epilogue): Update.
16986         * config/iq2000/iq2000.c (iq2000_va_start): Update.
16987         (compute_frame_size): Update.
16988         * config/mt/mt.c (mt_compute_frame_size): Update.
16989         * config/mn10300/mn10300.c (expand_prologue): Update.
16990         (expand_epilogue): Update.
16991         (initial_offset): Update.
16992         (mn10300_builtin_saveregs):
16993         * config/mn10300/mn10300.md (return expander): Update.
16994         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
16995         (ia64_initial_elimination_offset): Update.
16996         (ia64_initial_elimination_offset): Update.
16997         (ia64_expand_prologue): Update.
16998         * config/m68k/m68k.md (return expander): Update.
16999         * config/rs6000/rs6000.c (rs6000_va_start): Update.
17000         (rs6000_stack_info): Update.
17001         * config/mcore/mcore.c (layout_mcore_frame): Update.
17002         (mcore_expand_prolog): Update.
17003         * config/arc/arc.c (arc_compute_frame_size): Update.
17004         * config/score/score3.c (score3_compute_frame_size): Update.
17005         * config/score/score7.c (score7_compute_frame_size): Update.
17006         * config/arm/arm.c (use_return_insn): Update.
17007         (thumb_find_work_register): Update.
17008         (arm_compute_save_reg_mask): Update.
17009         (arm_output_function_prologue): Update.
17010         (arm_output_epilogue): Update.
17011         (arm_size_return_regs): Update.
17012         (arm_get_frame_offsets): Update.
17013         (arm_expand_prologue): Update.
17014         (thumb_exit): Update.
17015         (thumb_unexpanded_epilogue): Update.
17016         (thumb1_output_function_prologue): Update.
17017         * config/pa/pa.md (return expander): Update.
17018         * config/pa/pa.c (compute_frame_size): Update.
17019         (hppa_builtin_saveregs): Update.
17020         * config/mips/mips.c (mips_va_start): Update.
17021         (mips16_build_function_stub): Update.
17022         (mips_compute_frame_info): Update.
17023         (mips_restore_gp): Update.
17024         (mips_output_function_prologue): Update.
17025         (mips_expand_prologue): Update.
17026         * config/v850/v850.c (compute_frame_size): Update.
17027         (expand_prologue): * config/mmix/mmix.c (along): update.
17028         (mmix_initial_elimination_offset): update.
17029         (mmix_reorg): update.
17030         (mmix_use_simple_return): update.
17031         (mmix_expand_prologue): update.
17032         (mmix_expand_epilogue): Update.
17033         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
17034         (emit_link_insn): Update.
17035
17036 2008-04-08  Anatoly Sokolov <aesok@post.ru>
17037
17038         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
17039         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
17040         instructions.
17041         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
17042         atmega103 device.
17043
17044 2008-04-07  Jan Hubicka  <jh@suse.cz>
17045
17046         * function.h (rtl): Rename to x_rtl.
17047         (crtl): New define.
17048         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
17049         frame_offset, stack_check_probe_note, arg_pointer_save_area,
17050         used_temp_slots avail_temp_slots, temp_slot_level,
17051         nonlocal_goto_handler_labels): Update accesstors.
17052         (rtl): New global variable.
17053         (struct function): Move some fileds to rtl_data.
17054         (get_arg_pointer_save_area): Update prototype.
17055         * builtins.c (expand_builtin_setjmp_receiver): Update call of
17056         get_arg_pointer_save_area.
17057         * expr.c (init_expr): Update
17058         * function.c (get_frame_size): Update
17059         (assign_stack_local): Update
17060         (expand_function_end): Update.
17061         (get_art_pointer_save_area): Update
17062         * function.h
17063         * emit-rtl.c (rtl): Declare.
17064         (regno_reg_rtx): Declare.
17065         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
17066         Update.
17067         (gen_reg_rtx): Update.
17068         * varasm.c (n_deferred_constatns): Update accestor.
17069         (init_varasm_status): Do not allocate varasm_status.
17070         (force_const_mem, get_pool_size, output_constant_pool): Update.
17071         * stmt.c (force_label_rtx): Do not use x_ prefixes.
17072         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
17073         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
17074         * sparc/sparc.h (INIT_EXPANDERS): Update.
17075         * ia64/ia64.h (INIT_EXPANDERS): Update.
17076
17077 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
17078
17079         * reload.c (push_secondary_reload): Add missing break to for loop.
17080
17081 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
17082
17083         PR middle-end/PR28690
17084         * rtlanal.c: Update copyright years.
17085         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
17086         as REG_POINTER and MEM_POINTER operands.
17087         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
17088         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
17089         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
17090         * gcse.c: Update copyright years.
17091         (pre_delete): Call gen_reg_rtx_and_attrs.
17092         (hoist_code): Likewise.
17093         (build_store_vectors): Likewise.
17094         (delete_store): Likewise.
17095         * loop-invariant.c (move_invariant_reg): Likewise.
17096         Update copyright years.
17097
17098 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
17099
17100         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
17101         control string instead of quoted.
17102
17103 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
17104
17105         * doc/rtl.texi: Rewrite of subreg section.
17106
17107 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
17108
17109         PR/35842
17110         * config/i386/i386.c (legitimize_pic_address): Add treating
17111         of dllimport SYM_REF's.
17112         (legitimize_dllimport_symbol): Add prototype.
17113
17114 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
17115
17116         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
17117         reference in constructor with non self-referential type.
17118
17119 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
17120
17121         Removal of Return with Depressed Stack Pointer support
17122         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
17123         (ECF_SP_DEPRESSED): Likewise.
17124         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
17125         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
17126         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
17127         (expand_call): Do not test ECF_SP_DEPRESSED.
17128         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
17129         * function.c (keep_stack_depressed): Delete.
17130         (handle_epilogue_set): Likewise.
17131         (update_epilogue_consts): Likewise.
17132         (emit_equiv_load): Likewise.
17133         (thread_prologue_and_epilogue_insns): Remove support for Return with
17134         Depressed Stack Pointer.
17135         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
17136
17137 2008-04-06  Richard Guenther  <rguenther@suse.de>
17138
17139         PR tree-optimization/35400
17140         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
17141         information from SSA_NAMEs.
17142
17143 2008-04-06  Anatoly Sokolov <aesok@post.ru>
17144
17145         * config/avr/avr.h (avr_mega_p): Remove declaration.
17146         (AVR_MEGA): Remove macro.
17147         * config/avr/avr.c (avr_mega_p): Remove variable.
17148         (avr_override_options): Remove inicializion of avr_mega_p.
17149         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
17150         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
17151         (avr_jump_mode): (Ditto.).
17152         (avr_output_progmem_section_asm_op): (Ditto.).
17153         (avr_asm_init_sections): (Ditto.).
17154         (avr_asm_init_sections): (Ditto.).
17155         (avr_rtx_costs): (Ditto.).
17156         * config/avr/avr.md: (Ditto.).
17157         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
17158         '__AVR_MEGA__'.
17159
17160 2008-04-06  Richard Guenther  <rguenther@suse.de>
17161
17162         PR tree-optimization/35842
17163         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
17164         is_gimple_invariant_address.
17165
17166 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17167
17168         * gcc.c (default_compilers): Sync Fortran extensions list with
17169         that in fortran/lang-specs.h.
17170         * doc/invoke.texi: Likewise.
17171         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
17172         * dwarf2out.c (gen_compile_unit_die): Likewise.
17173
17174 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
17175
17176         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
17177
17178 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
17179
17180         PR target/12329
17181         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
17182         attribute is used for nested functions.
17183
17184 2008-04-05  Jan Hubicka  <jh@suse.cz>
17185
17186         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
17187
17188         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
17189         letter argument.
17190         (dump_files): Update.
17191         (enable_rtl_dump_file): Do not accept letter argument.
17192         * tree-pass.h (dump_file_info): Remove letter argument.
17193         * toplev.c (decode_d_option): Update -da handling.
17194         * toplev.h (enable_rtl_dump_file): Update prototype.
17195         * passes.c (register_one_dump_file): Do not accept IPA argument; work
17196         it out based on pass type.
17197         (register_dump_files_1): Likewise.
17198         (init_optimization_passes): Update register_one_dump_file calls.
17199         (execute_one_pass): Sanity check that IPA passes are called at IPA
17200         level and RTL passes at RTL level.
17201         (execute_pass_list): IPA pass can not be after or subpass of
17202         GIMPLE/RTL pass.
17203         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
17204         disallov RTL subpasses of IPA subpasses.
17205
17206 2008-04-05  Ben Elliston  <bje@au.ibm.com>
17207
17208         * tree-cfg.c (need_fake_edge_p): Return false for calls to
17209         builtins that return exactly once and do not throw. Cache call to
17210         call_expr_flags.
17211
17212 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
17213
17214         PR rtl-optimization/34916
17215         PR middle-end/35519
17216         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
17217         between instruction pairs.
17218
17219 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
17220
17221         * doc/invoke.texi: Document -mbitops for SH.
17222         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
17223         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
17224         * config/sh/sh.c (print_operand): Add %t operand code.
17225         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
17226         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
17227         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
17228         (extendqihi2): Likewise.
17229         (movqi_i): Likewise.
17230         (insv): Use bset, bclr and bst instructions for SH2A if possible.
17231         (extv): Use bld instruction for SH2A if possible.
17232         (extzv): Likewise.
17233         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
17234         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
17235         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
17236         (bset.b, bclr.b): Define peepholes.
17237         * config/sh/sh.opt (mbitops): New option.
17238
17239 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
17240
17241         PR target/35620
17242         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
17243         and view convert expression.
17244
17245 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
17246
17247         PR target/35364
17248         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
17249
17250 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
17251
17252         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
17253
17254         * config/i386/cpuid.h (bit_AES): New.
17255         (bit_PCLMUL): Likewise.
17256
17257         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
17258         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
17259         SSE2 if AES or PCLMUL is enabled.
17260         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
17261         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
17262         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
17263         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
17264         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
17265         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
17266         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
17267         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
17268         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
17269         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
17270         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
17271         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
17272         __builtin_ia32_aeskeygenassist128 and
17273         __builtin_ia32_pclmulqdq128.
17274         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
17275         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
17276         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
17277
17278         * config/i386/i386.h (TARGET_AES): New.
17279         (TARGET_PCLMUL): Likewise.
17280         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
17281
17282         * config/i386/i386.md (UNSPEC_AESENC): New.
17283         (UNSPEC_AESENCLAST): Likewise.
17284         (UNSPEC_AESDEC): Likewise.
17285         (UNSPEC_AESDECLAST): Likewise.
17286         (UNSPEC_AESIMC): Likewise.
17287         (UNSPEC_AESKEYGENASSIST): Likewise.
17288         (UNSPEC_PCLMUL): Likewise.
17289
17290         * config/i386/i386.opt (maes): New.
17291         (mpclmul): Likewise.
17292
17293         * config/i386/sse.md (aesenc): New pattern.
17294         (aesenclast): Likewise.
17295         (aesdec): Likewise.
17296         (aesdeclast): Likewise.
17297         (aesimc): Likewise.
17298         (aeskeygenassist): Likewise.
17299         (pclmulqdq): Likewise.
17300
17301         * config/i386/wmmintrin.h: New.
17302
17303         * doc/extend.texi: Document AES and PCLMUL built-in function.
17304
17305         * doc/invoke.texi: Document -maes and -mpclmul.
17306
17307 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
17308
17309         * function.c (free_after_parsing): Replace with
17310         cxx_push_function_context from C++ front-end.
17311         (allocate_struct_function): Don't call langhook.
17312         * langhooks.h (struct lang_hooks_for_functions): Delete.
17313         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
17314         member "function".
17315         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
17316         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
17317         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
17318         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
17319         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
17320         remove LANG_HOOKS_FUNCTION_INITIALIZER.
17321         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
17322
17323         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
17324         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
17325
17326 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
17327
17328         PR c/35440
17329         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
17330         for all types.
17331
17332 2008-04-04  Richard Guenther  <rguenther@suse.de>
17333
17334         PR middle-end/35823
17335         * fold-const.c (optimize_minmax_comparison): Use the correct
17336         type for the constant in the simplified comparison.
17337
17338 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
17339
17340         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
17341         Pass L2 size as "--param l2-cache-size" to the compiler.
17342         (decode_l2_cache): New function to decode L2 cache parameters using
17343         0x8000006 extended cpuid function.
17344         (detect_caches_amd): Determine parameters of L2 cache using
17345         decode_l2_caches function.
17346         (decode_caches_intel): Decode L2 cache parameters.
17347         (detect_caches_intel): Determine L2 cache parameters using
17348         decode_caches_intel and decode_l2_caches functions.
17349
17350 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
17351
17352         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
17353         secondary input reload for subword loads from the constant pool.
17354
17355 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
17356
17357         PR target/35713
17358         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
17359           constants of the appropriate size for runtime calculations.
17360
17361         PR c/35712
17362         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
17363           decimal-float literal constant zero.
17364
17365 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
17366
17367         PR c/35738
17368         * c-parser.c (c_parser_omp_atomic): Call
17369         default_function_array_conversion on the RHS.
17370
17371         PR middle-end/35818
17372         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
17373         call is_variable_sized if decl has incomplete type.
17374
17375 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
17376
17377         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
17378
17379 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
17380
17381         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
17382         iterators.
17383         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
17384         (sgt<u>): Merge sgt and sgtu into new expander.
17385         (sgt, sgtu): Remove expanders.
17386         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
17387         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
17388         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
17389         *sgtu_<mode>_mips16 into new pattern.
17390         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
17391         (sge<u>): Merge sge and sgeu into new expander.
17392         (sge, sgeu): Remove expanders.
17393         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
17394         new pattern.
17395         (*sge_<mode>, second *sge_<mode>): Remove patterns.
17396         (slt<u>): Merge slt and sltu into new expander.
17397         (slt, sltu): Remove expanders.
17398         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
17399         (*slt_<mode>, *sltu_<mode>): Remove patterns.
17400         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
17401         *sltu_<mode>_mips16 into new pattern.
17402         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
17403         (sle<u>): Merge sle and sleu into new expander.
17404         (sle, sleu): Remove expanders.
17405         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
17406         (*sle_<mode>, *sleu_<mode>): Remove patterns.
17407         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
17408         *sleu_<mode>_mips16 into new pattern.
17409         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
17410
17411 2008-04-03  Jan Hubicka  <jh@suse.cz>
17412
17413         PR tree-optimization/35795
17414         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
17415         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
17416         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
17417         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
17418         * score/score3.c (score3_output_mi_thunk): Likewise.
17419         * score/score7.c (score7_output_mi_thunk): Likewise.
17420         * mips/mips.c (mips_output_mi_thunk): Likewise.
17421
17422 2008-04-03  Richard Guenther  <rguenther@suse.de>
17423
17424         * tree-vrp.c (extract_range_from_unary_expr): Handle all
17425         conversions.  Simplify code.
17426
17427 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
17428
17429         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
17430
17431 2008-04-03  Tom Tromey  <tromey@redhat.com>
17432             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17433
17434         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
17435         * config/bfin/t-bfin-linux (generated_files): Add
17436         linux-sysroot-suffix.h.
17437         * doc/install.texi (Prerequisites): Require make 3.80.
17438         * doc/sourcebuild.texi (Front End Directory): Document new
17439         variable.
17440         * Makefile.in (generated_files): New variable.
17441         (ALL_HOST_OBJS): New variable.
17442         ($(ALL_HOST_OBJS)): New target.
17443
17444 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
17445
17446         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
17447         (remap_block): Call id->transform_lang_insert_block instead
17448         of langhook.
17449         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
17450         Set id.transform_lang_insert_block to NULL.
17451         (clone_body): Move to cp/optimize.c
17452         * tree-inline.h (struct copy_body_data): Change
17453         transform_lang_insert_block to function pointer.
17454         (copy_generic_body, copy_decl_no_change): Export.
17455         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
17456         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
17457         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
17458
17459         * c-tree.h (insert_block): Kill.
17460         * c-decl.c (insert_block): Kill.
17461
17462 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
17463
17464         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
17465         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
17466         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
17467         argument.
17468         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
17469         argument, call {push,pop}_function_context from here.
17470         * c-parser.c: Use c_{push,pop}_function_context.
17471
17472         * function.c (push_function_context_to): Move meat ...
17473         (push_function_context): ... here.  Simplify.
17474         * function.c (pop_function_context_from): Move meat ...
17475         (pop_function_context): ... here.  Simplify.
17476         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
17477         leave_nested).
17478         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
17479         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
17480         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
17481         * tree.h (push_function_context_to, pop_function_context_from): Remove.
17482
17483 2008-04-03  Ben Elliston  <bje@au.ibm.com>
17484
17485         * expmed.c (extract_force_align_mem_bit_field): Remove.
17486
17487 2008-04-03  Richard Guenther  <rguenther@suse.de>
17488
17489         PR middle-end/35800
17490         * expr.h (try_casesi): Adjust prototype.
17491         * expr.c (try_casesi): Take fallback label as extra parameter.
17492         Use that for gen_casesi if default_label is NULL.
17493         * stmt.c (expand_case): Pass fallback label to try_casesi,
17494         make sure to fill gaps with a fallback label if default_label
17495         is not present.
17496
17497 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
17498
17499         PR target/35801
17500         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
17501
17502 2008-04-03  Ben Elliston  <bje@au.ibm.com>
17503
17504         * expmed.c (extract_split_bit_field): Remove if (0) code.
17505         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
17506         (do_ds_constraint): Likewise.
17507
17508 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
17509
17510         * doc/cppopts.texi (-dU): Document.
17511         * c-common.h (flag_dump_macros): Update comment.
17512         * c-opts.c (handle_OPT_d): Handle -dU.
17513         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
17514         dump_queued_macros, cb_used_define, cb_used_undef): New.
17515         (init_pp_output): Handle -dU.
17516         (cb_line_change): Call dump_queued_macros.
17517         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
17518
17519 2008-04-02  Anatoly Sokolov <aesok@post.ru>
17520
17521         * config/avr/predicates.md (io_address_operand): New predicate.
17522         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
17523         * config/avr/avr.c (avr_io_address_p): Remove function.
17524         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
17525         'avr_io_address_p' function.
17526         (out_movhi_r_mr): (Ditto.).
17527         (out_movqi_mr_r): (Ditto.).
17528         (out_movhi_mr_r): (Ditto.).
17529         (avr_address_cost): (Ditto.).
17530
17531 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
17532
17533         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
17534         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
17535         in 32bit mode when XMM registers are available to avoid store
17536         forwarding stalls.
17537         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
17538         corresponding post-reload splitters.
17539
17540 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
17541
17542         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
17543         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
17544         __builtin_ia32_roundss.
17545         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
17546         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
17547         __builtin_ia32_roundss.
17548         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
17549         IX86_BUILTIN_SHUFPD here.
17550
17551 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
17552
17553         * config/i386/i386.md (plogic): New.
17554         (plogicprefix): Likewise.
17555
17556         * config/i386/mmx.md (mmx_<code><mode>3): New.
17557         (mmx_and<mode>3): Removed.
17558         (mmx_ior<mode>3): Likewise.
17559         (mmx_xor<mode>3): Likewise.
17560
17561         * config/i386/sse.md (<code><mode>3): New.
17562         (*<code><mode>3): Likewise.
17563         (*<code><mode>3): Likewise.
17564         (<code><mode>3): Likewise.
17565         (*sse_<code><mode>3): Likewise.
17566         (*sse2_<code><mode>3): Likewise.
17567         (<code>tf3): Likewise.
17568         (*<code>tf3): Likewise.
17569         (and<mode>3): Likewise.
17570         (*and<mode>3): Likewise.
17571         (ior<mode>3): Removed.
17572         (*ior<mode>3): Likewise.
17573         (xor<mode>3): Likewise.
17574         (*xor<mode>3): Likewise.
17575         (*and<mode>3): Likewise.
17576         (*ior<mode>3): Likewise.
17577         (*xor<mode>3): Likewise.
17578         (and<mode>3): Likewise.
17579         (*sse_and<mode>3): Likewise.
17580         (*sse2_and<mode>3): Likewise.
17581         (andtf3): Likewise.
17582         (*andtf3): Likewise.
17583         (ior<mode>3): Likewise.
17584         (*sse_ior<mode>3): Likewise.
17585         (*sse2_ior<mode>3): Likewise.
17586         (iortf3): Likewise.
17587         (*iortf3): Likewise.
17588         (xor<mode>3): Likewise.
17589         (*sse_xor<mode>3): Likewise.
17590         (*sse2_xor<mode>3): Likewise.
17591         (xortf3): Likewise.
17592         (*xortf3): Likewise.
17593
17594 2008-04-02  Richard Guenther  <rguenther@suse.de>
17595
17596         PR tree-optimization/14495
17597         PR tree-optimization/34793
17598         * tree-vrp.c (struct switch_update): New structure.
17599         (to_remove_edges, to_update_switch_stmts): New VECs.
17600         (simplify_switch_using_ranges): New function.  Remove not taken
17601         case labels and edges.
17602         (simplify_stmt_using_ranges): Call it.
17603         (identify_jump_threads): Mark edges we have queued for removal
17604         so we don't thread them.
17605         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
17606         case label vector.
17607         * tree-cfg.c (group_case_labels): Deal with missing default label.
17608         (tree_verify_flow_info): Allow missing default label.
17609         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
17610         (emit_case_nodes): Likewise.
17611         (expand_case): Do not rely on the default label to be present.
17612         * expr.c (try_casesi): Deal with NULL default_label.
17613         (do_tablejump): Likewise.
17614
17615 2008-04-02  Richard Guenther  <rguenther@suse.de>
17616
17617         PR tree-optimization/14495
17618         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
17619         SWITCH_EXPR here ...
17620         (vrp_visit_switch_stmt): ... but here (new function).
17621         (find_case_label_index): New helper function.
17622         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
17623
17624 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
17625
17626         * fwprop.c: Fix ISO-C99ism.
17627
17628 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
17629
17630         PR bootstrap/35752
17631         * Makefile.in (objdir): Set it here.
17632         * configure.ac: Not here.  Find dynamic linker characteristics.
17633         * exec-tool.in: Use them.
17634         * aclocal.m4: Regenerate.
17635         * configure: Regenerate.
17636
17637 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
17638
17639         * expr.c (expand_var): Delete it.
17640         * expr.h (expand_var): Delete prototype.
17641         * function.c (expand_function_start): Use expand_decl instead.
17642         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
17643         langhook.
17644
17645 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
17646
17647         PR rtl-optimization/35542
17648         * fwprop.c (forward_propagate_and_simplify): Replace
17649         loc_reg_mentioned_in_p with reg_mentioned_p.
17650
17651 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
17652
17653         PR rtl-optimization/35281
17654         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
17655         (propagate_rtx_1): Handle PR_HANDLE_MEM.
17656         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
17657         (varying_mem_p): Move above propagate_rtx.
17658         (all_uses_available_at): Do not check MEMs.
17659
17660 2008-04-02  Rafael Espíndola  <espindola@google.com>
17661
17662         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
17663         (register_edge_assert_for_2): Split the cond argument.
17664         (register_edge_assert_for_1): Adjust for the change in
17665         register_edge_assert_for_2.
17666         (register_edge_assert_for): Split the cond argument.
17667         (find_switch_asserts): Adjust for the change in
17668         register_edge_assert_for.
17669
17670 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
17671
17672         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
17673         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
17674         offsets for 64-bit mingw.
17675         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
17676         abi for x86_64-pc-mingw.
17677
17678 2008-04-02  Richard Guenther  <rguenther@suse.de>
17679
17680         * tree-vrp.c (extract_range_from_assert): Make sure to not
17681         produce range min/max with TREE_OVERFOW set.
17682         If merging a anti-range and a range keep the anti-range if
17683         the range covers all values of the type.
17684         (register_edge_assert_for_2): Only allow sign-changing
17685         conversions in detecting canonical range checks.  Also
17686         register an assert for the unsigned name if useful.
17687
17688         PR tree-optimization/35787
17689         * tree-vrp.c (vrp_val_max): New function.
17690         (vrp_val_min): Likewise.
17691         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
17692         (vrp_val_is_min): Likewise.
17693         (supports_overflow_infinity): Use vrp_val_{min,max}.
17694         (negative_overflow_infinity): Likewise.
17695         (positive_overflow_infinity): Likewise.
17696         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
17697         (is_positive_overflow_infinity): Likewise.
17698         (is_overflow_infinity): Likewise.
17699         (avoid_overflow_infinity): Use vrp_val_{min,max} and
17700         vrp_val_is_{min,max}.
17701         (set_and_canonicalize_value_range): Canonicalize anti-ranges
17702         to ranges if possible.  Avoid empty ranges.
17703
17704 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17705
17706         PR middle-end/35705
17707         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
17708         the expression is a function address.
17709
17710 2008-04-01  George Helffrich  <george@gcc.gnu.org>
17711
17712         PR fortran/35154, fortran/23057
17713         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
17714         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
17715         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
17716         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
17717         in common.
17718         (dbxout_syms): Check for COMMON-based symbol and wrap in
17719         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
17720         in bracket for efficiency.
17721
17722         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
17723         using DW_TAG_common_block + member offset.
17724         (add_pubname_string): New function.
17725         (dw_expand_expr): New function to find block name and offset for
17726         COMMON var.
17727         (common_check): New function to check whether symbol in Fortran COMMON.
17728         (gen_variable_die): If COMMON, use DW_TAG_common_block.
17729
17730 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
17731
17732         PR c/35436
17733         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
17734
17735 2008-04-02  Ben Elliston  <bje@au.ibm.com>
17736
17737         * config/v850/v850.md (casesi): Remove if (0) code.
17738         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
17739         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
17740
17741 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
17742
17743         * config/i386/i386.md (rex64suffix): New mode attribute.
17744         (floathi<mode>2): Disable expander for SSE math.
17745         (*floathi<mode>2_1): New insn insn_and_split pattern.
17746         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
17747         corresponding post-reload splitters.
17748         (*floathi<mode>2_i387): New macroized insn pattern.
17749         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
17750         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
17751         insn_and_split pattern.
17752         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
17753         New macroized instruction patterns and corresponding post-reload
17754         splitters.
17755         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
17756         and corresponding post-reload splitters.
17757         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
17758         New macroized instruction patterns.
17759         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
17760         macroized instruction patterns and corresponding post-reload splitters.
17761         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
17762         corresponding post-reload splitters.
17763         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
17764         New macroized instruction patterns.
17765         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
17766         corresponding post-reload splitters.
17767         (*floatsi<mode>2_i387): New macroized instruction patterns.
17768
17769 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
17770
17771         * config/i386/i386.md (smaxmin): New.
17772         (umaxmin): Likewise.
17773         (maxminiprefix): Likewise.
17774         (maxminfprefix): Likewise.
17775         (<code><mode>3): Likewise.
17776         (smin<mode>3): Removed.
17777         (smax<mode>3): Likewise.
17778
17779         * config/i386/mmx.md (mmx_<code>v2sf3): New.
17780         (mmx_<code>v4hi3): Likewise.
17781         (mmx_<code>v8qi3): Likewise.
17782         (mmx_smaxv2sf3): Removed.
17783         (mmx_sminv2sf3): Likewise.
17784         (mmx_umaxv8qi3): Likewise.
17785         (mmx_smaxv4hi3): Likewise.
17786         (mmx_uminv8qi3): Likewise.
17787         (mmx_sminv4hi3): Likewise.
17788
17789         * config/i386/sse.md (<addsub><mode>3): New.
17790         (*<addsub><mode>3): Likewise.
17791         (<sse>_vm<addsub><mode>3): Likewise.
17792         (<maxmin><mode>3): Likewise.
17793         (*<maxmin><mode>3_finite): Likewise.
17794         (*<maxmin><mode>3): Likewise.
17795         (<sse>_vm<maxmin><mode>3): Likewise.
17796         (sse3_h<addsub>v4sf3): Likewise.
17797         (sse3_h<addsub>v2df3): Likewise.
17798         (<maxmin>v16qi3): Likewise.
17799         (*<maxmin>v16qi3): Likewise.
17800         (<maxmin>v8hi3): Likewise.
17801         (*<maxmin>v8hi3): Likewise.
17802         (*sse4_1_<maxmin><mode>3): Likewise.
17803         (*sse4_1_<maxmin><mode>3): Likewise.
17804         (add<mode>3): Removed.
17805         (*add<mode>3): Likewise.
17806         (<sse>_vmadd<mode>3): Likewise.
17807         (sub<mode>3): Likewise.
17808         (*sub<mode>3): Likewise.
17809         (<sse>_vmsub<mode>3): Likewise.
17810         (smin<mode>3): Likewise.
17811         (*smin<mode>3_finite): Likewise.
17812         (*smin<mode>3): Likewise.
17813         (<sse>_vmsmin<mode>3): Likewise.
17814         (smax<mode>3): Likewise.
17815         (*smax<mode>3_finite): Likewise.
17816         (*smax<mode>3): Likewise.
17817         (<sse>_vmsmax<mode>3): Likewise.
17818         (sse3_haddv4sf3): Likewise.
17819         (sse3_haddv2df3): Likewise.
17820         (sse3_hsubv4sf3): Likewise.
17821         (sse3_hsubv2df3): Likewise.
17822         (umaxv16qi3): Likewise.
17823         (*umaxv16qi3): Likewise.
17824         (smaxv8hi3): Likewise.
17825         (*smaxv8hi3): Likewise.
17826         (*sse4_1_smax<mode>3): Likewise.
17827         (*sse4_1_umax<mode>3): Likewise.
17828         (uminv16qi3): Likewise.
17829         (*uminv16qi3): Likewise.
17830         (sminv8hi3): Likewise.
17831         (*sminv8hi3): Likewise.
17832         (*sse4_1_smin<mode>3): Likewise.
17833         (*sse4_1_umin<mode>3): Likewise.
17834
17835 2008-04-01  Rafael Espíndola  <espindola@google.com>
17836
17837         * tree-cfg.c (verify_expr): remove in_phi.
17838         (verify_stmt): Don't call walk_tree with verify_expr. Use
17839         is_gimple_min_invariant instead of is_gimple_val.
17840
17841 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
17842
17843         * doc/include/gpl_v3.texi: Update for manpage generation.
17844         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
17845         gpl.texi.
17846         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
17847         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
17848         gpl_v3.texi instead of gpl.texi.
17849         (gpl.pod): New.
17850
17851 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
17852
17853         PR pch/13675
17854         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
17855
17856 2008-04-01  Rafael Espíndola  <espindola@google.com>
17857
17858         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
17859         (extract_code_and_val_from_cond): Use
17860         extract_code_and_val_from_cond_with_ops.
17861
17862 2008-04-01  Jan Hubicka  <jh@suse.cz>
17863
17864         * function.c (free_after_compilation): Free epilogue_delay_list.
17865         (prepare_function_start): Assert that previous compilation was freed.
17866
17867 2008-04-01  Jan Hubicka  <jh@suse.cz>
17868             Jim Wilson  <wilson@tuliptree.org>
17869             Andreas Tobler <andreast@gcc.gnu.org>
17870
17871         PR middle-end/35781
17872         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
17873         rtl.emit instead cfun->emit.
17874         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
17875         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
17876
17877 2008-04-01  Ben Elliston  <bje@au.ibm.com>
17878
17879         * doc/c-tree.texi (Function Basics): Fix grammatical error.
17880
17881 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
17882
17883         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
17884         New options
17885         (fprofile-use): Add var flag_profile_use
17886         * coverage.c (coverage_begin_output): Do not open a gcno file for
17887         output only if -ftest-coverage is set.
17888         Do not add getpwd() to gcda file path.
17889         (build_gcov_info): Check the new flag
17890         flag_profile_datafile_relative_path.
17891         (coverage_init): Use profile_data_prefix.
17892         Read profile counter only if flag_profile_use is set.
17893         * opts.c (common_handle_option): New option fprofile-use=,
17894         fprofile-dir=, fprofile-generate=.
17895         * toplev.c (profile_data_prefix): New variable definition.
17896         * toplev.h (profile_data_prefix): New declaration.
17897         * doc/invoke.tex (Option Summary, Optimization Options):
17898         Add new options.
17899
17900 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
17901
17902         * varasm.c (output_constant_pool_1): In LABEL_REF check,
17903         use tmp consistently.
17904
17905         PR target/35695
17906         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
17907         * config/ia64/ia64.c (rtx_needs_barrier): Handle
17908         UNSPEC_FR_RECIP_APPROX_RES.
17909         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
17910
17911 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
17912
17913         PR c/35750
17914         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
17915
17916 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17917
17918         PR middle-end/30186
17919         * fold-const.c (fold_indirect_ref_1): Support accessing non first
17920         element of the vector via a pointer.
17921
17922 2008-03-31  Ian Lance Taylor  <iant@google.com>
17923
17924         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
17925
17926 2008-03-31  Jan Hubicka  <jh@suse.cz>
17927
17928         * builtins.c (expand_builtin_setjmp_receiver): Update call of
17929         get_arg_pointer_save_area.
17930         * expr.c (init_expr): Just clear out rtl.expr.
17931         * function.c (free_after_compilation): Clear out whole RTL structure.
17932         (get_func_frame_size): Merge into ...
17933         (get_frame_size): ... this one.
17934         (assign_stack_local_1): Merge into ...
17935         (assign_stack_local): ... this one.
17936         (expand_function_end): Update call of get_arg_pointer_save_area.
17937         (get_art_pointer_save_area): Remove cfun argument.
17938         * function.h (emit_status): regno_pointer_align does not need length
17939         attribute. Move x_regno_reg_rtx to ...
17940         (regno_reg_rtx): ... new global array.
17941         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
17942         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
17943         apply_args_value, forced_labels, stack_pointer_delta):
17944         Update accestors.
17945         (struct varasm_status): Move here from varasm.c
17946         (struct rtl_data): New. Move here some fields from struct function.
17947         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
17948         frame_offset, stack_check_probe_note, arg_pointer_save_area,
17949         used_temp_slots avail_temp_slots, temp_slot_level,
17950         nonlocal_goto_handler_labels): Update accesstors.
17951         (rtl): New global variable.
17952         (struct function): Move some fileds to rtl_data.
17953         (get_arg_pointer_save_area): Update prototype.
17954         * emit-rtl.c (rtl): Declare.
17955         (regno_reg_rtx): Declare.
17956         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
17957         Update.
17958         (gen_reg_rtx): Update.
17959         (init_virtual_regs): Do not tate emit_status argument.
17960         (init_emit): Do not allocate emit.
17961         * varasm.c (varasm_statuc): Move to function.h.
17962         (n_deferred_constatns): Update accestor.
17963         (init_varasm_status): Do not allocate varasm_status.
17964         (force_const_mem, get_pool_size, output_constant_pool): Update.
17965         * stmt.c (force_label_rtx): Do not use x_ prefixes.
17966         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
17967
17968 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
17969
17970         PR rtl-optimization/35729
17971         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
17972         references.
17973
17974 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
17975
17976         PR target/32000
17977         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
17978         load/store if memory is unaligned.
17979         (*movti_rex64): Likewise.
17980
17981         * config/i386/predicates.md (misaligned_operand): New.
17982
17983 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
17984
17985         PR tree-opt/35431
17986         * tree-ssa-phiopt.c (conditional_replacement): Return early for
17987         complex types.
17988
17989 2008-03-31  Jan Beulich  <jbeulich@novell.com>
17990
17991         * config/ia64/constraints.md: Add 'j' constraint.
17992         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
17993         (movdi_internal): Likewise.
17994
17995 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
17996
17997         PR c/35748
17998         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
17999
18000 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
18001
18002         PR target/35757
18003         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
18004         proper error message for the third argument on blendpd and
18005         blendps.
18006
18007         * config/i386/sse.md (blendbits): New.
18008         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
18009
18010 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
18011
18012         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
18013
18014 2008-03-30  Richard Guenther  <rguenther@suse.de>
18015
18016         PR middle-end/31023
18017         * fold-const.c (fold_sign_changed_comparison): Do leave
18018         conversions to base-types alone.
18019
18020 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18021
18022         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
18023         the link register if one altivec register is be saved.
18024
18025 2008-03-30  Ben Elliston  <bje@au.ibm.com>
18026
18027         * final.c (final_scan_insn): Remove if (0) code.
18028
18029 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
18030
18031         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
18032
18033 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
18034
18035         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
18036         of V4SFmode to ix86_binary_operator_ok.
18037
18038 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
18039
18040         * config/i386/i386.c (override_options): Initialize
18041         ix86_veclib_handler to ix86_veclibabi_svml when
18042         -mveclibabi=svml is used.
18043         (ix86_veclibabi_svml): New function for SVML ABI style
18044         vectorization support.
18045         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
18046
18047 2008-03-28  Rafael Espíndola  <espindola@google.com>
18048
18049         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
18050         (tree_binary_nonnegative_warnv_p): Make it public.
18051         (tree_single_nonnegative_warnv_p): Make it public.
18052         (tree_invalid_nonnegative_warnv_p): Make it public.
18053         (tree_unary_nonzero_warnv_p): Make it public.
18054         (tree_binary_nonzero_warnv_p): Make it public
18055         (tree_single_nonzero_warnv_p): Make it public.
18056         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
18057         (extract_range_from_binary_expr): Split the expr argument.
18058         (extract_range_from_unary_expr): Split the expr argument.
18059         (extract_range_from_comparison): Split the expr argument.
18060         (extract_range_from_expr): Use the new aux functions.
18061         (vrp_evaluate_conditional_warnv): Use
18062         vrp_evaluate_conditional_warnv_with_ops.
18063         * tree.h (tree_unary_nonzero_warnv_p): Declare.
18064         (tree_binary_nonzero_warnv_p): Declare.
18065         (tree_single_nonzero_warnv_p): Declare.
18066         (tree_expr_nonzero_warnv_p): Declare.
18067         (tree_unary_nonnegative_warnv_p): Declare.
18068         (tree_binary_nonnegative_warnv_p): Declare.
18069         (tree_single_nonnegative_warnv_p): Declare.
18070         (tree_invalid_nonnegative_warnv_p): Declare.
18071
18072 2008-03-28  Richard Guenther  <rguenther@suse.de>
18073
18074         PR tree-optimization/30317
18075         PR tree-optimization/30911
18076         PR tree-optimization/34793
18077         * tree-vrp.c (set_and_canonicalize_value_range): New function.
18078         (struct assert_locus_d): New member EXPR.
18079         (register_new_assert_for): Add EXPR parameter to support
18080         ASSERT_EXPR <name, expr OP limit>.
18081         (register_edge_assert_for_1): Adjust callers.
18082         (find_assert_locations): Likewise.
18083         (process_assert_insertions_for): Build condition from expression.
18084         (extract_range_from_assert): Handle ASSERT_EXPRs
18085         of the form ASSERT_EXPR <name, expr OP limit>.
18086         (register_edge_assert_for_2): New helper registering
18087         asserts for comparisons.  Recognize range tests of the form
18088         (unsigned)i - CST1 OP CST2.
18089         (register_edge_assert_for_1): Use it.
18090         (register_edge_assert_for): Likewise.
18091         (needs_overflow_infinity): Integer sub-types
18092         do not need overflow infinities.
18093         (vrp_val_is_max): The extreme values of integer sub-types
18094         are those of the base type.
18095         (vrp_val_is_min): Likewise.
18096         * tree.def (ASSERT_EXPR): Document extra allowed conditional
18097         expressions.
18098
18099 2008-03-28  Nick Clifton  <nickc@redhat.com>
18100
18101         PR target/31110
18102         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
18103         Return GENERAL_REGS for stack adjustment reloads.
18104
18105 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18106
18107         PR target/31334
18108         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
18109         const_vector when all the vectors are constant.
18110
18111 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
18112
18113         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
18114         comparisons.
18115         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
18116         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
18117         (scc_sf): New.
18118         (s<code>_sf): Use new scc_sf attribute for opcode names.
18119
18120 2008-03-27  Tom Tromey  <tromey@redhat.com>
18121
18122         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
18123         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
18124         config/spu/t-spu-elf, config/i386/t-interix,
18125         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
18126         config/i386/x-darwin, config/i386/x-mingw32,
18127         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
18128         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
18129         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
18130         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
18131         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
18132         config/rs6000/x-darwin, config/rs6000/t-rs6000,
18133         config/score/t-score-elf, config/arm/t-strongarm-pe,
18134         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
18135         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
18136         Revert automatic dependency patch.
18137
18138 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
18139
18140         PR target/35657
18141         * config/i386/i386.c (ix86_function_arg_boundary): Align
18142         decimal floating point to its natural boundary.
18143
18144 2008-03-27  Richard Guenther  <rguenther@suse.de>
18145
18146         PR middle-end/35716
18147         * fold-const.c (fold_comparison): Restrict distinct decl
18148         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
18149         solely rely on operand_equal_p.
18150
18151 2008-03-27  Richard Guenther  <rguenther@suse.de>
18152
18153         PR c/32511
18154         * c-common.c (handle_weak_attribute): Reject combination of
18155         weak and inline.
18156
18157 2008-03-27  Richard Guenther  <rguenther@suse.de>
18158
18159         PR tree-optimization/32810
18160         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
18161         conversions from DECL_INITIAL.
18162         (fold_const_aggregate_ref): Likewise from constructor elements.
18163
18164 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
18165
18166         * tree-affine.h (aff_combination_expand): Declare.
18167         (get_inner_reference_aff): Likewise.
18168         * tree-affine.c (aff_combination_expand): Split out from
18169         tree_to_aff_combination_expand.
18170         (get_inner_reference_aff): New function.
18171         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
18172         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
18173         (struct lim_aux_data): sm_done field removed.
18174         (mem_ref_loc_p, mem_ref_locs_p): New types.
18175         (struct mem_ref): Added id, stored, accesses_in_loop,
18176         indep_loop, dep_loop, indep_ref, dep_ref fields.
18177         Removed is_stored, locs and next fields.
18178         (memory_accesses): New variable.
18179         (movement_possibility): Do not allow moving statements
18180         that store to memory.
18181         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
18182         New functions.
18183         (determine_max_movement): For statements with memory references,
18184         find the outermost loop in that the reference is independent.
18185         (move_computations_stmt): Mark the virtual operands for renaming.
18186         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
18187         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
18188         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
18189         add_vop_ref_mapping, create_vop_ref_mapping_loop,
18190         create_vop_ref_mapping, analyze_memory_references,
18191         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
18192         get_all_locs_in_loop, ref_always_accessed_p,
18193         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
18194         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
18195         store_motion_loop, store_motion): New functions.
18196         (struct vop_to_refs_elt): New type.
18197         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
18198         memref_hash, memref_eq, hoist_memory_references): Rewritten.
18199         (schedule_sm): Replaced by...
18200         (execute_sm): ... this.
18201         (determine_lsm_ref, hoist_memory_references,
18202         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
18203         find_more_ref_vops, free_mem_ref, free_mem_refs,
18204         determine_lsm_loop, determine_lsm): Removed.
18205         (tree_ssa_lim_finalize): Free data structures used by store motion.
18206         (tree_ssa_lim): Call analyze_memory_references.  Use
18207         store_motion instead of determine_lsm.
18208
18209 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
18210
18211         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
18212         rename tmake_file to m68hc11/t-m68hc11.
18213         (mcore): Set inhibit_libc to true.
18214         * config.host (alpha*-dec-*vms*): Set extra_programs.
18215         (interix3*): Don't use host_xmake_file.
18216         * configure.ac: Let config.gcc override inhibit_libc.
18217         * configure: Regenerate.
18218
18219         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
18220         * config/t-openbsd-thread: Remove commented out lines.
18221
18222         * config/x-interix: Remove.
18223
18224         * config/m68hc11/t-m68hc11-gas: Rename to...
18225         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
18226
18227         * config/mcore/t-mcore: Remove T_CFLAGS.
18228         * config/mcore/t-mcore-pe: Likewise.
18229
18230 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
18231
18232         * configure.ac: Replace custom __GNU_SOURCE test with
18233         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
18234         * aclocal.m4: Regenerate.
18235         * configure: Regenerate.
18236         * config.in: Regenerate.
18237
18238 2008-03-27  Richard Guenther  <rguenther@suse.de>
18239
18240         * fold-const.c (target.h): Include.
18241         (fold_comparison): Fold comparison of addresses of decls
18242         that bind locally or of constants.  Consolidate address folding code.
18243         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
18244         results from fold_binary_to_constant.
18245         (compare_values_warnv): Likewise.
18246
18247 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
18248
18249         PR middle-end/35429
18250         * fold-const.c (fold_truthop): Check for integeral types when folding
18251         a == 0 && b == 0 and a != 0 || b != 0 .
18252
18253 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
18254
18255         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
18256
18257 2008-03-26  Andreas Schwab  <schwab@suse.de>
18258
18259         * doc/invoke.texi: Fix use of @item vs. @itemx.
18260
18261 2008-03-26  Tom Tromey  <tromey@redhat.com>
18262
18263         * Makefile.in (build/gensupport.o, build/print-rtl.o,
18264         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
18265         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
18266         build/gencodes.o, build/genconditions.o, build/genconfig.o,
18267         build/genconstants.o, build/genemit.o, build/genextract.o,
18268         build/genflags.o, build/genmddeps.o, build/genopinit.o,
18269         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
18270         options.h.
18271
18272 2008-03-26  Richard Guenther  <rguenther@suse.de>
18273
18274         Revert
18275         2008-03-26  Richard Guenther  <rguenther@suse.de>
18276
18277         * fold-const.c (target.h): Include.
18278         (fold_comparison): Fold comparison of addresses of two decls
18279         that bind locally.  Consolidate address folding code.
18280
18281 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18282
18283         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
18284         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
18285         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
18286         dconstsqrt2, dconstthird, dconste and/or dconst10.
18287         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
18288         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
18289         dconstsqrt2, dconste): Delete.
18290         (init_emit_once): Likewise.  Simplify initializing dconstm1.
18291         Constify variable.
18292         * real.c (get_real_const): New.
18293         * real.h (dconst3, dconst10, dconstm2, dconstthird,
18294         dconstsqrt2, dconste): Delete.
18295         (real_value_const, get_real_const): New.
18296
18297 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
18298
18299         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
18300
18301         * config/i386/i386.c (ix86_function_arg_boundary): Check
18302         BIGGEST_ALIGNMENT instead of 128.
18303         (setup_incoming_varargs_64): Likewise.
18304
18305 2008-03-26  Tom Tromey  <tromey@redhat.com>
18306
18307         * Makefile.in (DEPFILES): Add missing '/'.
18308
18309 2008-03-26  Richard Guenther  <rguenther@suse.de>
18310
18311         * fold-const.c (target.h): Include.
18312         (fold_comparison): Fold comparison of addresses of two decls
18313         that bind locally.  Consolidate address folding code.
18314
18315 2008-03-26  Nick Clifton  <nickc@redhat.com>
18316
18317         PR target/31232
18318         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
18319         not allow INT+INT as a legitimate addressing mode.
18320
18321 2008-03-26  Richard Guenther  <rguenther@suse.de>
18322
18323         * tree-flow.h (widen_bitfield): Remove declaration.
18324         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
18325         (widen_bitfield): Remove function.
18326         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
18327         code.
18328
18329 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18330
18331         PR target/31558
18332         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
18333         error_mark_node's.
18334
18335 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
18336
18337         PR rtl-optimization/35232
18338         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
18339         (forget_old_reloads_1, forget_marked_reloads): Don't clear
18340         reg_reloaded_call_part_clobbered here.
18341         (reload_regs_reach_end_p): New function.
18342         (reload_reg_rtx_for_input): New variable.
18343         (reload_reg_rtx_for_output): Likewise.
18344         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
18345         when reassigning a pseudo register.  Load reloadreg from
18346         reload_reg_rtx_for_input, moving the mode and register
18347         calculation to...
18348         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
18349         instead of the original when deciding whether an input reload
18350         would be a no-op or whether an output reload can be deleted.
18351         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
18352         when setting up new_spill_reg_store.  Load it from
18353         reload_reg_rtx_for_output, moving the mode and register
18354         calculation to...
18355         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
18356         instead of the original when deciding whether an output reload
18357         would be a no-op.  Do the same when modifying insn notes.
18358         Use rtx_equal_p instead of == to compare the registers.
18359         (inherit_piecemeal_p): Take a mode and two register numbers
18360         as argument.
18361         (emit_reload_insns): Clear new_spill_reg_store for every hard
18362         register in the reload register.  Remove spill registers
18363         from reg_reloaded_valid before considering whether to record
18364         inheritance information for them.  Use reload_reg_rtx_for_output
18365         instead of reg_rtx when recording output reloads.  Use
18366         reload_reg_rtx_for_input instead of reg_rtx when recording
18367         input reloads.  Set or clear reg_reloaded_call_part_clobbered
18368         at the same time as setting reg_reloaded_valid.
18369         (delete_output_reload): Add a new_reload_reg parameter and use it
18370         instead of rld[j].reg_rtx.
18371         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
18372         calls accordingly.
18373
18374 2008-03-25  Tom Tromey  <tromey@redhat.com>
18375
18376         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
18377         (build/genattr.o): Likewise.
18378         (build/genattrtab.o): Likewise.
18379         (build/gencodes.o): Likewise.
18380         (build/genconfig.o): Likewise.
18381         (build/genconstants.o): Likewise.
18382         (build/genemit.o): Likewise.
18383         (build/genextract.o): Likewise.
18384         (build/genflags.o): Likewise.
18385
18386 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
18387
18388         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
18389         instead of size_int for integer types.
18390         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
18391         to match type of MINUS_EXPR.
18392
18393 2008-03-25  Tom Tromey  <tromey@redhat.com>
18394
18395         * configure: Rebuilt.
18396         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
18397         Makefile.
18398
18399 2008-03-25  Tom Tromey  <tromey@redhat.com>
18400
18401         * config/x-solaris (host-solaris.o): Update.
18402         * config/x-linux (host-linux.o): Update.
18403         * config/x-hpux (host-hpux.o): Update.
18404         * config/x-darwin (host-darwin.o): Update.
18405         * config/v850/t-v850e (v850-c.o): Update.
18406         * config/v850/t-v850 (v850-c.o): Update.
18407         * config/t-vxworks (vxworks.o): Update.
18408         * config/t-sol2 (sol2-c.o, sol2.o): Update.
18409         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
18410         * config/spu/t-spu-elf (spu-c.o): Update.
18411         (spu.o): Remove.
18412         * config/sh/t-symbian (sh-c.o): Update.
18413         (symbian.o): Update.
18414         * config/sh/t-sh (sh-c.o): Update.
18415         * config/score/t-score-elf (score7.o, score3.o): Update.
18416         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
18417         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
18418         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
18419         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
18420         (rs6000.o): Remove.
18421         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
18422         * config/m32c/t-m32c (m32c-pragma.o): Update.
18423         * config/ia64/t-ia64 (ia64-c.o): Update.
18424         * config/i386/x-mingw32 (host-mingw32.o): Update.
18425         * config/i386/x-i386 (driver-i386.o): Update.
18426         * config/i386/x-darwin (host-i386-darwin.o): Update.
18427         * config/i386/x-cygwin (host-cygwin.o): Update.
18428         * config/i386/t-nwld (nwld.o): Update.
18429         * config/i386/t-netware (netware.o): Update.
18430         * config/i386/t-interix (winnt.o): Update.
18431         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
18432         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
18433         msformat-c.o): Update.
18434         * config/bfin/t-bfin-linux (generated_files): Add
18435         linux-sysroot-suffix.h.
18436         * config/arm/t-wince-pe (pe.o): Update.
18437         * config/arm/t-strongarm-pe (pe.o): Update.
18438         * config/arm/t-pe (pe.o): Update.
18439         * config/arm/t-arm (arm-c.o): Update.
18440         * doc/install.texi (Prerequisites): Require make 3.80.
18441         * Makefile.in: Remove .o targets.
18442         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
18443         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
18444         (simple_generated_h, simple_generated_c): Move earlier.
18445         (generated_files): New variable.
18446         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
18447         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
18448         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
18449         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
18450         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
18451         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
18452         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
18453         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
18454         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
18455         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
18456         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
18457         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
18458         (.c.o): Remove.
18459         (COMPILE.base, COMPILE): New variables.
18460         (%.o): New pattern rule.
18461         (ALL_HOST_OBJS): New variable.
18462         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
18463         (dummy-checksum.o, cc1-checksum.o): Remove.
18464         (DRIVER_SHLIB): New variable.
18465         (DRIVER_DEFINES): Use it.
18466         (gencondmd.c): Move out of build/.
18467         (s-conditions): Update.
18468         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
18469         (ALL_BUILD_OBJS): Likewise.
18470         (build/%.o): Use BUILDCOMPILE.
18471         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
18472         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
18473         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
18474         build/gencheck.o, build/gencodes.o, build/genconditions.o,
18475         build/genconfig.o, build/genconstants.o, build/genemit.o,
18476         build/genextract.o, build/genflags.o, build/genmddeps.o,
18477         build/genopinit.o, build/genoutput.o, build/genpeep.o,
18478         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
18479         build/gen-protos.o, build/scan.o, build/fix-header.o,
18480         build/scan-decls.o): Simplify.
18481         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
18482         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
18483         prefix.o, toplev.o): Reduce to variable setting.
18484         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
18485         ($(out_object_file), gcc-options.o): New targets.
18486         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
18487         * configure: Rebuilt.
18488         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
18489         * doc/sourcebuild.texi (Front End Directory): Document new variable.
18490
18491 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
18492
18493         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
18494         complain when we hit an error, return ERROR_MARK_NODE.
18495
18496 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
18497
18498         * config/sh/constraints.md (Pso, Psz): New constraints.
18499         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
18500         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
18501
18502 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
18503
18504         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
18505         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
18506
18507 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
18508
18509         * config/sh/sh.md (prefetch): Add condition for SH2A target.
18510         (prefetch_sh2a): New.
18511
18512 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
18513             Naveen.H.S  <naveen.hs@kpitcummins.com>
18514
18515         * config/sh/constraints.md (I28): New constraint.
18516         * config/sh/sh.c (broken_move): Add support for movi20s.
18517         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
18518
18519 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
18520             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
18521             Naveen.H.S  <naveen.hs@kpitcummins.com>
18522
18523         * config/sh/sh.c (SH_ATTRIBUTES): Define.
18524         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
18525         (print_operand): Handle resbank in %@ operand code.
18526         (sh_encode_section_info): New.
18527         (push_regs): Add conditions for resbank.
18528         (sh_expand_epilogue): Likewise.
18529         (sh_insert_attributes): Likewise.
18530         (sh_attribute_table): Likewise.
18531         (sh_handle_resbank_handler_attribute): New.
18532         (sh2a_handle_function_vector_handler_attribute): New.
18533         (sh2a_is_function_vector_call): New.
18534         (sh2a_get_function_vector_number): New.
18535         (sh2a_function_vector_p): New.
18536         (sh_cfun_resbank_handler_p): New.
18537         * config/sh/sh.md (calli): Emit jsr/n if possible.
18538         (calli_tbr_rel): New.
18539         (calli_pcrel): Emit jsr/n if possible.
18540         (return_i): Emit rts/n if possible.
18541         (call_valuei_tbr_rel): New.
18542         (call_valuei_pcrel): Add condition for SH2A target.
18543         (call_value): Likewise.
18544         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
18545         (sh2a_get_function_vector_number): Likewise.
18546         (sh2a_is_function_vector_call): Likewise.
18547         * doc/extend.texi: Document TBR relative addressing of SH2A.
18548         (resbank): Add description for SH2A.
18549
18550 2008-03-24  Richard Guenther  <rguenther@suse.de>
18551
18552         PR c/22371
18553         * gimplify.c (gimplify_modify_expr): For frontend type-correct
18554         pointer assignments change conversions according to middle-end rules.
18555         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
18556         * configure.ac: Include type checking in yes.
18557         * configure: Regenerate.
18558
18559 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18560
18561         * diagnostic.c (diagnostic_count_diagnostic): Delete.
18562         (diagnostic_report_diagnostic): Update. Handle ICEs here.
18563
18564 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
18565
18566         * gthr-vxworks.h (UNUSED): Define.
18567
18568 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
18569
18570         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
18571
18572 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
18573
18574         * doc/extend.texi (Function Attributes): Add missing comma in the
18575         example of the "alloc_size" attribute.
18576
18577 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
18578
18579         Revert:
18580         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
18581
18582         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
18583         32bit host.
18584
18585         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
18586
18587         PR target/35496
18588         * stor-layout.c (update_alignment_for_field): Set minimum alignment
18589         of the underlying type of a MS bitfield layout to the natural
18590         alignment of the type.
18591
18592         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
18593
18594         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
18595         to their natural alignment to avoid store forwarding stalls.
18596
18597 2008-03-22  Richard Guenther  <rguenther@suse.de>
18598
18599         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
18600         For PHI nodes verify the address is invariant.
18601         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
18602         (get_symbol_constant_value): Use is_gimple_min_invariant.
18603         (maybe_fold_stmt_indirect): Likewise.
18604
18605 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18606
18607         PR rtl-optimization/33927
18608         * Makefile.in (dse.o): Depend on $(TM_P_H).
18609         * expr.h (extract_low_bits): Declare.
18610         * expmed.c (extract_low_bits): New function.
18611         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
18612         * dse.c: Include tm_p.h.
18613         (find_shift_sequence): Remove the read_reg argument and return the
18614         read value.  Emit the instructions instead of returning them.
18615         Iterate on new_mode rather than calculating it each time.
18616         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
18617         source to NEW_MODE and extract_low_bits to convert the shifted
18618         value to READ_MODE.
18619         (replace_read): Allow the load and store to have different mode
18620         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
18621         or extraction instructions before trying the replacement.  Update
18622         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
18623
18624 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
18625
18626         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
18627         to their natural alignment to avoid store forwarding stalls.
18628
18629 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18630
18631         PR target/27946
18632         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
18633         encouraging but not allowing gprs for input;
18634         change the input constraint to !f#r.
18635         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
18636         gprs for output;
18637         change the output constraint to !f#r.
18638
18639 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
18640
18641         PR target/13958
18642         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
18643         corresponding post-reload splitters.
18644         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
18645         when x87 FP math is selected.
18646         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
18647         New function prototype.
18648         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
18649         unreachable function to ease macroization of insn patterns.
18650
18651 2008-03-21  Martin Jambor  <mjambor@suse.cz>
18652
18653         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
18654         reference dumps if ddr is NULL or dependence is unknown.
18655
18656 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
18657
18658         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
18659         unsigned extension into account.
18660         (ATOMIC_COMPARE_AND_SWAP): Likewise.
18661         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
18662         Do computations on a scratch register.
18663
18664 2008-03-21  Richard Guenther  <rguenther@suse.de>
18665
18666         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
18667         Use is_gimple_min_invariant instead of TREE_INVARIANT.
18668         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
18669         * tree-ssa-dom.c (record_equality): Likewise.
18670         * tree-inline.c (copy_body_r): Likewise.
18671         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
18672         TREE_INVARIANT.
18673
18674 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
18675
18676         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
18677         as 'delete_unused' argument.
18678
18679 2008-03-20  Richard Guenther  <rguenther@suse.de>
18680
18681         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
18682         special casing of constant qualifiers.
18683         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
18684         care about them in general.
18685         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
18686         regardless of their type.
18687         (fold_stmt_r): Forcefully fold *& if we end up with that.
18688
18689 2008-03-20  Paul Brook  <paul@codesourcery.com>
18690
18691         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
18692         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
18693         linker flags.
18694         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
18695         definition.
18696         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
18697         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
18698
18699 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
18700
18701         * common.opt (Wmudflap): New option.
18702         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
18703         (mx_register_decls): Likewise.
18704         (mudflap_finish_file): Likewise.
18705         * doc/invoke.texi: Document -Wno-mudflap.
18706
18707 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
18708
18709         * c-format.c (replace_format_name_to_system_name): New.
18710         (cmp_attribs): New.
18711         (convert_format_name_to_system_name): New.
18712         (decode_format_attr): Add use of convert_format_name_to_system_name.
18713         (format_types_orig): Add gnu_ prefix to names.
18714         (check_format_info_main): Special treating of \0 escaped names for
18715         supporting multi-character format specifiers as I32, I64.
18716         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
18717         (gnu_target_overrides_format_attributes): New.
18718         * c-format.h: Add structure target_ovr_attr to hold
18719         system specific formatter names.
18720         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
18721         msformat-c.o file to c_target_objs and cxx_target_objs.
18722         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
18723         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
18724         (TARGET_N_FORMAT_TYPES): New.
18725         * config/i386/msformat-c.c: New.
18726         * config/i386/t-cygming: Add build rule for msformat-c.o.
18727         * doc/extend.texi: Add new format names gnu_* and ms_* and
18728         further details.
18729         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
18730
18731 2008-03-20  Ira Rosen  <irar@il.ibm.com>
18732
18733         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
18734         optimizations turned on under -O3.
18735         (ftree-vectorize): Add that the flag is turned on with -O3.
18736
18737 2008-03-20  Ben Elliston  <bje@au.ibm.com>
18738
18739         * regmove.c (try_auto_increment): Fix spelling error in comment.
18740         * final.c (final_scan_insn): Likewise.
18741
18742 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
18743
18744         PR target/14552
18745         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
18746         allocator preferences for "y" and "r" class registers.
18747         ("*mov<mode>_internal"): Ditto.
18748         ("*movv2sf_internal_rex64"): Ditto.
18749         ("*movv2sf_internal"): Ditto.
18750
18751 2008-03-19  Michael Matz  <matz@suse.de>
18752
18753         PR middle-end/35616
18754         * calls.c (expand_call): Check overlap of arguments with call
18755         address for sibcalls.
18756
18757 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
18758
18759         PR target/35496
18760         * stor-layout.c (update_alignment_for_field): Set minimum alignment
18761         of the underlying type of a MS bitfield layout to the natural
18762         alignment of the type.
18763
18764 2008-03-19  Jan Hubicka  <jh@suse.cz>
18765
18766         PR other/35094
18767         * toplev.c (decode_d_option): Handle all CPP flags.
18768         * tree-vrp.c: Update tree_pass descriptors.
18769         * regrename.c: Update tree_pass descriptors.
18770         * fwprop.c: Update tree_pass descriptors.
18771         * doc/invoke.texi: Remove documentation of dropped -d? flags.
18772         * tree-into-ssa.c: Update tree_pass descriptors.
18773         * tree-dump.c: Update tree_pass descriptors.
18774         * tree-complex.c: Update tree_pass descriptors.
18775         * tree-dump.h: Update tree_pass descriptors.
18776         * see.c: Update tree_pass descriptors.
18777         * cgraphbuild.c: Update tree_pass descriptors.
18778         * tracer.c: Update tree_pass descriptors.
18779         * tree-loop-distribution.c: Update tree_pass descriptors.
18780         * cgraph.c: Update tree_pass descriptors.
18781         * postreload-gcse.c: Update tree_pass descriptors.
18782         * postreload.c: Update tree_pass descriptors.
18783         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
18784         * tree-tailcall.c: Update tree_pass descriptors.
18785         * tree-pass.h (tree_opt_pass): Rename to ...
18786         (opt_pass) ... this one; add "type" field and remove letter field.
18787         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
18788         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
18789         all_lowering_passes): Update declaration.
18790         * ipa-cp.c: Update tree_pass descriptors.
18791         * final.c: Update tree_pass descriptors.
18792         * omp-low.c: Update tree_pass descriptors.
18793         * tree-ssa-dse.c: Update tree_pass descriptors.
18794         * ipa-reference.c: Update tree_pass descriptors.
18795         * tree-ssa-uncprop.c: Update tree_pass descriptors.
18796         * auto-inc-dec.c: Update tree_pass descriptors.
18797         * reorg.c: Update tree_pass descriptors.
18798         * cgraphunit.c: Update tree_pass descriptors.
18799         * tree-ssa-copyrename.c: Update tree_pass descriptors.
18800         * tree-ssa-ccp.c: Update tree_pass descriptors.
18801         * df-core.c: Update tree_pass descriptors.
18802         * mode-switching.c: Update tree_pass descriptors.
18803         * tree-nomudflap.c: Update tree_pass descriptors.
18804         * modulo-sched.c: Update tree_pass descriptors.
18805         * ipa-pure-const.c: Update tree_pass descriptors.
18806         * cse.c: Update tree_pass descriptors.
18807         * web.c: Update tree_pass descriptors.
18808         * tree-stdarg.c: Update tree_pass descriptors.
18809         * tree-ssa-math-opts.c: Update tree_pass descriptors.
18810         * tree-ssa-dom.c: Update tree_pass descriptors.
18811         * tree-nrv.c: Update tree_pass descriptors.
18812         * tree-ssa-alias.c: Update tree_pass descriptors.
18813         * loop-init.c: Update tree_pass descriptors.
18814         * gimple-low.c: Update tree_pass descriptors.
18815         * ipa-inline.c: Update tree_pass descriptors.
18816         * tree-ssa-sink.c: Update tree_pass descriptors.
18817         * global.c: Update tree_pass descriptors.
18818         * ifcvt.c: Update tree_pass descriptors.
18819         * jump.c: Update tree_pass descriptors.
18820         * predict.c: Update tree_pass descriptors.
18821         * tree-ssa-loop.c: Update tree_pass descriptors.
18822         * recog.c: Update tree_pass descriptors.
18823         * dse.c: Update tree_pass descriptors.
18824         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
18825         * tree-eh.c: Update tree_pass descriptors.
18826         * regmove.c: Update tree_pass descriptors.
18827         * local-alloc.c
18828         * function.c: Update tree_pass descriptors.
18829         * tree-vectorizer.c: Update tree_pass descriptors.
18830         * gcse.c: Update tree_pass descriptors.
18831         * ipa-type-escape.c: Update tree_pass descriptors.
18832         * tree-if-conv.c: Update tree_pass descriptors.
18833         * init-regs.c: Update tree_pass descriptors.
18834         * ipa.c: Update tree_pass descriptors.
18835         * tree-ssa-phiopt.c: Update tree_pass descriptors.
18836         * rtl-factoring.c: Update tree_pass descriptors.
18837         * lower-subreg.c: Update tree_pass descriptors.
18838         * bt-load.c: Update tree_pass descriptors.
18839         * tree-dfa.c: Update tree_pass descriptors.
18840         * except.c: Update tree_pass descriptors.
18841         * emit-rtl.c: Update tree_pass descriptors.
18842         * cfgexpand.c: Update tree_pass descriptors.
18843         * tree-cfgcleanup.c: Update tree_pass descriptors.
18844         * cfgcleanup.c: Update tree_pass descriptors.
18845         * tree-ssa-pre.c: Update tree_pass descriptors.
18846         * tree-sra.c: Update tree_pass descriptors.
18847         * tree-mudflap.c: Update tree_pass descriptors.
18848         * tree-ssa-copy.c: Update tree_pass descriptors.
18849         * cfglayout.c: Update tree_pass descriptors.
18850         * tree-ssa-forwprop.c: Update tree_pass descriptors.
18851         * tree-ssa-dce.c: Update tree_pass descriptors.
18852         * tree-ssa.c: Update tree_pass descriptors.
18853         * regclass.c: Update tree_pass descriptors.
18854         * integrate.c: Update tree_pass descriptors.
18855         * tree-optimize.c: Update tree_pass descriptors.
18856         * tree-ssa-phiprop.c: Update tree_pass descriptors.
18857         * tree-object-size.c: Update tree_pass descriptors.
18858         * combine.c: Update tree_pass descriptors.
18859         * tree-outof-ssa.c: Update tree_pass descriptors.
18860         * bb-reorder.c: Update tree_pass descriptors.
18861         * stack-ptr-mod.c: Update tree_pass descriptors.
18862         * var-tracking.c: Update tree_pass descriptors.
18863         * tree-profile.c: Update tree_pass descriptors.
18864         * tree-vect-generic.c: Update tree_pass descriptors.
18865         * reg-stack.c: Update tree_pass descriptors.
18866         * sched-rgn.c: Update tree_pass descriptors.
18867         * tree-ssa-structalias.c: Update tree_pass descriptors.
18868         * tree-cfg.c: Update tree_pass descriptors.
18869         * passes.c (current_pass): Update declaration.
18870         (finish_optimization_passes): Update.
18871         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
18872         (register_one_dump_file, register_dump_files_1, next_pass_1):
18873         Update arguments.
18874         (init_optimization_passes): Update handling of new types.
18875         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
18876         * ipa-struct-reorg.c: Update tree_pass descriptors.
18877         * tree-ssa-reassoc.c: Update tree_pass descriptors.
18878         * combine-stack-adj.c: Update tree_pass descriptors.
18879         * cfgrtl.c: Update tree_pass descriptors.
18880         * dce.c: Update tree_pass descriptors.
18881         * tree-ssanames.c: Update tree_pass descriptors.
18882
18883 2008-03-19  Richard Guenther  <rguenther@suse.de>
18884
18885         PR middle-end/35609
18886         * tree-ssa.c (walk_data): New structure.
18887         (warn_uninitialized_var): If not always_executed warn with "maybe"
18888         instead of "is".
18889         (execute_early_warn_uninitialized): Compute post-dominators.
18890         Initialize always_executed before processing each basic block.
18891
18892 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
18893
18894         PR target/35504
18895         * config/i386/i386.c (x86_this_parameter): Calculate correct location
18896         of "this" pointer when "regparm = N" or "fastcall" is in effect.
18897
18898 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18899
18900         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
18901
18902 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
18903
18904         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
18905         is true.
18906         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
18907         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
18908         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
18909         target after ignore has been set, and move there also the commputation
18910         of subtarget and original_target.
18911         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
18912         (LANG_HOOKS_INITIALIZER): Remove it.
18913         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
18914
18915 2008-03-18  Richard Guenther  <rguenther@suse.de>
18916
18917         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
18918         found an expression with constants, note that in the VN for the lhs.
18919         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
18920         fold them to constants if possible.  Run cleanup_cfg if done so.
18921         (execute_pre): Return todo.
18922         (do_pre): Likewise.
18923         (execute_fre): Likewise.
18924         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
18925         of constants.
18926         (get_prop_source_stmt): Look through pointer conversions.
18927
18928 2008-03-18  Jan Hubicka  <jh@suse.cz>
18929
18930         * tree-pretty-print.c: Include predict.h.
18931         (dump_generic_node): Dump predictor.
18932         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
18933         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
18934         * gimple-low.c (lower_stmt): Likewise.
18935         * expr.c (expand_expr_real): Likewise.
18936         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
18937         them.
18938         (build_predict_expr, build_predict_expr): New.
18939         * predict.h (predictor_name, build_predict_expr): Update.
18940         * c-typeck.c (c_finish_bc_stmt): Add prediction.
18941         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
18942         * predict.def (PRED_CONTINUE): Update hitrate.
18943         * tree.def (PREDICT_EXPR): Define.
18944         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
18945         do not handle BIND_EXPR.
18946         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
18947         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
18948         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
18949         operands.
18950
18951 2008-03-18  Michael Matz  <matz@suse.de>
18952
18953         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
18954
18955 2008-03-18  Richard Guenther  <rguenther@suse.de>
18956
18957         * tree-gimple.h (is_gimple_invariant_address): Declare.
18958         (is_gimple_constant): Likewise.
18959         * tree-gimple.c (is_gimple_constant): New function.
18960         (is_gimple_invariant_address): Likewise.
18961         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
18962         and is_gimple_invariant_address.
18963         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
18964         previous change.
18965         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
18966         an addressable base.
18967
18968 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
18969
18970         PR middle-end/35611
18971         * gimplify.c (gimplify_expr): Gimplify second operand of
18972         OMP_ATOMIC_LOAD.
18973
18974 2008-03-17  Richard Guenther  <rguenther@suse.de>
18975
18976         PR tree-optimization/19637
18977         * fold-const.c (fold_unary): Remove restrictions of removing
18978         intermediate pointer-conversions (P2)(P1)P0.
18979         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
18980         conversion to void pointer.
18981         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
18982
18983 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
18984
18985         PR debug/31510
18986         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
18987         emulated thread local variables.
18988
18989 2008-03-16  Richard Guenther  <rguenther@suse.de>
18990
18991         PR middle-end/35607
18992         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
18993         expand TREE_INVARIANT operations that are not gimple invariant.
18994
18995 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
18996
18997         * doc/extend.texi (Alignment): Say that the ABI controls
18998         the __alignof__ for non-strict-alignment targets rather
18999         than being a recommendation.
19000
19001 2008-03-15  Paul Brook  <paul@codesourcery.com>
19002
19003         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
19004         annotations.
19005         (arm_output_fn_unwind): Mark functions that can not be unwound.
19006
19007 2008-03-15  Paul Brook  <paul@codesourcery.com>
19008
19009         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
19010         extension instructions.
19011
19012 2008-03-15  Richard Guenther  <rguenther@suse.de>
19013
19014         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
19015         and fold constant aggregate refs.
19016         (fold_const_aggregate_ref): Handle string constants
19017         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
19018         (evaluate_stmt): Simplify now that ccp_fold folds constant
19019         aggregate refs.
19020
19021 2008-03-15  Paul Brook  <paul@codesourcery.com>
19022
19023         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
19024         (extzv): Use gen_extzv_t2.
19025         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
19026
19027 2008-03-15  Richard Guenther  <rguenther@suse.de>
19028
19029         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
19030         (fold_const_aggregate_ref): Likewise.
19031         (get_value): Return NULL if we don't have any values.
19032         (ccp_finalize): Set const_val to NULL after freeing it.
19033         * tree-flow.h (get_symbol_constant_value): Declare.
19034         (fold_const_aggregate_ref): Likewise.
19035         * tree-ssa-sccvn.c (try_to_simplify): Use them.
19036
19037 2008-03-15  Richard Guenther  <rguenther@suse.de>
19038
19039         PR middle-end/35593
19040         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
19041         to not produce negative array indices if not allowed.  Add
19042         parameter to indicate that.
19043         (maybe_fold_offset_to_component_ref): Allow negative array
19044         indices only for the first member of a structure.
19045         (maybe_fold_offset_to_reference): Allow negative array indices.
19046         (maybe_fold_stmt_addition): Likewise.
19047
19048 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
19049             Anatoly Sokolov <aesok@post.ru>
19050
19051         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
19052         (avr_arch): Add ARCH_AVR6.
19053         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
19054         (initial_elimination_offset): Initialize and use 'avr_pc_size'
19055         instead of fixed value 2.
19056         (print_operand_address): Use gs() asm specifier instead of pm().
19057         (avr_assemble_integer): (Ditto.).
19058         (avr_output_addr_vec_elt): (Ditto.).
19059         (print_operand): Handle "!" code.
19060         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
19061         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
19062         (AVR_HAVE_EIJMP_EICALL): Define.
19063         (AVR_3_BYTE_PC): Redefine.
19064         (AVR_2_BYTE_PC): (Ditto.).
19065         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
19066         (LINK_SPEC): Add atmega2560 and atmega2561.
19067         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
19068         (crtm2561.o).
19069         * config/avr/avr.md (call_insn): Use eicall instead of icall
19070         for 3 byte PC devices.
19071         (call_value_insn): (Ditto.).
19072         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
19073         (indirect_jump): Use only for for 2 byte PC devices.
19074         (*tablejump): (Ditto.).
19075         (*indirect_jump_avr6): Add insn.
19076         (*tablejump_rjmp): Don't use for 3 byte PC devices.
19077         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
19078         instead of ijmp for 3 byte PC devices.
19079         (__tablejump2__): (Ditto.).
19080         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
19081         (MULITLIB_DIRNAMES): (Ditto.).
19082         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
19083
19084 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
19085
19086         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
19087         "sse2_umulsidi3".  Use V1DI mode for operand 0.
19088         ("mmx_psadbw"): Use V1DI mode for operand 0.
19089         * config/i386/i386-modes.def (V1SI): New vector mode.
19090         * config/i386/i386.c (struct builtin_description)
19091         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
19092         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
19093         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
19094         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
19095         v1di_ftype_v8qi_v8qi type.
19096         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
19097
19098         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
19099         __builtin_ia32_pmuludq]: Fix the mode of return value.
19100
19101 2008-03-15  Richard Guenther  <rguenther@suse.de>
19102
19103         PR middle-end/35595
19104         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
19105         being a PHI_NODE.
19106
19107 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
19108
19109         * doc/invoke.texi (Option Summary, Xtensa Options): Document
19110         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
19111         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
19112         unless TARGET_SERIALIZE_VOLATILE is enabled.
19113         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
19114         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
19115         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
19116
19117 2008-03-14  Richard Guenther  <rguenther@suse.de>
19118
19119         PR tree-optimization/34172
19120         * tree-flow.h (refs_may_alias_p): Declare.
19121         (get_single_def_stmt): Likewise.
19122         (get_single_def_stmt_from_phi): Likewise.
19123         (get_single_def_stmt_with_phi): Likewise.
19124         * tree-dfa.c (refs_may_alias_p): New function.
19125         (get_single_def_stmt): Likewise.
19126         (get_single_def_stmt_from_phi): Likewise.
19127         (get_single_def_stmt_with_phi): Likewise.
19128         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
19129         (vn_reference_lookup_1): New helper function.
19130         (vn_reference_lookup): Walk the virtual use-def chain to
19131         continue searching for a match if the def does not alias the
19132         reference we are looking for.
19133
19134 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
19135
19136         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
19137         archive and Perzl.  Update The Written Word listing.
19138
19139 2008-03-14  Richard Guenther  <rguenther@suse.de>
19140
19141         PR tree-optimization/34043
19142         PR tree-optimization/33989
19143         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
19144         when doing FRE.
19145         (bitmap_find_leader): Use extra argument to verify dominance
19146         relationship inside a basic-block.
19147         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
19148         (find_leader_in_sets): Adjust.
19149         (create_component_ref_by_pieces): Take extra argument for
19150         dominance check, handle lookup failures.
19151         (find_or_generate_expression): Likewise.
19152         (create_expression_by_pieces): Likewise.
19153         (insert_into_preds_of_block): Adjust.
19154         (create_value_expr_from): If asked for, verify all operands
19155         are in the blocks AVAIL_OUT set.
19156         (make_values_for_stmt): Check for SSA_NAMEs that are life
19157         over an abnormal edge.
19158         (compute_avail): Remove such check.
19159         (do_SCCVN_insertion): New function.
19160         (eliminate): If we do not find a leader suitable for replacement
19161         insert a replacement expression from SCCVN if available.
19162         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
19163         (struct vn_ssa_aux): Add needs_insertion flag.
19164         * tree-ssa-sccvn.c (may_insert): New global flag.
19165         (copy_reference_ops_from_ref): Value-number union member access
19166         based on its size, not type and member if insertion is allowed.
19167         (visit_reference_op_load): For a weak match from union type
19168         punning lookup a view-converted value and insert a SSA_NAME
19169         for that value if that is not found.
19170         (visit_use): Make dumps shorter.  Do not disallow value numbering
19171         SSA_NAMEs that are life over an abnormal edge to constants.
19172         (free_scc_vn): Release inserted SSA_NAMEs.
19173         (run_scc_vn): New flag to specify whether insertion is allowed.
19174         Process SSA_NAMEs in forward order.
19175         * tree-ssa-loop-im.c (for_each_index): Handle invariant
19176         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
19177         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
19178         pointer type to/from integral types that do not change the
19179         precision to regular conversions.
19180
19181 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
19182
19183         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
19184         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
19185         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
19186         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
19187         input arguments and the mode of return value.  Built-in functions
19188         that operate on whole 64-bit MMX register now use V1DI mode.
19189
19190 2008-03-13  Alon Dayan  <alond@il.ibm.com>
19191             Olga Golovanevsky  <olga@il.ibm.com>
19192
19193         PR tree-optimization/35041
19194         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
19195         to locate the right position in a statement.
19196
19197 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
19198
19199         PR target/34000
19200         PR target/35553
19201         * config/i386/xmmintrin.h:  Change all static inline functions to
19202         extern inline and add __gnu_inline__ attribute.
19203         * config/i386/bmintrin.h: Ditto.
19204         * config/i386/smmintrin.h: Ditto.
19205         * config/i386/tmmintrin.h: Ditto.
19206         * config/i386/mmintrin-common.h: Ditto.
19207         * config/i386/ammintrin.h: Ditto.
19208         * config/i386/emmintrin.h: Ditto.
19209         * config/i386/pmmintrin.h: Ditto.
19210         * config/i386/mmintrin.h: Ditto.
19211         * config/i386/mm3dnow.h: Ditto.
19212
19213 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
19214
19215         PR middle-end/35185
19216         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
19217         (lower_omp_2): New function.
19218         (lower_omp_1, lower_omp): Rewritten.
19219
19220 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
19221
19222         PR 35054
19223         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
19224         with the phrase "Microsoft Windows compilers".
19225         (Push/Pop Macro Pragmas): New subsection. Document
19226         #pragma push_macro and pragma pop_macro.
19227
19228 2008-03-12  Paul Brook  <paul@codesourcery.com>
19229
19230         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
19231
19232 2008-03-12  Paul Brook  <paul@codesourcery.com>
19233
19234         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
19235         (thumb2_alusi3_short): Exclude PLUS and MINUS.
19236         (thumb2_addsi_shortim): Rename ...
19237         (thumb2_addsi_short): ... to this.  Allow register operands.
19238         (thumb2_subsi_short): New pattern.
19239         (thumb2_one_cmplsi2_short,
19240         thumb2_negsi2_short): New patterns and peepholes.
19241
19242 2008-03-12  Paul Brook  <paul@codesourcery.com>
19243
19244         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
19245
19246 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
19247
19248         * config/i386/i386.md (int_cond): New code iterator.
19249         (fp_cond): Ditto.
19250         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
19251         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
19252         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
19253         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
19254         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
19255         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
19256         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
19257         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
19258
19259 2008-03-12  Paul Brook  <paul@codesourcery.com>
19260
19261         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
19262         instead of {arm,thumb}_compute_save_reg_mask.
19263         (output_return_instruction): Ditto.
19264         (thumb_unexpanded_epilogue): Ditto.
19265         (thumb1_expand_prologue): Ditto.
19266         (thumb1_output_function_prologue): Ditto.
19267         (arm_set_return_address): Ditto.
19268         (thumb_set_return_address): Ditto.
19269         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
19270         regs to achieve stack alignment.
19271         (thumb1_compute_save_reg_mask): Fix compiler warning.
19272         (arm_output_epilogue): Use offsets->saved_regs_mask.
19273         Adjust stack pointer by poping call clobered registers.
19274         (arm_expand_prologue): Use offsets->saved_regs_mask.
19275         Adjust stack pointer by pushing extra registers.
19276         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
19277
19278 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
19279
19280         PR tree-opt/35422
19281         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
19282         conversion to the operands of a multiplication.
19283
19284 2008-03-12  Richard Guenther  <rguenther@suse.de>
19285
19286         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
19287         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
19288         * timevar.def (TV_TREE_PHIPROP): Add.
19289         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
19290         pass description.  Use TV_TREE_PHIPROP.
19291         * tree-ssa-forwprop.c: Remove phiprop code.
19292
19293 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
19294
19295         PR middle-end/35549
19296         * omp-low.c (maybe_lookup_decl): Constify first argument.
19297         (use_pointer_for_field): Change last argument from bool to
19298         omp_context *.  Disallow shared copy-in/out in nested
19299         parallel if decl is shared in outer parallel too.
19300         (build_outer_var_ref, scan_sharing_clauses,
19301         lower_rec_input_clauses, lower_copyprivate_clauses,
19302         lower_send_clauses, lower_send_shared_vars): Adjust callers.
19303
19304 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
19305             Ira Rosen  <irar@il.ibm.com>
19306
19307         * tree-vectorizer.c (free_stmt_vec_info): New function.
19308         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
19309         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
19310         * tree-vectorizer.h (free_stmt_vec_info): Declare.
19311         * tree-vect-transform.c (vectorizable_conversion): Free
19312         vec_oprnds0 if it was allocated.
19313         (vect_permute_store_chain): Remove unused VECs.
19314         (vectorizable_store): Free VECs that are allocated in the..
19315         function.
19316         (vect_transform_strided_load, vectorizable_load): Likewise.
19317         (vect_remove_stores): Simplify the code.
19318         (vect_transform_loop): Move code to vect_remove_stores().
19319         Call vect_remove_stores() and free_stmt_vec_info().
19320
19321 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19322
19323         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
19324         TARGET_HPUX.  Revise comment.
19325         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
19326         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
19327         Use sr4 variant of `be' instruction when not generating PIC code.
19328         (attr_length_call): Adjust for above change.
19329
19330 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19331
19332         * ipa-reference.c (static_execute): Remove module_statics_const and
19333         associated setting code.
19334
19335 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
19336
19337         PR target/35540
19338         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
19339         predicate for operand 1.
19340         (paritysi2_cmp): Use register_operand predicate for operand 2.
19341         Use earlyclobber modifier for operand 1.  Remove support for
19342         memory operands.
19343         (paritydi2_cmp): Use register_operand predicate for operand 3.
19344         Use earlyclobber modifier for operand 1.  Remove support for
19345         memory operands.
19346
19347 2008-03-11  Paul Brook  <paul@codesourcery.com>
19348             Vladimir Prus  <vladimir@codesourcery.com>
19349
19350         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
19351         (arm_compute_save_reg0_reg12_mask): Always
19352         check if register 11 must be saved.  Always safe hard frame pointer
19353         when frame_pointer_needeed.
19354         (arm_compute_save_reg_mask): Save IP and PC
19355         only with apcs frames.
19356         (arm_output_epilogue): Adjust Thumb2 codepath to
19357         be also invoked and work for ARM non-apcs frames.
19358         (arm_expand_prologue): Don't bother saving IP
19359         for non-apcs frame, since it's not clobbered by
19360         prologue code.  Implement non-apcs frame
19361         layout.
19362
19363 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
19364
19365         PR rtl-optimization/35281
19366         * expr.c (convert_move): Use a new pseudo for the intermediate
19367         from_mode->word_mode result.
19368
19369 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
19370
19371         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
19372         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
19373         * toplev.c (compile_file): Don't call it.
19374
19375 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
19376
19377         PR middle-end/35526
19378         * expr.c (store_expr): Call emit_block_move if the mode
19379         of "temp" RTX is BLKmode.
19380
19381 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19382             Richard Guenther  <rguenther@suse.de>
19383
19384         PR tree-optimization/31358
19385         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
19386         the step with a NULL_TREE.
19387         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
19388         to sizetype if type is a pointer type.
19389         (add_candidate_1): Don't convert the base and step to
19390         the generic type if the orginal type is a pointer type.
19391         (add_iv_value_candidates): Use sizetype for the step
19392         if type is a pointer type.
19393         (cand_value_at): Likewise.
19394         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
19395         for pointer types.
19396         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
19397         Don't convert the tem affine to the type.
19398         (add_elt_to_tree): Use sizetype for the step if a pointer.
19399         Use POINTER_PLUS_EXPR for pointers.
19400         (aff_combination_to_tree): Use sizetype for the step if a
19401         pointer.
19402
19403 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
19404
19405         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
19406         Remove commutativity hint.
19407
19408 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
19409
19410         PR c/35438
19411         PR c/35439
19412         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
19413         errorneous type.  Check that v is a VAR_DECL.
19414
19415         PR middle-end/35099
19416         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
19417
19418 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
19419
19420         PR tree-optimization/35494
19421         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
19422         may be overriden at link and run time.
19423
19424 2008-03-10  Richard Guenther  <rguenther@suse.de>
19425
19426         PR tree-optimization/34677
19427         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
19428         (poolify_tree): Likewise.
19429         (modify_expr_template): Likewise.
19430         (poolify_modify_stmt): Likewise.
19431         (insert_fake_stores): Handle all component-ref style stores
19432         in addition to INDIRECT_REF.  Also handle complex types.
19433         Do not poolify the inserted load.
19434         (realify_fake_stores): Do not rebuild the tree but only
19435         make it a SSA_NAME copy.
19436         (init_pre): Remove initialzation of modify_expr_template.
19437         Do not allocate modify_expr_node_pool.
19438         (fini_pre): Do not free modify_expr_node_pool.
19439
19440 2008-03-10  Paul Brook  <paul@codesourcery.com>
19441
19442         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
19443         to avoid conflicts.
19444
19445 2008-03-10  Paul Brook  <paul@codesourcery.com>
19446             Mark Shinwell  <shinwell@codesourcery.com>
19447
19448         * config/arm/cortex-r4.md: New.
19449         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
19450         insn attributes.
19451         * config/arm/arm.md: Include cortex-r4.md.
19452         (insn): Add smmls, sdiv and udiv values.
19453         (generic_sched): Don't use generic scheduling for Cortex-R4.
19454         (arm_issue_rate): New function.
19455         (TARGET_SCHED_ISSUE_RATE): Define.
19456
19457 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
19458
19459         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
19460
19461 2008-03-10  Richard Guenther  <rguenther@suse.de>
19462
19463         * tree-ssa-pre.c (get_sccvn_value): Simplify.
19464         (compute_avail): Do not add stmt uses to AVAIL_OUT.
19465
19466 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
19467
19468         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
19469         Set default to true.
19470
19471 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19472
19473         * c.opt (Wsynth): Deprecate.
19474         * doc/invoke.texi (Option Summary, Warning Options): Document
19475         -Wno-format-contains-nul.
19476
19477 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
19478
19479         PR target/35496
19480         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
19481         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
19482
19483 2008-03-09  Ira Rosen  <irar@il.ibm.com>
19484
19485         * config/rs6000/rs6000.c (builtin_description): Rename vector
19486         left shift operations.
19487         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
19488         (altivec_vsl<VI_char>): Rename to ...
19489         (ashl<mode>3): ... new name.
19490         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
19491         gen_ashlv4si3.
19492         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
19493
19494 2008-03-08  Richard Guenther  <rguenther@suse.de>
19495
19496         * coverage.h (tree_coverage_counter_addr): Declare.
19497         * coverage.c (tree_coverage_counter_addr): New function.
19498         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
19499         before using again.
19500         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
19501         (tree_gen_one_value_profiler): Likewise.
19502         (tree_gen_ic_profiler): Likewise.
19503         (tree_gen_average_profiler): Likewise.
19504         (tree_gen_ior_profiler): Likewise.
19505
19506 2008-03-08  Richard Guenther  <rguenther@suse.de>
19507
19508         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
19509         (vn_binary_op_insert): Likewise.
19510         (vn_unary_op_lookup): Likewise.
19511         (vn_unary_op_insert): Likewise.
19512         (vn_nary_op_lookup): Declare.
19513         (vn_nary_op_insert): Likewise.
19514         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
19515         and binary hashes, use a single obstack for unary_op_pool
19516         and binary_op_pool.
19517         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
19518         a single struct vn_nary_op_s.  Store tree code length and
19519         a variable number of operands.
19520         (struct vn_reference_op_struct): Remove unused op2.
19521         (vn_reference_op_eq): Do not compare op2.
19522         (vn_reference_op_compute_hash): Do not compute hash of op2.
19523         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
19524         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
19525         with vn_nary_op_compute_hash.
19526         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
19527         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
19528         vn_nary_op_lookup.
19529         (vn_unary_op_insert, vn_binary_op_insert): Replace with
19530         vn_nary_op_insert.
19531         (visit_unary_op): Call nary functions.
19532         (visit_binary_op): Likewise.
19533         (process_scc): Adjust for struct vn_tables_s changes.
19534         (allocate_vn_table): Likewise.
19535         (free_vn_table): Likewise.
19536         * tree-vn.c (vn_add): Call nary functions.
19537         (vn_lookup): Likewise.
19538
19539 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
19540
19541         PR target/35498
19542         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
19543         wdst back after sync_compare_and_swapqhi_internal.
19544
19545 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
19546
19547         PR target/22152
19548         * config/i386/i386-modes.def (V1DI): New vector mode.
19549         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
19550         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
19551         (MMXMODE248): Ditto.
19552         (MMXMODE): Add V1DI mode.
19553         (mmxvecsize): Change DI mode to V1DI mode.
19554         ("mov<mode>): Use MMXMODEI8 mode iterator.
19555         ("*mov<mode>_internal_rex64"): Ditto.
19556         ("*mov<mode>_internal"): Ditto.
19557         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
19558         ("mmx_sub<mode>3"): Ditto.
19559         ("mmx_adddi3"): Remove insn pattern.
19560         ("mmx_subdi3"): Ditto.
19561         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
19562         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
19563         ("mmx_ashl<mode>3"): Ditto.
19564         ("mmx_lshrdi3"): Remove insn pattern.
19565         ("mmx_ashldi3"): Ditto.
19566         * config/i386/i386.c (classify_argument): Handle V1DImode.
19567         (function_arg_advance_32): Ditto.
19568         (function_arg_32): Ditto.
19569         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
19570         mmx_addv1di3 insn pattern.
19571         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
19572         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
19573         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
19574         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
19575         Remove definitions of built-in functions.
19576         (V1DI_type_node): New node.
19577         (v1di_ftype_v1di_int): Ditto.
19578         (v1di_ftype_v1di_v1di): Ditto.
19579         (v2si_ftype_v2si_si): Ditto.
19580         (v4hi_ftype_v4hi_di): Remove node.
19581         (v2si_ftype_v2si_di): Ditto.
19582         (ix86_init_mmx_sse_builtins): Handle V1DImode.
19583         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
19584         Redefine builtins using def_builtin_const with *_ftype_*_int node.
19585         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
19586         Add new builtins using def_builtin_const.
19587         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
19588         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
19589         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
19590         * config/i386/mmintrin.h (__v1di): New typedef.
19591         (_mm_add_si64): Cast arguments to __v1di type.
19592         (_mm_sub_si64): Ditto.
19593         (_mm_sll_pi16): Cast __count to __v4hi type.
19594         (_mm_sll_pi32): Cast __count to __v2si type.
19595         (_mm_sll_si64): Cast arguments to __v1di type.
19596         (_mm_srl_pi16): Cast __count to __v4hi type.
19597         (_mm_srl_pi32): Cast __count to __v2si type.
19598         (_mm_srl_si64): Cast arguments to __v1di type.
19599         (_mm_sra_pi16): Cast __count to __v4hi type.
19600         (_mm_sra_pi32): Cast __count to __v2si type.
19601         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
19602         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
19603         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
19604         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
19605         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
19606         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
19607         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
19608         (_mm_srai_pi32): Use __builtin_ia32_psradi.
19609         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
19610         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
19611         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
19612         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
19613
19614 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
19615
19616         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
19617
19618 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
19619
19620         PR target/35373
19621         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
19622         reg+const addressing for Altivec modes.  Don't generate reg+reg
19623         addressing for TFmode or TDmode quantities.
19624
19625 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
19626
19627         * c-common.c (vector_types_convertible_p): Call langhook
19628         instead of comptypes.
19629
19630 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19631
19632         PR tree-opt/35402
19633         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
19634         integral and scalar float variables which have a
19635         NULL DECL_INITIAL.
19636
19637 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
19638
19639         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
19640         dwarf_register_span hook when emitting unwind information for
19641         register-to-memory saves.
19642         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
19643         (rs6000_frame_related): Remove call to spe_synthesize_frame.
19644
19645 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
19646
19647         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
19648         for the same VAR_DECL.
19649
19650 2008-03-06  Tom Tromey  <tromey@redhat.com>
19651
19652         * treelang: Delete.
19653         * doc/standards.texi (Standards): Don't mention treelang.
19654         * doc/invoke.texi (Overall Options): Don't mention treelang.
19655         * doc/install.texi (Prerequisites): Don't mention bison or
19656         treelang.
19657         (Configuration): Don't mention treelang.
19658         (Building): Likewise.
19659         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
19660
19661 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
19662
19663         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
19664         word-extractions out of a multi-word object.
19665
19666 2008-03-06  Richard Guenther  <rguenther@suse.de>
19667
19668         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
19669         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
19670         result type and precision.
19671         * expr.c (get_inner_reference): Set unsignedp based on the result
19672         type of BIT_FIELD_REF.
19673         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
19674         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
19675         (try_instantiate_multiple_fields): Likewise.  Use the correct type
19676         for BIT_FIELD_REF.
19677         (sra_build_assignment): Likewise.
19678         (sra_build_elt_assignment): Likewise.
19679         (sra_explode_bitfield_assignment): Likewise.
19680         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
19681         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
19682         set BIT_FIELD_REF_UNSIGNED.
19683         (vectorizable_load): Likewise.
19684
19685 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
19686
19687         * cse.c (cse_extended_basic_block): Invalidate artificial defs
19688         at bb start.
19689
19690 2008-03-06  Richard Guenther  <rguenther@suse.de>
19691
19692         * alias.c (struct alias_set_entry): Move has_zero_child field
19693         to pack with alias_set.
19694
19695 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
19696
19697         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
19698         32bit host.
19699
19700 2008-03-05  Ian Lance Taylor  <iant@google.com>
19701
19702         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
19703
19704 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
19705
19706         * fwprop.c (update_df): Support width and offset parameters of
19707         df_ref_create.
19708         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
19709         global_conflicts): Change DF_REF_EXTRACT to either
19710         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
19711         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
19712         * df-scan.c (df_ref_record, df_defs_record,
19713         df_ref_create_structure, df_def_record_1, df_uses_record,
19714         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
19715         df_bb_refs_collect, df_entry_block_defs_collect,
19716         df_exit_block_uses_collect): Support new width and offset fields.
19717         (ref_extract_pool): New storage pool.
19718         (df_free_ref): New function.
19719         (df_reg_chain_unlink, df_free_collection_rec,
19720         df_sort_and_compress_refs): Call df_free_ref.
19721         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
19722         of df_ref_extract.
19723         (df_ref_create_structure): Allocate df_ref_extract if offset and
19724         width fields are used.
19725         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
19726         (df_uses_record): Get offset and width from ZERO_EXTRACT
19727         and SIGN_EXTRACT.
19728         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
19729         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
19730         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
19731         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
19732         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
19733         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
19734         (df_ref_extract): New structure.
19735         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
19736         (df_ref_create): Add width and offset parameters.
19737
19738 2008-03-05  Richard Guenther  <rguenther@suse.de>
19739
19740         * tree-ssa-structalias.c (get_constraint_for_component_ref):
19741         Use ranges_overlap_p.
19742         (offset_overlaps_with_access): Rename
19743         to ranges_overlap_p and move ...
19744         * tree-flow-inline.h (ranges_overlap_p): ... here.
19745
19746         * tree.h (get_inner_reference, handled_component_p): Update
19747         comments.
19748
19749         * tree.h (record_component_aliases, get_alias_set,
19750         alias_sets_conflict_p, alias_sets_must_conflict_p,
19751         objects_must_conflict_p): Move declarations ...
19752         * alias.h (record_component_aliases, get_alias_set,
19753         alias_sets_conflict_p, alias_sets_must_conflict_p,
19754         objects_must_conflict_p): ... here.
19755         Include coretypes.h.
19756         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
19757
19758 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
19759
19760         * cfg.c: Include tree-flow.h.
19761         (remove_edge_raw): Call redirect_edge_var_map_clear.
19762         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
19763         * tree-flow-inline.h (redirect_edge_var_map_def): New.
19764         (redirect_edge_var_map_result): New.
19765         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
19766         PENDING_STMT use with redirect_edge_var_map_*.
19767         * tree-ssa.c (edge_var_maps): New definition.
19768         (redirect_edge_var_map_add): New.
19769         (redirect_edge_var_map_clear): New.
19770         (redirect_edge_var_map_dup): New.
19771         (redirect_edge_var_map_vector): New.
19772         (redirect_edge_var_map_destroy): New.
19773         (ssa_redirect_edge): Replace PENDING_STMT use with
19774         redirect_edge_var_map_*.
19775         (flush_pending_stmts): Same.
19776         (delete_tree_ssa): Destroy edge var map.
19777         * tree-flow.h (struct _edge_var_map): New.
19778         Define edge_var_map vector type.
19779         Declare redirect_edge_var_map_* prototypes.
19780         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
19781         * tree-cfg.c (reinstall_phi_args): Replace
19782         PENDING_STMT use with redirect_edge_var_map_*.
19783
19784 2008-03-05  Richard Guenther  <rguenther@suse.de>
19785
19786         PR tree-optimization/35472
19787         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
19788         whose single use_stmt has a overlapping set of loaded and
19789         stored symbols as that use_stmt might be a noop assignment then.
19790
19791 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
19792
19793         * gthr-rtems.h: Implement __gthread_mutex_destroy.
19794
19795 2008-03-05  Richard Guenther  <rguenther@suse.de>
19796
19797         PR c++/35336
19798         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
19799         should be constants.
19800         * tree-cfg.c (verify_expr): Verify it.
19801         * fold-const.c (fold_truthop): Remove code generating
19802         BIT_FIELD_REFs of structure bases.
19803         (fold_binary): Likewise.
19804         (fold_ternary): Position and size of BIT_FIELD_REFs are
19805         always host integers.
19806         (make_bit_field_ref): Remove.
19807         (optimize_bit_field_compare): Remove.
19808         (all_ones_mask_p): Remove.
19809
19810 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
19811
19812         PR gcc/33009
19813         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
19814         (split_block_and_df_analyze): New. Split basic block and rebuild
19815         dataflow.
19816         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
19817         SPLIT_BLOCK.
19818         (split_pattern_seq): Likewise.
19819         (erase_matching_seqs): Likewise.
19820         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
19821
19822 2008-03-04  Geoff Keating  <geoffk@apple.com>
19823
19824         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
19825         declaration and code.
19826         (tree_invalid_nonnegative_warnv_p): Likewise.
19827
19828 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
19829
19830         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
19831         examples.  Truncate option-names then causing overfull hbox.
19832
19833 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19834
19835         PR target/35222
19836         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
19837         on hpux10.
19838         * configure: Rebuilt.
19839
19840 2008-03-04  Rafael Espíndola  <espindola@google.com>
19841
19842         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
19843         (tree_unary_nonnegative_warnv_p): New.
19844         (tree_binary_nonnegative_warnv_p): New.
19845         (tree_single_nonnegative_warnv_p): New.
19846         (tree_invalid_nonnegative_warnv_p): New.
19847         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
19848
19849 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19850
19851         PR 28322
19852         * opts.c (handle_option): Postpone 'unknown option' errors only for
19853         warning options.
19854
19855 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
19856
19857         PR target/35453
19858         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
19859         (_SIDD_XXX): This.
19860
19861 2008-03-04  Rafael Espíndola  <espindola@google.com>
19862
19863         * fold-const.c (tree_unary_nonzero_warnv_p): New.
19864         (tree_binary_nonzero_warnv_p): New.
19865         (tree_single_nonzero_warnv_p): New.
19866         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
19867
19868 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
19869
19870         PR middle-end/35456
19871         * fold-const.c (fold_cond_expr_with_comparison): Prevent
19872         transformations for modes that have signed zeros.
19873         * ifcvt.c (noce_try_abs): Ditto.
19874
19875 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
19876
19877         * config/i386/i386.c (override_options): Force
19878         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
19879
19880 2008-03-04  Jan Hubicka  <jh@suse.cz>
19881
19882         PR c++/35262
19883         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
19884         in last commit.
19885
19886 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
19887
19888         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
19889         label to probe the stack.
19890
19891 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
19892
19893         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
19894         (__gthr_win32_mutex_destroy): Declare.
19895         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
19896         __gthr_win32_mutex_destroy.
19897         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
19898
19899 2008-03-03  Jan Hubicka  <jh@suse.cz>
19900
19901         PR c++/35262
19902         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
19903         aggressive on inlining cold calls.
19904
19905 2008-03-03  Richard Guenther  <rguenther@suse.de>
19906
19907         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
19908         struct copies into the expression table.
19909         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
19910         (try_to_simplify): Likewise.
19911         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
19912         integral and pointer arguments which do not change the
19913         precision to NOP_EXPRs.
19914         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
19915         VIEW_CONVERT_EXPR case.
19916
19917 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
19918
19919         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
19920         defined in a loop at depth 0 is invariant.
19921         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
19922         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
19923         be called at loop depth 0.
19924
19925 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
19926
19927         PR driver/35420
19928         * gcc.c (process_command): Update copyright notice dates.
19929         * gcov.c (print_version): Likewise.
19930         * gcov-dump.c (print_version): Likewise.
19931         * mips-tfile.c (main): Likewise.
19932         * mips-tdump.c (main): Likewise.
19933
19934 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19935
19936         PR 24924
19937         * c-common.c (flag_permissive): Delete.
19938         (constant_expression_warnings): Check flags first.
19939         (constant_expression_error): New.
19940         * c-common.h (flag_permissive): Delete.
19941         (constant_expression_error): Declare.
19942         * flags.h (flag_permissive): Declare. Update description.
19943         * diagnostic.c (pedwarn): Update.
19944         (permerror): New.
19945         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
19946         (permissive_error_kind): New.
19947         * toplev.c (flag_permissive): Define. Update description.
19948         * toplev.h (permissive_error_kind): Declare.
19949         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
19950         (pedwarn_c90): Use pedantic_warning_kind.
19951         * c-opts.c (c_common_post_options): flag_permissive does not affect
19952         flag_pedantic_errors.
19953
19954 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
19955
19956         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
19957         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
19958         __absvsi2, __absvDI2): Use unsigned arithmetic.
19959
19960 2008-03-02  Andi Kleen  <ak@suse.de>
19961             Richard Guenther  <rguenther@suse.de>
19962
19963         * struct-equiv.c: Remove file.
19964         * cfg_cleanup.c (condjump_equiv_p): Remove.
19965         * Makefile.in (OBJS-common): Remove struct-equiv.o.
19966         (struct-equiv.o): Remove rule.
19967         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
19968         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
19969         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
19970
19971 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19972
19973         * ifcvt.c (noce_process_if_block): Try to handle only the then
19974         block if the else block exists but isn't suitable.
19975
19976 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
19977
19978         PR gcc/35063
19979         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
19980         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
19981         regression from previous patch.
19982
19983 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
19984
19985         PR gcc/35063
19986         * gthr.h: Add __gthread_mutex_destroy as a function that must be
19987         implemented.
19988         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
19989         * gthr-single.h (__gthread_mutex_destroy): Likewise.
19990         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
19991         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
19992         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
19993         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
19994         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
19995         (__gthread_mutex_destroy_function): Rename to
19996         __gthread_mutex_destroy.
19997         * gthr-dce.h (__gthread_mutex_destroy): Call
19998         pthread_mutex_destroy.
19999         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
20000         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
20001         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
20002
20003 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20004
20005         * df-scan.c (df_ref_chain_change_bb): Simplify.
20006         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
20007         set_block_for_insn if there's any change.
20008         * df.h ((df_insn_change_bb): Fix prototype.
20009         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
20010         df_insn_change_bb, don't call set_block_for_insn.
20011         * emit-rtl.c (reorder_insns): Likewise.
20012         * haifa-sched.c (move_insn): Likewise.
20013
20014 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20015
20016         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
20017
20018 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20019
20020         * tree-flow-inline.h (next_readonly_imm_use): Return
20021         NULL_USE_OPERAND_P after the end.
20022
20023 2008-03-01  Richard Guenther  <rguenther@suse.de>
20024
20025         PR tree-optimization/35411
20026         * tree-sra.c (sra_build_assignment): Split conversion to
20027         final type to a separate statement if we are not assigning
20028         to a register.
20029
20030 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20031
20032         * fold-const.c (fold_convertible_p): Correct the logic to follow
20033         that in fold_convert().
20034
20035 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
20036
20037         PR c++/35315
20038         * tree-inline.c (build_duplicate_type): When we make a
20039         duplicate type, make it unique in the canonical types system.
20040
20041 2008-02-29  Tom Tromey  <tromey@redhat.com>
20042
20043         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
20044         input_file_stack_history, input_file_stack_restored): Remove.
20045         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
20046         * input.h (struct file_stack): Remove.
20047         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
20048         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
20049         Likewise.
20050         * diagnostic.h (struct diagnostic_context) <last_module>: Change
20051         type.
20052         (diagnostic_last_module_changed): Add 'map' argument.
20053         (diagnostic_set_last_function): Likewise.
20054         * diagnostic.c (undiagnostic_report_current_module): Iterate using
20055         line map, not input_file_stack.
20056         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
20057
20058 2008-02-29  Paul Brook  <paul@codesourcery.com>
20059
20060         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
20061
20062 2008-02-29  Paul Brook  <paul@codesourcery.com>
20063
20064         * config/arm/ieee754-df.S (muldf3): Use RET macros.
20065
20066 2008-02-29  Richard Guenther  <rguenther@suse.de>
20067
20068         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
20069         vn_lookup_or_add.
20070         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
20071         value for comparing for a store match.
20072         (simplify_unary_expression): Do nothing for SSA_NAMEs.
20073         (try_to_simplify): Do not do a full-blown reference lookup.
20074
20075 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
20076
20077         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
20078         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
20079
20080         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
20081
20082 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
20083
20084         * tree-loop-linear.c (try_interchange_loops): Compare memory access
20085         strides against cache sizes.
20086
20087 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
20088
20089         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
20090         constant to fpul.
20091
20092 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
20093
20094         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
20095         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
20096         is smaller than the original promoted value.
20097         (simplify_subreg): If OP is a SUBREG, try to preserve its
20098         SUBREG_PROMOTED_VAR_P information.
20099
20100 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
20101
20102         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
20103         (VN_INFO_GET): Allocate new objects on the obstack.
20104         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
20105         for rpo_numbers_temp, for consistency.
20106         (free_scc_vn): Free the obstack.
20107
20108 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
20109
20110         * doc/invoke.texi: Document -ftree-loop-distribution.
20111         * tree-loop-distribution.c: New.
20112         * tree-pass.h (pass_loop_distribution): New.
20113         * graphds.h (struct graph): Add htab_t indices.
20114         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
20115         * tree-vectorizer.c (rename_variables_in_loop): Extern.
20116         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
20117         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
20118         * tree-data-ref.c (debug_data_dependence_relations): New.
20119         (dump_data_dependence_relation): Also print data references.
20120         (free_data_ref): Extern.
20121         (same_access_functions): Moved...
20122         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
20123         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
20124         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
20125         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
20126         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
20127         (stmts_from_loop): Skip LABEL_EXPR.
20128         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
20129         New.
20130         (build_rdg): Initialize rdg->indices htab.
20131         (free_rdg, stores_from_loop, ref_base_address,
20132         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
20133         have_similar_memory_accesses_1, ref_base_address_1,
20134         remove_similar_memory_refs): New.
20135         * tree-data-ref.h: Depend on tree-chrec.h.
20136         (debug_data_dependence_relations, free_data_ref): Declared.
20137         (same_access_functions): ... here.
20138         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
20139         New.
20140         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
20141         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
20142         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
20143         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
20144         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
20145         rdg_vertex_for_stmt): Declared.
20146         (struct rdg_edge): Add level.
20147         (RDGE_LEVEL): New.
20148         (free_rdg, stores_from_loop, remove_similar_memory_refs,
20149         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
20150         Declared.
20151         (rdg_has_similar_memory_accesses): New.
20152         * tree-vect-analyze.c: Remove unused static decls.
20153         * lambda.h (dependence_level): New.
20154         * common.opt (ftree-loop-distribution): New.
20155         * tree-flow.h (mark_virtual_ops_in_bb,
20156         slpeel_tree_duplicate_loop_to_edge_cfg,
20157         rename_variables_in_loop): Declared.
20158         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
20159         (OBJS-common): Add tree-loop-distribution.o.
20160         (tree-loop-distribution.o): New rule.
20161         * tree-cfg.c (mark_virtual_ops_in_bb): New.
20162         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
20163         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
20164
20165 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
20166
20167         PR target/33963
20168         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
20169         other than structures and unions.
20170
20171 2008-02-28  Richard Guenther  <rguenther@suse.de>
20172
20173         Revert:
20174         2008-02-26  Richard Guenther  <rguenther@suse.de>
20175
20176         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
20177         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
20178         (lookup_decl_from_uid): Declare.
20179         (remove_decl_from_map): Likewise.
20180         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
20181         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
20182         (decl_for_uid_map): New global hashtable mapping DECL_UID
20183         to the decl tree.
20184         (init_ttree): Allocate it.
20185         (insert_decl_to_uid_decl_map): New helper function.
20186         (make_node_stat): Insert new decls into the map.
20187         (copy_node_stat): Likewise.
20188         (lookup_decl_from_uid): New function.
20189         (remove_decl_from_map): Likewise.
20190         (print_decl_for_uid_map_statistics): New helper.
20191         (dump_tree_statistics): Call it.
20192
20193         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
20194         (referenced_var_iterator): Adjust.
20195         (FOR_EACH_REFERENCED_VAR): Adjust.
20196         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
20197         (num_referenced_vars): Adjust.
20198         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
20199         (first_referenced_var): Remove.
20200         (end_referenced_vars_p): Likewise.
20201         (next_referenced_var): Likewise.
20202         (referenced_var_iterator_set): New helper function.
20203         * tree-dfa.c (referenced_var_lookup): Adjust.
20204         (referenced_var_check_and_insert): Likewise.
20205         (remove_referenced_var): Likewise.
20206         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
20207         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20208         (verify_call_clobbering): Likewise.
20209         (verify_memory_partitions): Likewise.
20210         (init_tree_ssa): Allocate bitmap instead of hashtable for
20211         referenced_vars.
20212         (delete_tree_ssa): Adjust.
20213         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
20214         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20215         (compute_tag_properties): Likewise.
20216         (set_initial_properties): Likewise.
20217         (find_partition_for): Likewise.
20218         (update_reference_counts): Likewise.
20219         (dump_may_aliases_for): Likewise.
20220         * tree-ssa-operands.c (add_virtual_operand): Likewise.
20221         (add_call_clobber_ops): Likewise.
20222         (add_call_read_ops): Likewise.
20223         (get_asm_expr_operands): Likewise.
20224         * tree-into-ssa.c (dump_decl_set): Likewise.
20225         (update_ssa): Likewise.
20226         * tree-sra.c (scan_function): Likewise.
20227         (decide_instantiations): Likewise.
20228         (scalarize_parms): Likewise.
20229         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
20230         (dsa_named_for): Likewise.
20231         * tree-ssa-structalias.c (update_alias_info): Likewise.
20232         (merge_smts_into): Likewise.
20233
20234 2008-02-27  David Daney  <ddaney@avtrex.com>
20235
20236         PR target/34409
20237         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
20238         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
20239         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
20240         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
20241         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
20242
20243 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
20244
20245         PR target/25477
20246         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
20247         (BUILT_IN_NEXTTOWARD): Remove.
20248         (BUILT_IN_NEXTTOWARDF): Ditto.
20249         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
20250         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
20251
20252 2008-02-27  Tom Tromey  <tromey@redhat.com>
20253
20254         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
20255         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
20256
20257 2008-02-27  Jan Beulich  <jbeulich@novell.com>
20258
20259         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
20260         update the respective field on newdecl.
20261
20262 2008-02-27  Revital Eres  <eres@il.ibm.com>
20263
20264         PR rtl-optimization/34999
20265         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
20266         crossing edges that ends with a call insn.
20267         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
20268         call insn and clear the EDGE_CROSSING flag of the crossing edge
20269         when fixing fallthru edges.
20270
20271 2008-02-27  Richard Guenther  <rguenther@suse.de>
20272
20273         PR middle-end/35390
20274         * fold-const.c (fold_unary): Return the correct argument,
20275         converted to the result type.
20276
20277 2008-02-27  Richard Guenther  <rguenther@suse.de>
20278
20279         PR middle-end/34971
20280         * expr.c (expand_expr_real_1): Assert on rotates that operate
20281         on partial modes.
20282         * fold-const.c (fold_binary): Use the types precision, not the
20283         bitsize of the mode if folding rotate expressions.  Build rotates
20284         only for full modes.
20285
20286 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
20287
20288         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
20289         and CPP_PRAGMA_EOL.
20290         * c-pragma.c (pragma_ns_name): New typedef.
20291         (registered_pp_pragmas): New variable.
20292         (c_pp_lookup_pragma): New function.
20293         (c_register_pragma_1): If flag_preprocess_only, do nothing
20294         for non-expanded pragmas, for expanded ones push pragma's
20295         namespace and name into registered_pp_pragmas vector.
20296         (c_invoke_pragma_handler): Register OpenMP pragmas even when
20297         flag_preprocess_only, don't register GCC pch_preprocess
20298         pragma if flag_preprocess_only.
20299         * c-opts.c (c_common_init): Call init_pragma even if
20300         flag_preprocess_only.
20301         * c-pragma.c (c_pp_lookup_pragma): New prototype.
20302         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
20303         cpp_register_pragma if flag_preprocess_only.
20304
20305 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20306
20307         PR c/28800
20308         * c-parser.c (c_parser_translation_unit): Warn for empty
20309         translation unit, not empty source file.
20310
20311 2008-02-26  Paul Brook  <paul@codesourcery.com>
20312
20313         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
20314         operand for Thumb-2.
20315         * config/arm/arm.h (reg_class): Add CORE_REGS.
20316         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
20317         (BASE_REG_CLASS): Use CORE_REGS.
20318         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
20319         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
20320         (REGNO_OK_FOR_INDEX_P): Exclude SP.
20321         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
20322         ARM_REGNO_OK_FOR_INDEX_P.
20323         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
20324         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
20325         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
20326         (ldm/stm peepholes): Ditto.
20327         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
20328         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
20329         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
20330         * config/arm/constraints.md: Enable "k" constraint on ARM.
20331
20332 2008-02-27  Ben Elliston  <bje@au.ibm.com>
20333
20334         * config/rs6000/rs6000.c: Annotate cache line size field in all
20335         instances of struct processor_costs.
20336
20337 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
20338
20339         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
20340         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
20341         jump_bypass): New counters.
20342         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
20343         * dce.c (gate_ud_dce): Same.
20344         (gate_fast_dce): Same.
20345         * dse.c (gate_dse1): New function.
20346         (gate_dse2): New function.
20347         (gate_dse): Merge results of new gate functions.
20348         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
20349         (gate_handle_jump_bypass): Add dbg_cnt.
20350         (gate_handle_gcse): Add dbg_cnt.
20351         * ifcvt.c (gate_handle_if_conversion): Same.
20352         (gate_handle_if_after_combine): Same.
20353         (gate_handle_if_after_reload): Same.
20354         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
20355
20356 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
20357
20358         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
20359         line sizes.
20360         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
20361
20362 2008-02-26  Jason Merrill  <jason@redhat.com>
20363
20364         PR c++/35315
20365         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
20366         alone if it's the naming decl for the type's main variant.
20367
20368 2008-02-26  Tom Tromey  <tromey@redhat.com>
20369
20370         * system.h (USE_MAPPED_LOCATION): Poison.
20371         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
20372         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
20373         (make_goto_expr_edges): Likewise.
20374         (remove_bb): Likewise.
20375         (execute_warn_function_return): Likewise.
20376         * basic-block.h (struct edge_def) <goto_locus>: Change type to
20377         location_t.
20378         * c-common.c (fname_decl): Remove old location code.
20379         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
20380         location code.
20381         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
20382         variant.
20383         (ASM_INPUT_SOURCE_LOCATION): Likewise.
20384         (gen_rtx_ASM_INPUT): Likewise.
20385         (gen_rtx_ASM_INPUT_loc): Likewise.
20386         (get_rtx_asm_OPERANDS): Remove.
20387         * cfglayout.c (insn_locators_alloc): Remove old location code.
20388         (set_curr_insn_source_location): Likewise.
20389         (curr_insn_locator): Likewise.
20390         * print-tree.c (print_node): Remove old location code.
20391         * tree-mudflap.c (mf_varname_tree): Remove old location code.
20392         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
20393         * cfgexpand.c (expand_gimple_cond_expr): Don't use
20394         location_from_locus.
20395         (construct_exit_block): Remove old location code.
20396         * emit-rtl.c (force_next_line_note): Remove old location code.
20397         * profile.c (branch_prob): Remove old location code.
20398         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
20399         LOC_LINE): Remove old-location variants.
20400         * langhooks.c (lhd_print_error_function): Remove old location
20401         code.
20402         * configure, config.in: Rebuilt.
20403         * configure.ac (--enable-mapped-location): Remove.
20404         * c-decl.c (c_init_decl_processing): Remove old location code.
20405         (finish_function): Likewise.
20406         * recog.c (decode_asm_operands): Remove old location code.
20407         * c-pch.c (c_common_read_pch): Remove old location code.
20408         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
20409         variants.
20410         * gimple-low.c (lower_function_body): Remove old location code.
20411         * toplev.c (unknown_location): Remove.
20412         (push_srcloc): Remove old-location variant.
20413         (process_options): Remove old location code.
20414         (lang_dependent_init): Likewise.
20415         * input.h (UNKNOWN_LOCATION): Move definition.
20416         (location_t): Undeprecate.
20417         (source_locus): Remove.
20418         (location_from_locus): Remove.
20419         (struct location_s): Remove.
20420         Remove all old-location code.
20421         (input_line, input_filename): Remove.
20422         * final.c (final_scan_insn): Remove old location code.
20423         * diagnostic.c (diagnostic_build_prefix): Remove
20424         USE_MAPPED_LOCATION test.
20425         * tree.h (gimple_stmt) <locus>: Now a location_t.
20426         (tree_exp) <locus>: Likewise.
20427         (DECL_IS_BUILTIN): Remove old-location variant.
20428         (annotate_with_file_line, annotate_with_locus): Likewise.
20429         (expr_locus, set_expr_locus): Update.
20430         * tree.c (build1_stat): Remove old location code.
20431         (last_annotated_node): Remove.
20432         (annotate_with_file_line): Remove old-location variant.
20433         (annotate_with_locus): Likewise.
20434         (expr_location): Remove old location code.
20435         (set_expr_location): Likewise.
20436         (expr_has_location): Likewise.
20437         (expr_locus): Likewise.
20438         (set_expr_locus): Likewise.
20439         (expr_filename): Don't use location_from_locus.
20440         (expr_lineno): Likewise.
20441         * rtl-error.c (location_for_asm): Remove old location code.
20442         * c-lex.c (cb_line_change): Remove old location code.
20443         (fe_file_change): Likewise.
20444         (cb_def_pragma): Likewise.
20445         (c_lex_with_flags): Likewise.
20446         * gengtype.c (do_typedef): Don't special-case location types.
20447         (define_location_structures): Remove.
20448         (main): Don't call define_location_structures.
20449         * tree-pretty-print.c (dump_implicit_edges): Remove old location
20450         code.
20451
20452 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20453
20454         PR 26264
20455         * builtins.def (BUILT_IN_STDARG_START): Remove.
20456         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
20457         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
20458         * tree-inline.c (inline_forbidden_p_1): Likewise.
20459
20460 2008-02-26  Richard Guenther  <rguenther@suse.de>
20461
20462         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
20463         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
20464         (lookup_decl_from_uid): Declare.
20465         (remove_decl_from_map): Likewise.
20466         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
20467         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
20468         (decl_for_uid_map): New global hashtable mapping DECL_UID
20469         to the decl tree.
20470         (init_ttree): Allocate it.
20471         (insert_decl_to_uid_decl_map): New helper function.
20472         (make_node_stat): Insert new decls into the map.
20473         (copy_node_stat): Likewise.
20474         (lookup_decl_from_uid): New function.
20475         (remove_decl_from_map): Likewise.
20476         (print_decl_for_uid_map_statistics): New helper.
20477         (dump_tree_statistics): Call it.
20478
20479         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
20480         (referenced_var_iterator): Adjust.
20481         (FOR_EACH_REFERENCED_VAR): Adjust.
20482         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
20483         (num_referenced_vars): Adjust.
20484         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
20485         (first_referenced_var): Remove.
20486         (end_referenced_vars_p): Likewise.
20487         (next_referenced_var): Likewise.
20488         (referenced_var_iterator_set): New helper function.
20489         * tree-dfa.c (referenced_var_lookup): Adjust.
20490         (referenced_var_check_and_insert): Likewise.
20491         (remove_referenced_var): Likewise.
20492         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
20493         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20494         (verify_call_clobbering): Likewise.
20495         (verify_memory_partitions): Likewise.
20496         (init_tree_ssa): Allocate bitmap instead of hashtable for
20497         referenced_vars.
20498         (delete_tree_ssa): Adjust.
20499         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
20500         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20501         (compute_tag_properties): Likewise.
20502         (set_initial_properties): Likewise.
20503         (find_partition_for): Likewise.
20504         (update_reference_counts): Likewise.
20505         (dump_may_aliases_for): Likewise.
20506         * tree-ssa-operands.c (add_virtual_operand): Likewise.
20507         (add_call_clobber_ops): Likewise.
20508         (add_call_read_ops): Likewise.
20509         (get_asm_expr_operands): Likewise.
20510         * tree-into-ssa.c (dump_decl_set): Likewise.
20511         (update_ssa): Likewise.
20512         * tree-sra.c (scan_function): Likewise.
20513         (decide_instantiations): Likewise.
20514         (scalarize_parms): Likewise.
20515         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
20516         (dsa_named_for): Likewise.
20517         * tree-ssa-structalias.c (update_alias_info): Likewise.
20518         (merge_smts_into): Likewise.
20519
20520 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20521
20522         PR 34351
20523         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
20524         * c-opts.c (c_common_handle_option): Wall enables
20525         Wvolatile-register-var.
20526         * common.opt: Move Wvolatile-register-var to...
20527         * c.opt: ...here.
20528
20529 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20530
20531         * common.opt (Wlarger-than=): New.
20532         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
20533         -Wlarger-than=.
20534         * opts.c (common_handle_option): Handle -Wlarger-than=.
20535         * optc-gen.awk: Likewise.
20536         * opth-gen.awk: Likewise.
20537         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
20538         * tree-optimize.c (tree_rest_of_compilation): Likewise.
20539
20540 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
20541
20542         * c-common.c (match_case_to_enum_1): Add appropriate
20543         OPT_W* parameter to warning.
20544         (c_do_switch_warnings): Likewise.
20545         * c-typeck.c (warning_init): Add one more parameter following
20546         'warning' function.
20547         (push_init_level): Update call to warning_init.
20548         (pop_init_level): Likewise.
20549         (add_pending_init): Likewise.
20550         (output_init_element: Likewise.
20551
20552 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20553
20554         PR 28322
20555         * toplev.c (toplev_main): If there are warnings or error, print
20556         errors for ignored options.
20557         * opts.c (ignored_options): New static variable.
20558         (postpone_unknown_option_error): New.
20559         (print_ignored_options): New.
20560         (handle_option): Postpone errors for unknown -Wno-* options.
20561         * opts.h (print_ignored_options): Declare.
20562
20563 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
20564
20565         * config/mips/mips.md (loadgp_blockage, blockage): Change type
20566         to "ghost".
20567
20568 2008-02-25  Richard Guenther  <rguenther@suse.de>
20569
20570         Revert:
20571         2008-02-25  Richard Guenther  <rguenther@suse.de>
20572
20573         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
20574         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
20575         (lookup_decl_from_uid): Declare.
20576         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
20577         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
20578         (decl_for_uid_map): New global hashtable mapping DECL_UID
20579         to the decl tree.
20580         (init_ttree): Allocate it.
20581         (insert_decl_to_uid_decl_map): New helper function.
20582         (make_node_stat): Insert new decls into the map.
20583         (copy_node_stat): Likewise.
20584         (lookup_decl_from_uid): New function.
20585         (print_decl_for_uid_map_statistics): New helper.
20586         (dump_tree_statistics): Call it.
20587
20588         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
20589         (referenced_var_iterator): Adjust.
20590         (FOR_EACH_REFERENCED_VAR): Adjust.
20591         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
20592         (num_referenced_vars): Adjust.
20593         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
20594         (first_referenced_var): Remove.
20595         (end_referenced_vars_p): Likewise.
20596         (next_referenced_var): Likewise.
20597         (referenced_var_iterator_set): New helper function.
20598         * tree-dfa.c (referenced_var_lookup): Adjust.
20599         (referenced_var_check_and_insert): Likewise.
20600         (remove_referenced_var): Likewise.
20601         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
20602         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20603         (verify_call_clobbering): Likewise.
20604         (verify_memory_partitions): Likewise.
20605         (init_tree_ssa): Allocate bitmap instead of hashtable for
20606         referenced_vars.
20607         (delete_tree_ssa): Adjust.
20608         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
20609         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20610         (compute_tag_properties): Likewise.
20611         (set_initial_properties): Likewise.
20612         (find_partition_for): Likewise.
20613         (update_reference_counts): Likewise.
20614         (dump_may_aliases_for): Likewise.
20615         * tree-ssa-operands.c (add_virtual_operand): Likewise.
20616         (add_call_clobber_ops): Likewise.
20617         (add_call_read_ops): Likewise.
20618         (get_asm_expr_operands): Likewise.
20619         * tree-into-ssa.c (dump_decl_set): Likewise.
20620         (update_ssa): Likewise.
20621         * tree-sra.c (scan_function): Likewise.
20622         (decide_instantiations): Likewise.
20623         (scalarize_parms): Likewise.
20624         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
20625         (dsa_named_for): Likewise.
20626         * tree-ssa-structalias.c (update_alias_info): Likewise.
20627         (merge_smts_into): Likewise.
20628
20629 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
20630
20631         PR fortran/29549
20632         * doc/invoke.texi (-fcx-limited-range): Document new option.
20633         * toplev.c (process_options): Handle -fcx-fortran-rules.
20634         * common.opt: Add documentation for -fcx-fortran-rules.
20635
20636 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
20637
20638         PR c/35162
20639         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
20640         actual behaviour and C99.
20641
20642 2008-02-26  Ben Elliston  <bje@au.ibm.com>
20643
20644         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
20645         (ASM_CPU_POWER6_SPEC): Likewise.
20646         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
20647         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
20648         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
20649
20650 2008-02-25  Richard Guenther  <rguenther@suse.de>
20651
20652         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
20653         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
20654         (lookup_decl_from_uid): Declare.
20655         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
20656         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
20657         (decl_for_uid_map): New global hashtable mapping DECL_UID
20658         to the decl tree.
20659         (init_ttree): Allocate it.
20660         (insert_decl_to_uid_decl_map): New helper function.
20661         (make_node_stat): Insert new decls into the map.
20662         (copy_node_stat): Likewise.
20663         (lookup_decl_from_uid): New function.
20664         (print_decl_for_uid_map_statistics): New helper.
20665         (dump_tree_statistics): Call it.
20666
20667         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
20668         (referenced_var_iterator): Adjust.
20669         (FOR_EACH_REFERENCED_VAR): Adjust.
20670         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
20671         (num_referenced_vars): Adjust.
20672         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
20673         (first_referenced_var): Remove.
20674         (end_referenced_vars_p): Likewise.
20675         (next_referenced_var): Likewise.
20676         (referenced_var_iterator_set): New helper function.
20677         * tree-dfa.c (referenced_var_lookup): Adjust.
20678         (referenced_var_check_and_insert): Likewise.
20679         (remove_referenced_var): Likewise.
20680         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
20681         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20682         (verify_call_clobbering): Likewise.
20683         (verify_memory_partitions): Likewise.
20684         (init_tree_ssa): Allocate bitmap instead of hashtable for
20685         referenced_vars.
20686         (delete_tree_ssa): Adjust.
20687         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
20688         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20689         (compute_tag_properties): Likewise.
20690         (set_initial_properties): Likewise.
20691         (find_partition_for): Likewise.
20692         (update_reference_counts): Likewise.
20693         (dump_may_aliases_for): Likewise.
20694         * tree-ssa-operands.c (add_virtual_operand): Likewise.
20695         (add_call_clobber_ops): Likewise.
20696         (add_call_read_ops): Likewise.
20697         (get_asm_expr_operands): Likewise.
20698         * tree-into-ssa.c (dump_decl_set): Likewise.
20699         (update_ssa): Likewise.
20700         * tree-sra.c (scan_function): Likewise.
20701         (decide_instantiations): Likewise.
20702         (scalarize_parms): Likewise.
20703         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
20704         (dsa_named_for): Likewise.
20705         * tree-ssa-structalias.c (update_alias_info): Likewise.
20706         (merge_smts_into): Likewise.
20707
20708 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
20709
20710         PR target/35258
20711         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
20712         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
20713         * alias.h (nonoverlapping_memrefs_p): Likewise.
20714
20715 2008-02-25  Jan Beulich  <jbeulich@novell.com>
20716
20717         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
20718         * config/i386/netware-libgcc.exp: Add __bswap?i2,
20719         __emultls_get_address, __emultls_register_common,
20720         __floatundi?f, and _Unwind_GetIPInfo.
20721         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
20722         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
20723         (gen_regparm_prefix): Likewise.
20724         (i386_nlm_encode_section_info): Sync with
20725         config/i386/winnt.c:i386_pe_encode_section_info().
20726         (i386_nlm_maybe_mangle_decl_assembler_name): New.
20727         i386_nlm_mangle_decl_assembler_name): New.
20728         (netware_override_options): New.
20729         * config/i386/netware.h (netware_override_options): Declare.
20730         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
20731         (i386_nlm_mangle_decl_assembler_name): Declare.
20732         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
20733
20734 2008-02-25  Ben Elliston  <bje@au.ibm.com>
20735
20736         PR other/32948
20737         * c-decl.c (grokdeclarator): Remove unused local variables
20738         `typedef_type' and `type_as_written'.
20739         * bb-reorder.c
20740         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
20741         unused local variable `has_hot_blocks'.
20742         (fix_crossing_conditional_branches): Remove unused local variable
20743         `prev_bb'.
20744
20745 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
20746
20747         PR middle-end/19984
20748         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
20749         using DEF_C99_BUILTIN.
20750         (BUILT_IN_NANF): Ditto.
20751         (BUILT_IN_NANL): Ditto.
20752
20753 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
20754             Revital Eres  <eres@il.ibm.com>
20755
20756         * modulo-sched.c (calculate_must_precede_follow): Address TODO
20757         regarding the order of two dependent insns in the same row.
20758
20759 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
20760
20761         * stor-layout.c (layout_decl): Do not bump the alignment of a
20762         bit-field to more than byte alignment if it is packed.
20763
20764 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
20765
20766         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
20767         e300c2 and e300c3.
20768
20769 2008-02-24  Diego Novillo  <dnovillo@google.com>
20770
20771         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
20772
20773         PR 33738
20774         * tree-vrp.c (vrp_evaluate_conditional): With
20775         -Wtype-limits, emit a warning when comparing against a
20776         constant outside the natural range of OP0's type.
20777         * c.opt (Wtype-limits): Move ...
20778         * common.opt (Wtype-limits): ... here.
20779
20780 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
20781
20782         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
20783         * config/rs6000/e300c2c3.md: New file.
20784         * config/rs6000/rs6000.c (processor_costs): Add new costs for
20785         e300c2 and e300c3.
20786         (rs6000_override_options): Add e300c2 and e300c3 cases to
20787         processor_target_table. Do not allow usage of Altivec or Spe
20788         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
20789         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
20790         * config/rs6000/rs6000.h (processor_type): Add
20791         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
20792         (ASM_CPU_SPEC): Add e300c2 and e300c3.
20793         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
20794         and ppce300c3. Include e300c2c3.md.
20795
20796 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
20797
20798         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
20799         instead of TARGET_STRICT_ALIGN.
20800
20801 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
20802
20803         * explow.c (memory_address): Assert that the generated address is
20804         valid.
20805
20806 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20807
20808         PR target/25477
20809         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
20810         * config/darwin-ppc-ldouble-patch.def: New file.
20811         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
20812         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
20813         SUBTARGET_INIT_BUILTINS if defined.
20814         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
20815         New functions.
20816
20817 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20818
20819         PR rtl-opt/33512
20820         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
20821         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
20822
20823 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20824
20825         PR pch/35027
20826         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
20827         file" warning condtional on -Winvalid-PCH.
20828
20829 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
20830
20831         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
20832
20833 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
20834
20835         PR target/22076
20836         PR target/34256
20837         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
20838         prevent reload from using MMX registers.
20839         (*mov<mode>_internal): Ditto.
20840         (*movv2sf_internal_rex64): Ditto.
20841         (*movv2sf_internal): Ditto.
20842
20843 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20844
20845         PR documentation/31569
20846         * doc/install.texi2html: Use makeinfo --no-number-sections.
20847
20848 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
20849
20850         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
20851         ensure that we can address an entire entity > 8 bytes.  Don't
20852         generate reg+reg addressing for such data.
20853
20854 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
20855
20856         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
20857         strings when optimizing for size, unless the target cares about
20858         alignment.
20859
20860 2008-02-22  Tom Tromey  <tromey@redhat.com>
20861
20862         * regclass.c (current_pass): Remove declaration.
20863
20864 2008-02-22  Anatoly Sokolov <aesok@post.ru>
20865
20866         * config/avr/libgcc.S (__RAMPZ__): Define.
20867         (__do_copy_data): Add for devices with 128KB code memory.
20868
20869 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
20870
20871         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
20872         Use spe_abi.
20873         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
20874
20875 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
20876
20877         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
20878         GENNONACR_REGS.
20879
20880 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20881
20882         PR c/19999
20883         * c-typeck.c (build_binary_op): Warn about floating point
20884         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
20885
20886 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
20887
20888         PR target/34526
20889         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
20890         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
20891         add vrsave.
20892         (rs6000_override_options): Set altivec_abi as default, not override,
20893         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
20894         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
20895         is used; use new member spe_abi.
20896         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
20897         spe_abi and altivec_abi.
20898
20899 2008-02-22  Tomas Bily  <tbily@suse.cz>
20900
20901         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
20902
20903 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20904
20905         PR bootstrap/35273
20906         * config.build (build_file_translate): Set to `CMD //c' only if
20907         it works.
20908         * Makefile.in (build_file_translate): Improve comment.
20909
20910 2008-02-21  Jan Hubicka  <jh@suse.cz>
20911
20912         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
20913         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
20914         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
20915
20916 2008-02-21  Michael Matz  <matz@suse.de>
20917
20918         PR target/35264
20919         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
20920
20921 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
20922
20923         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
20924         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
20925         as insn constraint.
20926         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
20927         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
20928         SSE_VEC_FLOAT_MODE_P as insn constraint.
20929         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
20930         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
20931         sse4a_movntdf using MODEF mode iterator.
20932         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
20933         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
20934         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
20935         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
20936         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
20937         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
20938         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
20939
20940 2008-02-21  Richard Guenther  <rguenther@suse.de>
20941
20942         * tree.def (PAREN_EXPR): New tree code.
20943         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
20944         and PAREN_EXPR.
20945         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
20946         * expr.c (expand_expr_real_1): Likewise.
20947         * tree-inline.c (estimate_num_insns_1): Likewise.
20948         * tree-complex.c (expand_complex_move): Likewise.
20949         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
20950         as plain x.
20951
20952 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20953
20954         PR target/35225
20955         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
20956
20957 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20958
20959         PR target/35190
20960         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
20961
20962         * config/sh/sh.c (find_barrier): Don't go past
20963         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
20964
20965 2008-02-20  DJ Delorie  <dj@redhat.com>
20966
20967         * config/h8300/h8300.md (insv): Force source operand to be a register.
20968
20969         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
20970         as a jump, not as a plain insn.
20971
20972 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
20973
20974         * doc/invoke.texi (Warning Options): Add new option
20975         -Wframe-larger-than=.
20976         (-Wframe-larger-than): Document.
20977
20978         * flags.h (warn_frame_larger_than, frame_larger_than_size):
20979         Add declarations for new option variables.
20980
20981         * final.c (final_start_function): Check the frame size
20982         before emission and issue a Wframe-larger-than warning.
20983
20984         * opts.c (warn_frame_larger_than, frame_larger_than_size):
20985         Add definitions for new option variables.
20986         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
20987
20988         * common.opt (Wframe-larger-than=): New option.
20989
20990 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
20991
20992         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
20993         (<sse>_div<mode>3): Ditto.
20994         (<sse>_vmdiv<mode>3): Ditto.
20995         (<sse>_vmsqrt<mode>2): Ditto.
20996         (*smax<mode>3): Ditto.
20997         (sse5_frcz<mode>2): Ditto.
20998         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
20999         as insn constraint.
21000
21001 2008-02-20  Richard Guenther  <rguenther@suse.de>
21002
21003         PR middle-end/35265
21004         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
21005         be happy with INTEGRAL_TYPE_P.
21006
21007 2008-02-20  Richard Guenther  <rguenther@suse.de>
21008
21009         * fold-const.c (split_tree): Associate floatig-point expressions
21010         if flag_associative_math is set.
21011
21012 2008-02-20  Richard Guenther  <rguenther@suse.de>
21013
21014         * tree.h (fold_real_zero_addition_p): Declare.
21015         * fold-const.c (fold_real_zero_addition_p): Export.
21016         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
21017         floating-point operations with zero and one.
21018
21019 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
21020
21021         * doc/install.texi: Correct references to CFLAGS, replacing them
21022         with BOOT_CFLAGS.  Document flags used during bootstrap for
21023         target libraries.
21024
21025 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
21026
21027         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
21028         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
21029         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
21030         insn constraint.
21031         (smin<mode>3): Ditto from similar patterns.
21032         (smax<mode>3): Ditto.
21033         (*ieee_smin<mode>3): Ditto.
21034         (*ieee_smax<mode>3): Ditto.
21035         * config/i386/sse.md (sse): New mode attribute.
21036         (mov<mode>): Macroize expander from movv4sf and movv2df using
21037         SSEMODEF2P mode iterator.
21038         (<sse>_movnt<mode>): Ditto from similar patterns. Use
21039         SSE_VEC_FLOAT_MODE_P as insn constraint.
21040         (storent<mode>): Ditto.
21041         (storent<mode>): Macroize expander from storentsf and storentdf using
21042         MODEF mode iterator.
21043         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
21044         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
21045         (abs<mode>2): Ditto from similar patterns.
21046         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
21047         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
21048         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
21049         (<sse>_vmsqrt<mode>2): Ditto.
21050         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
21051         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
21052         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
21053         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
21054         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
21055         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
21056         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
21057         insn constraint.
21058         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
21059         iterator and SSE_FLOAT_MODE_P as insn constraint.
21060         (<sse>_ucomi): Ditto from similar patterns.
21061         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
21062         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
21063         SSE_VEC_FLOAT_MODE_P as insn constraint.
21064         (vcond<mode>): Ditto from similar patterns.
21065         (and<mode>3, *and<mode>3): Ditto.
21066         (<sse>_nand<mode>3): Ditto.
21067         (ior<mode>3, *ior<mode>3): Ditto.
21068         (xor<mode>3, *xor<mode>3): Ditto.
21069         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
21070         iterator and SSE_FLOAT_MODE_P as insn constraint.
21071         (*nand<mode>3): Ditto from similar patterns.
21072         (*ior<mode>3): Ditto.
21073         (*xor<mode>3): Ditto.
21074
21075 2008-02-20  Ira Rosen  <irar@il.ibm.com>
21076
21077         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
21078         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
21079         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
21080
21081 2008-02-19  Jan Hubicka  <jh@suse.cz>
21082
21083         * predict.c (tree_bb_level_predictions): Remove variable next
21084         mistakely introduced by previous commit.
21085
21086 2008-02-19  Jan Hubicka  <jh@suse.cz>
21087
21088         * predict.c (predict_paths_leading_to): Rewrite.
21089         (predict_paths_for_bb): New.
21090         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
21091
21092 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21093
21094         PR bootstrap/35218
21095         * Makefile.in (build_file_translate): New.
21096         (gcc-vers.texi): Use it for translating $(abs_srcdir).
21097         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
21098         * configure.ac (build_file_translate): Substitute it.
21099         * configure: Regenerate.
21100
21101 2008-02-19  Jan Hubicka  <jh@suse.cz>
21102
21103         PR rtl-optimization/34408
21104         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
21105         invalid sharing.
21106
21107 2008-02-19  Jan Hubicka  <jh@suse.cz>
21108
21109         PR middle-end/28779
21110         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
21111         call_expr.
21112
21113 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
21114
21115         PR Ada/35186
21116         * config/i386/i386-modes.def: Revert the last DI alignment
21117         change until Ada people can look into it.
21118
21119 2008-02-19  Nick Clifton  <nickc@redhat.com>
21120
21121         * opts.c (print_specific_help): Fix typo in --help text.
21122
21123 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
21124
21125         PR target/35239
21126         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
21127         32-bit inline asm without asm alternatives for host GCC < 3.0.
21128
21129 2008-02-19  Richard Guenther  <rguenther@suse.de>
21130
21131         PR tree-optimization/34989
21132         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
21133         Allow propagation to INDIRECT_REF if we can simplify only.
21134
21135 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21136
21137         * c-common.c (warn_for_collisions_1): Use appropriate option when
21138         warning.
21139
21140 2008-02-19  Nick Clifton  <nickc@redhat.com>
21141
21142         PR other/31349
21143         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
21144         (handle_options): Fix indentation.
21145         (print_filtered_help): If no language-specific options were
21146         displayed tell the user how to list all the options supported by
21147         the language's front-end.
21148         (print_specific_help): Fix indentation and remove duplicate line.
21149         (common_handle_option): Handle the -v option.
21150         For --help enable the display of undocumented options if the -v
21151         switch has been included on the command line.
21152         For --help= check for overlaps in the arguments between the option
21153         classes and the language names and issue a warning when they
21154         cannot be disambiguated.
21155         * c.opt (v): Pass on to the common option handler.
21156
21157 2008-02-19  Revital Eres  <eres@il.ibm.com>
21158
21159         * modulo-sched.c (sms_schedule): Change dump message when
21160         create_ddg function fails.
21161         (try_scheduling_node_in_cycle): Rename row to cycle.
21162         (print_partial_schedule): Rename CYCLE to ROW.
21163
21164 2008-02-19  Christian Bruel  <christian.bruel@st.com>
21165             Zdenek Dvorak  <ook@ucw.cz>
21166
21167         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
21168
21169 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
21170
21171         PR target/33555
21172         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
21173         (*x86_movdicc_0_m1_se): Ditto.
21174
21175 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
21176
21177         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
21178         (CMPtype): Define as __gcc_CMPtype.
21179         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
21180         (CMPtype): Define as __gcc_CMPtype.
21181
21182 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
21183
21184         Support valgrind 3.3 for --enable-checking=valgrind.
21185         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
21186         here.
21187         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
21188         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
21189         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
21190         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
21191         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
21192         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
21193         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
21194         respectively.
21195         * ggc-zone.c: Similar.
21196         * ggc-page.c: Similar.
21197
21198 2008-02-19  Paul Brook  <paul@codesourcery.com>
21199
21200         PR target/35071
21201         * config/arm/ieee754-df.S: Fix do_it typo.
21202         * config/arm/ieee754-sf.S: Fix do_it typo.
21203
21204 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
21205
21206         PR target/35189
21207         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
21208         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
21209         (OPTION_MASK_ISA_SSE_SET): Likewise.
21210         (OPTION_MASK_ISA_SSE2_SET): Likewise.
21211         (OPTION_MASK_ISA_SSE3_SET): Likewise.
21212         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
21213         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
21214         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
21215         (OPTION_MASK_ISA_SSE4_SET): Likewise.
21216         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
21217         (OPTION_MASK_ISA_SSE5_SET): Likewise.
21218         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
21219         (OPTION_MASK_ISA_MMX_UNSET): Updated.
21220         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
21221         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
21222         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
21223         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
21224         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
21225         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
21226         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
21227         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
21228         (OPTION_MASK_ISA_SSE4): Removed.
21229         (ix86_handle_option): Turn on bits in ix86_isa_flags and
21230         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
21231         (override_options): Don't turn on implied SSE/MMX bits in
21232         ix86_isa_flags.
21233
21234 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
21235
21236         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
21237         32bit host.
21238
21239 2008-02-18  Joey Ye  <joey.ye@intel.com>
21240
21241         PR middle-end/34921
21242         * tree-nested.c (insert_field_into_struct): Set type alignment
21243         to field alignment if the former is less than the latter.
21244
21245 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
21246
21247         * BASE-VER: Set to 4.4.0.
21248
21249 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
21250
21251         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
21252         * doc/cfg.texi: Likewise.
21253         * doc/extend.texi: Likewise.
21254         * doc/gty.texi: Likewise.
21255         * doc/invoke.texi: Likewise.
21256         * doc/loop.texi: Likewise.
21257         * doc/md.texi: Likewise.
21258         * doc/passes.texi: Likewise.
21259         * doc/rtl.texi: Likewise.
21260         * doc/sourcebuild.texi: Likewise.
21261         * doc/tm.texi: Likewise.
21262         * doc/tree-ssa.texi: Likewise.
21263
21264 2008-02-17  Richard Guenther  <rguenther@suse.de>
21265
21266         PR middle-end/35227
21267         * tree-complex.c (init_parameter_lattice_values): Handle parameters
21268         without default definition.
21269
21270 2008-02-17  Richard Guenther  <rguenther@suse.de>
21271
21272         PR tree-optimization/35231
21273         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
21274         if A | B != 1.
21275
21276 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
21277
21278         Revert:
21279         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
21280         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
21281         libgcc_cmp_return mode.
21282
21283 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21284
21285         PR c/28368
21286         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
21287
21288 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
21289
21290         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
21291         multilibs.
21292
21293 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21294
21295         * doc/c-tree.texi: Use `@.' where appropriate.
21296         * doc/extend.texi: Likewise.
21297         * doc/install.texi: Likewise.
21298         * doc/invoke.texi: Likewise.
21299         * doc/loop.texi: Likewise.
21300         * doc/makefile.texi: Likewise.
21301         * doc/md.texi: Likewise.
21302         * doc/passes.texi: Likewise.
21303         * doc/standards.texi: Likewise.
21304         * doc/tm.texi: Likewise.
21305
21306 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
21307
21308         PR middle-end/35196
21309         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
21310         in entry_bb.
21311         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
21312         rather than in entry_bb.
21313
21314 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
21315
21316         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
21317         libgcc_cmp_return mode.
21318
21319 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
21320
21321         PR middle-end/35130
21322         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
21323         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
21324
21325 2008-02-15  Richard Guenther  <rguenther@suse.de>
21326             Zdenek Dvorak  <ook@ucw.cz>
21327
21328         PR tree-optimization/35164
21329         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
21330         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
21331         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
21332         Only propagate addresses which do not have abnormal SSA_NAMEs
21333         in their operands.
21334
21335 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
21336
21337         PR target/35088
21338         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
21339
21340 2008-02-15  Jan Hubicka  <jh@suse.cz>
21341
21342         PR middle-end/35149
21343         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
21344
21345 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
21346
21347         PR middle-end/34621
21348         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
21349         when calculating alignment_pad.
21350
21351 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
21352
21353         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
21354         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
21355         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
21356         and STACK_BOUNDARY define.
21357
21358 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
21359
21360         PR preprocessor/35061
21361         * c-pragma.c (handle_pragma_pop_macro): Check that
21362         pushed_macro_table has been allocated.
21363
21364 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
21365
21366         PR middle-end/35136
21367         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
21368         (force_gimple_operand): Likewise.
21369         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
21370         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
21371         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
21372         (find_interesting_uses_address): Check addressability and alignment
21373         of the base expression only after substituting bases of IVs into it.
21374
21375 2008-02-14  Michael Matz  <matz@suse.de>
21376
21377         PR target/34930
21378         * function.c (instantiate_virtual_regs_in_insn): Reload address
21379         before falling back to reloading the whole operand.
21380
21381 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
21382
21383         * config/s390/s390.c (s390_mainpool_start): Emit the pool
21384         before the first section switch note.
21385
21386 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
21387
21388         * doc/bugreport.texi: Update copyright years.
21389         * doc/c-tree.texi: Likewise.
21390         * doc/cfg.texi: Likewise.
21391         * doc/cpp.texi: Likewise.
21392         * doc/cppinternals.texi: Likewise.
21393         * doc/fragments.texi: Likewise.
21394         * doc/frontends.texi: Likewise.
21395         * doc/gcc.texi: Likewise.
21396         * doc/gty.texi: Likewise.
21397         * doc/hostconfig.texi: Likewise.
21398         * doc/implement-c.texi: Likewise.
21399         * doc/libgcc.texi: Likewise.
21400         * doc/loop.texi: Likewise.
21401         * doc/makefile.texi: Likewise.
21402         * doc/options.texi: Likewise.
21403         * doc/passes.texi: Likewise.
21404         * doc/rtl.texi: Likewise.
21405         * doc/sourcebuild.texi: Likewise.
21406         * doc/standards.texi: Likewise.
21407         * doc/tree-ssa.texi: Likewise.
21408         * doc/trouble.texi: Likewise.
21409
21410         * doc/extend.texi: Use @: or add comma where appropriate.
21411         * doc/invoke.texi: Likewise.
21412         * doc/tm.texi: Likewise.
21413
21414 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
21415
21416         PR target/34393
21417         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
21418         to a reg.
21419
21420 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
21421
21422         * doc/md.texi (clz, ctz): Add reference.
21423         * doc/rtl.texi (clz, ctz): Likewise.
21424
21425 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21426
21427         PR other/35148
21428         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
21429         srcdir.
21430
21431 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
21432
21433         * config/s390/s390.c (struct constant_pool): New field
21434         emit_pool_after added.
21435         (s390_mainpool_start): Set the emit_pool_after flag according
21436         to the section switch notes.
21437         (s390_mainpool_finish): Consider emit_pool_after when emitting
21438         the literal pool at the end of the function.
21439         (s390_chunkify_start): Force literal pool splits at section
21440         switch notes.
21441
21442 2008-02-13  Michael Matz  <matz@suse.de>
21443
21444         PR debug/35065
21445         * var-tracking.c (clobber_variable_part): Correctly traverse the
21446         list.
21447
21448 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21449
21450         PR 29673
21451         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
21452         Add -fdump-ipa-inline.
21453         * tree-dump.c (dump_files): Remove tree-inlined dump.
21454         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
21455
21456 2008-02-12  Richard Guenther  <rguenther@suse.de>
21457
21458         PR tree-optimization/35171
21459         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
21460         default defs.
21461
21462 2008-02-12  Richard Guenther  <rguenther@suse.de>
21463
21464         PR middle-end/35163
21465         * fold-const.c (fold_widened_comparison): Use get_unwidened in
21466         value-preserving mode.  Disallow final truncation.
21467
21468 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
21469
21470         PR middle-end/35136
21471         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
21472         code from here to...
21473         (force_gimple_operand): ...here.
21474
21475 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
21476
21477         PR c++/35144
21478         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
21479         non-compatible pointers.
21480         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
21481         different FIELD_DECLs, try harder by comparing field offsets, sizes
21482         and types.
21483
21484         PR inline-asm/35160
21485         * function.c (match_asm_constraints_1): Don't replace the same input
21486         multiple times.
21487
21488 2008-02-12  Anatoly Sokolov <aesok@post.ru>
21489
21490         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
21491         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
21492         (expand_epilogue): Restore RAMPZ register.
21493         * config/avr/avr.md (RAMPZ_ADDR): New constant.
21494
21495 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
21496
21497         * config/i386/cygwin.asm: (__alloca): Correct calling
21498         convention and alignment.
21499         (__chkstk): Force 8 byte stack alignment.
21500
21501 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
21502             Richard Guenther  <rguenther@suse.de>
21503
21504         PR tree-optimization/33992
21505         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
21506         the zero we compare against.
21507
21508 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
21509
21510         PR libfortran/35063
21511         * gthr-win32.h (__gthread_mutex_destroy_function): New function
21512         to CloseHandle after unlocking to prevent accumulation of handle
21513         count.
21514
21515 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21516
21517         PR middle_end/34150
21518         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
21519         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
21520         and update LABEL_NUSES during and after reload.
21521
21522 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
21523
21524         PR middle-end/34627
21525         * combine.c (simplify_if_then_else): Make sure the comparison is
21526         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
21527
21528 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
21529
21530         PR bootstrap/35051
21531         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
21532         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
21533         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
21534         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
21535         * tree.h (get_type_static_bounds): Likewise.
21536
21537 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21538
21539         * doc/invoke.texi (Option Summary, C++ Dialect Options)
21540         (Objective-C and Objective-C++ Dialect Options, Warning Options):
21541         Make -Wfoo language annotations match what the compiler outputs.
21542
21543 2008-02-08  Sa Liu  <saliu@de.ibm.com>
21544
21545         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
21546         intrinsics spu_convts, spu_convtu, spu_convtf.
21547
21548 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
21549
21550         * doc/extend.texi (Function Attributes) <noinline>: Mention
21551         asm ("") as method to keep calls.
21552
21553 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21554
21555         PR other/32754
21556         * doc/options.texi (Options): Replace references to opts.sh with
21557         optc-gen.awk.
21558         * opts-common.c: Likewise.
21559         * optc-gen.awk: Likewise.
21560
21561 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
21562
21563         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
21564
21565 2008-02-07  Richard Henderson  <rth@redhat.com>
21566
21567         PR rtl-opt/33410
21568         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
21569         EXPR_LIST for the REG_EQUAL instead of a comparison with a
21570         funny mode.
21571
21572 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
21573
21574         PR tree-optimization/35085
21575         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
21576         for operand entry oe2 in addition to operand entry oe3 in order to
21577         expose more opportunities for vectorizer sum reduction.
21578
21579 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21580
21581         PR other/35107
21582         * Makefile.in (LIBS): Remove $(GMPLIBS).
21583         (cc1-dummy, cc1): Add $(GMPLIBS).
21584
21585 2008-02-06  Jan Hubicka  <jh@suse.cz>
21586
21587         PR target/23322
21588         * i386.md (moddf_integer): Do not produce partial memory stalls for
21589         targets where it hurts.
21590
21591 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
21592
21593         PR target/35083
21594         * optabs.c (expand_float): Do not check for decimal modes when
21595         expanding unsigned integer through signed conversion.
21596
21597 2008-02-06  Nick Clifton  <nickc@redhat.com>
21598
21599         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
21600         inside the clobber with a match_operand and duplicated operand
21601         number in the constraint.
21602         (ineqbranchsi): Delete redundant comment.
21603
21604 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
21605
21606         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
21607         builtin_define ("__USE_INIT_FINI__").
21608         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
21609         -msx multilibs.
21610         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
21611
21612 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21613
21614         PR documentation/30330
21615         * doc/invoke.texi (C++ Dialect Options)
21616         (Objective-C and Objective-C++ Dialect Options, Warning Options):
21617         For each warning option -Wfoo that allows -Wno-foo, ensure both
21618         -Wfoo and -Wno-foo are listed in the option index.  Fix index
21619         entry of -Wswitch-default, index -Wnormalized= including the
21620         `=', and -Wlarger-than-@var{len} including @var{len}.
21621
21622 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
21623
21624         * config/i386/i386.md (floatunssisf2): Use
21625         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
21626         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
21627         Macroize expander using MODEF mode iterator.
21628
21629 2008-02-05  Diego Novillo  <dnovillo@google.com>
21630
21631         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
21632
21633         PR 33738
21634         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
21635
21636 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21637
21638         PR other/35070
21639         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
21640
21641 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
21642
21643         PR target/35084
21644         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
21645         to indicate if a message should be generated.
21646         (init_cumulative_args): Updated.
21647         (function_value_32): Likewise.
21648
21649 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
21650
21651         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
21652
21653 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
21654
21655         PR target/35083
21656         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
21657         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
21658
21659 2008-02-04  Diego Novillo  <dnovillo@google.com>
21660
21661         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
21662
21663         PR 33738
21664         * tree-vrp.c (vrp_evaluate_conditional): With
21665         -Wtype-limits, emit a warning when comparing against a
21666         constant outside the natural range of OP0's type.
21667
21668 2008-02-04  Richard Guenther  <rguenther@suse.de>
21669
21670         PR middle-end/33631
21671         * expr.c (count_type_elements): Give for unions instead of
21672         guessing.
21673
21674 2008-02-04  Richard Guenther  <rguenther@suse.de>
21675
21676         PR middle-end/35043
21677         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
21678         to TYPE_DOMAINs base type instead of using bitsizetype here.
21679
21680 2008-02-03  Jason Merrill  <jason@redhat.com>
21681
21682         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
21683
21684 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21685
21686         PR other/29972
21687         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
21688         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
21689         (RS/6000 and PowerPC Options): Fix typos and markup.
21690         * doc/passes.texi (Tree-SSA passes): Likewise.
21691
21692 2008-02-02  Michael Matz  <matz@suse.de>
21693
21694         PR target/35045
21695         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
21696         from record_last_reg_set_info.
21697         (record_last_reg_set_info): Take an RTX argument, iterate over all
21698         constituent hardregs.
21699         (record_last_set_info, record_opr_changes): Change calls to
21700         new signature or to record_last_reg_set_info_regno.
21701
21702 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
21703
21704         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
21705
21706 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
21707
21708         PR rtl-optimization/34773
21709         * reg-notes.def (EQUAL): Mention significance of combination of
21710         REG_EQUAL and REG_RETVAL.
21711         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
21712         insn that has a REG_RETVAL.
21713
21714 2008-02-01  Roger Sayle  <roger@eyesopen.com>
21715
21716         PR bootstrap/33781
21717         * configure.ac (--enable-fixed-point): Disable unless explicitly
21718         requested on IRIX.
21719         * configure: Regenerate.
21720
21721 2008-02-01  Richard Guenther  <rguenther@suse.de>
21722
21723         PR other/35042
21724         * invoke.texi (-finline-limit): Remove no longer true parts
21725         of the documentation.  Note that there is no default value.
21726
21727 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
21728             Mark Mitchell  <mark@codesourcery.com>
21729             Ben Elliston  <bje@au.ibm.com>
21730
21731         PR c/29326
21732         * doc/extend.texi (Other Builtins): Document.
21733
21734 2008-01-31  Tom Browder <tom.browder@gmail.com>
21735
21736         * doc/c-tree.texi (Types): Fix grammar.
21737         (Expression trees): Ditto.
21738         * doc/passes.texi (Tree-SSA passes): Ditto.
21739
21740         * doc/configterms.texi (Configure Terms): Fix typo.
21741         * doc/cpp.texi (Common Predefined Macros): Ditto.
21742         * doc/md.texi (Machine Constraints): Ditto.
21743
21744         * doc/makefile.texi (Makefile): Add comma.
21745
21746 2008-01-31  Tom Browder  <tom.browder@gmail.com>
21747             Gerald Pfeifer  <gerald@pfeifer.com>
21748
21749         * doc/sourcebuild.texi (Front End): Remove references to CVS
21750         and CVSROOT/modules.
21751         (Texinfo Manuals): Replace reference to CVS by one to SVN.
21752         (Back End): Remove reference to CVS.
21753
21754 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
21755
21756         PR target/34900
21757         * config/mips/mips.c (gen_load_const_gp): New function, taking a
21758         comment from...
21759         (mips16_gp_pseudo_reg): ...here.
21760         * config/mips/mips.md (load_const_gp): Replace with...
21761         (load_const_gp_<mode>): ...this :P-based insn.
21762
21763 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21764
21765         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
21766         options. Minor fixes.
21767         (-std): Move reference to standards closer to where language
21768         standards are first mentioned.
21769
21770 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
21771
21772         PR rtl-optimization/34995
21773         * reload.c (alternative_allows_const_pool_ref): Take an rtx
21774         parameter and return a bool.  If the rtx parameter is nonnull,
21775         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
21776         (find_reloads): Update call accordingly.  Pass the new operand
21777         if it needed no address reloads, otherwise pass null.
21778
21779 2008-01-30  Richard Henderson  <rth@redhat.com>
21780
21781         PR c/34993
21782         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
21783         for unbounded arrays.
21784
21785 2008-01-30  Silvius Rus  <rus@google.com>
21786
21787         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
21788
21789 2008-01-30  Jan Hubicka  <jh@suse.cz>
21790
21791         PR target/34982
21792         * i386.c (init_cumulative_args): Use real function declaration when
21793         calling locally.
21794
21795 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
21796
21797         PR rtl-optimization/34998
21798         * global.c (build_insn_chain): Treat non-subreg_lowpart
21799         SUBREGs of pseudos as clobbering all the words covered by the
21800         SUBREG, not just all the bytes.
21801         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
21802         original df_ref rather than an extract parameter.
21803         (global_conflicts): Update call accordingly.
21804
21805 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
21806
21807         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
21808         the overflow check to make it easier to read.
21809         (__fixtfdi): Change the type of the ll member in union
21810         long_double to UDItype_x.
21811
21812 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
21813
21814         PR middle-end/34969
21815         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
21816         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
21817         * tree-inline.c (fold_marked_statements): Call
21818         cgraph_update_edges_for_call_stmt if folding a call statement.
21819         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
21820         debug_generic_stmt calls, reset it back afterwards.
21821
21822         PR c/35017
21823         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
21824         static decls.
21825         * c-typeck.c (build_external_ref): Don't pedwarn about
21826         static vars in current function's scope.
21827
21828 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
21829
21830         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
21831
21832 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
21833
21834         PR c/35002
21835         * ipa-struct-reorg.c: Fix spelling.
21836         * params.def: Ditto.
21837
21838 2008-01-29  Richard Guenther  <rguenther@suse.de>
21839
21840         PR middle-end/35006
21841         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
21842         field.
21843         * tree-inline.c (remap_type): Increment remapping_type_depth
21844         around remapping types.
21845         (copy_body_r): Only add referenced variables if they are referenced
21846         from code, not types.
21847
21848 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
21849
21850         PR c++/34055
21851         PR c++/34103
21852         PR c++/34219
21853         PR c++/34606
21854         PR c++/34753
21855         PR c++/34754
21856         PR c++/34755
21857         PR c++/34919
21858         PR c++/34961
21859         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
21860         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
21861
21862 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
21863
21864         PR target/34412
21865         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
21866         pointer for tiny stack.
21867
21868 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
21869
21870         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
21871
21872 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
21873
21874         * config/vx-common.h: Fix typo in comment.
21875
21876 2008-01-28  Ian Lance Taylor  <iant@google.com>
21877
21878         PR c++/34862
21879         PR c++/33407
21880         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
21881         coalesce pointers if they have different DECL_NO_TBAA_P values.
21882         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
21883         between variables with different DECL_NO_TBAA_P values.
21884
21885 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
21886
21887         PR 31535
21888         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
21889         are not legitimate small data references on SPE targets.
21890
21891 2008-01-28  David Daney  <ddaney@avtrex.com>
21892
21893         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
21894
21895 2008-01-28  David Daney  <ddaney@avtrex.com>
21896
21897         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
21898
21899 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
21900
21901         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
21902         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
21903         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
21904         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
21905         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
21906         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
21907         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
21908         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
21909
21910 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21911
21912         * basic-block.h (condjump_equiv_p): Fix comment.
21913
21914 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21915
21916         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
21917         print_generic_stmt_indented): Fix comment.
21918
21919 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21920
21921         * configure.ac (__stack_chk_fail): Add detecion for availability
21922         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
21923         * configure: Regenerate.
21924
21925 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
21926
21927         PR middle-end/34688
21928         * final.c (output_addr_const): Handle TRUNCATE.
21929
21930 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
21931
21932         PR target/34711
21933         * tree-ssa-loop-ivopts.c (comp_cost): New type.
21934         (zero_cost, infinite_cost): New constants.
21935         (struct cost_pair): Change type of cost to comp_cost.
21936         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
21937         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
21938         New functions.
21939         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
21940         split_address_cost, ptr_difference_cost, difference_cost,
21941         get_computation_cost_at, get_computation_cost,
21942         determine_use_iv_cost_generic, determine_use_iv_cost_address,
21943         determine_use_iv_cost_condition, determine_use_iv_costs,
21944         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
21945         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
21946         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
21947         Change type of cost to comp_cost.
21948         (determine_iv_cost): Increase cost of non-original ivs, instead
21949         of decreasing the cost of original ones.
21950         (get_address_cost): Indicate the complexity of the addressing mode
21951         in comp_cost.
21952         (try_add_cand_for): Prefer using ivs not specific to some object.
21953         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
21954
21955 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
21956             Janis Johnson  <janis187@us.ibm.com>
21957
21958         PR target/34814
21959         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
21960         (TARGET_INSTANTIATE_DECLS): Likewise.
21961         * target.h (expand_to_rtl_hook): New target hook.
21962         (instantiate_decls): Likewise.
21963         * function.c (instantiate_decl): Make non-static.  Rename to...
21964         (instantiate_decl_rtl): ... this.
21965         (instantiate_expr): Use instantiate_decl_rtl.
21966         (instantiate_decls_1): Likewise.
21967         (instantiate_decls): Likewise.
21968         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
21969         * function.h (instantiate_decl_rtl): Add prototype.
21970         * cfgexpand.c (target.h): New include.
21971         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
21972         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
21973         (TARGET_INSTANTIATE_DECLS): Likewise.
21974         (TARGET_INITIALIZER): New target hooks added.
21975         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
21976         New prototype.
21977         * config/rs6000/rs6000.c (tree-flow.h): New include.
21978         (machine_function): Add sdmode_stack_slot field.
21979         (rs6000_alloc_sdmode_stack_slot): New function.
21980         (rs6000_instantiate_decls): Likewise.
21981         (rs6000_secondary_memory_needed_rtx): Likewise.
21982         (rs6000_check_sdmode): Likewise.
21983         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
21984         (TARGET_INSTANTIATE_DECLS): Likewise.
21985         (rs6000_hard_regno_mode_ok): Allow SDmode.
21986         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
21987         (rs6000_emit_move): Handle SDmode.
21988         (function_arg_advance): Likewise.
21989         (function_arg): Likewise.
21990         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
21991         SDmode var args for 32-bit compiles.
21992         (rs6000_secondary_reload_class): Handle SDmode.
21993         (rs6000_output_function_epilogue): Likewise.
21994         (rs6000_function_value): Simplify if statement.
21995         (rs6000_libcall_value): Likewise.
21996         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
21997         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
21998         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
21999         (movsd_hardfloat): New define_insn.
22000         (movsd_softfloat): Likewise.
22001         (movsd_store): Likewise.
22002         (movsd_load): Likewise.
22003         (extendsddd2): Likewise.
22004         (extendsdtd2): Likewise.
22005         (truncddsd2): Likewise.
22006         (movdd_hardfloat64): Fixup comment.
22007         (UNSPEC_MOVSD_LOAD): New constant.
22008         (UNSPEC_MOVSD_STORE): Likewise.
22009
22010 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
22011
22012         PR c++/34965
22013         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
22014         TRUTH_XOR_EXPR.
22015         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
22016         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
22017         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
22018         and TRUTH_XOR_EXPR.
22019
22020 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
22021
22022         PR target/34794
22023         * config.gcc: Separate AIX 5.3 from AIX 6.1.
22024         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
22025         __LONGDOUBLE128 too.
22026         * config/rs6000/aix61.h: New file.
22027
22028 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
22029
22030         PR rtl-optimization/34959
22031         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
22032         popcount and parity rtxes the same mode as their operand.
22033         Truncate or extend the result to the return value's mode
22034         if necessary.
22035
22036 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
22037
22038         PR target/34981
22039         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
22040         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
22041         to GOT_VERSION_REGNUM.
22042         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
22043         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
22044         * config/mips/mips.c (mips_emit_call_insn): New function.
22045         (mips_call_tls_get_addr): Call mips_expand_call directly.
22046         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
22047         emit_call_insn.
22048         (mips16_build_call_stub): Likewise.  Return the call insn or null.
22049         (mips_expand_call): Update the call to mips16_build_call_stub
22050         accordingly and a remove redundant condition.  Assert that MIPS16
22051         stubs do not use lazy binding.  Use mips_emit_call_insn and return
22052         the call insn.
22053         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
22054         TARGET_USE_GOT.
22055         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
22056         (mips_avoid_hazard): Remove hazard_set handling.
22057         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
22058         (UNSPEC_RESTORE_GP): ...this.
22059         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
22060         (FAKE_CALL_REGNO): Rename to...
22061         (GOT_VERSION_REGNUM): ...this.
22062         (type): Add "ghost" value.  Add an associated insn reservation.
22063         (hazard_set): Remove.
22064         (exception_receiver): Rename to...
22065         (restore_gp): ...this and update the unspec identifier accordingly.
22066         (exception_receiver, nonlocal_got_receiver): New expanders.
22067         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
22068         FAKE_CALL_REGNO.  Remove hazard_set attribute.
22069         (set_got_version, update_got_version): New patterns.
22070
22071 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
22072
22073         PR target/34970
22074         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
22075
22076 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
22077
22078         PR other/31955
22079         * doc/install.texi2html: Generate gcc-vers.texi.
22080
22081 2008-01-25  DJ Delorie  <dj@redhat.com>
22082
22083         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
22084
22085 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
22086
22087         * config/c4x: Remove directory.
22088         * config.gcc (crx-*, mt-*): Mark obsolete.
22089         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
22090         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
22091         sh-*-rtemscoff*): Remove cases.
22092         * defaults.h (C4X_FLOAT_FORMAT): Remove.
22093         * real.c (encode_c4x_single, decode_c4x_single,
22094         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
22095         c4x_extended_format): Remove.
22096         * real.h (c4x_single_format, c4x_extended_format): Remove.
22097         * doc/extend.texi (interrupt, naked): Remove mention of attributes
22098         on C4x.
22099         (Pragmas): Remove comment about c4x pragmas.
22100         * doc/install.texi (c4x): Remove target-specific instructions.
22101         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
22102         * doc/md.texi (Machine Constraints): Remove C4x documentation.
22103         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
22104         refer to C4x source files as examples.
22105         (C4X_FLOAT_FORMAT): Remove documentation.
22106
22107 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
22108
22109         * config/bfin/bfin.c (override_options): Reorder tests so that
22110         flag_pic gets enabled for -msep-data.
22111
22112 2008-01-25  Richard Guenther  <rguenther@suse.de>
22113
22114         PR middle-end/32244
22115         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
22116         to its bitfield precision if required.
22117
22118 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
22119
22120         PR middle-end/33880
22121         * tree-nested.c (walk_omp_for): New function.
22122         (convert_nonlocal_reference, convert_local_reference): Call
22123         walk_omp_for on OMP_FOR.
22124         (convert_call_expr): Call walk_body on OMP_FOR's
22125         OMP_FOR_PRE_INIT_BODY.
22126
22127 2008-01-25  Richard Guenther  <rguenther@suse.de>
22128
22129         PR tree-optimization/34966
22130         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
22131         default defs and PHI_NODEs we have to insert after the
22132         defining statement.
22133
22134 2008-01-24  Nick Clifton  <nickc@redhat.com>
22135
22136         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
22137         Provide a default definition.
22138         (LIBGCC2_UNITS_PER_WORD): Likewise.
22139
22140         * config/stormy16/stormy16.c: Include df.h for the prototype
22141         for df_regs_ever_live_p.
22142         (xstormy16_expand_builtin_va_start): Convert the stack offset
22143         into a component_ref and then use POINTER_PLUS_EXPR to add it
22144         to the incoming_virtual_args_rtx.
22145         (xstormy16_gimplify_va_arg_expr): Rename to
22146         xstormy16_gimplify_va_arg_expr.
22147         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
22148         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
22149         xstormy16_gimplify_va_arg_expr.
22150         Fix up some formatting issues.
22151
22152         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
22153         Move to predicates.md.
22154         (xs_hi_general_operand): Likewise.
22155         (xs_hi_nonmemory_operand): Likewise.
22156         * config/stormy16/predicates.md:
22157         (xstormy16_carry_plus_operand): New predicate.
22158         (xs_hi_general_operand): New predicate.
22159         (xs_hi_nonmemory_operand): New predicate.
22160         * config/stormy16/stormy16-protos.h:
22161         (xstormy16_carry_plus_operand): Delete prototype.
22162         (xs_hi_general_operand): Likewise.
22163         (xs_hi_nonmemory_operand): Likewise.
22164
22165         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
22166         modifiers as they are no longer needed and they can trigger
22167         reload spill failures.
22168
22169         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
22170         with a match_operand in order to help reload.
22171
22172         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
22173         constraint with 'e' for the 8th alternative as this version of
22174         the mov.w instruction only accepts the lower 8 registers.
22175
22176 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
22177
22178         PR target/34856
22179         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
22180         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
22181         vector elements.
22182
22183 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
22184
22185         PR middle-end/33333
22186         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
22187
22188 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
22189
22190         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
22191         New functions.
22192         (remove_structure): Update allocations list before removing structure.
22193
22194 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
22195
22196         * ipa-struct-reorg.c (is_safe_cond_expr,
22197         create_new_stmts_for_cond_expr): Use integer_zerop function,
22198         that recognize not only zero-pointer, but zero-integer too.
22199
22200 2008-01-25  Ben Elliston  <bje@au.ibm.com>
22201
22202         PR other/22232
22203         * fixproto: Escape "." in sed expression that strips leading "./".
22204
22205 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
22206
22207         PR driver/34904
22208         * gcc.c (SWITCH_OK): Removed.
22209         (SWITCH_LIVE): Changed to bit.
22210         (SWITCH_FALSE): Likewise.
22211         (SWITCH_IGNORE): Likewise.
22212         (switchstr): Change live_cond to unsigned int.
22213         (process_command): Replace SWITCH_OK with 0.
22214         (do_self_spec): Likewise.
22215         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
22216         (give_switch): Likewise.
22217         (used_arg): Likewise.
22218         (do_spec_1): Set the SWITCH_IGNORE bit.
22219         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
22220         bits.  Set the SWITCH_LIVE bit.
22221
22222 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22223
22224         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
22225
22226 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
22227
22228         PR tree-optimization/34472
22229         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
22230         parameter to a "bool *" and set *DATA to false if there is
22231         an unsafe access.  Do not delete the structure here.
22232         (check_cond_exprs): Delete it here instead.
22233         (check_cond_exprs, exclude_cold_structs): Do not increase
22234         I when removing a structure.
22235
22236 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
22237
22238         PR target/34856
22239         * config/i386/i386.c (ix86_expand_vector_init): Consider only
22240         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
22241
22242 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
22243
22244         PR middle-end/34934
22245         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
22246         a fixed vector for stack.
22247
22248 2008-01-24  Ben Elliston  <bje@au.ibm.com>
22249
22250         PR c++/25701
22251         * doc/gcc.texi (Software development): Add a direntry for g++.
22252
22253 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
22254
22255         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
22256         stale and straggling -fforce-addr comments above.
22257
22258         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
22259         define.
22260         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
22261         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
22262
22263 2008-01-23  Michael Matz  <matz@suse.de>
22264
22265         PR debug/34895
22266         * dwarf2out.c (force_type_die): Use modified_type_die instead of
22267         gen_type_die.
22268
22269 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
22270
22271         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
22272         malloc result type.
22273
22274 2008-01-23 Anatoly Sokolov <aesok@post.ru>
22275
22276         * config/avr/avr.c (avr_current_arch): New variable.
22277         (avr_arch_types): Add 'avr31' and 'avr51' entries.
22278         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
22279         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
22280         (avr_override_options): Init 'avr_current_arch'.
22281         (base_arch_s): Move from here...
22282         * config/avr/avr.h (base_arch_s): ... here. Add new members
22283         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
22284         'mega' to 'have_jmp_call'.
22285         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
22286         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
22287         macros.
22288         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
22289         architectures.
22290         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
22291         MULTILIB_MATCHES): Ditto.
22292
22293 2008-01-23  Richard Guenther  <rguenther@suse.de>
22294
22295         PR middle-end/31529
22296         * cgraphunit.c (cgraph_reset_node): Always mark the node
22297         not reachable if it is not queued already.
22298
22299 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
22300
22301         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
22302         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
22303         (cputype_selected): New static variable.
22304         (bfin_handle_option): Set it if -mcpu is used.
22305         (override_option): Select default set of workarounds if no cpu type
22306         selected on the command line.
22307         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
22308
22309         From  Michael Frysinger  <michael.frysinger@analog.com>
22310         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
22311         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
22312
22313         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
22314         for bf547, bf523, bf524, and bf526.
22315         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
22316         bf526.
22317         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
22318         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
22319         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
22320         __ADSPBF547__ and __ADSPBF54x__ for bf547.
22321         * doc/invoke.texi (Blackfin Options): Document that
22322         -mcpu now accept bf547, bf523, bf524, and bf526.
22323
22324 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
22325
22326         PR rtl-optimization/34628
22327         * combine.c (try_combine): Stop and undo after the first combination
22328         if an autoincrement side-effect on the first insn has effectively
22329         been lost.
22330
22331 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
22332
22333         PR target/34529
22334         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
22335         Offset addresses are not valid for Altivec or paired float modes.
22336
22337 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
22338
22339         PR c++/34607
22340         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
22341         if DECL_INITIAL (decl) is error_mark_node.
22342
22343         PR c++/34914
22344         * c-common.c (handle_vector_size_attribute): Only allow
22345         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
22346         the same way as pointer, array etc. types.
22347         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
22348
22349         PR c++/34917
22350         * tree.c (build_type_attribute_qual_variant): Call
22351         build_qualified_type if attributes are equal, but quals are not.
22352
22353 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22354
22355         PR 32102
22356         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
22357         * flags.h (warn_strict_aliasing): Remove.
22358         (warn_strict_overflow): Remove.
22359         * opts.c (warn_strict_aliasing): Remove.
22360         (warn_strict_overflow): Remove.
22361         * c-opts.c (c_common_handle_option): -Wall only sets
22362         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
22363         (c_common_post_options): Give default values to -Wstrict-aliasing
22364         and -Wstrict-overflow if they are uninitialized.
22365         * common.opt (Wstrict-aliasing): Specify Var and Init.
22366         (Wstrict-overflow): Likewise.
22367
22368 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
22369
22370         PR rtl-optimization/26854
22371         PR rtl-optimization/34400
22372         PR rtl-optimization/34884
22373         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
22374         DF_RD->gen.
22375         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
22376         (df_rd_bb_info.expanded_lr_out): Deleted
22377         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
22378         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
22379         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
22380         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
22381         Removed code to allocate, initialize or free expanded_lr_out.
22382         (df_rd_bb_local_compute_process_def): Restructured to make more
22383         understandable.
22384         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
22385         sets if the sets are being trimmed.
22386
22387 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
22388
22389         PR bootstrap/32287
22390         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
22391         (as_vers): Likewise.
22392         * configure: Regenerated.
22393
22394 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22395
22396         PR middle-end/33092
22397         * tree-pass.h (pass_build_alias): New pass.
22398         * tree-ssa-alias.c (gate_build_alias): New.
22399         (pass_build_alias): New.
22400         * passes.c (init_optimization_passes): Add pass_build_alias after
22401         pass_create_structure_vars.
22402
22403 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
22404
22405         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
22406         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
22407         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
22408         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
22409         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
22410         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
22411         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
22412         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
22413         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
22414         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
22415         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
22416         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
22417         * config/s390/s390.md (FP_ALL): New mode iterator.
22418         (_d): New mode attribute.
22419         ("*signbit<mode>2>"): Changed mode of first operand.
22420         ("isinf<mode>2"): Changed mode of first operand.
22421         ("*TDC_insn"): Adaptation for DFP modes.
22422
22423 2008-01-22  Ben Elliston  <bje@au.ibm.com>
22424
22425         * tree.c (check_qualified_type): Improve function description.
22426
22427 2008-01-21  Jason Merrill  <jason@redhat.com>
22428
22429         PR c++/34196
22430         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
22431         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
22432         if it is set.
22433
22434 2008-01-21  DJ Delorie  <dj@redhat.com>
22435
22436         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
22437         return zero.
22438
22439 2008-01-21  Richard Guenther  <rguenther@suse.de>
22440
22441         PR middle-end/34856
22442         * tree-cfg.c (verify_expr): Allow all invariant expressions
22443         instead of just constant class ones as reference argument.
22444         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
22445         like any other constant.
22446         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
22447
22448 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
22449
22450         * regmove.c (fixup_match_1): Update call crossed frequencies.
22451
22452 2008-01-21  Richard Guenther  <rguenther@suse.de>
22453
22454         PR c/34885
22455         * tree-inline.c (setup_one_parameter): Deal with mismatched
22456         types using a VIEW_CONVERT_EXPR.
22457
22458 2008-01-21  Alon Dayan  <alond@il.ibm.com>
22459             Olga Golovanevsky  <olga@il.ibm.com>
22460
22461         PR tree-optimization/34701
22462         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
22463         when the structure size is not a power of 2.
22464
22465 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
22466
22467         * doc/install.texi: Add doc for --enable-checking=df.
22468
22469 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22470
22471         PR rtl-optimization/34808
22472         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
22473
22474 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
22475
22476         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
22477         input.
22478
22479 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
22480
22481         PR rtl-optimization/26854
22482         PR rtl-optimization/34400
22483         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
22484         DF_RD->gen.
22485         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
22486         (df_rd_bb_info.expanded_lr_out): New.
22487         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
22488         * loop_iv.c (iv_analysis_loop_init): Ditto.
22489         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
22490         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
22491         Added code to allocate, initialize or free expanded_lr_out.
22492         (df_rd_bb_local_compute_process_def): Restructured to make
22493         more understandable.
22494         (df_rd_confluence_n): Add code to do nothing with fake edges and
22495         code to no apply invalidate_by_call sets if the sets are being trimmed.
22496         (df_lr_local_finalize): Renamed to df_lr_finalize.
22497         (df_live_local_finalize): Renamed to df_live_finalize.
22498
22499 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
22500
22501         PR target/34831
22502         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
22503         deciding whether to use reciprocal instructions.
22504
22505 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
22506
22507         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
22508         dwarf2out_note_section_used if cold_text_section is NULL.
22509
22510 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
22511
22512         PR gcov-profile/34610
22513         * tree-cfg.c (make_edges): Mark both outgoing edges from
22514         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
22515         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
22516         from OMP_FOR and OMP_CONTINUE outgoing edges.
22517
22518         * tree-profile.c (tree_profiling): Return early if
22519         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
22520         at the end.
22521         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
22522         from cfun to child_cfun.
22523         * function.h (struct function): Add after_tree_profile bit.
22524
22525 2008-01-19 Anatoly Sokolov <aesok@post.ru>
22526
22527         * config/avr/avr.S (_exit): Disable interrupt.
22528
22529 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
22530             Steven Bosscher  <stevenb.gcc@gmail.com>
22531
22532         PR rtl-optimization/26854
22533         PR rtl-optimization/34400
22534         * df-problems.c (df_live_scratch): New scratch bitmap.
22535         (df_live_alloc): Allocate df_live_scratch when doing df_live.
22536         (df_live_reset): Clear the proper bitmaps.
22537         (df_live_bb_local_compute): Only process the artificial defs once
22538         since the order is not important.
22539         (df_live_init): Init the df_live sets only with the variables
22540         found live by df_lr.
22541         (df_live_transfer_function): Use the df_lr sets to prune the
22542         df_live sets as they are being computed.
22543         (df_live_free): Free df_live_scratch.
22544
22545 2008-01-18  Ian Lance Taylor  <iant@google.com>
22546
22547         * common.opt: Add fmerge-debug-strings.
22548         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
22549         flag_merge_debug_strings rather than flag_merge_constants.
22550         * doc/invoke.texi (Option Summary): Mention
22551         -fmerge-debug-strings.
22552         (Debugging Options): Document -fmerge-debug-strings.
22553
22554 2008-01-18  Ian Lance Taylor  <iant@google.com>
22555
22556         PR c++/33407
22557         * tree.h (DECL_IS_OPERATOR_NEW): Define.
22558         (struct tree_function_decl): Add new field operator_new_flag.
22559         * tree-inline.c (expand_call_inline): When inlining a call to
22560         operator new, force the return value to go into a variable, and
22561         set DECL_NO_TBAA_P on that variable.
22562         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
22563
22564 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
22565
22566         PR debug/34484
22567         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
22568         DWARF2_DEBUGGING_INFO.
22569         (dwarf2out_note_section_used): Ditto.  Add prototype.
22570         (have_multiple_function_sections, text_section_used,
22571         cold_text_section_used, *cold_text_sections): Move declarations
22572         before their uses.
22573
22574 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
22575
22576         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
22577         field and add signal_ra.
22578         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
22579         assignments to frame state pc.  Move end of stack check after
22580         MD_FALLBACK_FRAME_STATE_FOR.
22581         (uw_update_context_1): Use frame state signal_regs if set, instead
22582         of checking signal_frame flag.
22583         (uw_update_context): Use frame state signal_ra if set.
22584         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
22585         * config/xtensa/linux-unwind.h: New file.
22586
22587 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
22588
22589         * modulo-sched.c (get_sched_window): Fix comment typo.
22590
22591 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
22592
22593         PR tree-optimization/34648
22594         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
22595
22596 2008-01-17  Anatoly Sokolov <aesok@post.ru>
22597
22598         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
22599         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
22600
22601 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
22602
22603         PR rtl-optimization/34400
22604         * df-core.c (df_worklist_dataflow_overeager,
22605         df_worklist_dataflow_doublequeue): New functions.
22606         (df_worklist_dataflow): Two different worklist solvers.
22607         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
22608         New param.
22609
22610 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
22611
22612         PR testsuite/34821
22613         * doc/invoke.texi: Document the dependence on pthread for fopenmp
22614         and ftree-parallelize-loops.
22615
22616 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
22617
22618         PR rtl-optimization/34826
22619         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
22620
22621 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
22622
22623         * global.c (find_reg): Mark the eh regs as used if necessary.
22624         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
22625         * ra.h (struct allocno): no_eh_reg field added.  Changed
22626         no_stack_reg type to bitfield.
22627
22628 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
22629
22630         * tree.c (substitute_in_expr): Add missing 'break'.
22631
22632 2008-01-17  Richard Guenther  <rguenther@suse.de>
22633
22634         PR tree-optimization/34825
22635         * tree-ssa-math-opts.c (is_division_by): Do not recognize
22636         x / x as division to handle.
22637
22638 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22639
22640         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
22641         "-pthread" is specified.
22642         * pa-hpux11.h (LIB_SPEC): Likewise.
22643
22644 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
22645             Peter Bergner  <bergner@vnet.ibm.com>
22646
22647         PR rtl-optimization/33796
22648         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
22649
22650 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22651
22652         PR libgfortran/34699
22653         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
22654         static links.
22655         * pa-hpux10.h (LINK_SPEC): Likewise.
22656         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
22657
22658 2008-01-16  Richard Guenther  <rguenther@suse.de>
22659
22660         PR middle-end/32628
22661         * fold-const.c (fold_convert_const_int_from_int): Do not
22662         set overflow if that occured only because of a sign extension
22663         change when converting from/to a sizetype with the same
22664         precision and signedness.
22665
22666 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
22667
22668         PR debug/34249
22669         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
22670         location address to the correct place.  Update copyright year.
22671
22672 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
22673
22674         * lambda-code.c (lambda_transform_legal_p): Handle the case of
22675         no dependences in the dependence_relations vector.
22676
22677 2008-01-16  Jan Hubicka  <jh@suse.cz>
22678
22679         PR rtl-optimization/31396
22680         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
22681         * cfg.c (dump_reg_info): Print it.
22682         * regs.h (struct reg_info_t): add freq_calls_crossed.
22683         (REG_FREQ_CALLS_CROSSED): New macro.
22684         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
22685         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
22686         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
22687         regmove_optimize): Update call crossed frequencies.
22688         * local-alloc.c (struct qty): Add freq_calls_crossed.
22689         (alloc_qty): Copute freq_calls_crossed.
22690         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
22691         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
22692         * ra.h (struct allocno): Add freq_calls_crossed.
22693
22694 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
22695
22696         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
22697         libgomp when compiling with ftree-parallelize-loops.
22698         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
22699
22700 2008-01-16  Richard Guenther  <rguenther@suse.de>
22701
22702         PR tree-optimization/34769
22703         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
22704         * tree.c (int_cst_value): Instead make this function more
22705         permissive in what it accepts as valid input.  Document this
22706         function always sign-extends the value.
22707
22708 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
22709             Richard Guenther  <rguenther@suse.de>
22710
22711         PR c/34668
22712         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
22713         (gimple_fold_indirect_ref_rhs): ... this.
22714         (gimple_fold_indirect_ref): New function with foldings
22715         that preserve lvalueness.
22716         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
22717         * tree-flow.h (gimple_fold_indirect_ref): Declare.
22718         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
22719         to fold an INDIRECT_REF, fall back to the old use of
22720         fold_indirect_ref_1.
22721
22722 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
22723
22724         * tree-data-ref.c (subscript_dependence_tester_1): Call
22725         free_conflict_function.
22726         (compute_self_dependence): Same.
22727
22728 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
22729
22730         PR debug/34249
22731         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
22732         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
22733         function global.
22734         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
22735         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
22736         for DWARF2_UNWIND_INFO targets.
22737
22738 2008-01-16  Richard Guenther  <rguenther@suse.de>
22739
22740         PR c/34768
22741         * c-typeck.c (common_pointer_type): Do not merge inconsistent
22742         type qualifiers for function types.
22743
22744 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
22745
22746         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
22747         loop_iterator li from previous commit.
22748
22749 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
22750
22751         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
22752
22753 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
22754
22755         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
22756         (parallelize_loops): Don't parallelize irreducible components.
22757
22758 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22759
22760         PR c++/24924
22761         * c-opts (c_common_post_options): Do not enable CPP
22762         flag_pedantic_errors by default.
22763
22764 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
22765
22766         PR rtl-optimization/31944
22767         * cse.c (remove_pseudo_from_table): New function.
22768         (merge_equiv_classes): Use above function to remove pseudo-registers.
22769         (invalidate): Likewise.
22770
22771 2008-01-13  Richard Guenther  <rguenther@suse.de>
22772
22773         PR middle-end/34601
22774         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
22775         instead of TYPE_MODE to deal with calls from expand_one_error_var.
22776
22777 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
22778
22779         * gcse.c (cprop_jump): Call validate_unshare_change instead of
22780         validate_change to unshare the source of the PC set.
22781
22782 2008-01-12  Jan Hubicka  <jh@suse.cz>
22783
22784         PR middle-end/32135
22785         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
22786         references above array bounds.  This might trigger bounds checks for
22787         pointers to arrays.
22788
22789 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
22790
22791         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
22792         new_replaceable_dependencies.
22793
22794 2008-01-12  Doug Kwan  <dougkwan@google.com>
22795
22796         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
22797         instead of OPT_Wreturn_type in warning due to ignored return type
22798         qualifiers.
22799         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
22800         options included in -Wextra.
22801         * c.opt: New option -Wignored_qualifiers.
22802         * doc/invoke.texi (Warning Options, -Wextra): Add new option
22803         -Wignore_qualifiers.
22804         (-Wignored-qualifiers): Document.
22805         (-Wreturn-type): Remove description of functionality now handled
22806         by -Wignored-qualifiers.
22807
22808 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
22809
22810         PR ada/33788
22811         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
22812         NOP_EXPR if it is between integral types with the same precision.
22813
22814 2008-01-12  Jan Hubicka  <jh@suse.cz>
22815
22816         PR other/28023
22817         * invoke.texi (max-inline-recursive-depth): Fix default value.
22818
22819 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
22820
22821         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
22822         correct type.
22823
22824 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
22825
22826         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
22827
22828 2008-01-11  James E. Wilson  <wilson@specifix.com>
22829
22830         PR target/26015
22831         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
22832
22833 2008-01-11  Anatoly Sokolov <aesok@post.ru>
22834
22835         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
22836         save/restore frame pointer register and don't use 'call-prologues'
22837         optimization in function with "OS_task" attribute.
22838
22839 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
22840
22841         PR middle-end/31309
22842         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
22843         when copying to memory.
22844
22845 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
22846
22847         PR rtl-optimization/30905
22848         * cfgcleanup.c: Include dce.h
22849         (crossjumps_occured): New global variable.
22850         (try_crossjump_bb): Exit loop after finding a fallthru edge.
22851         If something changed, set crossjumps_occured to true.
22852         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
22853         Don't add/remove fake edges to exit here...
22854         (cleanup_cfg): ...but do it here, when crossjumping.
22855         Run a fast DCE when successful crossjumps occured in the latest
22856         iteration of try_optimize_cfg.
22857
22858 2008-01-11  Richard Guenther  <rguenther@suse.de>
22859
22860         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
22861         (struct vn_unary_op_s): Likewise.
22862         (vn_reference_insert): Free old reference on hash collision.
22863
22864 2008-01-10  Raksit Ashok  <raksit@google.com>
22865
22866         PR rtl-optimization/27971
22867         * combine.c (find_split_point): Split PLUS expressions which are
22868         inside a MEM rtx, and whose first operand is complex.
22869
22870 2008-01-10  DJ Delorie  <dj@redhat.com>
22871
22872         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
22873         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
22874         (m32c_hard_regno_ok): Call the underlying function.
22875
22876 2008-01-10  Richard Guenther  <rguenther@suse.de>
22877
22878         PR middle-end/34683
22879         * tree-cfg.c (tree_merge_blocks): Do not go through the
22880         full-blown folding and stmt updating path if we just deal
22881         with virtual operands.
22882         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
22883         test for abnormal SSA_NAMEs.
22884
22885 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
22886
22887         PR middle-end/34641
22888         * reload.c (push_reload): Add assertions.  All constants from
22889         reg_equiv_constant should have been used for replacing the respective
22890         pseudo earlier.
22891         (find_reloads_address): Invoke find_reloads_address_part for
22892         constant taken from the reg_equiv_constant array.
22893
22894 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
22895
22896         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
22897         field (valnum) the first in the struct.  Replace bools with
22898         unit bit fields.
22899
22900 2008-01-10  Richard Guenther  <rguenther@suse.de>
22901
22902         PR tree-optimization/34651
22903         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
22904         types and ordering for masking and converting.
22905
22906 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
22907
22908         PR tree-optimization/34017
22909         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
22910         also for PHI_NODE expressions.
22911
22912 2008-01-09  Jan Hubicka  <jh@suse.cz>
22913
22914         PR tree-optimization/34708
22915         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
22916         based on number of case labels.
22917         (init_inline_once): Remove switch_cost.
22918         * tree-inline.h (eni_weights_d): Remove switch_cost.
22919
22920 2008-01-09  Richard Guenther  <rguenther@suse.de>
22921         Andrew Pinski  <andrew_pinski@playstation.sony.com>
22922
22923         PR middle-end/30132
22924         * gimplify.c (gimplify_cond_expr): Do not create an addressable
22925         temporary if an rvalue is ok or an lvalue is not required.
22926
22927 2008-01-09  Richard Guenther  <rguenther@suse.de>
22928
22929         PR middle-end/34458
22930         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
22931         adjust return type.
22932
22933 2008-01-09  Richard Guenther  <rguenther@suse.de>
22934
22935         PR middle-end/34679
22936         * tree.c (host_integerp): Check for sizetype only if the
22937         type is an integer type.
22938
22939 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
22940
22941         PR debug/26364
22942         * opts.c (decode_options): Disable inlining of functions called
22943         once if not in unit-at-a-time mode.
22944
22945 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
22946
22947         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
22948
22949 2008-01-08  Richard Guenther  <rguenther@suse.de>
22950
22951         PR middle-end/31863
22952         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
22953         out early if the result will be unused.
22954
22955 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
22956
22957         PR target/34709
22958         Revert:
22959
22960         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22961         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
22962         for TARGET_RECIP.
22963
22964 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
22965
22966         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
22967         for vectorization tuned.
22968
22969 2008-01-08  Richard Guenther  <rguenther@suse.de>
22970
22971         PR tree-optimization/34683
22972         * tree-ssa-operands.c (operand_build_cmp): Export.
22973         * tree-ssa-operands.h (operand_build_cmp): Declare.
22974         * tree-vn.c (vuses_compare): Remove.
22975         (sort_vuses): Use operand_build_cmp.
22976         (sort_vuses_heap): Likewise.
22977         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
22978         to re-use old VEC if available.  Do not sort already sorted VUSEs.
22979         (vdefs_to_vec): Do not sort already sorted VDEFs.
22980
22981 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
22982
22983         PR middle-end/34694
22984         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
22985
22986 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
22987
22988         PR target/34702
22989         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
22990         limitations of reciprocal sequences on x86 targets.
22991
22992 2008-01-08  Richard Guenther  <rguenther@suse.de>
22993
22994         PR tree-optimization/34683
22995         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
22996
22997 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
22998
22999         PR target/34622
23000         * config/darwin.c (darwin_mergeable_string_section): Don't use
23001         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
23002
23003 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
23004
23005         PR target/34682
23006         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
23007         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
23008         predicates of op0 and op1 to register_operand.
23009         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
23010         expander using X87MODEF mode iterator.  Change predicates of
23011         op0 and op1 to register_operand.
23012         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
23013         corresponding patterns and macroize using MODEF macro.  Change
23014         predicates of op0 and op1 to register_operand and remove
23015         "m" constraint. Disparage "r" alternative with "!".
23016         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
23017         macroize using X87MODEF macro.  Change predicates of op0 and op1
23018         to register_operand and remove "m" constraint.  Disparage "r"
23019         alternative with "!".
23020         (absneg splitter with memory operands): Remove.
23021         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
23022         patterns and macroize using X87MODEF mode iterator.
23023         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
23024         Change predicate of op1 to register_operand.
23025         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
23026         for memory operands.
23027
23028 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
23029
23030         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
23031
23032 2008-01-07  Richard Guenther  <rguenther@suse.de>
23033
23034         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
23035         fields.
23036
23037 2008-01-07  Richard Guenther  <rguenther@suse.de>
23038
23039         PR tree-optimization/34683
23040         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
23041         VOPs of the needed size to save memory.  Use VEC_quick_push
23042         to save compile-time.
23043         (vdefs_to_vec): Likewise.
23044
23045 2008-01-07  Sa Liu  <saliu@de.ibm.com>
23046
23047         * config/spu/spu.md (divdf3): Genetate inline code for double
23048         division.  The implementation doesn't handle INF or NAN, therefore it
23049         only applies when -ffinite-math-only is given.
23050
23051 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
23052
23053         PR libstdc++/34680
23054         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
23055         * doc/cpp.texi ([Common Predefined Macros]): Document.
23056
23057 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
23058
23059         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
23060         order to use commutative addition instead of subtraction.
23061
23062 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23063             Mircea Namolaru  <namolaru@il.ibm.com>
23064             Vladimir Yanovsky  <yanov@il.ibm.com>
23065             Revital Eres  <eres@il.ibm.com>
23066
23067         PR tree-optimization/34263
23068         * tree-outof-ssa.c (process_single_block_loop_latch,
23069         contains_tree_r): New functions.
23070         (analyze_edges_for_bb): Call process_single_block_loop_latch
23071         function to empty single-basic-block latch block if possible.
23072
23073 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
23074
23075         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
23076         for TARGET_RECIP.
23077         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
23078
23079 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
23080
23081         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
23082
23083 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
23084
23085         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
23086
23087 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
23088
23089         PR tree-optimization/34618
23090         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
23091         flag from T.
23092
23093 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
23094
23095         PR target/34673
23096         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
23097         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
23098         Update copyright year.
23099
23100         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
23101         Update copyright year.
23102         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
23103         using NR fixup.
23104
23105 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
23106
23107         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
23108         edge does not point to current bb before changing need_assert.
23109
23110 2008-01-04  Richard Guenther  <rguenther@suse.de>
23111
23112         PR middle-end/34029
23113         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
23114         for verifying purposes if they are is_gimple_min_invariant.
23115
23116 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
23117
23118         PR tree-optimization/34448
23119         PR tree-optimization/34465
23120         * gimplify.c (gimplify_init_constructor): Add new parameter
23121         notify_temp_creation.  Use it.
23122         (gimplify_modify_expr_rhs): Take volatiles into account when
23123         optimizing constructors.
23124         Do not optimize constructors if gimplify_init_constructor will dump to
23125         memory.
23126         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
23127         * gcc.c-torture/compile/pr34448.c: New.
23128
23129 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
23130
23131         PR gcov-profile/34609
23132         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
23133         return_slot if result is TREE_ADDRESSABLE.
23134
23135 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
23136
23137         * config/mips/mips.md (sqrt_condition): Tweak comment.
23138         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
23139
23140 2008-01-03  Tom Tromey  <tromey@redhat.com>
23141
23142         PR c/34457
23143         * c-common.c (c_type_hash): Handle VLAs.
23144
23145 2008-01-03  Jan Hubicka  <jh@suse.cz>
23146
23147         PR tree-optimization/31081
23148         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
23149         0 when inlining and not inlining to first basic block.
23150         (remap_decl): When var is initialized to 0, don't set default_def.
23151         (expand_call_inline): Set entry_bb.
23152         * tree-inline.h (copy_body_data): Add entry_bb.
23153
23154 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
23155
23156         PR c++/34619
23157         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
23158         before returning.
23159
23160         PR tree-optimization/29484
23161         * tree-inline.c (inline_forbidden_p_2): New function.
23162         (inline_forbidden_p): Disallow inlining if some static var
23163         has an address of a local LABEL_DECL in its initializer.
23164         * doc/extend.texi (Labels as Values): Document &&foo behaviour
23165         vs. inlining.
23166
23167 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
23168
23169         PR tree-optimization/34635
23170         * tree-data-ref.c (add_other_self_distances): Make sure that the
23171         evolution step is constant.
23172
23173 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
23174
23175         PR middle-end/34608
23176         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
23177
23178 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
23179
23180         * tree-sra.c (scalarize_init): Insert the generate_element_init
23181         statements after the generate_element_zero statements.
23182
23183 2008-01-02  Richard Guenther  <rguenther@suse.de>
23184
23185         PR middle-end/34093
23186         PR middle-end/31976
23187         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
23188         for very large number of operands instead of ICEing.
23189
23190 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
23191
23192         PR target/34013
23193         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
23194         while stack probing.
23195
23196 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
23197
23198         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
23199         in C++0x mode.
23200
23201 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
23202
23203         PR libmudflap/26442
23204         * tree-mudflap.c (mx_register_decls): Guard warning by
23205         !DECL_ARTIFICIAL check.
23206
23207 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
23208
23209         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
23210         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
23211         sse5_perm<mode>): Fix constraints.