* config/mips/mips.c (mips_output_conditional_branch): Assert that
[official-gcc.git] / gcc / ChangeLog
blob8fe6a6967099719f0018d166f0cf87283f5670d4
1 2008-12-15  Adam Nemet  <anemet@caviumnetworks.com>
3         * config/mips/mips.c (mips_output_conditional_branch): Assert that
4         openrands[1] is a CODE_LABEL.
6 2008-12-15  Richard Sandiford  <rdsandiford@googlemail.com>
8         * config/mips/mips.c (mips_expand_builtin_direct): Set TARGET to
9         the result of mips_prepare_builtin_target.
11 2008-12-15  Richard Sandiford  <rdsandiford@googlemail.com>
13         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_abicalls
14         if TARGET_ABICALLS is true.
16 2008-12-15  Richard Sandiford  <rdsandiford@googlemail.com>
18         * config/mips/mips.md (move_doubleword_fpr<mode>): Use
19         TARGET_FLOAT64 && !TARGET_64BIT to detect the mxhc1 case.
21 2008-12-15  Hariharan Sandanagobalane <hariharan@picochip.com>
23         * config/picochip/picochip.c (picochip_override_options): Disable CFI
24         asm and change the signature of brev and byteSwap functions to use
25         unsigned values.
26         * config/picochip/picochip.md (commsTestPort): This is a complex
27         instruction and should not be vliwed. Dont set insn type.
29 2008-12-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
30         * config/s390/s390.c (s390_swap_cmp): New function.
31         (s390_non_addr_reg_read_p): New function.
32         (s390_z10_optimize_cmp): New function.
33         (s390_reorg): Added call to s390_optimize_cmp.
34         * config/s390/s390.md (nop1): New insn.
36 2008-12-12  Rainer Emrich  <r.emrich@de.tecosim.com>
38         PR bootstrap/38383
39         * pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Don't hardcode search path
40         for the milli.a library.
42 2008-12-12  Andrew Pinski  <andrew_pinskia@playstation.sony.com>
43             Peter Bergner <bergner@vnet.ibm.com>
45         PR target/24779
46         * config/rs6000/rs6000.md (call_indirect_aix32): Move the load of the
47         TOC into the call pattern.
48         (call_indirect_aix64): Likewise.
49         (call_value_indirect_aix32): Likewise.
50         (call_value_indirect_aix64): Likewise.
51         (call_indirect_nonlocal_aix32_internal): New insn and split patterns
52         to split off the load of the TOC.
53         (call_indirect_nonlocal_aix32): Enable only after reload.
54         (call_indirect_nonlocal_aix64_internal): New insn and split patterns
55         to split off the load of the TOC.
56         (call_indirect_nonlocal_aix64): Enable only after reload.
57         (call_value_indirect_nonlocal_aix32_internal): New insn and split
58         patterns to split off the load of the TOC.
59         (call_value_indirect_nonlocal_aix32): Enable only after reload.
60         (call_value_indirect_nonlocal_aix64_internal): New insn and split
61         patterns to split off the load of the TOC.
62         (call_value_indirect_nonlocal_aix64): Enable only after reload.
64 2008-12-12  Andreas Schwab  <schwab@suse.de>
66         Revert:
67         2008-12-12  Andreas Schwab  <schwab@suse.de>
68         * cfgrtl.c (rtl_verify_flow_info_1): Don't apply BLOCK_FOR_INSN on
69         a BARRIER insn.
71 2008-12-12  Zdenek Dvorak  <ook@ucw.cz>
73         PR tree-optimization/32044
74         * tree-scalar-evolution.h (expression_expensive_p): Declare.
75         * tree-scalar-evolution.c (expression_expensive_p): New function.
76         (scev_const_prop): Avoid introducing expensive expressions.
77         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Ditto.
79 2008-12-12  Sebastian Pop  <sebastian.pop@amd.com>
81         PR middle-end/38409
82         * graphite.c (nb_reductions_in_loop): Use simple_iv.
84 2008-12-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
86         * config/i386/x86intrin.h: New header file to support all x86
87         intrinsics
88         * config.gcc (extra_headers): For x86 and x86-64, add x86intrin.h
90 2008-12-12  H.J. Lu  <hongjiu.lu@intel.com>
92         PR target/38402
93         * gcc/doc/md.texi: Remove Y and document Yz, Y2, Yi and Ym
94         constraints for x86.
96 2008-12-12  Andreas Schwab  <schwab@suse.de>
98         * cfgrtl.c (rtl_verify_flow_info_1): Don't apply BLOCK_FOR_INSN on
99         a BARRIER insn.
101 2008-12-12  Uros Bizjak  <ubizjak@gmail.com>
103         * config/alpha/sync.md (memory_barrier): Remove mem:BLK from operands.
104         Use Pmode for scratch reg.
105         (*mb_internal): Use (match_dup 0) for unspec operand.
107 2008-12-12  Alexandre Oliva  <aoliva@redhat.com>
109         * tree-vrp.c (extract_range_from_binary_expr): Don't shift by
110         floor_log2 of zero.  Negate widened zero.
112 2008-12-12  Ben Elliston  <bje@au.ibm.com>
114         * config/fp-bit.c (nan): Rename from this ...
115         (makenan): ... to this.
117 2008-12-11  Adam Nemet  <anemet@caviumnetworks.com>
119         * config/mips/mips.md (*branch_bit<bbv><mode>,
120         *branch_bit<bbv><mode>_inverted): Renumber operands so that the
121         label becomes operands[1].
123 2008-12-11  Harsha Jagasia  <harsha.jagasia@amd.com>
125         PR tree-optimization/38446
126         * graphite.c (register_bb_in_sese): New.
127         (bb_in_sese_p): Check if bb belongs to sese region by explicitly
128         looking at the bbs in the region.
129         * graphite.h (sese): Add region_basic_blocks pointer set to
130         structure and initialize at the time of defining new scop.
132 2008-12-11  Tobias Grosser  <grosser@fim.uni-passau.de>
134         * graphite.c (new_graphite_bb): Initialize GBB_STATIC_SCHEDULE.
135         (find_params_in_bb): Do not free data refs.
136         (free_graphite_bb): Add FIXME on disabled free_data_refs.
138 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
140         * graphite.c (struct ivtype_map_elt): New.
141         (debug_ivtype_elt, debug_ivtype_map_1, debug_ivtype_map,
142         new_ivtype_map_elt, ivtype_map_elt_info, eq_ivtype_map_elts,
143         gcc_type_for_cloog_iv): New.
144         (loop_iv_stack_patch_for_consts): Use the type of the induction
145         variable from the original loop, except for the automatically
146         generated loops, i.e., in the case of a strip-mined loop, in
147         which case there is no original loop: in that case just use
148         integer_type_node.
149         (new_graphite_bb): Initialize GBB_CLOOG_IV_TYPES.
150         (free_graphite_bb): Free GBB_CLOOG_IV_TYPES.
151         (clast_name_to_gcc): Accept params to be NULL.
152         (clast_to_gcc_expression): Take an extra parameter for the type.
153         Convert to that type all the expressions built by this function.
154         (gcc_type_for_clast_expr, gcc_type_for_clast_eq): New.
155         (graphite_translate_clast_equation): Compute the type of the
156         clast_equation before translating its LHS and RHS.
157         (clast_get_body_of_loop, gcc_type_for_iv_of_clast_loop): New.
158         (graphite_create_new_loop): Compute the type of the induction
159         variable before translating the lower and upper bounds and before
160         creating the induction variable.
161         (rename_variables_from_edge, rename_phis_end_scop): New.
162         (copy_bb_and_scalar_dependences): Call rename_phis_end_scop.
163         (sese_add_exit_phis_edge): Do not use integer_zero_node.
164         (find_cloog_iv_in_expr, compute_cloog_iv_types_1,
165         compute_cloog_iv_types): New.
166         (gloog): Call compute_cloog_iv_types before starting the
167         translation of the clast.
169         * graphite.h (struct graphite_bb): New field cloog_iv_types.
170         (GBB_CLOOG_IV_TYPES): New.
171         (debug_ivtype_map): Declared.
172         (oldiv_for_loop): New.
174 2008-12-10  Tobias Grosser  <grosser@fim.uni-passau.de>
176         PR middle-end/38459
177         * graphite.c (new_scop): Initialize SCOP_ADD_PARAMS.
178         (param_index): Assert if parameter is not know after parameter
179         detection.
180         (find_params_in_bb): Detect params directly in GBB_CONDITIONS.
181         (find_scop_parameters): Mark, that we have finished parameter
182         detection.
183         (graphite_transform_loops): Move condition detection before parameter
184         detection.
185         * graphite.h (struct scop): Add SCOP_ADD_PARAMS.
187 2008-12-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
189         PR testsuite/35677
190         * emutls.c (__emutls_get_address): Make sure offset is really zero
191         before initializing the object's offset.
193 2008-12-11  Jakub Jelinek  <jakub@redhat.com>
195         PR c++/38253
196         * gimplify.c (gimplify_init_constructor): Don't force constructor
197         into memory if there is just one nonzero element.
199 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
201         Fix testsuite/gfortran.dg/graphite/id-4.f90.
202         * graphite.c (scan_tree_for_params): Do not compute the multiplicand
203         when not needed.
205 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
207         * graphite.c (build_scops_1): Initialize open_scop.exit
208         and sinfo.last.
210 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
211             Jan Sjodin  <jan.sjodin@amd.com>
212             Harsha Jagasia  <harsha.jagasia@amd.com>
214         PR middle-end/37852
215         PR middle-end/37883
216         PR middle-end/37928
217         PR middle-end/37980
218         PR middle-end/38038
219         PR middle-end/38039
220         PR middle-end/38073
221         PR middle-end/38083
222         PR middle-end/38125
224         * tree-phinodes.c (remove_phi_nodes): New, extracted from...
225         * tree-cfg.c (remove_phi_nodes_and_edges_for_unreachable_block):
226         ... here.
227         * tree-flow.h (remove_phi_nodes, canonicalize_loop_ivs): Declared.
228         * Makefile.in (graphite.o): Depend on value-prof.h.
229         (graphite.o-warn): Removed -Wno-error.
230         * tree-parloops.c (canonicalize_loop_ivs): Allow reduction_list
231         to be a NULL pointer.  Call update_stmt.  Return the newly created
232         cannonical induction variable.
234         * graphite.h (debug_rename_map): Declared.  Fix some comments.
236         * graphite.c: Reimplement the code generation from graphite to gimple.
237         Include value-prof.h.
238         (loop_iv_stack_get_iv): Do not return NULL for constant substitutions.
239         (get_old_iv_from_ssa_name): Removed.
240         (graphite_stmt_p): New.
241         (new_graphite_bb): Test for useful statements before building a
242         graphite statement for the basic block.
243         (free_graphite_bb): Do not free GBB_DATA_REFS: this is a bug
244         in free_data_ref that calls BITMAP_FREE (DR_VOPS (dr)) without reason.
245         (recompute_all_dominators, graphite_verify,
246         nb_reductions_in_loop, graphite_loop_normal_form): New.
247         (scop_record_loop): Call graphite_loop_normal_form.
248         (build_scop_loop_nests): Iterate over all the blocks of the
249         function instead of relying on the incomplete information from
250         SCOP_BBS.  Return the success of the operation.
251         (find_params_in_bb): Use the data from GBB_DATA_REFS.
252         (add_bb_domains): Removed.
253         (build_loop_iteration_domains): Don't call add_bb_domains.
254         Add the iteration domain only to the basic blocks that have been
255         translated to graphite.
256         (build_scop_conditions_1): Add constraints only if the basic
257         block have been translated to graphite.
258         (build_scop_data_accesses): Completely disabled until data
259         dependence is correctly implemented.
260         (debug_rename_elt, debug_rename_map_1, debug_rename_map): New.
261         (remove_all_edges_1, remove_all_edges): Removed.
262         (get_new_name_from_old_name): New.
263         (graphite_rename_variables_in_stmt): Renamed.
264         rename_variables_in_stmt.  Call get_new_name_from_old_name.
265         Use replace_exp and update_stmt.
266         (is_old_iv): Renamed is_iv.
267         (expand_scalar_variables_stmt): Extra parameter for renaming map.
268         Use replace_exp and update_stmt.
269         (expand_scalar_variables_expr): Same.  Use the map to get the
270         new names for the renaming of induction variables and for the
271         renaming of variables after a basic block has been copied.
272         (expand_scalar_variables): Same.
273         (graphite_rename_variables): Renamed rename_variables.
274         (move_phi_nodes): Removed.
275         (get_false_edge_from_guard_bb): New.
276         (build_iv_mapping): Do not insert the induction variable of a
277         loop in the renaming iv map if the basic block does not belong
278         to that loop.
279         (register_old_new_names, graphite_copy_stmts_from_block,
280         copy_bb_and_scalar_dependences): New.
281         (translate_clast): Heavily reimplemented: copy basic blocks,
282         do not move them.  Finally, in call cleanup_tree_cfg in gloog.
283         At each translation step call graphite_verify ensuring the
284         consistency of the SSA, loops and dominators information.
285         (collect_virtual_phis, find_vdef_for_var_in_bb,
286         find_vdef_for_var_1, find_vdef_for_var,
287         patch_phis_for_virtual_defs): Removed huge hack.
288         (mark_old_loops, remove_dead_loops, skip_phi_defs,
289         collect_scop_exit_phi_args, patch_scop_exit_phi_args,
290         gbb_can_be_ignored, scop_remove_ignoreable_gbbs): Removed.
291         (remove_sese_region, ifsese, if_region_entry, if_region_exit,
292         if_region_get_condition_block, if_region_set_false_region,
293         create_if_region_on_edge, move_sese_in_condition, bb_in_sese_p,
294         sese_find_uses_to_rename_use, sese_find_uses_to_rename_bb,
295         sese_add_exit_phis_edge, sese_add_exit_phis_var,
296         rewrite_into_sese_closed_ssa): New.
297         (gloog): Remove dead code.  Early return if code cannot be
298         generated.  Call cleanup_tree_cfg once the scop has been code
299         generated.
300         (graphite_trans_scop_block, graphite_trans_loop_block): Do not
301         block loops with less than two loops.
302         (graphite_apply_transformations): Remove the call to
303         scop_remove_ignoreable_gbbs.
304         (limit_scops): When build_scop_loop_nests fails, continue on next
305         scop.  Fix open_scop.entry.
306         (graphite_transform_loops): Call recompute_all_dominators: force the
307         recomputation of correct CDI_DOMINATORS and CDI_POST_DOMINATORS.
308         Call initialize_original_copy_tables and free_original_copy_tables
309         to be able to copy basic blocks during code generation.
310         When build_scop_loop_nests fails, continue on next scop.
311         (value_clast): New union.
312         (clast_to_gcc_expression): Fix type cast warning.
314 2008-12-10  Richard Guenther  <rguenther@suse.de>
316         PR tree-optimization/36792
317         * tree-ssa-pre.c (compute_avail): Handle tcc_comparison like
318         tcc_binary.
320 2008-12-10  Daniel Berlin  <dberlin@dberlin.org>
322         PR tree-optimization/36792
323         * tree-ssa-pre.c (compute_avail): Don't insert defs into maximal set.
325 2008-12-10  Alexandre Oliva  <aoliva@redhat.com>
327         PR target/37033
328         * dwarf2out.c (saved_do_cfi_asm): New.
329         (dwarf2out_do_frame): Take it into account.
330         (dwarf2out_d_cfi_asm): Likewise.  Set it when appropriate.
332 2008-12-10  Alexandre Oliva  <aoliva@redhat.com>
334         PR middle-end/38271
335         * tree-sra.c (sra_build_bf_assignment): Avoid warnings for
336         variables initialized from SRAed bit fields.
338 2008-12-10  Martin Guy <martinwguy@yahoo.it>
340         PR target/37668
341         * arm.c (arm_size_rtx_costs, case NEG): Don't fall through if the
342         result will be in an FPU register.
344 2008-12-10  Eric Botcazou  <ebotcazou@adacore.com>
346         PR target/37170
347         PR target/38448
348         * final.c (output_addr_const) <SYMBOL_REF>: Call assemble_external
349         on the associated SYMBOL_REF_DECL node, if any.
351 2008-12-09 David Daney <ddaney@caviumnetworks.com>
353         * config/mips/sync.md (sync_<optab>_12): Replace
354         MIPS_SYNC_OP_12_NOT_NOP with MIPS_SYNC_OP_12_AND.
355         (sync_old_<optab>_12): Remove third paramater to
356         MIPS_SYNC_OLD_OP_12 macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOP
357         with MIPS_SYNC_OLD_OP_12_AND.
358         (sync_new_<optab>_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOP
359         with MIPS_SYNC_NEW_OP_12_AND.
360         (sync_nand_12): Replace MIPS_SYNC_OP_12_NOT_NOT with
361         MIPS_SYNC_OP_12_XOR, reduce length attribute to 40.
362         (sync_old_nand_12): Remove third paramater to MIPS_SYNC_OLD_OP_12
363         macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOT with
364         MIPS_SYNC_OLD_OP_12_XOR and reduce length attribute to 40.
365         (sync_new_nand_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOT with
366         MIPS_SYNC_NEW_OP_12_XOR.
367         * config/mips/mips.h (MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
368         MIPS_SYNC_OP_12_NOT_NOT,MIPS_SYNC_OLD_OP_12_NOT_NOP,
369         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_NEW_OP_12,
370         MIPS_SYNC_NEW_OP_12_NOT_NOP, MIPS_SYNC_NEW_OP_12_NOT_NOT,
371         MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Rewritten
372         to implement new __sync_nand semantics.
373         (MIPS_SYNC_OLD_OP_12): Implement new __sync_nand semantics, and
374         remove third parameter.
375         (MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
376         MIPS_SYNC_OLD_OP_12_NOT_NOT_REG): Removed.
377         (MIPS_SYNC_OP_12_NOT_NOP): Renamed to MIPS_SYNC_OP_12_AND.
378         (MIPS_SYNC_OP_12_NOT_NOT): Renamed to MIPS_SYNC_OP_12_XOR.
379         (MIPS_SYNC_OLD_OP_12_NOT_NOP): Renamed to MIPS_SYNC_OLD_OP_12_AND.
380         (MIPS_SYNC_OLD_OP_12_NOT_NOT): Renamed to MIPS_SYNC_OLD_OP_12_XOR.
381         (MIPS_SYNC_NEW_OP_12_NOT_NOP): Renamed to MIPS_SYNC_NEW_OP_12_AND.
382         (MIPS_SYNC_NEW_OP_12_NOT_NOT): Renamed to MIPS_SYNC_NEW_OP_12_XOR
384 2008-12-09  Tobias Grosser  <grosser@fim.uni-passau.de>
386         * graphite.c (graphite_transform_loops): Always call find_transform ()
387         in ENABLE_CHECKING.  So we test these code paths, even if we do not
388         generate code.
390 2008-12-09  Tobias Grosser  <grosser@fim.uni-passau.de>
392         * graphite.c (print_graphite_bb): Fix printing to file != dump_file.
394 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
396         PR middle-end/38454
397         * function.h (struct function): Add always_inline_functions_inlined.
398         * ipa-inline.c (cgraph_early_inlining): Set it to true.
399         * tree-optimize.c (execute_fixup_cfg): Likewise.
400         * builtins.c (avoid_folding_inline_builtin): New function.
401         (fold_call_expr): Don't optimize always_inline builtins before
402         inlining.
403         (fold_call_stmt): Likewise.
404         (fold_builtin_call_array): Likewise.  Don't call
405         fold_builtin_varargs for BUILT_IN_MD builtins.
407         PR tree-optimization/37416
408         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR.
410 2008-12-09  Janis Johnson  <janis187@us.ibm.com>
412         * doc/sourcebuild.texi (Test Directives): Fix formatting.
414 2008-12-09  Vladimir Makarov  <vmakarov@redhat.com>
416         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
418         * doc/invoke.texi (-fira-region): Describe new option.
419         (-fira-algorithm): Change the values.
421         * ira-conflicts.c (build_conflict_bit_table,
422         build_allocno_conflicts): Use ira_reg_classes_intersect_p.
423         (ira_build_conflicts): Use flag flag_ira_region instead of
424         flag_ira_algorithm.  Prohibit usage of callee-saved likely spilled
425         base registers for allocnos crossing calls.
427         * flags.h (enum ira_algorithm): Redefine.
428         (enum ira_region): New.
429         (flag_ira_region): New.
431         * cfgloopanal.c (estimate_reg_pressure_cost): Use flag_ira_region
432         instead of flag_ira_algorithm.
434         * toplev.c (flag_ira_algorithm): Change the initial value.
435         (flag_ira_region): New.
437         * ira-int.h (ira_reg_classes_intersect_p,
438         ira_reg_class_super_classes): New.
440         * ira-color.c (update_copy_costs): Use
441         ira_reg_classes_intersect_p.  Use right class to find hard reg index.
442         (update_conflict_hard_regno_costs): Ditto.  Add a new parameter.
443         (assign_hard_reg): Ditto.  Pass additional argument to
444         update_conflict_hard_regno_costs.  Do not uncoalesce for priority
445         coloring.
446         (allocno_priorities, setup_allocno_priorities,
447         allocno_priority_compare_func): Move before color_allocnos.
448         (color_allocnos): Add priority coloring.  Use flag flag_ira_region
449         instead of flag_ira_algorithm.
450         (move_spill_restore): Check classes of the same reg allocno from
451         different regions.
452         (update_curr_costs): Use ira_reg_classes_intersect_p.
453         (ira_reassign_conflict_allocnos): Ditto.
455         * opts.c (decode_options): Always set up flag_ira.  Set up
456         flag_ira_algorithm.  Warn CB can not be used for architecture.
457         (common_handle_option): Modify code for -fira-algorithm.  Add code
458         to process -fira-region.
460         * ira-lives.c (update_allocno_pressure_excess_length): Process
461         superclasses too.
462         (set_allocno_live, clear_allocno_live, mark_reg_live,
463         mark_reg_dead, process_bb_node_lives): Ditto.
465         * ira-emit.c (ira_emit): Fix insn codes.
467         * ira-build.c (propagate_allocno_info): Use flag flag_ira_region
468         instead of flag_ira_algorithm.
469         (allocno_range_compare_func): Ignore classes for priority coloring.
470         (setup_min_max_conflict_allocno_ids): Ditto.
471         (ira_flattening): Use ira_reg_classes_intersect_p.
473         * genpreds.c (write_enum_constraint_num): Output CONSTRAINT__LIMIT.
475         * common.opt (fira-algorithm): Modify.
476         (fira-region): New.
478         * ira.c (setup_class_hard_regs): Initialize.
479         (setup_cover_and_important_classes): Modify code setting class
480         related info for priority coloring.
481         (setup_class_translate): Ditto.
482         (ira_reg_classes_intersect_p, ira_reg_class_super_classes): New.
483         (setup_reg_class_intersect_union): Rename to
484         setup_reg_class_relations.  Add code for setting up new variables.
485         (find_reg_class_closure): Do not check targetm.ira_cover_classes.
486         (ira): Use flag flag_ira_region instead of flag_ira_algorithm.
488         * ira-costs.c (common_classes): New.
489         (print_costs): Use flag flag_ira_region instead of flag_ira_algorithm.
490         (find_allocno_class_costs): Ditto.  Use common_classes.  Translate
491         alt_class.
492         (ira_costs): Allocate/deallocate common_classes.
494         * config/m32c/m32.h (REG_ALLOC_ORDER): Add reg 19.
495         (REG_CLASS_CONTENTS, reg_class, REG_CLASS_NAMES): New entries for
496         R02A_REGS.
498         * reload1.c (choose_reload_regs): Use MODE_INT for partial ints in
499         smallest_mode_for_size.
501 2008-12-10  Ben Elliston  <bje@au.ibm.com>
503         * config/rs6000/linux-unwind.h (get_regs): Constify casts.
505 2008-12-09  Jan Hubicka  <jh@suse.cz>
507         * predict.c (estimate_bb_frequencies): Fix test if profile is present.
509 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
511         PR tree-optimization/35468
512         * tree-ssa-ccp.c (fold_stmt_r): Don't fold reads from constant
513         string on LHS.
515 2008-12-09  Richard Guenther  <rguenther@suse.de>
517         PR tree-optimization/38445
518         * tree-ssa-structalias.c (emit_pointer_definition): Only visit
519         names once.
520         (emit_alias_warning): Adjust.
522 2008-12-09  Andrew Haley  <aph@redhat.com>
524         * fixed-value.c (do_fixed_add): Add comment.
525         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
526         * builtins.c (fold_builtin_sqrt): Likewise.
528 2008-12-09  Kai Tietz  <kai.tietz@onevision.com>
530         PR/38366
531         * function.c (aggregate_value_p): Get fntype from CALL_EXPR in any
532         case.
533         * calls.c (nitialize_argument_information): Add fntype argument
534         and use it for calls.promote_function_args.
535         (expand_call): Pass fntype to aggregate_value_p if no fndecl
536         available and pass additional fntype to
537         initialize_argument_information.
538         * config/i386/i386.c (ix86_reg_parm_stack_space): Remove cfun part
539         to get function abi type.
540         (init_cumulative_args): Use for abi kind detection fntype, when no
541         fndecl is available.
543 2008-12-09  Andreas Krebbel  <krebbel1@de.ibm.com>
545         * config/s390/s390.md (movti, movdi_64, movdi_31,
546         *movsi_zarch, *movhi, *movqi, *mov<mode>_64, *mov<mode>_31,
547         *mov<mode>_64dfp, *mov<mode>_64, *mov<mode>_31, mov<mode>): Remove
548         Q->Q alternative.
549         (Integer->BLKmode splitter): Removed.
551 2008-12-08  Uros Bizjak  <ubizjak@gmail.com>
553         * config/alpha/alpha.c (alpha_set_memflags): Process memory
554         references in full insn sequence.
556 2008-12-09  Jason Merrill  <jason@redhat.com>
558         * gimplify.c (gimplify_init_constructor): Revert to using < rather
559         than <= for sparseness test.
561         PR c++/38410
562         * gimplify.c (gimplify_init_constructor): Don't write out a static
563         copy of the CONSTRUCTOR for TREE_ADDRESSABLE types or small sparse
564         initializers.
566 2008-12-09 Tobias Grosser  <grosser@fim.uni-passau.de>
568         PR middle-end/38084
569         Fix testsuite/gfortran.dg/graphite/id-3.f90.
570         * graphite.c (scopdet_basic_block_info): Fix bug that found some
571         regions more than once.
573 2008-12-09  Ben Elliston  <bje@au.ibm.com>
575         * emutls.c (__emutls_get_address): Prototype.
576         (__emutls_register_common): Likewise.
578         * config/dfp-bit.c (DFP_TO_INT): Remove unnecessary cast.
580 2008-12-09  Ben Elliston  <bje@au.ibm.com>
582         * config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.
584 2008-12-08  Steve Ellcey  <sje@cup.hp.com>
586         * config/ia64/ia64.md (UNSPECV_GOTO_RECEIVER): New constant.
587         (nonlocal_goto_receiver): New instruction.
589 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
591         PR c/35443
592         * c-pretty-print.c (pp_c_expression): Handle BIND_EXPR.
594         PR c/35442
595         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
596         VIEW_CONVERT_EXPR the same as CASE_CONVERT.
598 2008-12-08  Richard Henderson  <rth@redhat.com>
600         PR 38240
601         * tree.h (TYPE_MODE): Invoke vector_type_mode when needed.
602         (SET_TYPE_MODE): New.
603         * c-decl.c (parser_xref_tag): Use it.
604         (finish_enum): Likewise.
605         * tree.c (build_pointer_type_for_mode): Likewise.
606         (build_reference_type_for_mode, build_index_type): Likewise.
607         (build_range_type, make_vector_type): Likewise.
608         (build_common_tree_nodes_2): Likewise.
609         * stor-layout.c (compute_record_mode): Likewise.
610         (finalize_type_size, layout_type, make_fract_type): Likewise.
611         (make_accum_type, initialize_sizetypes): Likewise.
612         (vector_type_mode): New.
613         * function.c (allocate_struct_function): Call
614         invoke_set_current_function_hook before querying anything else.
616         * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Add avx.
618 2008-12-08  Luis Machado  <luisgpm@br.ibm.com>
620         * alias.c (find_base_term): Synch LO_SUM handling with what
621         find_base_value does.
623 2008-12-08  Andrew Haley  <aph@redhat.com>
624             Kamaraju Kusumanchi <raju.mailinglists@gmail.com>
626         * gimple.h (gimple_build_try): Fix declaration.
628         * builtins.c (fold_builtin_sqrt): Don't use a conditional operator.
629         * fixed-value.c (do_fixed_add): Likewise.
630         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
632 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
634         PR middle-end/36802
635         * omp-low.c (use_pointer_for_field): Only call maybe_lookup_decl
636         on parallel and task contexts.
638 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
640         * gimple.c (recalculate_side_effects) <tcc_constant>: New case.
642 2008-12-07  Richard Guenther  <rguenther@suse.de>
644         PR tree-optimization/38405
645         * tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
646         not sign-extend truth values.
648 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
650         * tree-sra.c (scalarize_use): Create another temporary with the proper
651         type for signed types in the use_all && !is_output bitfield case.
653 2008-12-06  Steven Bosscher  <steven@gcc.gnu.org>
655         PR rtl-optimization/36365
656         * df-core.c (df_worklist_dataflow_overeager): Remove.
657         (df_worklist_dataflow): Don't call it, use double-queue only.
658         * params.def (PARAM_DF_DOUBLE_QUQUQ_THRESHOLD_FACTOR): Remove.
660 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
662         PR middle-end/38428
663         * tree-ssa-operands.c (get_expr_operands) <case BIT_FIELD_REF>: Set
664         gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile.
666 2008-12-07  Ben Elliston  <bje@au.ibm.com>
668         * gthr-single.h (__gthread_once): Adjust prototype to match all
669         other gthreads models.
671 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
673         * config/i386/i386.c (override_options): Use CPU_AMDFAM10
674         instead of PROCESSOR_AMDFAM10 for barcelona's schedule.
676         PR middle-end/38422
677         * fold-const.c (fold_unary) <CASE_CONVERT>: Don't convert MULT_EXPR
678         operands to mult_type if it isn't narrower than op0's type.
680 2008-12-06  Jan Hubicka  <jh@suse.cz>
681             Jakub Jelinek <jakub@redhat.com>
683         PR tree-optimization/38074
684         * cgraphbuild.c (compute_call_stmt_bb_frequency): Fix handling of 0
685         entry frequency.
686         * predict.c (combine_predictions_for_bb): Ignore predictor predicting
687         in both dirrection for first match heuristics.
688         (tree_bb_level_predictions): Disable noreturn heuristic when there
689         is no returning path.
691 2008-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
693         PR rtl-optimization/38272
694         * reload1.c (choose_reload_regs): Keep reload_spill_index correct
695         in all cases.
697 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
699         PR c++/35336
700         * c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
701         (pp_c_expression): Likewise.
703 2008-12-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
705         PR c/38416
706         * c-parser.c (struct c_token): Make pragma_kind 8 bits.
708 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
710         PR middle-end/37248
711         * fold-const.c (make_bit_field_ref): Change bitpos and bitsize
712         arguments to HOST_WIDE_INT.  If type has different signedness
713         than unsignedp or different precision from bitsize, create
714         the right type for BIT_FIELD_REF and cast to type.
715         (fold_truthop): Change first_bit and end_bit to HOST_WIDE_INT.
717         Revert:
718         2008-03-05  Richard Guenther  <rguenther@suse.de>
719         PR c++/35336
720         * fold-const.c (fold_truthop): Remove code generating
721         BIT_FIELD_REFs of structure bases.
722         (fold_binary): Likewise.
723         (make_bit_field_ref): Remove.
724         (optimize_bit_field_compare): Remove.
725         (all_ones_mask_p): Remove.
727 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
729         * tree-sra.c (sra_explode_bitfield_assignment): Always
730         call unsigned_type_for, if the precision is higher than
731         needed, call build_nonstandard_integer_type.
733         PR debug/38367
734         * function.c (assign_parm_find_stack_rtl): If promoted_mode
735         is wider than DECL_MODE, adjust MEM_OFFSET (stack_parm) for
736         big endian.
738         PR middle-end/38338
739         * builtins.c (expand_builtin_apply_args): Put before parm_birth_insn
740         only if internal_arg_pointer is a non-virtual pseudo.
742 2008-12-05  Joseph Myers  <joseph@codesourcery.com>
744         * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for
745         TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500.
746         * config/rs6000/spe.md (e500_cr_ior_compare): Likewise.
748 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
750         PR tree-optimization/37716
751         * gimplify.c (gimplify_expr): Allow COND_EXPR if
752         gimplify_ctxp->allow_rhs_cond_expr.
754 2008-12-05  Uros Bizjak  <ubizjak@gmail.com>
756         * config/alpha/alpha.c (alpha_fold_vector_minmax): Create
757         VIEW_CONVERT_EXPR to convert output to long_integer_type_node.
759         (alpha_emit_conditional_branch): Do not generate direct branch
760         for UNORDERED comparisons.
762 2008-12-05  Andreas Schwab  <schwab@suse.de>
764         * config/rs6000/linux-unwind.h (frob_update_context): Check for
765         NULL lr.
767 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
769         PR c/38408
770         * fold-const.c (fold_checksum_tree): Change buf type to union
771         tree_node.
773 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
775         PR bootstrap/38262
776         * Makefile.in (LIBS): Remove GMPLIBS, CLOOGLIBS and PPLLIBS.
777         (BACKENDLIBS): New.
778         (cc1-dummy, cc1): Add BACKENDLIBS, remove GMPLIBS.
780 2008-12-05  Ben Elliston  <bje@au.ibm.com>
782         * c-parser.c (c_parser_enum_specifier): Initialise ident_loc and
783         comma_loc.
784         (c_parser_initelt): Initialise des_loc and ellipsis_loc.
786 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
787             Gary Funck  <gary@intrepid.com>
789         * cse.c (lookup_as_function): Delete mode frobbing code.
790         (equiv_constant): Re-implement it there for SUBREGs.
792 2008-12-04  Richard Guenther  <rguenther@suse.de>
794         PR middle-end/36509
795         * Makefile.in (tree-ssa-alias-warnings.o): Remove.
796         (tree-ssa-structalias.o): Remove errors.h dependency.
797         (tree-ssa-reassoc.o): Likewise.
798         * tree-ssa-reassoc.c: Do not include errors.h.
799         * tree-ssa-alias-warnings.c: Remove.
800         * tree-ssa-alias.c (compute_may_aliases): Remove call to
801         strict_aliasing_warning_backend.
802         * tree-ssa-structalias.c (emit_pointer_definition): New function.
803         (emit_alias_warning): Likewise.
804         (set_uids_in_ptset): Warn for clear cases of type-punning.
805         * tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
806         on INDIRECT_REFs.
808 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
810         * cse.c (equiv_constant): Fix pasto.
812 2008-12-04  Nick Clifton  <nickc@redhat.com>
814         * config/stormy16/stormy16.md: Remove extraneous spaces and quotes.
815         * config/stormy16/stormy16.c: Remove extraneous spaces and fix up
816         formatting of quotes.
818 2008-12-04  Jakub Jelinek  <jakub@redhat.com>
820         PR middle-end/38371
821         * fold-const.c (fold_checksum_tree): Allow modification of
822         TYPE_NEXT_VARIANT.
824 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
826         PR middle-end/38360
827         * tree-ssa-ccp.c (ccp_fold_builtin): Bail out if the builtin doesn't
828         have the right number of arguments.
830 2008-12-03  Richard Guenther  <rguenther@suse.de>
832         PR middle-end/36326
833         * gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
834         non-BLKmode types.
836 2008-12-03  Tomas Bily  <tbily@suse.cz>
838         PR middle-end/38250
839         * tree-loop-distribution.c (build_size_arg): New function.
840         (generate_memset_zero): Checks if dr_analyze_innermost succeed.
841         Reorganized generating of stmts.
842         * testsuite/gcc.dg/tree-ssa/pr38250.c: New file.
843         * tree-data-ref.c (dr_analyze_innermost): Returns bool.
844         Indicate if analysis succeed.
845         * tree-data-ref.h (dr_analyze_innermost): Returns bool.
846         * tree-predcom.c (valid_initializer_p, find_looparound_phi):
847         Uses new definition of dr_analyze_innermost.
849 2008-12-03  Ben Elliston  <bje@au.ibm.com>
851         * tree-ssa-pre.c (do_regular_insertion): Initialise edoubleprime.
853 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
855         PR tree-optimization/37716
856         * tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
857         all the needed operations as trees and gimplify_assign it to dst.
859         PR target/37610
860         * configure.ac (gcc_cv_readelf): Look for readelf.
861         (gcc_cv_as_cfi_advance_working): Check for working
862         cfi advances with code alignment factor > 1.
863         (HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
864         don't work properly.
865         * configure: Regenerated.
867 2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
868             Jakub Jelinek  <jakub@redhat.com>
869             Andrew Pinski  <andrew_pinski@playstation.sony.com>
871         PR rtl-optimization/38281
872         * combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
873         set it to NULL_RTX afterwards.
875         * emit-rtl.c (set_insn_deleted): Fix formatting.
877 2008-12-02  Richard Sandiford  <rdsandiford@googlemail.com>
879         * config/mips/mips.c (mips_expand_builtin): Fix the mode of the
880         error return value.
881         * config/mips/mips.md (IMOVE32): New mode iterator.
882         (movsi): Generalize with IMOVE32.
883         (*movsi_internal): Likewise.
884         (*mov<mode>_mips16): Likewise.
885         (*lwxs): Likewise.
887 2008-12-02  Nathan Sidwell  <nathan@codesourcery.com>
888             Maxim Kuvyrkov  <maxim@codesourcery.com>
890         * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
891         PC-relative addressing when compiling for uclinux PIC.
892         (__cmpdf_internal, __cmpsf_internal): Hide.
893         (__cmpdf, __cmpsf): Use PIC call sequence.
895 2008-12-02  Andreas Tobler  <a.tobler@schweiz.org>
896             Jack Howarth <howarth@bromo.med.uc.edu>
898         * config/i386/t-darwin64: Add m32 multilib support.
900 2008-12-02  Jack Howarth  <howarth@bromo.med.uc.edu>
902         * testsuite/gcc.dg/darwin-comm.c: Expand to darwin10 and later.
904 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
906         PR middle-end/38343
907         * builtins.c (fold_builtin_memory_op): Convert len to sizetype
908         before using it in POINTER_PLUS_EXPR.
910 2008-12-02  Richard Guenther  <rguenther@suse.de>
912         PR tree-optimization/38359
913         * fold-const.c (fold_binary): Fold -1 >> x to -1 only for
914         non-negative x.
916 2008-12-02  Martin Jambor  <mjambor@suse.cz>
918         PR middle-end/37861
919         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
920         for INDIRECT_REFs.
921         (forward_propagate_addr_into_variable_array_index): Check that the
922         offset is not computed from a MULT_EXPR, use is_gimple_assign rather
923         than the gimple code directly.
925 2008-12-02  Ben Elliston  <bje@au.ibm.com>
927         * config/spu/float_disf.c (__floatdisf): Prototype.
928         * config/spu/float_unsdisf.c (__float_undisf): Likewise.
929         * config/spu/float_unssidf.c (__float_unssidf): Constify cast.
930         * config/spu/float_unsdidf.c (__float_unsdidf): Likewise.
932 2008-12-02  DJ Delorie  <dj@redhat.com>
934         * config/stormy16/stormy16.h (INCOMING_FRAME_SP_OFFSET): Negate.
935         (DWARF_CIE_DATA_ALIGNMENT): Define.
937         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout):
938         Invert add/sub for INCOMING_FRAME_SP_OFFSET.
939         (xstormy16_expand_prologue): Likewise.
940         (xstormy16_expand_builtin_va_start): Likewise.
941         (xstormy16_gimplify_va_arg_expr): Likewise.
943 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
945         PR middle-end/38343
946         * builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
947         potentially returned from folding memcpy.
948         (expand_builtin_stpcpy_args): Similarly for folding strcpy.
949         (fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
951 2008-12-02  Danny Smith  <dannysmith@users.sourceforge.net>
953         PR target/38054
954         * config/i386/winnt.c (i386_pe_encode_section_info): Condition stdcall
955         decoration of function RTL names here on Ada language.
957 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
959         PR rtl-optimization/38280
960         * ira-build.c (loop_is_inside_p, regno_allocno_order_compare_func,
961         ira_rebuild_regno_allocno_list): New functions.
962         (regno_allocnos): New static variable.
963         (remove_unnecessary_allocnos): Allocate/deallocate regno_allocnos.
964         Call ira_rebuild_regno_allocno_list.
966 2008-12-01  David Daney  <ddaney@caviumnetworks.com>
967             Adam Nemet  <anemet@caviumnetworks.com>
969         * config/mips/linux64.h (DRIVER_SELF_SPECS): Add
970         LINUX_DRIVER_SELF_SPECS.
972 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
974         PR rtl-optimization/37514
975         * reload1.c (reload_as_needed): Invalidate reg_last_reload
976         from previous insns.
978 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
980         PR c++/38348
981         * c-omp.c (c_finish_omp_for): Only transform pointer
982         ++ or -- into MODIFY_EXPR if second argument is non-NULL.
984         PR rtl-optimization/38245
985         * tree-vrp.c (abs_extent_range): New function.
986         (extract_range_from_binary_expr): Compute range
987         for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
988         or includes zero or if vr1 is VR_RANGE and op0 has some
989         other range.
991 2008-12-01  Uros Bizjak  <ubizjak@gmail.com>
993         PR middle-end/37908
994         * config/alpha/alpha.c (alpha_split_atomic_op): Properly handle NAND
995         case by calculating ~(new_reg & val) instead of (~new_reg & val).
996         * config/alpha/sync.md (sync_nand<mode>): Change insn RTX
997         to (not:I48MODE (and:I48MODE (...))).
998         (sync_old_nand<mode>): Ditto.
999         (sync_new_nand<mode>): Ditto.
1001 2008-12-01  Nick Clifton  <nickc@redhat.com>
1003         * config/stormy16/stormy16.md (CARRY_REG): New constant.
1004         Replace uses of the "y" register class with direct references to
1005         the CARRY_REG register.
1006         * config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
1007         register with clobbers of the carry register.
1008         (xstormy16_secondary_reload_class): Do not return CARRY_REGS.
1009         (xstormy16_split_cbranch): Remove redundant carry parameter.
1010         (xstormy16_expand_arith): Likewise.
1011         * config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
1012         (IRA_COVER_CLASSES, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
1013         REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
1014         (CARRY_REGNUM): Define.
1015         * config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
1016         Update prototype.
1017         (xstormy16_expand_arith): Likewise.
1019 2008-12-01  Chen Liqin  <liqin.chen@sunplusct.com>
1021         * config/score/score.h (IRA_COVER_CLASSES): Define.
1023 2008-11-30  Eric Botcazou  <ebotcazou@adacore.com>
1025         PR target/38287
1026         * config/sparc/sparc.md (divsi3 expander): Remove constraints.
1027         (divsi3_sp32): Add new alternative with 'K' for operand #2.
1028         (cmp_sdiv_cc_set): Factor common string.
1029         (udivsi3_sp32): Add new alternative with 'K' for operand #2.
1030         Add TARGET_V9 case.
1031         (cmp_udiv_cc_set): Factor common string.
1033 2008-11-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1035         PR middle-end/38283
1036         * varasm.c (emutls_finish): Fix common registration.
1038 2008-11-29  Jakub Jelinek  <jakub@redhat.com>
1040         PR target/29987
1041         * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
1043 2008-11-29  David Edelsohn  <edelsohn@gnu.org>
1045         * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for
1046         operand wrapped in NOT.  Emit NAND as (ior (not X) (not Y)).
1047         (rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)).
1048         * config/rs6000/sync.md (sync_nand<mode>): Represent NAND in RTL.
1049         Call rs6000_emit_sync with CODE=NOT and unmodified operands.
1050         Ignore sub-word case for now.
1051         (sync_nand<mode>_internal): Represent NAND in RTL.
1052         (sync_old_nand<mode): Same.
1053         (sync_old_name<mode>_internal): Same.
1054         (sync_new_nand<mode>): Same.
1055         (sync_new_nand<mode>_internal): Same.
1056         (sync_boolcshort_internal): Expect NAND.
1058 2008-11-28  Richard Guenther  <rguenther@suse.de>
1060         PR tree-optimization/37955
1061         PR tree-optimization/37742
1062         * tree-vect-transform.c (vectorizable_store): Remove assert for
1063         compatible aliases.
1064         (vectorizable_load): Likewise.
1066 2008-11-27  Richard Guenther  <rguenther@suse.de>
1068         * tree-ssa-structalias.c (intra_create_variable_infos): Make
1069         a constraint for the static chain parameter.
1071 2008-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1073         * config/bfin/bfin.opt (micplb): New option.
1074         * config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
1075         * config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
1076         ENABLE_WA_INDIRECT_CALLS): New macros.
1077         * config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
1078         all 54x CPUs.
1079         (indirect_call_p): New function.
1080         (workaround_speculation): Handle anomaly 05-00-0426 when
1081         ENABLE_WA_INDIRECT_CALLS is true.
1082         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1083         __WORKAROUND_INDIRECT_CALLS if ENABLE_WA_INDIRECT_CALLS.
1084         * doc/invoke.texi (Blackfin Options): Document -micplb.
1086 2008-11-26  DJ Delorie  <dj@redhat.com>
1088         * config/m32c/mov.md ("extendhipsi2"): New.
1090         * config/m32c/bitops.md (bset_qi): Add memsym_operand predicate.
1092         * config/m32c/bitops.md (andhi3_24, iorhi3_24): Don't prefer HL class.
1093         * config/m32c/mov.md (zero_extendqihi2): Likewise.
1095 2008-11-26  Adam Nemet  <anemet@caviumnetworks.com>
1097         * config/mips/mips.md (clear_hazard): Rename to
1098         clear_hazard_<mode>.  Use mode-specific addition.
1099         (clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
1100         or gen_clear_hazard_di depending on the size of Pmode.
1102 2008-11-26  DJ Delorie  <dj@redhat.com>
1104         * configure.ac: Test m32c-elf-gas for .loc.
1105         * configure: Likewise.
1107 2008-11-26  Janis Johnson  <janis187@us.ibm.com>
1109         PR testsuite/28870
1110         * doc/sourcebuild.texi (Test Directives): Add dg-timeout and
1111         dg-timeout-factor.
1113 2008-11-26  Uros Bizjak  <ubizjak@gmail.com>
1115         * config/i386/sync.md (memory_barrier_nosse): Disable also for
1116         TARGET_64BIT.  Remove special asm template for TARGET_64BIT case.
1117         (memory_barrier): Do not generate memory_barrier_nosse instruction
1118         for TARGET_64BIT.
1119         * config/i386/sse.md (*sse2_mfence): Also enable for TARGET_64BIT.
1121 2008-11-26  Fredrik Unger  <fred@tree.se>
1123         * config/soft-fp/floatuntisf.c (__floatuntisf): Correct
1124         function name from __floatundisf.
1125         * config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
1126         DFtype.
1128 2008-11-25  Daniel Berlin  <dberlin@dberlin.org>
1129             Richard Guenther  <rguenther@suse.de>
1131         PR tree-optimization/37869
1132         * tree-ssa-structalias.c (struct constraint_graph): Remove
1133         pt_used and number_incoming members.
1134         (build_pred_graph): Do not allocate them.
1135         (condense_visit): Do not use them.
1136         (label_visit): Likewise.
1137         (free_var_substitution_info): Do not free them.
1139 2008-11-25  Vladimir Makarov  <vmakarov@redhat.com>
1141         * doc/invoke.texi (ira-max-loops-num): Change semantics.
1143         * ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
1145         * ira-color.c (allocno_spill_priority): New function.
1146         (remove_allocno_from_bucket_and_push, push_allocno_to_spill):
1147         Print more info about the spilled allocno.
1148         (push_allocnos_to_stack): Use allocno_spill_priority.  Add more
1149         checks on bad spill.
1151         * ira-build.c (loop_node_to_be_removed_p): Remove.
1152         (loop_compare_func, mark_loops_for_removal): New functions.
1153         (remove_uneccesary_loop_nodes_from_loop_t): Use member
1154         to_remove_p.
1155         (remove_unnecessary_allocnos): Call mark_loops_for_removal.
1157         * ira.c (ira): Don't change flag_ira_algorithm.
1159         * params.def (ira-max-loops-num): Change the value.
1161 2008-11-25  Maxim Kuvyrkov  <maxim@codesourcery.com>
1163         * config/m68k/m68k.md (extendsidi2, extendsidi2_mem): Merge, clean up.
1164         Disable unsupported alternative for ColdFire,
1165         add new alternative that ColdFire can handle.
1167 2008-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1169         * regrename.c (merge_overlapping_regs): Add registers artificially
1170         defined at the top of the basic block to the set of live ones just
1171         before the first insn.
1173 2008-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1174             Joey Ye  <joey.ye@intel.com>
1176         PR middle-end/37843
1177         * config/i386/i386.c (ix86_function_ok_for_sibcall): Return
1178         false if we need to align the outgoing stack.
1179         (ix86_update_stack_boundary): Check parm_stack_boundary.
1181 2008-11-25  Richard Guenther  <rguenther@suse.de>
1183         PR middle-end/38151
1184         PR middle-end/38236
1185         * tree-ssa-alias.c (struct alias_info): Remove written_vars.
1186         Remove dereferenced_ptrs_store and dereferenced_ptrs_load
1187         in favor of dereferenced_ptrs.
1188         (init_alias_info): Adjust.
1189         (delete_alias_info): Likewise.
1190         (compute_flow_insensitive_aliasing): Properly
1191         include all aliased variables.
1192         (update_alias_info_1): Use dereferenced_ptrs.
1193         (setup_pointers_and_addressables): Likewise.
1194         (get_smt_for): Honor ref-all pointers and pointers with known alias
1195         set properly.
1196         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
1198 2008-11-25  Uros Bizjak  <ubizjak@gmail.com>
1200         PR target/38254
1201         * config/i386/sync.md (memory_barrier_nosse): New insn pattern.
1202         (memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
1204 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
1206         * config/m68k/m68k.md (cmpdi): Use (scratch) instead of pseudo.
1208 2008-11-24  Richard Sandiford  <rdsandiford@googlemail.com>
1210         * config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
1212 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
1214         PR target/35018
1215         * config/m68k/m68k.md (ok_for_coldfire, enabled): New attributes.
1216         (addsi_lshrsi_31): Add ColdFire-friendly alternatives.
1218 2008-11-24  Uros Bizjak  <ubizjak@gmail.com>
1220         * config/i386/i386.md (UNSPECV_CMPXCHG): Rename from
1221         UNSPECV_CMPXCHG_[12].
1222         * config/i386/sync.md: Use UNSPECV_CMPXCHG instead of
1223         UNSPECV_CMPXCHG_[12].
1225         PR target/36793
1226         * config/i386/sync.md (memory_barrier): New expander.
1228 2008-11-24  Jakub Jelinek  <jakub@redhat.com>
1230         PR middle-end/37135
1231         * dse.c (find_shift_sequence): Optimize extraction from a constant.
1233 2008-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1235         * pa.c (function_arg): Revert 2008-10-26 change.
1237 2008-11-23  Helge Deller  <deller@gmx.de>
1239         * pa/linux-atomic.c (EBUSY): Define if not _LP64.
1240         (__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
1241         succeeded and lws_ret is not equal to oldval.
1243 2008-11-23  Kaz Kojima  <kkojima@gcc.gnu.org>
1245         * config/sh/sh.md (consttable_4): Call mark_symbol_refs_as_used.
1247 2008-11-22  Andreas Schwab  <schwab@suse.de>
1249         * varasm.c (default_file_start): Suppress ASM_APP_OFF also with
1250         -dA and -dP.
1252 2008-11-22  Adam Nemet  <anemet@caviumnetworks.com>
1254         * config/mips/mips.md (rdhwr): Rename to rdhwr_synci_step_<mode>.
1255         Use constant 1 as the operand.
1256         * config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
1257         Rename gen_rdhwr to gen_rdhwr_synci_step_si or
1258         gen_rdhwr_synci_step_di depending on the size of Pmode.
1260 2008-11-22  Uros Bizjak  <ubizjak@gmail.com>
1262         PR target/38222
1263         * config/i386/i386.md (SWI248): New mode iterator.
1264         (SWI32): Remove mode iterator.
1265         (popcount<mode>2): Rename from popcounthi2, popcountsi2 and
1266         popcounthi2 insn patterns. Macroize pattern using SWI248 mode
1267         iterator.  Generate popcnt mnemonic without mode extensions
1268         for Darwin x86 targets.
1269         (*popcount<mode>2_cmp): Ditto.
1270         (*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
1271         extensions for Darwin x86 targets.
1273 2008-11-22  Eric Botcazou  <ebotcazou@adacore.com>
1275         * config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
1276         only if HAVE_AS_SPARC_UA_PCREL is defined.
1278 2008-11-22  Richard Sandiford  <rdsandiford@googlemail.com>
1280         * ira-costs.c (find_allocno_class_costs): Work out the maximum
1281         allocno_costs value of the classees with the lowest total_costs
1282         value.  Use this to set ALLOCNO_COVER_CLASS_COST here...
1283         (setup_allocno_cover_class_and_costs): ...rather than here.
1284         Use the ALLOCNO_COVER_CLASS_COST for all registers in the
1285         preferred class.
1287 2008-11-22  Jakub Jelinek  <jakub@redhat.com>
1289         PR middle-end/37323
1290         * builtins.c (expand_builtin_apply_args): Emit sequence before
1291         parm_birth_insn instead of after entry_of_function's first insn.
1293         PR middle-end/37316
1294         * function.c (assign_parm_remove_parallels): Pass
1295         data->passed_type as third argument to emit_group_store.
1297         PR target/37170
1298         * final.c (mark_symbol_refs_as_used): New function.
1299         * output.h (mark_symbol_refs_as_used): New prototype.
1300         * config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
1301         (s390_output_pool_entry): Use mark_symbol_refs_as_used.
1302         * config/arm/arm.md (consttable_4): Likewise.
1304         PR target/37880
1305         * doc/invoke.texi: Adjust wording of -mcmodel=medium description.
1307 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
1309         PR middle-end/38200
1310         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
1311         propagate x = &a into *x = b if conversion from b to a's type is
1312         useless.
1314 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
1316         * caller-save.c (insert_one_insn): Take into account REG_INC notes
1317         for the liveness computation of the new insn.
1319 2008-11-21  DJ Delorie  <dj@redhat.com>
1321         * config/stormy16/stormy16.md (movqi_internal, movhi_internal):
1322         Moves to/from below100 space (W) can only use r0-r7.
1324 2008-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
1326         PR other/38214
1327         * doc/invoke.texi (Optimization Options): Fix typo.
1329 2008-11-21  H.J. Lu  <hongjiu.lu@intel.com>
1330             Xuepeng Guo  <xuepeng.guo@intel.com>
1332         * config.gcc (extra_headers): For x86 and x86-64, remove
1333         gmmintrin.h, add immintrin.h and avxintrin.h.
1335         * config/i386/gmmintrin.h: Renamed to ...
1336         * config/i386/avxintrin.h: This.  Issue an error if
1337         _IMMINTRIN_H_INCLUDED is undedined.
1339         * config/i386/immintrin.h: New.
1341 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
1343         PR target/38208
1344         * reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
1345         mode of PLUS, not mode of the eliminated register.
1347 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
1349         * config/i386/mmx.md (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
1350         * config/i386/sse.md (avx_nand<mode>3): Rename to avx_andnot<mode>3.
1351         (<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
1352         (sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
1353         (*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
1354         (*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
1355         (*nand<mode>3): Rename to *andnot<mode>3.
1356         (*nandtf3): rename to *andnottf3.
1357         * config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
1358         Use CODE_FOR_mmx_andnotv2si3.
1359         [IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
1360         [IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
1361         [IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
1362         [IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
1363         [IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
1365 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
1367         PR middle-end/37908
1368         * config/ia64/ia64.c (ia64_expand_atomic_op): Properly handle NAND
1369         case by calculating ~(new_reg & val) instead of (~new_reg & val).
1370         * config/ia64/sync.md (sync_nand<mode>): Change insn RTX
1371         to (not:IMODE (and:IMODE (...))).
1372         (sync_old_nand<mode>): Ditto.
1373         (sync_new_nand<mode>): Ditto.
1375 2008-11-20  Joseph Myers  <joseph@codesourcery.com>
1377         * config/arm/thumb2.md (thumb2_casesi_internal,
1378         thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
1380 2008-11-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1382         * gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
1383         nand to the changed 4.4 semantic.
1385 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
1387         PR middle-end/29215
1388         * builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
1389         (fold_builtin_memory_op): Handle even the case where just one
1390         of src and dest is an address of a var decl component, using
1391         TYPE_REF_CAN_ALIAS_ALL pointers.  Remove is_gimple_min_invariant
1392         and readonly_data_expr src check.
1393         * tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
1394         up warnings.
1396         PR rtl-optimization/36998
1397         * dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
1398         arguments.  Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
1399         (compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
1400         stack_adjust_offset callers.
1401         (dwarf2out_stack_adjust): Likewise.  Handle insns in annulled
1402         branches properly.
1403         (compute_barrier_args_size): Handle insns in annulled branches
1404         properly.
1406 2008-11-20  Uros Bizjak  <ubizjak@gmail.com>
1408         PR target/38151
1409         * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
1410         Handle cases when integer argument crosses argument register boundary.
1412 2008-11-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1414         PR bootstrap/33100
1415         * config.gcc (i[34567]86-*-solaris2*): Don't include
1416         i386/t-crtstuff here.
1417         Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
1418         * config/i386/t-sol2: Move to libgcc/config/i386.
1420 2008-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1422         PR driver/21706
1423         * tlink.c: Include "libiberty.h".
1424         (initial_cwd): Change type into char *.
1425         (tlink_init): Call getpwd instead of getcwd.
1427 2008-11-19  Zdenek Dvorak  <ook@ucw.cz>
1429         PR rtl-optimization/32283
1430         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
1431         of the induction variable to decide whether it may wrap.
1432         * tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
1433         initialization of the bound before the loop.
1434         * simplify-rtx.c (simplify_binary_operation_1): Add two
1435         simplifications regarding AND.
1436         (simplify_plus_minus): Only fail if no simplification is possible.
1437         * loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
1439 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
1441         PR c++/36631
1442         * gimplify.c (gimplify_call_expr): Defer most of the cannot inline
1443         checking until GIMPLE lowering.
1444         * gimple-low.c (check_call_args): New function.
1445         (lower_stmt) <case GIMPLE_CALL>: Call it.
1447 2008-11-19  Adam Nemet  <anemet@caviumnetworks.com>
1449         * config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
1450         with the same type as the first operand of the AND expression.
1452 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
1454         PR bootstrap/37859
1455         * ira-int.h (struct ira_loop_tree_node): New member
1456         entered_from_non_parent_p.
1458         * ira-color.c (print_loop_title): Print loop bbs.
1460         * ira-emit.c (entered_from_non_parent_p,
1461         setup_entered_from_non_parent_p): New functions.
1462         (not_modified_p): Rename to store_can_be_removed_p.  Check there
1463         is no side entries.
1464         (generate_edge_moves): Use store_can_be_removed_p instead of
1465         not_modified_p.
1466         (ira_emit): Call setup_entered_from_non_parent_p.
1468         * ira-build.c (copy_info_to_removed_store_destinations):
1469         Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
1470         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
1471         (ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
1472         update all accumulated attributes.
1474 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
1476         PR bootstrap/37790
1477         * ira-int.h (ira_copy_allocno_live_range_list,
1478         ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
1479         ira_finish_allocno_live_range_list): New prototypes.
1480         (ira_allocno_live_ranges_intersect_p,
1481         ira_pseudo_live_ranges_intersect_p): Remove.
1483         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
1484         ira_pseudo_live_ranges_intersect_p): Rename to
1485         allocnos_have_intersected_live_ranges_p and
1486         pseudos_have_intersected_live_ranges_p.  Move them from here to ...
1488         * ira-color.c: ... here
1489         (coalesced_allocno_conflict_p): Use
1490         allocnos_have_intersected_live_ranges_p.
1491         (coalesced_allocnos_living_at_program_points,
1492         coalesced_allocnos_live_at_points_p,
1493         set_coalesced_allocnos_live_points): Remove.
1494         (slot_coalesced_allocnos_live_ranges,
1495         slot_coalesced_allocno_live_ranges_intersect_p,
1496         setup_slot_coalesced_allocno_live_ranges): New.
1497         (coalesce_spill_slots): Use ranges of coalesced allocnos.
1498         (ira_sort_regnos_for_alter_reg): Use
1499         allocnos_have_intersected_live_ranges_p.
1500         (ira_reuse_stack_slot): Use
1501         pseudos_have_intersected_live_ranges_p.
1503         * global.c (pseudo_for_reload_consideration_p): Check
1504         flag_ira_share_spill_slots too.
1506         * ira-build.c (copy_allocno_live_range_list): Rename to
1507         ira_copy_allocno_live_range_list.  Make it external.
1508         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
1509         external.
1510         (ira_allocno_live_ranges_intersect_p): New.
1511         (ira_finish_allocno_live_range_list): New.
1512         (finish_allocno): Use it.
1513         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
1514         (copy_info_to_removed_store_destinations): Ditto.  Use
1515         ira_copy_allocno_live_range_list.
1516         (ira_flattening): Use ira_merge_allocno_live_ranges.
1518         * ira.c (too_high_register_pressure_p): New function.
1519         (ira): Switch off sharing spill slots if the pressure is too high.
1521 2008-11-19  Richard Guenther  <rguenther@suse.de>
1523         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
1524         non-sizetype offsets if their precision matches that of the pointer.
1525         * expr.c (expand_expr_real_1): Always sign-extend the offset
1526         operand of a POINTER_PLUS_EXPR.
1528 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1530         * config.gcc: Unobsolete mips-sgi-irix[56]*.
1531         (mips-sgi-irix[56]*): No need to use fixproto.
1533 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1534             Paul Brook  <paul@codesourcery.com>
1536         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
1537         executable stack.
1539 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1541         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
1543 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
1545         PR target/38156
1546         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
1547         (separate_decls_in_region): Create shared struct even when there
1548         are only reductions.
1550 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
1552         * config/picochip/picochip.c (headers): Remove an unnecessary
1553         header file.
1555 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
1557         PR target/36133
1558         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
1559         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
1560         shift instructions.
1561         * config/m68k/m68k.md: Adjust all conditional branches that use the
1562         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
1564 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
1566         PR target/37362
1567         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
1568         is a register or zero operand in the correct mode before generating
1569         mtch1 insn or a register operand in the correct mode before generating
1570         mfch1 insn.
1571         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
1573 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
1575         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
1576         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
1577         mipsisa*-*-elf*.  Handle mipsisa64r2*.
1578         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
1579         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1580         mips64r2.
1581         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
1582         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1583         mips64r2.
1584         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
1585         Fix mips16 if mips64 or mips64r2 are multilib defaults.
1586         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1587         mips64r2.
1589 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
1591         PR target/38130
1592         * config/i386/i386.md (allocate_stack_worker_32,
1593         allocate_stack_worker_64): Don't use match_dup between input and
1594         output operand.
1595         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
1596         * config/i386/i386.c (ix86_expand_prologue): Likewise.
1598 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
1600         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
1601         is forced when trying to do a symbol link for it.
1603 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
1605         * expmed.c (extract_bit_field_1): Also use a temporary and
1606         convert_extracted_bit_field when the conversion from ext_mode to
1607         the target mode requires explicit truncation.
1609 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1611         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
1612         Tweak formatting.
1613         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
1614         registers when not optimizing.
1616 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1618         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
1619         and its associated define_split.  Expose the all-d alternative
1620         to the register allocator, but mark it with "?".  Mark the first
1621         alternative with "*?*?".
1622         (*mul_sub_si): Likewise.
1623         (*mul_acc_si_r3900): New pattern.
1625 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
1627         PR middle-end/38140
1628         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
1629         propagating x = &a into *x = b, add a cast if not useless
1630         type conversion or don't optimize if another stmt would be
1631         needed.
1633 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
1635         PR middle-end/37908
1636         * optabs.c (expand_sync_operation): Properly handle NAND case
1637         by calculating ~(t1 & val) instead of (~t1 & val).
1638         * builtins.c (expand_builtin_sync_operation): Warn for changed
1639         semantics in NAND builtins.
1640         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
1642         * doc/invoke.texi (Warning options): Add Wsync-nand.
1643         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
1644         __sync_fetch_and_nand builtin operation in the example.  Add a note
1645         about changed semantics in GCC 4.4.
1646         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
1647         operation in the example.  Add a note about changed semantics in
1648         GCC 4.4.
1650 2008-11-16  Jan Hubicka  <jh@suse.cz>
1652         * cgraph.c (cgraph_function_body_availability): Fix test of externally
1653         visible.
1655 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
1657         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
1658         to -mips4.
1660 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1662         PR target/38052
1663         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
1664         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
1665         split out from...
1666         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
1667         rather than call_really_used_regs when handling $gp.
1669 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1671         PR target/38052
1672         * config/mips/mips.c (machine_function): Update the comment
1673         above global_pointer.
1674         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
1675         that a function doesn't need a global pointer.
1676         (mips_current_loadgp_style): Update accordingly.
1677         (mips_restore_gp): Likewise.
1678         (mips_output_cplocal): Likewise.
1679         (mips_expand_prologue): Likewise.
1681 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
1683         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
1684         parameter.  Use DImode for computing the number of registers.
1685         (function_arg): Adjust for above change.
1686         (function_value): Likewise.
1688 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
1690         PR tree-optimization/37950
1691         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
1692         not computed for the current function.
1694 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1696         PR target/38123
1697         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
1698         gpr and other COMPONENT_REFs.
1700 2008-11-15  Richard Guenther  <rguenther@suse.de>
1702         PR tree-optimization/38051
1703         * tree-ssa-alias.c (update_alias_info_1): Manually find
1704         written variables.
1706 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
1708         * doc/invoke.texi (-mfix-r10000): Document.
1709         * config/mips/mips.opt (mfix-r10000): New option.
1710         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
1711         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
1712         (MIPS_COMPARE_AND_SWAP_12): Likewise.
1713         (MIPS_SYNC_OP): Likewise.
1714         (MIPS_SYNC_OP_12): Likewise.
1715         (MIPS_SYNC_OLD_OP_12): Likewise.
1716         (MIPS_SYNC_NEW_OP_12): Likewise.
1717         (MIPS_SYNC_OLD_OP): Likewise.
1718         (MIPS_SYNC_NAND): Likewise.
1719         (MIPS_SYNC_OLD_NAND): Likewise.
1720         (MIPS_SYNC_EXCHANGE): Likewise.
1721         (MIPS_SYNC_EXCHANGE_12): Likewise.
1722         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
1723         delay slots.
1724         (MIPS_SYNC_NEW_NAND): Likewise.
1725         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
1726         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
1727         (mips_output_sync_loop): New function.
1728         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
1729         Make -mfix-r10000 require branch-likely instructions.
1730         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
1731         mips_output_sync_loop.
1732         (compare_and_swap_12): Likewise.
1733         (sync_add<mode>): Likewise.
1734         (sync_<optab>_12): Likewise.
1735         (sync_old_<optab>_12): Likewise.
1736         (sync_new_<optab>_12): Likewise.
1737         (sync_nand_12): Likewise.
1738         (sync_old_nand_12): Likewise.
1739         (sync_new_nand_12): Likewise.
1740         (sync_sub<mode>): Likewise.
1741         (sync_old_add<mode>): Likewise.
1742         (sync_old_sub<mode>): Likewise.
1743         (sync_new_add<mode>): Likewise.
1744         (sync_new_sub<mode>): Likewise.
1745         (sync_<optab><mode>): Likewise.
1746         (sync_old_<optab><mode>): Likewise.
1747         (sync_new_<optab><mode>): Likewise.
1748         (sync_nand<mode>): Likewise.
1749         (sync_old_nand<mode>): Likewise.
1750         (sync_new_nand<mode>): Likewise.
1751         (sync_lock_test_and_set<mode>): Likewise.
1752         (test_and_set_12): Likewise.
1754 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
1756         * gcc.c (cc1_options): Fix comment.
1758 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1760         PR c++/37561
1761         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
1762         argtype instead of result_type.
1764 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
1766         * ira-int.h (struct ira_loop_tree_node): Improve comments for
1767         subloop_next/next and subloops/childen fields.
1769 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1771         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
1772         (STANDARD_INCLUDE_DIR): Redefine to "/include".
1773         (LOCAL_INCLUDE_DIR): Undefine.
1774         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
1776 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
1778         PR rtl-optimization/37397
1779         * ira-int.h (struct ira_allocno): New member bad_spill_p.
1780         (ALLOCNO_BAD_SPILL_P): New macro.
1782         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
1784         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
1785         (create_cap_allocno, propagate_allocno_info,
1786         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
1787         (update_bad_spill_attribute): New function.
1788         (ira_build): Call it.
1790         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
1792 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1794         PR tree-optimization/38104
1795         * gimplify.c (gimple_regimplify_operands): Add referenced vars
1796         before calling mark_symbols_for_renaming, not after it.
1798 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
1800         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
1801         (OVERRIDE_OPTIONS): Likewise.
1803 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
1804             Andrew Stubbs  <ams@codesourcery.com>
1805             Gunnar Von Boehn  <gunnar@genesi-usa.com>
1807         PR target/36134
1808         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
1809         the shorter LEA insn over ADD.L where possible.
1811 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
1813         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
1814         systems, which are assumend to always provide SSP-support in glibc.
1815         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
1816         case.
1817         * configure: Regenerate.
1819 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1821         PR middle-end/36125
1822         * function.c (gimplify_parameters): For callee copies parameters,
1823         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
1825 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
1827         PR target/28102
1828         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
1829         x86 parts into the `i[34567]86-*-linux*' and parts that are
1830         independent of the processor architecture into the `*-*-linux*' cases.
1831         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
1832         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
1833         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
1834         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
1835         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
1836         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
1837         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
1839 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
1841         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
1842         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
1843         (ls2_idiv): Likewise idiv3.
1844         (ls2_prefetch): New reservation.
1845         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
1846         * config/mips/mips.md (type): Add imul3nc and idiv3.
1847         (length): Handle idiv3.
1848         (any_mod): New code_iterator.
1849         (u): Handle MOD and UMOD.
1850         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
1851         (prefetch): Handle TARGET_LOONGSON_2EF.
1853 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1855         PR c++/27017
1856         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
1857         (prune_unused_types_walk): Call it for non-perennial local classes.
1858         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
1859         entry, just set it to 2 and recurse on children, don't walk attributes
1860         again.
1862 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
1864         * c-common.c (warn_about_parentheses): Add missing whitespace
1865         in warning.
1867 2008-11-13  Paul Brook  <paul@codesourcery.com>
1869         * doc/invoke.texi: Document --fix-cortex-m3.
1870         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
1871         Cortex-M3 cpu is selected.
1872         (output_move_double): Avoid overlapping base register and first
1873         destination register when fix_cm3_ldrd.
1874         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
1876 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1878         PR bootstrap/38100
1879         * gimple.h (gimple_range_check_failed): Remove prototype.
1880         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
1881         in guarding #if.
1882         (gimple_range_check_failed): Removed.
1884 2008-11-13  Andrew Haley  <aph@redhat.com>
1886         PR bootstrap/38088
1887         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
1888         __LONG_LONG_MAX__.
1890 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1892         PR c++/36478
1893         Revert:
1894         2007-05-07  Mike Stump  <mrs@apple.com>
1895         * doc/invoke.texi (Warning Options): Document that -Wempty-body
1896         also checks for and while statements in C++.
1898 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
1900         PR debug/27574
1901         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
1902         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
1903         - which clones are reachable - as "abstract and needed".
1904         * cgraph.c (cgraph_release_function_body):  If a node is
1905         "abstract and needed", do not release its DECL_INITIAL() content
1906         that will be needed to emit debug info.
1908 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
1910         PR target/27880
1911         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
1912         to set HAVE_GETIPINFO.
1913         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
1914         * configure: Regenerate.
1915         * config.in: Regenerate.
1917 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
1919         PR bootstrap/38010
1920         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
1922 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1924         Revert:
1925         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1926         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1928 2008-11-12  Jason Merrill  <jason@redhat.com>
1930         PR c++/38007
1931         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
1932         special casing.
1934 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
1936         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
1937         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
1938         atmega32u6 devices.
1939         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1940         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1942 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1944         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
1945         packed-stack special handling.
1946         (FRAME_ADDR_RTX): Add definition.
1948 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1950         PR target/35366
1951         * fold-const.c (native_encode_string): New function.
1952         (native_encode_expr): Use it for STRING_CST.
1954 2008-11-12  DJ Delorie  <dj@redhat.com>
1956         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
1957         insns if the intermediate value will be used later.
1959 2008-11-12  Andreas Schwab  <schwab@suse.de>
1961         * config/m68k/m68k.c (print_operand): Mask off extra extension
1962         bits when writing out the representation of real values.
1964 2008-11-12  Ira Rosen  <irar@il.ibm.com>
1966         PR tree-optimization/38079
1967         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
1968         with vect_dump.
1970 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1972         PR c++/35334
1973         * c-pretty-print.c (pp_c_complex_expr): New function.
1974         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
1976         PR target/35366
1977         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
1978         than INNER and INNER is a constant, forcibly align INNER as much
1979         as needed.
1981 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1983         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
1985 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1987         PR rtl-optimization/37363
1988         * simplify-rtx.c (simplify_plus_minus): Don't create
1989         (const (minus ...)) expresisons.
1991 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
1993         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
1994         handling.
1996 2008-11-10  Catherine Moore  <clm@codesourcery.com>
1998         * config.gcc (mips64vrel-*-elf*): Include the tm_file
1999         prior to vr.h.
2000         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
2001         (BASE_DRIVER_SELF_SPECS): Remove.
2002         (DRIVER_SELF_SPECS): New definition.
2003         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
2004         BASE_DRIVER_SELF_SPECS.
2005         * config/mips/sde.h: Likewise.
2006         * config/mips/iris6.h: Likewise.
2007         * config/mips/vr.h: Likewise.
2008         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New.
2010 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
2012         PR rtl-optimizations/37948
2013         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
2014         (ira_create_copy, ira_add_allocno_copy): New parameter.
2016         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
2017         to ira_add_allocno_copy.
2018         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
2019         parameter to process_regs_for_copy.
2020         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
2021         Fix typo in passing second allocno to ira_add_allocno_copy.
2023         * ira-color.c (update_conflict_hard_regno_costs): Use head of
2024         coalesced allocnos list.
2025         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
2026         the graph.
2027         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
2028         (add_ira_allocno_to_ordered_bucket): Rename to
2029         add_allocno_to_ordered_bucket.
2030         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
2031         head of coalesced allocnos list.
2032         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
2033         Check that it is aready calculated.
2034         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
2035         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
2036         list.
2037         (coalesce_allocnos): Do extended coalescing too.
2039         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
2040         parameter to ira_add_allocno_copy.
2042         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
2043         parameter.
2044         (print_copy): Print copy origination too.
2046         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
2047         equivalent memory.
2049 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2051         PR rtl-optimization/37514
2052         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
2053         flag_ira_share_spill_slots to 2 if it's already non-zero.
2054         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
2055         flag_ira_share_spill_slots is 2.
2057 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
2059         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
2060         (prologue_enter_32): Set FB to SP - 4.
2062 2008-11-10  DJ Delorie  <dj@redhat.com>
2064         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
2065         constraint for single-bit-clear in lower byte of HI constant, vs
2066         Imb which just ignores the upper byte.
2067         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
2068         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
2069         (iorhi3_16): Check for single bit set, not single bit clear.
2071 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
2073         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
2075         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
2077 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2079         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
2080         values living in memory and use more precise alignment information.
2082 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
2084         PR middle-end/35314
2085         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
2086         after __mf_check call if the call must end a bb.
2088 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
2090         PR middle-end/37807
2091         PR middle-end/37809
2092         * combine.c (force_to_mode): Do not process vector types.
2094         * rtlanal.c (nonzero_bits1): Do not process vector types.
2095         (num_sign_bit_copies1): Likewise.
2097 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
2099         * config/i386/gnu.h: Add copyright and licensing header.
2100         * config/gnu.h: Likewise.
2102 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2104         * fwprop.c (fwprop_done): Call df_remove_problem.
2106 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
2108         PR middle-end/37379
2109         * tree-scalar-evolution.c (instantiate_scev_1): Return
2110         chrec_dont_know for VL_EXP_CLASS_P.
2112 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
2114         * reg-stack.c (reg_to_stack): Add missing braces in memset
2115         size calculation.
2117 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
2119         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
2120         (NO_PROFILE_COUNTERS): New define.
2122 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
2124         PR target/26397
2125         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
2127 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
2129         PR target/35574
2130         * config/sparc/constraints.md (D): New.
2131         * config/sparc/predicates.md (const_double_or_vector_operand): New.
2132         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
2133         'D' constraint.
2134         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
2135         Use the 'D' constraint in addition to 'F' in some alternatives.
2136         (DF splitter): Generalize for V64mode.
2137         * doc/md.texi (SPARC): Document the 'D' constraint.
2139 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
2141         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
2143 2008-11-06  Ben Elliston  <bje@au.ibm.com>
2145         * gcc.c: Remove ancient comment about a bug in Sun cc.
2147 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
2149         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
2151 2008-11-06  Ben Elliston  <bje@au.ibm.com>
2153         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
2155 2008-11-06  Ben Elliston  <bje@au.ibm.com>
2157         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
2158         description.
2160 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
2162         PR target/38016
2163         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
2164         just MEM_P.
2166 2008-11-05  Martin Jambor  <mjambor@suse.cz>
2168         PR middle-end/37861
2169         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
2170         pointer arithmetics into array_ref if the array is accessed
2171         through an indirect_ref.
2173 2008-11-05  Richard Guenther  <rguenther@suse.de>
2175         PR middle-end/37742
2176         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
2177         qualified pointer conversion before stripping qualifiers.
2178         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
2179         * tree-flow.h (may_propagate_address_into_dereference): Declare.
2180         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
2181         function.
2182         (ccp_fold): Use it.
2183         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
2184         properly canonicalize binary ops.
2185         (forward_propagate_addr_expr_1): Use
2186         may_propagate_address_into_dereference.
2188 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
2190         PR middle-end/37286
2191         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
2192         Initialize uninitialized input registers with a NaN.
2194 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
2196         PR middle-end/37833
2198         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
2200 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
2202         PR middle-end/37943
2204         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
2205         exits and conditions.
2206         * testsuite/gcc.dg/graphite/pr37943.c: New.
2208 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
2209             Andrew Pinski  <andrew_pinski@playstation.sony.com>
2211         PR c/35430
2212         * c-common.c (warn_for_sign_compare): For complex result_type
2213         use component's type.
2215 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
2217         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
2219         * print-tree.c (print_node): Don't print DECL_INITIAL
2220         for PARM_DECL.
2222         PR c/37106
2223         * c-common.c (parse_optimize_options): Save and restore
2224         flag_strict_aliasing around decode_options call.
2226 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
2228         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
2229         (host_detect_local_cpu): Use it instead of casted strings to
2230         compare vendor signatures.
2232 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
2234         PR target/37989
2235         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
2236         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
2238 2008-11-03  Catherine Moore  <clm@codesourcery.com>
2240         * config/mips.c (mips_conditional_register_usage):  Handle the
2241         DSP control register.
2242         * doc/extend.texi: Document the DSP control register.
2244 2008-11-03  Steve Ellcey <sje@cup.hp.com>
2245             Jakub Jelinek  <jakub@redhat.com>
2247         * omp-low.c (expand_omp_for_generic): If iter_type has different
2248         precision than type and type is a pointer type, cast n1 and n2
2249         first to an integer type with the same precision as pointers
2250         and only afterwards to iter_type.
2252 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2254         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
2255         (UNSPEC_GOTSYM_OFF): New unspec.
2256         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
2257         (pic_add_dot_plus_eight): Likewise.
2258         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
2259         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
2260         UNSPEC_PIC_BASE operands.
2261         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
2262         (arm_output_addr_const_extra): Handle it.
2264 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2266         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
2267         integer class to full integer class if the offset is not word-aligned.
2269 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2271         PR rtl-opt/37782
2272         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
2273         mode count is in.
2274         (doloop_optimize): Update call to doloop_modify.
2276 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2278         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
2280 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2282         PR other/37463
2283         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
2284         gcc_cv_as_cfi_directive.
2285         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
2286         merging read-only and read-write sections or assembler emits
2287         read-write .eh_frame sections.
2288         * configure: Regenerate.
2290 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
2292         Revert:
2293         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2295         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
2296         problem.
2297         (rs6000_emit_prologue): Invert logic.
2298         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
2299         (reg:P 11) instead of match_operand.
2300         (*save_fpregs_<mode>): Likewise.
2301         (*restore_gpregs_<mode>): Likewise.
2302         (*return_and_restore_gpregs_<mode>): Likewise.
2303         (*return_and_restore_fpregs_<mode>): Likewise.
2304         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
2305         (reg:P 11) insted of match_operand.
2306         (*restore_gpregs_spe): Likewise.
2307         (*return_and_restore_gpregs_spe): Likewise.
2309 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
2311         PR tree-optimization/37684
2312         * gcc.dg/graphite/pr37684.c: New.
2313         * graphite.c (exclude_component_ref): New.
2314         (is_simple_operand): Call exclude_component_ref.
2316 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
2318         PR tree-optimization/36908
2319         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
2320         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
2321         (number_of_rw_in_partition): New.
2322         (partition_contains_all_rw): New.
2323         (ldist_gen): Do not distribute when one of the partitions
2324         contains all the memory operations.
2326 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
2328         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
2329         EDGE_IRREDUCIBLE_LOOP.
2331 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2333         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
2334         where we have one entry point in the loop which isn't the head.
2336 2008-11-03  Richard Guenther  <rguenther@suse.de>
2338         PR middle-end/37573
2339         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
2341 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
2343         PR middle-end/37858
2344         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
2345         for ipa and simple ipa passes.
2347 2008-11-02  Richard Guenther  <rguenther@suse.de>
2349         PR tree-optimization/37542
2350         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
2351         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
2352         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
2353         (vn_nary_op_insert_stmt): Likewise.
2354         (visit_use): Likewise.
2356 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
2358         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
2359         (*swap): Remove.
2360         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
2361         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
2362         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
2363         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
2364         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
2365         peephole2's): Replace unspec with rotate.
2366         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
2368 2008-11-02  Richard Guenther  <rguenther@suse.de>
2370         PR tree-optimization/37991
2371         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
2372         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
2373         (set_ssa_val_to): Print if the value changed.
2374         (simplify_binary_expression): Strip useless conversions.
2376 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
2378         PR target/37939
2379         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
2380         operand.
2382 2008-11-01  Richard Guenther  <rguenther@suse.de>
2384         PR middle-end/37976
2385         * builtins.c (fold_builtin_strspn): Return a size_t.
2386         (fold_builtin_strcspn): Likewise.
2388 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2390         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
2391         attribute for struct return convention.
2393 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2395         * config/rs6000/crtsavres.asm: Really, really delete.
2397 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2399         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
2400         problem.
2401         (rs6000_emit_prologue): Invert logic.
2402         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
2403         (reg:P 11) instead of match_operand.
2404         (*save_fpregs_<mode>): Likewise.
2405         (*restore_gpregs_<mode>): Likewise.
2406         (*return_and_restore_gpregs_<mode>): Likewise.
2407         (*return_and_restore_fpregs_<mode>): Likewise.
2408         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
2409         (reg:P 11) insted of match_operand.
2410         (*restore_gpregs_spe): Likewise.
2411         (*return_and_restore_gpregs_spe): Likewise.
2413 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
2415         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
2416         list of word switches that take args.
2418 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
2420         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
2421         (s390_output_pool_entry): Call it through for_each_rtx.
2423         PR middle-end/37730
2424         * expr.c (store_constructor): For vectors, if target is a MEM, use
2425         target's MEM_ALIAS_SET instead of elttype alias set.
2427 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
2429         PR target/37909
2430         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
2431         no address.
2433 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
2435         PR target/37878
2436         * config/rs6000/predicates.md (word_offset_memref_operand):
2437         Restructure code and look inside auto-inc/dec addresses.
2439 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
2441         PR target/32277
2442         * libgcov.c ( __gcov_indirect_call_profiler): Check
2443         TARGET_VTABLE_USES_DESCRIPTORS.
2445 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
2447         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
2448         (INITIAL_FRAME_POINTER_OFFSET): Remove.
2449         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
2450         offset if eliminating soft frame pointer.
2451         * config/spu/spu.md (stack_protect_set, stack_protect_test)
2452         (stack_protect_test_si): Add initial machine description
2453         for Stack Smashing Protector
2455 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2457         PR 11492
2458         * c-common.c (min_precision): Move to...
2459         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
2460         * tree.h (tree_int_cst_min_precision): Declare.
2461         * c-common.h (min_precision): Delete declaration.
2462         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
2463         multiplication of non-negative integer constants.
2464         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
2465         tree_int_cst_min_precision.
2466         (finish_enum): Likewise.
2468 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
2470         PR middle-end/36578
2471         * convert.c (convert_to_real): Do not optimize conversions of
2472         binary arithmetic operations between binary and decimal
2473         floating-point types.  Consider mode of target type in determining
2474         decimal type for arithmetic.  Unless
2475         flag_unsafe_math_optimizations, do not optimize binary conversions
2476         where this may change rounding behavior.
2477         * real.c (real_can_shorten_arithmetic): New.
2478         * real.h (real_can_shorten_arithmetic): Declare.
2480 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2482         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
2483         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
2484         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
2485         appropriate.
2486         (must_save_p): For some workarounds, interrupts need to clobber a
2487         P register.
2488         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
2489         and LC1 for WA_05000257.
2490         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
2491         WA_05000283 and WA_05000315.
2492         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
2493         (movbi): Add alternative to set CC to 1; improve code for setting
2494         CC to 0.
2495         (dummy_load): New pattern.
2497 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
2499         PR middle-end/37870
2500         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
2501         BLKmode for non-memory, convert using a wider MODE_INT mode
2502         or through memory.
2504         PR middle-end/37913
2505         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
2506         that haven't been removed yet.
2508 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2510         * config/bfin/bfin.c (struct machine_function): New member
2511         has_loopreg_clobber.
2512         (bfin_expand_movmem): Set it when generating memcpy insns.
2513         (n_regs_saved_by_prologue, expand_prologue_reg_save,
2514         expand_epilogue_reg_restore): If we have hardware loops,
2515         memcpy insns (indicated by has_loopreg_clobber) or function
2516         calls, we need to save the loop registers.
2518 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
2520         * config/i386/i386.c (core2_cost): Fix typos in comments.
2522 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
2524         PR c/37924
2525         * combine.c (make_compound_operation): Don't call make_extraction with
2526         non-positive length.
2527         (simplify_shift_const_1): Canonicalize count even if complement_p.
2529 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
2531         * convert.c (strip_float_extensions): Do not remove or introduce
2532         conversions between binary and decimal floating-point types.
2534 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
2536         PR middle-end/37931
2537         * fold-const.c (distribute_bit_expr): Convert common, left and
2538         right arguments to type.
2540 2008-10-28  Nick Clifton  <nickc@redhat.com>
2542         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
2543         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
2544         call_really_used_regs array rather than the call_used_regs array.
2545         (mn10300_get_live_callee_saved_regs, expand_prologue,
2546         expand_epilogue, output_tst): Likewise.
2548 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
2550         PR target/37378
2551         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
2552         (df_get_entry_block_def_set): Neither here.
2553         (df_get_regular_block_artificial_uses): Add EH_USES registers.
2555         PR tree-optimization/37879
2556         * predict.c (tree_estimate_probability): Check if last_stmt is
2557         non-NULL before dereferencing it.
2559 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2561         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
2562         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
2563         (ira_fast_allocation): Remove the prototype.
2565         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
2566         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
2567         (color_pass): Modify the updated costs.
2568         (ira_color): Rename to color.  Make it static.
2569         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
2570         (ira_color): New function.
2572         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
2573         change.
2575         * ira-lives.c (last_call_num, allocno_saved_at_call): New
2576         variables.
2577         (set_allocno_live, clear_allocno_live, mark_ref_live,
2578         mark_ref_dead): Invalidate corresponding element of
2579         allocno_saved_at_call.
2580         (process_bb_node_lives): Increment last_call_num.  Setup
2581         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
2582         allocno was already saved.
2583         (ira_create_allocno_live_ranges): Initiate last_call_num and
2584         allocno_saved_at_call.
2586         * ira-build.c (ira_create_allocno): Initiate
2587         ALLOCNO_UPDATED_COVER_CLASS_COST.
2588         (create_cap_allocno, propagate_allocno_info,
2589         remove_unnecessary_allocnos): Remove setting updated costs.
2590         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
2592         * ira.c (ira):  Don't call ira_fast_allocation.
2594         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
2595         updated costs.
2597 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2599         PR middle-end/37813
2600         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
2602         * ira-int.h (ira_hard_regno_cover_class): New.
2604         * ira-lives.c (mark_reg_live, mark_reg_dead,
2605         process_bb_node_lives): Use ira_hard_regno_cover_class.
2607         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
2608         (setup_hard_regno_cover_class): New function.
2609         (ira_init): Call setup_hard_regno_cover_class.
2611         * ira-costs.c (cost_class_nums): Add comment.
2612         (find_allocno_class_costs): Initiate cost_class_nums.
2613         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
2615 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2617         PR middle-end/37884
2618         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
2619         Rename to copy_info_to_removed_store_destinations.  Propagate
2620         conflict hard regs and register stack attribute.
2622 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2624         PR middle-end/37316
2625         * pa.c (function_arg_padding):  Pad complex and vector types
2626         upward in 64-bit runtime.
2627         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
2629 2008-10-26  Matthias Klose  <doko@ubuntu.com>
2631         * doc/install.texi: Document requirements on antlr.
2633 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2635         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
2636         first.
2638 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2640         PR target/37841
2641         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
2642         is defined, use it to modify the constant offset.
2644         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
2646         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
2647         and short arguments to the correct location as mandated by the ABI.
2649 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2651         PR rtl-optimization/37769
2652         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
2654 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2656         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
2657         unwind-dw2-Os-4-200.o.
2659 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
2661         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
2662         (convert_for_assignment): Remove ic_argpass_nonproto cases.
2664 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2666         PR tree-optimization/36038
2667         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
2668         add sizetype IV with initial value zero instead of pointer type.
2670 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2672         PR c/7543
2673         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
2674         around bit operation.
2675         * profile.c (is_edge_inconsistent): Likewise.
2676         * fold-const.c (truth_value_p): Move from here...
2677         * tree.h (truth_value_p): ... to here.
2678         * c-tree.h (c_expr): Update description of original_code.
2679         * c-typeck.c (parser_build_unary_op): Set original_code.
2680         (parser_build_binary_op): Update call to warn_about_parentheses.
2681         * c-common.c (warn_about_parentheses): Take two additional
2682         arguments of the operands. Use a switch. Quote operators
2683         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
2684         Add warning about !x | y and !x & y.
2685         * c-common.h (warn_about_parentheses): Update declaration.
2687 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2689         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
2690         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
2691         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
2692         New variables.
2693         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
2694         (check-%): For test targets listed in lang_checks_parallelized
2695         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
2696         run the testing in multiple make goals, possibly parallel, and
2697         afterwards run dg-extract-results.sh to merge the sum and log files.
2699 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
2701         * config/mips/mips.c (mips_canonicalize_move_class): New function.
2702         (mips_move_to_gpr_cost): Likewise.
2703         (mips_move_from_gpr_cost): Likewise.
2704         (mips_register_move_cost): Make more fine-grained.
2706 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
2708         * graphite.c (graphite_apply_transformations): Check for
2709         -fgraphite-identity.
2710         * toplev.c (process_options): Add graphite_identity.
2711         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
2713 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2715         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
2716         mulhisihl and mulhisihh builtins.
2718         From Jie Zhang  <jie.zhang@analog.com>
2719         * config/bfin/bfin.md (composev2hi): Put operands into vector
2720         with correct order.
2722 2008-10-22  Chao-ying Fu  <fu@mips.com>
2724         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
2726 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
2728         From Mike Frysinger  <michael.frysinger@analog.com>
2729         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
2730         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
2731         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
2732         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
2733         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
2734         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
2735         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
2736         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
2737         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
2738         __ADSPBF51x__ for all of them.
2739         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
2740         -mcpu bf512, bf514, bf516, and bf518.
2741         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2742         bf512-none, bf514-none, bf516-none, and bf518-none.
2743         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2744         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2745         * doc/invoke.texi (Blackfin Options): Document that
2746         -mcpu now accepts bf512, bf514, bf516, and bf518.
2748 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2750         PR middle-end/37882
2751         * fold-const.c (build_range_type): For 1 .. signed_max
2752         range call build_nonstandard_inter_type if signed_type_for
2753         returned a type with bigger precision.
2755 2008-10-22  Richard Guenther  <rguenther@suse.de>
2757         * tree.def (COMPLEX_TYPE): Constrain element type.
2758         * tree.c (build_complex_type): Assert that.
2759         * tree-ssa-structalias.c (could_have_pointers): Complex types
2760         cannot have pointers.
2762 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2764         PR c/30949
2765         * c-typeck.c (convert_for_assignment): Do not give declaration's
2766         location for builtins. Spell out which type was expected and which
2767         was given.
2769 2008-10-22  Nick Clifton  <nickc@redhat.com>
2771         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
2772         the fdpic register to be a target when running in fdpic mode.
2774 2008-10-22 Rafael Espindola  <espindola@google.com>
2776         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
2777         newly created statements.
2779 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
2781         PR target/37633
2782         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
2783         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
2784         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
2786 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2788         PR target/37880
2789         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
2790         Adjust -mcmodel=medium description for 2005-07-31 changes.
2792 2008-10-22  Jan Hubicka  <jh@suse.cz>
2793             Jakub Jelinek  <jakub@redhat.com>
2795         PR middle-end/35853
2796         * doc/invoke.texi: Remove references to obsoleted -d dumps.
2798 2008-10-21  Richard Henderson  <rth@redhat.com>
2800         PR 37815
2801         * emit-rtl.c (get_spill_slot_decl): Export.
2802         * emit-rtl.h (get_spill_slot_decl): Declare.
2803         * var-tracking.c (vt_add_function_parameters): Relax assertion
2804         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
2806 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
2808         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
2809         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
2810         of from insn.
2812 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
2814         PR middle-end/37669
2815         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
2816         processed by get_maxval_strlen.
2818 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
2820         PR target/35485
2821         * tree.c (get_file_function_name): Copy first_global_object_name.
2822         Centralize call to clean_symbol_name.
2824 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
2826         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
2827         * config/svr4.h (SVR4_ASM_SPEC): New.
2828         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2829         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2831         * doc/invoke.texi (Option Summary): Add -T to linker options.
2832         (Link Options): Document -T.
2834 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
2836         * tree-inline.c (tree_inlinable_function_p): Remove tuples
2837         debugging hack.
2839         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
2841         PR debug/37020
2842         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
2844 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
2846         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
2847         part of expression.
2849 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
2851         * doc/install.texi: Fix typos in previous patch.
2853 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
2855         * doc/install.texi: Document in-tree building of gcc and mpfr.
2857 2008-10-19  Richard Guenther  <rguenther@suse.de>
2859         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
2861 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2863         PR c/30260
2864         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
2865         (build_enumerator): Convert enumerators that fit in integer to
2866         integer type.
2868 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
2870         * config/i386/i386.md (unnamed peephole2): Do not force memory
2871         operands of arith or logical instructions into registers for
2872         non-TARGET_READ_MODIFY targets.
2874         (ffs_cmove): Change operand 0 predicate to register_operand.
2875         Change operand 1 predicate to nonimmediate_operand.
2876         (ffsdi2): Ditto.
2877         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
2879 2008-10-18  Richard Guenther  <rguenther@suse.de>
2881         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
2882         VIEW_CONVERT_EXPR case against invalid gimple.
2884 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2886         * c-parser.c (c_parser_binary_expression): Silence the
2887         uninitialized variable warning emitted for binary_loc.
2889 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
2891         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
2892         translation cache.
2894 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
2896         PR c/33192
2897         * c-typeck.c (build_unary_op): Use omit_one_operand for
2898         IMAGPART_EXPR of real argument.
2900 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2902         PR tree-optimization/37664
2903         * fold-const.c (fold_binary): When optimizing comparison with
2904         highest or lowest type's value, don't consider TREE_OVERFLOW.
2906 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
2908         PR target/35483
2909         * Makefile.in (coverage.o): Depend on $(TM_P_H).
2910         * coverage.c: Include tm_p.h.
2911         * config/rs6000/x-aix (jc1): Override LDFLAGS.
2912         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
2913         dollar signs from PREFIX.
2914         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
2915         instead of manual strip_name_encoding.
2917 2008-10-16  Richard Guenther  <rguenther@suse.de>
2919         PR middle-end/37418
2920         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
2921         volatile qualified functions or methods as relevant.
2923 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2925         PR tree-optimization/37525
2926         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
2927         sizetype unsigned constants, both in the case of C and bounds.
2929 2008-10-15  Jan Hubicka  <jh@suse.cz>
2931         * ira-emit.c (change_regs): Return false when replacing reg by itself.
2933 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
2935         PR target/37633
2936         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
2937         HARD_REGNO_CALL_PART_CLOBBERED.
2939 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2941         PR middle-end/37535
2942         * ira-lives.c (mark_early_clobbers): Remove.
2943         (make_pseudo_conflict, check_and_make_def_use_conflicts,
2944         check_and_make_def_conflicts,
2945         make_early_clobber_and_input_conflicts,
2946         mark_hard_reg_early_clobbers): New functions.
2947         (process_bb_node_lives): Call
2948         make_early_clobber_and_input_conflicts and
2949         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
2951         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
2952         early clobbers of pseudo-registers.
2954 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2956         PR middle-end/37674
2957         * ira-build.c (ira_flattening): Recalculate
2958         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
2959         from the scratch instead of the propagation.
2961 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2963         * doc/rtl.texi (const_double): Remove the "addr" operand.
2964         Describe CONST_DOUBLE_* macros under const_double rather
2965         than const_vector.
2966         (const_fixed): Fix the operand description.
2967         (const): Add an @findex directive.
2968         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
2969         after the constant rtl table.
2970         (fix): Combine floating-point and fixed-point descriptions.
2971         Fix hyphenation.
2972         * sched-deps.c (sched_analyze_2): Remove reference to
2973         CONST_DOUBLE_CHAIN.
2975 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2977         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
2978         UNSPEC_GOTSYM_OFFs.
2979         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
2980         for UNSPEC_GOTSYM_OFFs.
2981         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
2982         (add_GOT_to_pic_reg): Use it.
2983         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
2985 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
2986             Harsha Jagasia  <harsha.jagasia@amd.com>
2988         PR tree-optimization/37485
2989         * graphite.c (gmp_cst_to_tree): Moved.
2990         (iv_stack_entry_is_constant): New.
2991         (iv_stack_entry_is_iv): New.
2992         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
2993         (loop_iv_stack_insert_constant): New.
2994         (loop_iv_stack_pop): Use new datatpype.
2995         (loop_iv_stack_get_iv): Same.
2996         (loop_iv_stack_get_iv_from_name): Same.
2997         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
2998         (loop_iv_stack_patch_for_consts): New.
2999         (loop_iv_stack_remove_constants): New.
3000         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
3001         (translate_clast): Call loop_iv_stack_patch_for_consts and
3002         loop_iv_stack_remove_constants.
3003         (gloog): Use new datatype.  Redirect construction edge to end
3004         block to avoid accidental deletion.
3005         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
3006         iv stack entry.
3007         (union iv_stack_entry_data): New.  Data in iv stack entry.
3008         (struct iv_stack_entry): New.  Datatype for iv stack entries.
3010 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
3012         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
3013         * graphite.c (free_scop): Same.
3014         (build_scops): Same.
3015         (free_scattering): New.
3016         (build_cloog_prog): Call free_scattering.
3017         (patch_phis_for_virtual_defs): Fix memleak.
3018         (graphite_trans_bb_strip_mine): Same.
3019         (limit_scops): Same.
3021 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
3022             Harsha Jagasia  <harsha.jagasia@amd.com>
3024         PR tree-optimization/37828
3025         * graphite.c (graphite_trans_loop_block): Do not loop block
3026         single nested loops.
3028 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
3030         PR tree-optimization/37686
3031         * tree-loop-linear.c (linear_transform_loops): Build a
3032         loop nest vector.  Pass it to lambda_compute_access_matrices.
3033         * tree-data-ref.h (struct access_matrix): Store the loop nest
3034         relative to which it encodes the information.
3035         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
3036         (am_vector_index_for_loop): Reimplemented: iterate over the
3037         loop nest for finding the loop index in the access matrix.
3038         (lambda_compute_access_matrices): Update declaration.
3039         * lambda-code.c (build_access_matrix): Pass the loop nest and
3040         record it.
3041         (lambda_compute_access_matrices): Same.
3043 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
3045         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
3046         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
3047         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
3048         already implies hard float.  Also fix several insn condition
3049         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
3051 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
3053         PR target/35483
3054         Based on patches by Laurent Vivier.
3055         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
3056         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
3057         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
3058         dollar sign to underscore.
3059         (ASM_OUTPUT_EXTERNAL): Same.
3060         (ASM_OUTPUT_LABELREF): New.
3061         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
3063         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
3064         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
3065         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
3066         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
3068 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
3070         PR tree-optimization/36881
3071         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
3072         that each value doesn't need runtime relocations, for !flag_pic
3073         check that each value is just a valid initializer constant.
3075 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
3077         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
3078         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
3079         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
3080         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
3081         GR_AND_ACC_REGS.
3082         (REG_CLASS_NAMES): Update accordingly.
3083         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
3084         rather than an unpredictable descriptive string.
3085         * config/mips/mips.c (mips_register_move_cost): Remove comment.
3086         (mips_register_move_cost): Check for specific COP*_REGS classes,
3087         instead of ALL_COP_AND_GR_REGS.
3088         (mips_ira_cover_classes): New function.
3089         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
3090         (TARGET_IRA_COVER_CLASSES): Define.
3092 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
3094         PR c++/37553
3095         * tree.c (build_type_attribute_qual_variant): Hash on the
3096         unqualified type, and don't overwrite an existing
3097         (type_hash_eq): Make the TYPE_NAME of the types significant, to
3098         allow distinguishing between wchar_t and its underlying type. This
3099         also means that we'll retain a little more typedef information.
3101 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
3102             Dmitry Melnik  <dm@ispras.ru>
3103             Dmitry Zhurikhin  <zhur@ispras.ru>
3104             Alexander Monakov  <amonakov@ispras.ru>
3105             Maxim Kuvyrkov  <maxim@codesourcery.com>
3107         * target.h (struct gcc_target): Update prototypes of needs_block_p
3108         and gen_spec_check.
3109         * haifa-sched.c (create_check_block_twin): Update calls to the above.
3110         * sel-sched.c (create_speculation_check): Likewise.
3111         * doc/tm.texi: Provide documentation for new target hooks.
3113         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
3114         (ia64_gen_spec_insn): Removed.
3115         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
3116         ia64_gen_spec_check): New static functions.
3117         (ia64_alloc_sched_context, ia64_init_sched_context,
3118         ia64_set_sched_context, ia64_clear_sched_context,
3119         ia64_free_sched_context, ia64_get_insn_spec_ds,
3120         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
3121         (ia64_needs_block_p): Change prototype.
3122         (ia64_gen_check): Rename to ia64_gen_spec_check.
3123         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
3124         into declaration, add special memory dependencies handling.
3125         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
3126         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
3127         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
3128         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
3129         Define new target hooks.
3130         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
3131         (ia64_optimization_options): Turn on selective scheduling with -O3,
3132         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
3133         default with selective scheduling.
3134         (ia64_override_options): Initialize align_loops and align_functions
3135         to 32 and 64, respectively.  Set global selective scheduling flags
3136         according to target-dependent flags.
3137         (rtx_needs_barrier): Support UNSPEC_LDS_A.
3138         (group_barrier_needed): Use new mstop-bit-before-check flag.
3139         Add heuristic.
3140         (dfa_state_size): Make global.
3141         (spec_check_no, max_uid): Remove.
3142         (mem_ops_in_group, current_cycle): New variables.
3143         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
3144         Initialize new variables.
3145         (is_load_p, record_memory_reference): New functions.
3146         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
3147         reached.
3148         (ia64_variable_issue): Change use of current_sched_info to
3149         sched_deps_info.  Update comment.  Note if a load or a store is issued.
3150         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
3151         advance if maximal number of loads or stores was issued on current
3152         cycle.
3153         (scheduled_good_insn): New static helper function.
3154         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
3155         a group barrier is needed.  Fix vertical spacing.  Guard the code
3156         doing state transition with last_scheduled_insn check.
3157         Mark that a stop bit should be before current insn if there was a
3158         cycle advance.  Update current_cycle and mem_ops_in_group.
3159         (ia64_h_i_d_extended): Change use of current_sched_info to
3160         sched_deps_info. Reallocate stops_p by larger chunks.
3161         (struct _ia64_sched_context): New structure.
3162         (ia64_sched_context_t): New typedef.
3163         (ia64_alloc_sched_context, ia64_init_sched_context,
3164         ia64_set_sched_context, ia64_clear_sched_context,
3165         ia64_free_sched_context): New static functions.
3166         (gen_func_t): New typedef.
3167         (get_spec_load_gen_function): New function.
3168         (SPEC_GEN_EXTEND_OFFSET): Declare.
3169         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
3170         (get_mode_no_for_insn): Change the condition that prevents use of
3171         special hardware registers so it can now handle pseudos.
3172         (get_spec_unspec_code): New function.
3173         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
3174         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
3175         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
3176         during selective scheduling.
3177         (ia64_speculate_insn): Use ds_get_speculation_types when
3178         determining whether we need to change the pattern.
3179         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
3180         (ia64_spec_check_src_p): Support new speculation/check codes.
3181         (struct bundle_state): New field.
3182         (issue_nops_and_insn): Initialize it.
3183         (insert_bundle_state): Minimize mid-bundle stop bits.
3184         (important_for_bundling_p): New function.
3185         (get_next_important_insn): Use important_for_bundling_p.
3186         (bundling): When shifting TImode from unimportant insns, ignore
3187         also group barriers.  Assert that best state is found before
3188         the backward bundling pass.  Print number of mid-bundle stop bits.
3189         Minimize mid-bundle stop bits.  Check correct calculation of
3190         mid-bundle stop bits.
3191         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
3192         (final_emit_insn_group_barriers): Emit stop bits before insns starting
3193         a new cycle.
3194         (sel2_run): New variable.
3195         (ia64_reorg): When flag_selective_scheduling2 is set, run the
3196         selective scheduling pass instead of schedule_ebbs.
3198         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
3199         (UNSPEC_LDS_A): New UNSPEC.
3200         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
3201         movti_internal, movsf_internal, movdf_internal,
3202         movxf_internal): Make visible.  Add speculable* attributes.
3203         (output_c_nc): New mode attribute.
3204         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
3205         mov<mode>_nc, zero_extend<mode>di2_nc,
3206         advanced_load_check_nc_<mode>): New insns.
3207         (zero_extend*): Add speculable* attributes.
3209         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
3210         (msched-stop-bits-after-every-cycle): Likewise.
3211         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
3212         Likewise.
3213         (msched-spec-verbose): Remove.
3214         (msched-prefer-non-data-spec-insns,
3215         msched-prefer-non-control-spec-insns,
3216         msched-count-spec-in-critical-path,
3217         msel-sched-dont-check-control-spec): Use Target  Report Var
3218         instead of Common Report Var.
3220         * config/ia64/itanium2.md: Remove incorrect bypass.
3222         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
3224 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
3226         PR middle-end/37805
3227         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
3228         and -fhelp=separate.
3230 2008-10-14  Ben Elliston  <bje@au.ibm.com>
3232         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
3234 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
3236         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
3237         non-integer modes.
3239 2008-10-13  Matthias Klose  <doko@ubuntu.com>
3241         * config/pa/linux-atomic.c: Work around missing header file
3242         for hppa64-linux-gnu targets.
3244 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3245             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
3246             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
3247             Grace Cao  <grace_cao@playstation.sony.com>
3249         * doc/invoke.texi (-mgen-cell-microcode): Document.
3250         (-mwarn-cell-microcode): Document.
3251         * cfglayout.c (locator_location): Export.
3252         * rtl.h (locator_location): Define prototype.
3253         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
3254         New predicate.
3255         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
3256         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
3257         (mwarn-cell-microcode): New option.
3258         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
3259         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
3260         cell and not already set.
3261         Turn off string instructions if not generating cell microcode.
3262         (rs6000_final_prescan_insn): New function that warns about microcoded
3263         instructions.
3264         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
3265         * config/rs6000/rs6000.md
3266         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
3267         the instruction would have been microcoded on the Cell.  Set
3268         cell_micro to always on unnamed patterns for the string instructions.
3269         (cell_micro): Update definition, remove load/store conditional
3270         microcoded.
3271         (sign_extend:DI): Define new pattern for non microcoded version.
3272         (sign_extend:SI): Likewise.
3273         (compare (div:P)): Set cell_micro to not.
3274         (andsi3): Define as an expand.
3275         (andsi3_mc): New pattern.
3276         (andsi3_nomc): New pattern.
3277         (andsi3_internal0_nomc): New pattern.
3278         (andsi3_internal2): Rename to ...
3279         (andsi3_internal2_mc): this and enable iff generating microcode.
3280         (andsi3_internal3): Rename to ...
3281         (andsi3_internal3_mc): this and enable iff generating microcode.
3282         (andsi3_internal4): Enable iif generating microcode.
3283         (andsi3_internal5): Rename to ..
3284         (andsi3_internal5_mc): this and enable iff generating microcode.
3285         (andsi3_internal5_nomc): New pattern.
3286         (extzvdi_internal1): Enable iff generating microcode.
3287         (extzvdi_internal2): Likewise.
3288         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
3289         (anddi3): Change to expand.
3290         (anddi3_mc): Rename from anddi3.
3291         (anddi3_no_mc): New pattern.
3292         (anddi3_internal2): Rename to ..
3293         (anddi3_internal2_mc): this and enable iff generating microcode.
3294         (anddi3_internal2_nomc): New pattern.
3295         (anddi3_internal3): Rename to ..
3296         (anddi3_internal3_mc): this and enable iff generating microcode.
3297         (anddi3_internal3_nomc): New pattern.
3298         (movti_string): Set cell_micro to always if TARGET_STRING.
3299         (stmsi8): Set cell_micro to always.
3300         (stmsi7): Likewise.
3301         (stmsi6): Likewise.
3302         (stmsi5): Likewise.
3303         (stmsi4): Likewise.
3304         (stmsi3): Likewise.
3305         (stmsi8_power): Likewise.
3306         (stmsi7_power): Likewise.
3307         (stmsi6_power): Likewise.
3308         (stmsi5_power): Likewise.
3309         (stmsi4_power): Likewise.
3310         (stmsi3_power): Likewise.
3311         (movsi_update2): Enable iff generating microcode.
3312         (movhi_update3): Likewise.
3313         (lmw): Set cell_micro to always.
3315 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
3317         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
3318         * config/s390/s390.c (machine_function): Remove
3319         decomposed_literal_pool_addresses_ok_p.
3320         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
3321         the difference of two labels.
3322         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
3323         (s390_pool_offset): New function.
3324         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
3325         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
3327 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
3329         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
3330         (powerpc*-*-linux-gnu*): Describe.
3331         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
3332         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
3333         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
3334         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
3335         config/rs6000/e500crtres32gpr.asm,
3336         config/rs6000/e500crtres64gpr.asm,
3337         config/rs6000/e500crtres64gprctr.asm,
3338         config/rs6000/e500crtrest32gpr.asm,
3339         config/rs6000/e500crtrest64gpr.asm,
3340         config/rs6000/e500crtresx32gpr.asm,
3341         config/rs6000/e500crtresx64gpr.asm,
3342         config/rs6000/e500crtsav32gpr.asm,
3343         config/rs6000/e500crtsav64gpr.asm,
3344         config/rs6000/e500crtsav64gprctr.asm,
3345         config/rs6000/e500crtsavg32gpr.asm,
3346         config/rs6000/e500crtsavg64gpr.asm,
3347         config/rs6000/e500crtsavg64gprctr.asm: Use it.
3348         * config/rs6000/crtsavres.asm: Really remove.
3350 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
3352         Fix PR/25502
3353         * c-format.c (convert_format_name_to_system_name): Use
3354         TARGET_OVERRIDES_FORMAT_INIT.
3355         * config.gcc (extra_options): Add for mingw targets mingw.opt.
3356         * config/i386/mingw.opt: New.
3357         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
3358         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
3359         (ms_printf_length_specs): Removed const specifier.
3360         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
3361         * doc/invoke.texi (Wno-pedantic-ms-format): New.
3363 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3365         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
3366         * doc/install.texi: Bump recommended MPFR to 2.3.2.
3368 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
3370         PR middle-end/37808
3371         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
3372         sure that ref has valid bb.
3374 2008-10-12  Richard Henderson  <rth@redhat.com>
3376         PR middle-end/37447
3377         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
3378         * alias.c (value_addr_p, stack_addr_p): Remove.
3379         (nonoverlapping_memrefs_p): Remove IRA special case.
3380         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
3381         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
3382         * reload1.c (alter_reg): Use it.
3384 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
3386         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
3387         of registers instead of eax, ebx, ecx and edx.  Use for loop
3388         and check register for non-zero value before the call
3389         to decode_caches_intel.
3391 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3393         PR rtl-optimization/37448
3394         * df.h: (df_ref_class): New enum.
3395         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
3396         (struct df_ref): Replaced with union df_ref_d.
3397         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
3398         New members of df_ref_d union.
3399         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
3400         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
3401         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
3402         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
3403         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
3404         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
3405         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
3406         (df_scan_bb_info, df_bb_regno_first_def_find,
3407         df_bb_regno_last_def_find, df_find_def, df_find_use,
3408         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
3409         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
3410         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
3411         df_get_artificial_defs, df_get_artificial_uses, union_defs)
3412         Replaced struct df_ref * with df_ref.
3413         * df-scan.c (df_collection_rec, df_null_ref_rec,
3414         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
3415         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
3416         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
3417         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
3418         df_reorganize_refs_by_reg_by_reg,
3419         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
3420         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
3421         df_sort_and_compress_refs, df_install_ref, df_install_refs,
3422         df_ref_record, df_get_conditional_uses, df_get_call_refs,
3423         df_bb_refs_record, df_exit_block_uses_collect,
3424         df_record_exit_block_uses, df_reg_chain_mark,
3425         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
3426         df_ref * with df_ref.
3427         (df_ref_record, df_uses_record, df_ref_create_structure): Added
3428         df_ref_class parameter.
3429         (df_scan_problem_data): Added new pools for different types of refs.
3430         (df_scan_free_internal, df_scan_alloc, df_free_ref,
3431         df_ref_create_structure): Processed new ref pools.
3432         (df_scan_start_dump): Added counts of refs and insns.
3433         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
3434         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
3435         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
3436         code to pass df_ref_class down to ref creation functions.
3437         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
3438         df_reg_chain_mark): Use macros to hide references to df_refs.
3439         (df_ref_chain_change_bb): Removed.
3440         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
3441         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
3442         Enhanced to understand df_ref union structure.
3443         * fwprop.c (local_ref_killed_between_p, use_killed_between,
3444         all_uses_available_at, update_df, try_fwprop_subst,
3445         forward_propagate_subreg, forward_propagate_and_simplify,
3446         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
3447         df_ref * with df_ref.
3448         (use_killed_between, all_uses_available_at): Use macros to hide
3449         references to df_refs.
3450         * regstat.c (regstat_bb_compute_ri,
3451         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
3452         df_ref.
3453         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
3454         see_handle_relevant_refs, see_analyze_one_def,
3455         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
3456         struct df_ref * with df_ref.
3457         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
3458         global_conflicts): Replaced struct df_ref * with df_ref.
3459         * ddg.c (create_ddg_dep_from_intra_loop_link,
3460         add_cross_iteration_register_deps, build_inter_loop_deps):
3461         Replaced struct df_ref * with df_ref.
3462         (create_ddg_dep_from_intra_loop_link,
3463         add_cross_iteration_register_deps): Use macros to hide references
3464         to df_refs.
3465         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
3466         df_ref * with df_ref.
3467         * df-core.c (df_bb_regno_first_def_find,
3468         df_bb_regno_last_def_find, df_find_def, df_find_use,
3469         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
3470         debug_df_ref): Replaced struct df_ref * with df_ref.
3471         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
3472         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
3473         df_ref.
3474         * web.c (union_defs, entry_register, replace_ref, web_main):
3475         Replaced struct df_ref * with df_ref.
3476         (union_defs, replace_ref): Use macros to hide references to df_refs.
3477         * global.c (compute_regs_asm_clobbered, build_insn_chain):
3478         Replaced struct df_ref * with df_ref.
3479         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
3480         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets):
3481         Replaced struct df_ref * with df_ref.
3482         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
3483         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
3484         with df_ref.
3485         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
3486         * df-byte-scan.c (df_compute_accessed_bytes_extract,
3487         df_compute_accessed_bytes_strict_low_part,
3488         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
3489         Replaced struct df_ref * with df_ref.
3490         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
3491         * init-regs.c (initialize_uninitialized_regs): Replaced struct
3492         df_ref * with df_ref.
3493         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
3494         check_dependency, check_dependencies, record_uses): Replaced
3495         struct df_ref * with df_ref.
3496         (invariant_for_use, check_dependency): Use macros to hide
3497         references to df_refs.
3498         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
3499         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
3500         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
3501         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
3502         references to df_refs.
3503         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
3504         with df_ref.
3505         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
3506         * df-problems.c (df_rd_bb_local_compute_process_def,
3507         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
3508         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
3509         df_chain_remove_problem, df_chain_create_bb_process_use,
3510         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
3511         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
3512         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
3513         df_byte_lr_simulate_artificial_refs_at_top,
3514         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
3515         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
3516         df_simulate_uses, df_simulate_artificial_refs_at_end,
3517         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
3518         df_ref.
3519         (df_chain_dump): Use macros to hide references to df_refs.
3520         * config/mips/mips.c (r10k_simplify_address): Replaced struct
3521         df_ref * with df_ref.
3522         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
3523         mark_artificial_uses, mark_reg_dependencies,
3524         byte_dce_process_block): Replaced struct df_ref * with df_ref.
3526 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
3528         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
3529         head comment.
3530         (array_ref_element_size): Likewise.
3531         (array_ref_low_bound): Likewise.
3532         (array_ref_up_bound): Likewise.
3533         * expr.c (contains_packed_reference): Likewise.
3534         (array_ref_element_size): Likewise.
3535         (array_ref_low_bound): Likewise.
3536         (array_ref_up_bound): Likewise.
3537         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
3538         with ARRAY_RANGE_REF.
3539         (idx_find_step): Likewise.
3540         (idx_record_use): Likewise.
3541         (strip_offset_1): Likewise.
3542         (idx_remove_ssa_names): Likewise.
3544 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
3545             Andi Kleen  <ak@linux.intel.com>
3547         * config/i386/cpuid.h (__cpuid_count): New defines.
3548         * config/i386/driver-i386.c (struct cache_desc): New structure.
3549         (describe_cache): Use struct cache_desc to pass cache descriptions.
3550         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
3551         (detect_caches_amd): Use struct cache_desc to describe caches.
3552         (decode_caches_intel): Use struct cache_desc to pass cache
3553         descriptions.  Update descriptions to match latest (rev -032,
3554         December 2007) CPUID documentation.  Do not check valid bit here.
3555         Check for Xeon MP value 0x49 problems.
3556         (detect_caches_cpuid2): New function, split from detect_caches_intel.
3557         Check valid bit before calling decode_caches_intel.  Detect number
3558         of times to repeat CPUID instruction.
3559         (detect_caches_cpuid4): New function.
3560         (detect_caches_intel): Depending on max_level, call
3561         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
3562         only when other methods fail to provide valid L2 cache description.
3564 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3566         PR middle-end/37608
3567         * pa.md (call, call_value): Generate an rtx for register r4 and pass
3568         it to PIC call patterns.
3569         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
3570         code generation and attributes from pattern.  Change peephole2 to
3571         split for noreturn case.  Revise split pattern for non noreturn case.
3572         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
3573         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
3574         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
3575         asserts.
3577 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
3579         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
3580         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
3581         and fp_type.
3582         (divdf3): Reformat long line.
3584 2008-10-11  Michael J. Eager  <eager@eagercon.com>
3586         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
3587         -mfpu options.
3588         (rs6000_handle_option): Process -mfpu options.
3589         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
3590         (enum fpu_type_t): New.
3591         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
3592         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
3593         fp_type.
3594         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
3595         (floatdidf2): Add TARGET_SINGLE_FPU condition.
3596         * config/rs6000/rs6000.opt (-mfpu): New.
3597         (-mxilinx-fpu): New.
3598         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
3599         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
3600         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
3601         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
3602         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
3604 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
3606         PR target/35760
3607         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
3608         LO_SUM on Darwin if mode has just one unit.
3610 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
3612         PR debug/37002
3613         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
3614         has been optimized out.
3616 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
3618         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
3619         instead of PIC_DIRECT_ADDR_P.
3620         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3621         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
3622         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
3623         (PIC_OFFSET_P): Rename to...
3624         (PCREL_SYMOFF_P): ...this.
3625         (PIC_DIRECT_ADDR_P): Delete.
3626         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
3627         PIC_OFFSET_P.
3628         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
3629         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
3630         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
3631         * config/sh/sh.c (print_operand): Remove CONST handling.
3632         (unspec_caller_rtx_p): Rewrite to use split_const and check
3633         the operands of UNSPEC bases.
3634         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
3635         with (unspec [A B] UNSPEC_SYMOFF).
3636         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
3637         UNSPEC_PCREL_SYMOFF.
3638         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3639         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
3640         (UNSPEC_EXTRACT_U16): Likewise.
3641         (UNSPEC_SYMOFF): Likewise.
3642         (UNSPEC_PCREL_SYMOFF): Likewise.
3643         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
3644         of constants.
3645         (movsi_const_16bit): Likewise.
3646         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
3647         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
3648         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
3649         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
3650         with (unspec [A B] UNSPEC_SYMOFF).
3651         (symPLT_label2reg): Replace (minus A (minus B pc)) with
3652          (unspec [A B] PCREL_UNSPEC_SYMOFF).
3653         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
3654         (Csu): Likewise UNSPEC_EXTRACT_U16.
3655         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3656         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
3658 2008-10-10  Stepan Kasal  <skasal@redhat.com>
3660         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
3661         for loop strip mining and loop blocking.
3663 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3665         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
3666         vary types depending on debug info.
3668 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3670         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
3671         before ensuring it's already computed.
3673 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
3675         * rtl.h (locator_eq): New decl.
3676         * cfglayout.c (locator_scope): New function.
3677         (insn_scope): Use it.
3678         (locator_eq): New function.
3679         (fixup_reorder_chain): Search for last insn in src bb
3680         that has locator set or first insn in dest bb.  Use
3681         locator_eq instead of == to compare locators.
3682         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
3683         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
3684         == to compare locators.
3686         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
3687         as used.
3688         * gimple-low.c (lower_function_body, lower_gimple_return,
3689         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
3690         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
3691         goto_block on edges if goto_locus is known.
3693         PR middle-end/37774
3694         * tree.h (get_object_alignment): Declare.
3695         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
3696         get_object_alignment if needed.
3697         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
3698         handling to ...
3699         (get_object_alignment): ... here.  New function.  Try harder to
3700         determine alignment from get_inner_reference returned offset.
3702 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3704         * graphite.c (gloog): Don't call find_unreachable_blocks
3705         before delte_unreachable_blocks.
3707         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
3708         goto_locus of true_edge into RTL locator.
3710 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
3712         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
3713         (*jcc_btdi_mask_rex64): Ditto.
3714         (*jcc_btsi): Ditto.
3715         (*jcc_btsi_mask): Ditto.
3716         (*jcc_btsi_1): Ditto.
3717         (*jcc_btsi_mask_1): Ditto.
3719 2008-10-08  Paul Brook  <paul@codesourcery.com>
3721         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
3722         compatible profiler (__gnu_mcount_nc).
3723         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
3725 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3727         * config/i386/i386.c (initial_ix86_tune_features): Add
3728         X86_TUNE_USE_VECTOR_FP_CONVERTS.
3729         * config/i386/i386.h (ix86_tune_indices): Likewise.
3730         (TARGET_USE_VECTOR_FP_CONVERTS): New.
3732         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
3733         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
3734         for FP to FP splitters.
3736 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3738         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
3739         splitter.
3741 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3743         PR target/36635
3744         PR target/37290
3745         PR rtl-optimization/37341
3746         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
3747         to ORIG_BB, pass through ORIG_BB recursively.
3748         (cse_condition_code_reg): Adjust caller.
3750 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
3752         * sdbout.c (sdbout_one_type): Treat the value type
3753         CONST_DECL for enumerals.
3755 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3757         * config/i386/i386.md: Remove trailing white spaces.
3759 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3761         PR rtl-optimization/37448
3762         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
3763         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
3764         Make unsigned long.
3765         (struct output_info) [count]: Renamed total_created and made
3766         unsigned long.
3767         (struct output_info) [size]: Renamed total_allocated and made
3768         unsigned long.
3769         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
3770         Properly keep track of desc->size.
3771         (print_statistics, dump_alloc_pool_statistics): Enhance the
3772         printing of statistics to print the number of elements and to use
3773         unsigned longs.
3775 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3777         PR middle-end/37576
3778         * opts.h (CL_SAVE): Move up to flags range.
3779         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
3780         CL_COMMON): Renumber.
3781         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
3782         * opts.c (common_handle_option): Revert last change.
3784 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3786         * config/i386/i386-protos.h (ix86_schedule): New.
3788         * config/i386/i386.c (ix86_schedule): New.
3789         (override_options): Add schedule to processor_alias_table.  Set
3790         ix86_schedule from the schedule field in processor_alias_table.
3791         (ix86_function_specific_save): Save ix86_schedule.
3792         (ix86_function_specific_restore): Restore ix86_schedule.
3794         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
3795         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
3796         and generic32.
3798         * config/i386/i386.opt: Add schedule.
3800         * config/i386/ppro.md: Remove generic32.
3802 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
3804         PR c/35437
3805         * expr.c (count_type_elements): Handle ERROR_MARK.
3807 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3809         PR debug/29609
3810         PR debug/36690
3811         PR debug/37616
3812         * basic-block.h (struct edge_def): Add goto_block field.
3813         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
3814         one insn with locus corresponding to edge's goto_locus if !optimize.
3815         * profile.c (branch_prob): Copy edge's goto_block.
3816         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
3817         emitted jumps.
3818         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
3819         locator in between the merged basic blocks if !optimize and needed.
3820         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
3821         goto_locus into RTL locator.  For unconditional jump use that
3822         locator for the jump insn.
3823         (expand_gimple_cond): Convert goto_block and goto_locus into
3824         RTL locator for all remaining edges.  For unconditional jump
3825         use that locator for the jump insn.
3826         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
3827         there is more than one edge or insn locator along the forwarding
3828         edges and !optimize.  If there is just one, set e->goto_locus.
3829         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
3830         edge's goto_block.
3831         (move_block_to_fn): Adjust edge's goto_block.
3833 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3835         PR middle-end/37731
3836         * expmed.c (expand_mult): Properly check DImode constant in
3837         CONST_DOUBLE.
3839 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3841         PR debug/37738
3842         * dwarf2out.c (common_block_die_table): New variable.
3843         (common_block_die_table_hash, common_block_die_table_eq): New
3844         functions.
3845         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
3846         COMMON block in the current scope rather than globally.  Optimize
3847         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
3848         DW_OP_addr SYMBOL_REF+off.
3850 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
3852         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
3853         Return true for non-addressable GIMPLE operands.
3855 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3857         PR target/24765
3858         * config/i386/i386.c (initial_ix86_tune_features): Remove
3859         X86_TUNE_USE_BIT_TEST.
3860         * config/i386/i386.h (ix86_tune_indices): Likewise.
3861         (TARGET_USE_BIT_TEST): Removed.
3863 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3865         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
3867 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
3869         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
3870         (mul<mode>3_mul3): ... into this new template.
3872 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3874         * gimplify.c (gimplify_arg): Add location argument.  Use it.
3875         (gimplify_call_expr): Pass location to gimplify_arg.
3876         (gimplify_modify_expr_to_memcpy): Same.
3877         (gimplify_modify_expr_to_memset): Same.
3879 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3881         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3882         Update calls to build_unary_op and build_indirect_ref for location
3883         changes.
3885 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3887         build_modify_expr.
3888         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
3889         * c-typeck.c (array_to_pointer_conversion): Pass location to
3890         build_unary_op.
3891         (function_to_pointer_conversion): Use error_at and warning_at.
3892         (build_indirect_ref): Same.
3893         (build_array_ref): Pass location to build_binary_op.
3894         (parser_build_unary_op): Do not set location after calling
3895         build_unary_op.
3896         (build_unary_op): Add location argument.  Use it throughout.  Set
3897         EXPR_LOCATION before returning new tree.
3898         (build_modify_expr): Same.
3899         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
3900         returning node.
3901         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
3902         build_indirect_ref, build_modify_expr.
3903         (c_finish_omp_for): Same.  Use error_at instead of error.
3904         * c-common.c (c_common_truthvalue_conversion): Pass location to
3905         build_unary_op.
3906         (warn_for_div_by_zero): Add location argument.
3907         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
3908         build_unary_op, warn_for_div_by_zero.
3909         * c-parser.c (c_parser_typeof_specifier): Use
3910         protected_set_expr_location.
3911         (c_parser_statement_after_labels): Same.
3912         (c_parser_condition): Same.
3913         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
3914         (c_parser_conditional_expression): Use protected_set_expr_location.
3915         (c_parser_unary_expression): Pass location to build_indirect_ref.
3916         (c_parser_postfix_expression_after_primary): Pass location to
3917         build_indirect_ref, build_unary_op.
3918         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
3920 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
3922         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
3923         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
3924         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
3925         r14000 and r16000.
3926         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
3927         (mips_issue_rate): Handle PROCESSOR_R10000.
3928         * config/mips/mips.md (cpu): Add r10000.
3929         Include r10000.md.
3930         * config/mips/10000.md: New file.
3932 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3934         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
3935         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
3936         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
3938 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3940         * config/darwin-protos.h (machopic_function_base_name): Delete.
3941         (machopic_function_base_sym): Likewise.
3942         (machopic_gen_offset): Declare.
3943         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
3944         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
3945         * config/darwin.c (machopic_function_base_name): Delete.
3946         (machopic_function_base_sym): Likewise.
3947         (gen_pic_offset): Rename to...
3948         (machopic_gen_offset): ...this and remove the pic_base argument.
3949         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
3950         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
3951         crtl->uses_pic_offset_table.
3952         (machopic_indirect_data_reference): Use new machopic_gen_offset
3953         interface.
3954         (machopic_legitimize_pic_address): Likewise.
3955         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
3957         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
3958         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
3959         * config/i386/i386.c (output_set_got): Likewise.
3960         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
3961         instead of a MINUS.
3962         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
3963         (legitimate_address_p): Likewise.
3964         (output_pic_addr_const): Likewise.
3965         (output_addr_const_extra): Likewise.
3966         (ix86_delegitimize_address): Expect darwin_local_data_pic to
3967         match an UNSPEC rather than a MINUS.
3968         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
3969         (builtin_setjmp_receiver): Use machopic_gen_offset.
3970         * config/i386/predicates.md (pic_symbolic_operand): Handle
3971         UNSPEC_MACHOPIC_OFFSET.
3973         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
3974         Use machopic_gen_offset and machopic_operand_p.
3975         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
3976         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
3977         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
3978         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
3979         Set crtl->uses_pic_offset_table.
3981 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3983         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
3984         Declare.
3985         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
3986         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
3987         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
3988         (constant_pool_expr_p): Use split_const and check the base.
3989         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
3990         instead of a MINUS.
3991         (legitimate_constant_pool_address_p): Check toc_relative_p
3992         instead of constant_pool_expr_p.
3993         (print_operand_address): Always use output_addr_const for
3994         constant pool addresses.
3995         (rs6000_output_addr_const_extra): New function.
3996         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
3998 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
4000         PR middle-end/37535
4002         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
4003         (mark_ref_live, mark_ref_dead): Use them.
4004         (def_conflicts_with_inputs_p): Remove.
4005         (mark_early_clobbers): New function.
4006         (process_bb_node_lives): Call preprocess_constraints and
4007         mark_early_clobbers.
4009         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
4011 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
4013         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
4014         lib with -mthread switch.
4016 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
4018         PR c++/37410
4019         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
4020         function in two, making it call a new and reusable
4021         dwarf2out_imported_module_or_decl() that takes the containing
4022         BLOCK of the declaration in argument.
4023         (dwarf2out_imported_module_or_decl_real): New function.
4024         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
4025         IMPORTED_DECL in account.
4026         * tree.def: Added IMPORTED_DECL node type.
4027         * tree.h: Added accessors for IMPORTED_DECL nodes.
4028         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
4030 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4032         * doc/gimple.texi: Fix some typos, wrap some long lines,
4033         fix some broken wraps with continuations.
4034         * tree-ssa-reassoc.c: Fix comment typos.
4036 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4038         PR target/37603
4039         * pa.c (legitimize_pic_address): Force function labels to memory in
4040         word mode.
4042 2008-10-04  Anton Blanchard  <anton@samba.org>
4044         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
4045         (rs6000_split_atomic_op): Same.
4046         (rs6000_split_compare_and_swap): Same.
4047         (rs6000_split_compare_and_swapqhi): Same.
4049 2008-10-04  Richard Guenther  <rguenther@suse.de>
4051         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
4052         instead of pointer equality.
4053         (vn_nary_op_eq): Likewise.
4055 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4057         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT
4058         condition.
4059         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
4060         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
4062 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
4064         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
4065         Revert previous change.
4067 2008-10-03  Tom Tromey  <tromey@redhat.com>
4069         * stringpool.c (ggc_alloc_string): Terminate string.
4071 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
4073         * gimplify.c (gimplify_function_tree): For -finstrument-functions
4074         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
4075         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
4077         PR debug/37726
4078         * gimplify.c (declare_vars): Use gimple_bind_block instead of
4079         gimple_block.
4081 2008-10-03  Pascal Obry  <obry@adacore.com>
4083         * gcov.c (create_file_names): Properly handle UNIX and DOS
4084         directory separators.
4085         (make_gcov_file_name): Likewise + convert the ':' DOS drive
4086         separator to '~' to ensure clean filenames on Windows.
4088 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
4090         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
4091         Add a null terminator to the stripped name.
4093 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
4095         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
4096         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4097         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
4098         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
4099         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4100         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
4101         TARGET_SINGLE_FLOAT.
4103 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
4105         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
4107 2008-10-02  Richard Guenther  <rguenther@suse.de>
4109         PR middle-end/37713
4110         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
4111         and VECTOR_TYPE recurse with useless_type_conversion_p which
4112         properly handles void pointer conversion.
4114 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
4116         PR target/37528
4117         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
4118         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
4120 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4122         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4123         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
4124         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
4125         they translate to non builtins.
4126         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
4127         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
4128         __builtin_vec_promote, __builtin_vec_extract, and
4129         __builtin_vec_insert.
4130         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
4131         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
4132         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
4133         * config/rs6000/altivec.h (vec_extract): Define
4134         (vec_insert): Define.
4135         (vec_splats): Define.
4136         (vec_promote): Define.
4138 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4139             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
4140             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
4142         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
4143         Altivec intrinsics.
4144         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
4145         prototype.  Add new parameter, blk.
4146         Use BLKmode for the MEM if blk is true.
4147         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
4148         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
4149         ALTIVEC_BUILTIN_STVRXL.
4150         Update usage of altivec_expand_lv_builtin.
4151         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
4152         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
4153         (altivec_init_builtins): If compiling for the Cell, also define the
4154         cell VMX builtins.
4155         * config/rs6000/rs6000.h (rs6000_builtins): Define
4156         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
4157         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
4158         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
4159         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
4160         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
4161         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
4162         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
4163         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
4164         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
4165         UNSPEC_STVRX, and UNSPEC_STVRXL.
4166         (altivec_lvlx): New pattern.
4167         (altivec_lvlxl): New pattern.
4168         (altivec_lvrx): New pattern.
4169         (altivec_lvrxl): New pattern.
4170         (altivec_stvlx): New pattern.
4171         (altivec_stvlxl): New pattern.
4172         (altivec_stvrx): New pattern.
4173         (altivec_stvrxl): New pattern.
4174         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
4175         (vec_lvlxl): Likewise.
4176         (vec_lvrx): Define if PPU is defined.
4177         (vec_lvrxl): Likewise.
4178         (vec_stvlx): Define if PPU is defined.
4179         (vec_stvlxl): Likewise.
4180         (vec_stvrx): Define if PPU is defined.
4181         (vec_stvrxl): Likewise.
4183 2008-10-01  Geert Bosch  <bosch@adacore.com>
4185         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
4187 2008-10-01  Richard Guenther  <rguenther@suse.de>
4189         PR tree-optimization/37617
4190         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
4191         do not add to the NEW_SETS.
4193 2008-10-01  Richard Guenther  <rguenther@suse.de>
4195         PR middle-end/37285
4196         * tree-vrp.c (execute_vrp): If we optimized away the default
4197         case make sure to promote the label that got in place of it
4198         to a default case label.
4200 2008-10-01  Richard Henderson  <rth@redhat.com>
4202         PR tree-opt/35737
4203         * tree-complex.c (set_component_ssa_name): Don't optimize
4204         is_gimple_min_invariant values with ssa_names in abnormal phis.
4206 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
4208         PR tree-optimization/37662
4209         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
4210         commutative binary operation if they are in the wrong order and
4211         fold_build2 produces non-GIMPLE.
4213 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
4215         PR tree-optimization/37662
4216         PR tree-optimization/37663
4217         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
4218         get_value_range with non-SSA_NAME.  Don't assert operands have been
4219         folded, instead just bail out.
4221 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4223         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
4225 2008-09-30  Richard Guenther  <rguenther@suse.de>
4227         PR middle-end/37491
4228         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
4229         build restrict-qualified pointers.
4230         (vectorizable_store): Move alias check later.
4231         (vectorizable_load): Likewise.
4233 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
4235         * c-common.c (empty_if_body_warning): Remove.
4236         * c-common.h (empty_if_body_warning): Remove.
4237         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
4238         here the -Wempty-body warning for `if' and `else' statements.
4239         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
4241 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
4243         * config/i386/i386.opt: Add msse2avx.
4245         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
4246         * config/i386/linux64.h (ASM_SPEC): Likewise.
4248         * doc/invoke.texi: Document -msse2avx.
4250 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
4252         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
4254 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
4256         * ifcvt.c (noce_emit_store_flag): If using condition from original
4257         jump, reverse it if if_info->cond was reversed.
4259 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
4261         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
4262         non-constant memory if it cannot be forced to constant memory.
4263         Overhaul surrounding code and factor out common condition.
4265 2008-09-29  Jeff Law <law@redhat.com>
4267         * reload1.c (alter_reg): Add missing curly braces.
4269 2008-09-29  Michael J. Eager  <eager@eagercon.com>
4271         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
4272         are easy.
4273         * config/rs6000/rs6000.c (rs6000_override_options): Move
4274         rs6000_init_hard_regno_mode_ok after all options changed.
4275         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
4276         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
4277         -msimple-fpu flags.  Add warning messages if single FP not configured.
4278         (rs6000_file_start): Output gnu_attribute for single-float.
4279         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
4280         (rs6000_legitimize_address): Likewise.
4281         (rs6000_legitimize_reload_address): Likewise.
4282         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
4283         TARGET_SINGLE_FLOAT.
4284         (function_arg_advance): Likewise (partial conversion).
4285         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
4286         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
4287         TARGET_SINGLE_FLOAT.
4288         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
4289         (rs6000_emit_prologue): Likewise.
4290         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
4291         TARGET_SINGLE_FLOAT.
4292         (rs6000_libcall_value): Likewise.
4293         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
4294         (TARGET_DOUBLE_FLOAT): New default to 1
4295         (TARGET_SIMPLE_FPU): New default to 0
4296         (TARGET_SINGLE_FPU): New default to 0
4297         (TARGET_SINGLE_FLOAT_MODE): New.
4298         (TARGET_DOUBLE_FLOAT_MODE): New.
4299         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
4300         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
4301         UNITS_PER_FP_WORD
4302         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
4303         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4304         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
4305         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
4306         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
4307         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
4308         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
4309         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
4310         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4311         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
4312         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
4313         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
4314         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
4315         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
4316         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
4317         cmptf_internal1, *cmptf_internal2): Condition on
4318         TARGET_DOUBLE_FLOAT.
4319         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
4320         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
4321         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
4322         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
4323         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
4324         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
4325         TARGET_SINGLE_FLOAT.
4326         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
4327         * config/rs6000/rs6000.opt (-msingle-float): New.
4328         (-mdouble-float): New.
4329         (-msimple-fpu): New.
4330         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4331         -msingle-float, -mdouble-float, -msimple-fpu options.
4332         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4333         _SOFT_DOUBLE for -msingle-float.
4334         * config.gcc: New config for target=powerpc-xilinx-eabi.
4336 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
4338         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
4339         have exit and entry.
4340         (new_scop): Take entry and exit edge to define new SCoP.
4341         (sd_region_p): New structure used during SCoP detection.
4342         (move_scops): Delete.
4343         (move_sd_regions): New.
4344         (scopdet_info): Change the definition from edges back to basic_blocks.
4345         (scopdet_edge_info):  Work on basic_blocks and rename to
4346         scopdet_basic_block_info.
4347         (split_difficult_bb): At the moment removed. We should later
4348         add it at another place.
4349         (build_scops_1): Work on basic_blocks.
4350         (bb_in_sd_region): New.
4351         (find_single_entry_edge): New.
4352         (find_single_exit_edge): New.
4353         (create_single_entry_edge): New.
4354         (sd_region_without_exit): New.
4355         (create_single_exit_edge): New.
4356         (unmark_exit_edges): New.
4357         (mark_exit_edges): New.
4358         (create_sese_edges): New.
4359         (build_graphite_scops): New.
4360         (build_scops): Make SCoPs SESE.
4361         (limit_scops): Use the new functions.
4363 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
4365         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
4367 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4369         PR target/37640
4370         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
4371         address to a register before taking the lower part.
4373 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4375         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
4376         for SHmedia.
4378 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4379             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
4381         PR tree-opt/36891
4382         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
4383         the newly created variable.
4384         Create a VECTOR_CST of all 1s for vector types.
4386 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
4388         PR middle-end/36575
4389         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
4391 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
4393         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
4394         order to convert between modes.
4395         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
4397 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4399         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
4400         if needed.
4402 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4404         Revert:
4405         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4406         * ira-lives.c:...
4407         * doc/rtl.texi:...
4409 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
4411         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
4412         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
4413         them to yield false with MIPS16.
4415 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
4417         PR middle-end/37275
4418         * dwarf2out.c (tls_mem_loc_descriptor): New function.
4419         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
4420         mem_loc_descriptor failed.  Accept UNSPEC.
4421         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
4422         fail if one of the loc_descriptor calls for pieces failed.
4423         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
4424         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
4425         if loc_descriptor_from_tree_1 on offset failed.
4427         PR middle-end/37576
4428         * opts.c (common_handle_option): Don't call print_specific_help with
4429         CL_SAVE as first argument.
4431 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
4432             Steve Ellcey  <sje@cup.hp.com>
4434         * configure: Regenerate for new libtool.
4435         * aclocal.m4: Ditto.
4437 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
4439         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
4440         alias set on MEM when saving stack pointer.
4441         * config/rs6000/rs6000.md (allocate_stack): Likewise
4443 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
4445         PR tree-optimization/37574
4446         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
4447         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
4448         instead of vector_type for constants. Take computation out of loop.
4449         (vect_get_vec_def_for_operand): Use only vectype for constant case,
4450         and use only vector_type for invariant case.
4451         (get_initial_def_for_reduction): Use vectype instead of vector_type.
4453 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
4455         PR c/37645
4456         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
4457         the decl is a VAR_DECL or FUNCTION_DECL.
4459 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4461         PR middle-end/37535
4462         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
4463         (mark_ref_live, mark_ref_dead): Use them.
4464         (def_conflicts_with_inputs_p): Remove.
4465         (mark_early_clobbers): New function.
4466         (process_bb_node_lives): Call preprocess_constraints and
4467         mark_early_clobbers.
4469         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
4471 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4473         PR middle-end/37448
4474         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
4475         (ira_compress_allocno_live_ranges): New prototype.
4477         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
4478         (coalesced_allocnos_living_at_program_points): New.
4479         (coalesced_allocnos_live_at_points_p,
4480         set_coalesced_allocnos_live_points): New functions.
4481         (coalesce_spill_slots): Rewrite.
4483         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
4484         ira_compress_allocno_live_ranges): New functions.
4486         * ira-build.c (ira_flattening): Call
4487         ira_compress_allocno_live_ranges.
4488         (ira_build): Ditto.
4490 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
4492         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
4493         optimization.
4495 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
4497         * combine.c (make_compound_operation): Handle the 'E' format.
4498         (count_rtxs): Likewise.
4499         (update_table_tick): Likewise.
4500         (get_last_value_validate): Likewise.
4502 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
4504         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
4506 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
4508         * matrix-reorg.c (transform_allocation_sites): Initializers
4509         added to avoid the warning.
4511 2008-09-25  Martin Jambor  <mjambor@suse.cz>
4513         * cgraph.c (free_nodes): New variable.
4514         (NEXT_FREE_NODE): New macro.
4515         (cgraph_create_node): Reuse nodes from the free list.  Do not
4516         update uid if doing so.
4517         (cgraph_remove_node): Add the node to the free list.
4519 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
4521         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
4523 2008-09-24  Richard Henderson  <rth@redhat.com>
4525         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
4526         * unwind-dw2.c (execute_stack_op): Handle it.
4528 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
4530         Revert:
4531         2008-09-24  Michael J. Eager  <eager@eagercon.com>
4533 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
4535         * c-common.c (fname_decl): New location argument.
4536         * c-common.h (fname_decl): Same.
4537         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
4538         {warning,error}.
4539         (c_parser_typeof_specifier): Same.
4540         (c_parser_parms_list_declarator): Same.
4541         (c_parser_asm_string_literal): Same.
4542         (c_parser_compound_statement_nostart): Same.
4543         (c_parser_label): Same.
4544         (c_parser_do_statement): Same.
4545         (c_parser_asm_statement): Same.
4546         (c_parser_unary_expression): Same.
4547         (c_parser_sizeof_expression): Same.
4548         (c_parser_postfix_expression): Same.
4549         (c_parser_pragma): Same.
4550         (c_parser_omp_clause_collapse): Same.
4551         (c_parser_omp_clause_num_threads): Same.
4552         (c_parser_omp_clause_schedule): Same.
4553         (c_parser_omp_all_clauses): Same.
4554         (c_parser_omp_sections_scope): Same.
4555         (c_parser_omp_for_loop): Same.  Pass condition's location to
4556         c_objc_common_truthvalue_conversion.
4557         (c_parser_enum_specifier): Remove comment.
4559 2008-09-24  Michael J. Eager  <eager@eagercon.com>
4561         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
4562         are easy.
4563         * config/rs6000/rs6000.c (rs6000_override_options): Move
4564         rs6000_init_hard_regno_mode_ok after all options changed.
4565         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
4566         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
4567         -msimple-fpu flags.  Add warning messages if single FP not configured.
4568         (rs6000_file_start): Output gnu_attribute for single-float.
4569         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
4570         (rs6000_legitimize_address): Likewise.
4571         (rs6000_legitimize_reload_address): Likewise.
4572         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
4573         TARGET_SINGLE_FLOAT.
4574         (function_arg_advance): Likewise.
4575         (function_arg): Likewise.
4576         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
4577         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
4578         TARGET_SINGLE_FLOAT.
4579         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
4580         (rs6000_emit_prologue): Likewise.
4581         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
4582         TARGET_SINGLE_FLOAT.
4583         (rs6000_libcall_value): Likewise.
4584         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
4585         (TARGET_DOUBLE_FLOAT): New default to 1
4586         (TARGET_SIMPLE_FPU): New default to 0
4587         (TARGET_SINGLE_FPU): New default to 0
4588         (TARGET_SINGLE_FLOAT_MODE): New.
4589         (TARGET_DOUBLE_FLOAT_MODE): New.
4590         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
4591         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
4592         UNITS_PER_FP_WORD
4593         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
4594         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4595         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
4596         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
4597         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
4598         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
4599         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
4600         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
4601         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4602         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
4603         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
4604         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
4605         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
4606         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
4607         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
4608         cmptf_internal1, *cmptf_internal2): Condition on
4609         TARGET_DOUBLE_FLOAT.
4610         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
4611         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
4612         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
4613         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
4614         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
4615         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
4616         TARGET_SINGLE_FLOAT.
4617         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
4618         * config/rs6000/rs6000.opt (-msingle-float): New.
4619         (-mdouble-float): New.
4620         (-msimple-fpu): New.
4621         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4622         -msingle-float, -mdouble-float, -msimple-fpu options.
4623         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4624         _SOFT_DOUBLE for -msingle-float.
4625         * config.gcc: New config for target=powerpc-xilinx-eabi.
4627 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4629         * config/sparc/constraints.md: New file.
4630         * config/sparc/sparc.md: Include it.
4631         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
4632         (sparc_extra_constraint_check): Delete.
4633         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
4634         (memory_ok_for_ldd): New predicate.
4635         (sparc_extra_constraint_check): Delete.
4636         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
4637         (CONST_OK_FOR_LETTER_P): Likewise.
4638         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
4639         (EXTRA_CONSTRAINT): Likewise.
4641 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
4643         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
4645 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4647         * alias.c (find_base_value): Use FIND_BASE_TERM.
4648         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
4650 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4652         * config/i386/i386.c: Include cselib.h.
4653         (ix86_pic_register_p): New function.
4654         (ix86_delegitimize_address): Use it to check for the PIC register.
4656 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4658         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
4659         * config/i386/i386.c (ix86_find_base_term): Don't check for
4660         SYMBOL_REF and LABEL_REF.
4662 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4664         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
4665         constant PLUS in a CONST.
4667 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
4669         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
4670         check for sibcall support for w64.
4672 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4674         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
4676 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
4678         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
4679         parser_build_binary_op.
4680         * c-decl.c (build_enumerator): Pass location to build_binary_op.
4681         * c-typeck.c (build_array_ref): Same.
4682         (parser_build_unary_op): New location argument.
4683         (pointer_diff): Pass location to build_binary_op,
4684         c_objc_common_truthvalue_conversion.
4685         (build_modify_expr): Same.
4686         (build_unary_op): New location argument.
4687         (build_binary_op): New location argument.
4688         (c_objc_common_truthvalue_conversion): Pass location to
4689         c_*common_truthvalue_conversion.
4690         * c-convert.c (convert): Same.
4691         * c-common.c (binary_op_error): New location argument.
4692         (pointer_int_sum): Pass location to build_binary_op.
4693         (c_common_truthvalue_conversion): New location argument.
4694         (warn_for_sign_compare): Same.
4695         * c-common.h: Add location argument to c_common_truthvalue_conversion,
4696         binary_op_error, build_binary_op, warn_for_sign_compare.
4697         * c-parser.c (c_parser_condition): Pass location to
4698         c_*common_truthvalue_conversion.
4699         (c_parser_conditional_expression): Save condition's location and pass
4700         it on down.
4701         (c_parser_binary_expression): Same, but for the binary operator's
4702         location.
4703         (c_parser_omp_for_loop): Pass location to
4704         c_objc_common_truthvalue_conversion.
4706 2008-09-23  Martin Jambor  <mjambor@suse.cz>
4708         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
4709         (cgraph_node_remove_callees): New temporary f.  Hold the next item
4710         in f when looping.
4711         (cgraph_node_remove_callers): Likewise.
4713         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
4714         (ipa_node_removal_hook): Likewise.
4716         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
4717         gimple_call_copy_skip_args and moved to the gimple_call section.
4718         * gimple.c (gimple_copy_call_skip_args): Renamed to
4719         gimple_call_copy_skip_args.  Changed al users.
4721 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
4723         * ira-color.c (start_allocno_priorities): Rename to
4724         setup_allocno_priorities.  Use costs and
4725         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
4726         range lengths.  Get rid off doubles.
4727         (ira_fast_allocations): Call start_allocno_priorities.
4729 2008-09-22  David Daney  <ddaney@avtrex.com>
4731         PR target/37593
4732         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
4733         register if TARGET_LONG_CALLS.
4735 2008-09-22  Richard Guenther  <rguenther@suse.de>
4737         PR tree-optimization/37145
4738         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
4739         value-numbering union accesses with their offset and size only.
4740         (visit_reference_op_load): Fix simplification of inserted conversions.
4741         * tree-ssa-pre.c (find_or_generate_expression): Do not
4742         recursively generate expressions if running FRE.
4744 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
4746         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
4747         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
4748         New patterns.
4750 2008-09-22  Richard Guenther  <rguenther@suse.de>
4752         PR tree-optimization/37145
4753         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
4754         (phi_translate_1): Constant fold references.
4756 2008-09-22  Ira Rosen  <irar@il.ibm.com>
4758         PR tree-optimization/37482
4759         * tree-vectorizer.h (struct _slp_instance): Add new field.
4760         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
4761         (get_earlier_stmt): New function.
4762         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
4763         function.
4764         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
4765         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
4766         asserts that GSI points to the scalar statement being vectorized.
4767         Set new statement location according to GSI.
4768         (vect_schedule_slp_instance): Use GSI of
4769         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
4771 2008-09-21  Jan Hubicka  <jh@suse.cz>
4773         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
4774         (ipcp_insert_stage): Update dead_nodes bitmap.
4776 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
4778         PR target/37528
4779         * config/i386/t-cygming (SHLIB_LC): Remove.
4780         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
4781         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
4783 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
4785         PR middle-end/37170
4786         PR middle-end/37280
4787         * final.c (mark_symbol_ref_as_used): New helper function.
4788         (output_operand): Instead of just looking inside MEMs for
4789         SYMBOL_REFs, use new helper function and for_each_rtx.
4790         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
4791         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
4792         Make head comment more general.
4793         * config/darwin.c (machopic_output_indirection): Handle weak
4794         references here, like in assemble_external.
4796 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
4798         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
4799         (sparc_emit_float_lib_cmp): Change return type.
4800         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
4801         (gen_compare_operator): New function.
4802         (sparc_emit_float_lib_cmp): Return the new operator to be used in
4803         the comparison sequence.  Minor tweaks.
4804         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
4805         that the final operator and the result of sparc_emit_float_lib_cmp
4806         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
4807         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
4808         buneq, bunge, bunle, bltgt): Assert that the final operator and the
4809         result of sparc_emit_float_lib_cmp match for software TFmode.
4810         (movqicc, movhicc, movsicc, movdicc): Merge into...
4811         (mov<I:mode>cc): ...this.
4812         (movsfcc, movdfcc, movtfcc): Merge into...
4813         (mov<F:mode>cc): ...this.
4814         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
4815         into...
4816         (mov<I:mode>_cc_v9): ...this.
4817         (movdi_cc_sp64_trunc): Delete.
4818         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
4819         movdi_cc_reg_sp64): Merge into...
4820         (mov<I:mode>_cc_reg_sp64): ...this.
4821         (movsf_cc_sp64): Rename into...
4822         (movsf_cc_v9): ...this.
4823         (movdf_cc_sp64): Rename into...
4824         (movdf_cc_v9): ...this.
4825         (movtf_cc_hq_sp64): Rename into...
4826         (movtf_cc_hq_v9): ...this.
4827         (movtf_cc_sp64): Rename into...
4828         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
4830 2008-09-21  Diego Novillo  <dnovillo@google.com>
4832         * doc/gccint.texi: Include generic.texi and gimple.texi.
4833         Re-order index.
4834         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
4835         (GIMPLE): Move to gimple.texi.
4836         (Annotations): Remove references to to stmt_ann_t and
4837         ssa_name_ann_t.
4838         (SSA Operands): Rename from 'Statement Operands'.
4839         * doc/generic.texi: New.
4840         * doc/gimple.texi: New.
4841         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
4842         * Makefile.in (TEXI_GCCINT_FILES):
4843         * gimple.c (gimple_copy_call_skip_args): Rename from
4844         giple_copy_call_skip_args.  Update all users.
4845         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
4847 2008-09-21  Ira Rosen  <irar@il.ibm.com>
4849         PR tree-optimization/37539
4850         * tree-vect-transform.c (vect_transform_strided_load): Save vector
4851         statement in related statement field only for the first load of the
4852         group of loads with the same data reference.
4854 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
4856         * config/mips/mips.h (TUNE_OCTEON): New macro.
4857         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
4858         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
4859         * config/mips/octeon.md: New file.
4860         * config/mips/mips.md: Include octeon.md.  Restore
4861         semi-alphabetical order of include files.
4863 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
4865         PR target/37571
4866         * config/i386/i386.md (*jcc_fused_1): Removed.
4867         (*jcc_fused_2): Likewise.
4868         (*jcc_fused_3): Likewise.
4869         (*jcc_fused_4): Likewise.
4871 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
4873         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
4874         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
4875         * target.h (gcc_target): Add ira_cover_classes.
4876         * ira.c: Remove IRA_COVER_CLASSES guards.
4877         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
4878         instead of IRA_COVER_CLASSES.
4879         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
4880         (setup_class_translate): Likewise.
4881         (setup_reg_class_intersect_union): Likewise.
4882         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
4883         test of targetm.ira_cover_classes.
4884         * opts.c (decode_options): Use targetm.ira_cover_classes instead
4885         of IRA_COVER_CLASSES.
4886         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
4887         (TARGET_INITIALIZER): Include it.
4888         * targhooks.h (default_ira_cover_classes): Declare.
4889         * targhooks.c (default_ira_cover_classes): New function.
4891 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
4893         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
4895 2008-09-19  Ian Lance Taylor  <iant@google.com>
4897         * varasm.c (narrowing_initializer_constant_valid_p): Return
4898         NULL_TREE if ENDTYPE is not an integer.
4900 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4902         PR tree-opt/30930
4903         * tree-ssa.c (execute_update_addresses_taken): Also update
4904         DECL_GIMPLE_REG_P for vector and complex types.
4906 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
4907             Jan Hubicka  <jh@suse.cz>
4909         PR middle-end/37567
4910         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
4911         empty before freeing them.
4912         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
4914 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
4916         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
4917         * config/xtensa/predicates.md (tls_symbol_operand): New.
4918         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
4919         (TARGET_CANNOT_FORCE_MEM): Define.
4920         (xtensa_tls_symbol_p): New.
4921         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
4922         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
4923         (xtensa_tls_module_base): New.
4924         (xtensa_call_tls_desc): New.
4925         (xtensa_legitimize_tls_address): New.
4926         (xtensa_legitimize_address): Handle TLS symbols.
4927         (xtensa_tls_referenced_p_1): New.
4928         (xtensa_tls_referenced_p): New.
4929         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
4930         UNSPEC_DTPOFF.
4931         (XTENSA_BUILTIN_THREAD_POINTER): New.
4932         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
4933         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
4934         builtin.  Add declarations for __builtin_thread_pointer and
4935         __builtin_set_thread_pointer.
4936         (xtensa_fold_builtin): Recognize new builtins.
4937         (xtensa_expand_builtin): Expand new builtins.
4938         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
4939         (TARGET_THREADPTR): Define.
4940         (HAVE_AS_TLS): Define default value.
4941         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
4942         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
4943         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
4944         (UNSPECV_SET_TP): New.
4945         (sym_TPOFF, sym_DTPOFF): New.
4946         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
4947         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
4948         * configure: Regenerated.
4950 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
4952         PR target/37394
4953         * config/ia64/ia64.c (ia64_optimization_options): Move
4954         checking and setting flag_schedule_insns_after_reload and
4955         ia64_flag_schedule_insns2 back to ...
4956         (ia64_override_options): Here.
4958 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4960         PR rtl-opt/37451
4961         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
4962         zero extend count after the correction to it is done.
4963         (doloop_optimize): Update call to doloop_modify, don't zero extend
4964         count before call.
4966 2008-09-18  Martin Jambor  <mjambor@suse.cz>
4968         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
4970         * ipa-prop.c: Correct comments.
4971         * ipa-prop.h: Likewise.
4973 2008-09-18  Jan Hubicka  <jh@suse.cz>
4975         PR middle-end/37448
4976         * ipa-reference.c (ipa_reference_local_vars_info_d,
4977         ipa_reference_global_vars_info_d,
4978         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4979         ipa_reference_vars_info_t): Move here from ipa-reference.h
4980         (node_duplication_hook_holder, node_removal_hook_holder): New.
4981         (get_reference_vars_info_from_cgraph): Rename to ...
4982         (get_reference_vars_info): ... this one, use cgraph uids.
4983         (get_local_reference_vars_info, get_global_reference_vars_info):
4984         Use cgraph instead of decl.
4985         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4986         Remove.
4987         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
4988         ipa_reference_get_written_global,
4989         ipa_reference_get_not_written_global): Use cgraph argument.
4990         (check_call): Simplify avail check.
4991         (scan_stmt_for_static_refs): Update.
4992         (propagate_bits): Update.
4993         (merge_callee_local_info): Remove.
4994         (init_function_info): Use cgraph nodes.
4995         (clean_function_local_data): Break out from ...
4996         (clean_function): ... here.
4997         (copy_local_bitmap, copy_global_bitmap): New functions.
4998         (duplicate_node_data, remove_node_data): New functions.
4999         (generate_summary): Register hooks; use visibility instead of
5000         master clones.
5001         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
5002         * ipa-reference.h (ipa_reference_local_vars_info_d,
5003         ipa_reference_global_vars_info_d,
5004         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
5005         ipa_reference_vars_info_t): Move to ipa-reference.c
5006         (ipa_reference_get_read_local, ipa_reference_get_written_local):
5007         Remove.
5008         (ipa_reference_get_read_global, ipa_reference_get_written_global,
5009         ipa_reference_get_not_read_global,
5010         ipa_reference_get_not_written_global): Update prototype.
5011         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
5012         (init_state): Remove.
5013         (node_duplication_hook_holder, node_removal_hook_holder): New.
5014         (get_function_state, set_function_state): Use VECtor.
5015         (analyze_function): Check body availability.
5016         (add_new_function): Likewise.
5017         (duplicate_node_data, remove_node_data): New.
5018         (generate_summary): Register hooks; do not care about clones.
5019         (propafate): Do not care about clones; recursive functions are
5020         not looping.
5021         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
5022         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
5023         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
5024         static.
5025         * tree-flow.h (function_ann_d): Remove reference_vars_info.
5026         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
5027         Update call of ipa-reference accesors.
5029 2008-09-18  Simon Baldwin  <simonb@google.com>
5031         * c-opts.c (c_common_handle_option): Add handling for
5032         -Wbuiltin-macro-redefined command line option.
5033         * c.opt: Added builtin-macro-redefined option.
5034         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
5035         documentation.
5037 2008-09-18  Richard Guenther  <rguenther@suse.de>
5039         PR tree-optimization/37258
5040         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
5041         and signedness for integral types.
5042         (vn_phi_eq): Require compatible types.
5044 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
5046         PR debug/34037
5047         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
5048         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
5049         VAR_DECL.
5050         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
5051         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
5052         ggc_free other TREE_LIST nodes from that chain.
5053         * function.c (instantiate_decls): Instantiate also DECL_RTL
5054         of vars in cfun->local_decls, free that list afterwards.
5056 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
5058         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
5059         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
5061 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
5063         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
5064         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
5066 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
5068         PR tree-optimization/37102
5069         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
5070         from a node. Check to see if another PHI is dead.
5071         (eliminate_useless_phis): Rename from eliminate_virtual_phis and
5072         remove real PHIs which have no uses.
5073         (rewrite_out_of_ssa): Call eliminate_useless_phis.
5075 2008-09-18  Richard Guenther  <rguenther@suse.de>
5077         PR middle-end/37284
5078         * tree-cfg.c (remove_useless_stmts_1): Remove
5079         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
5081 2008-09-18  Nick Clifton  <nickc@redhat.com>
5083         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
5084         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
5085         to frv_secondary_reload_class.
5086         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
5087         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
5088         (frv_secondary_reload_class): Omit unused parameter.
5089         (frv_secondary_reload): New function.  Handle the case when
5090         secondary_reload_class() is called before the reload_(in|out)
5091         _optabs have been initialised.
5092         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
5093         unused parameter.
5094         * config/frv/frv.md: Define an exclusion set between fr550_m0
5095         and fr550_f0.
5097 2008-09-18  Richard Guenther  <rguenther@suse.de>
5099         PR tree-optimization/37456
5100         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
5101         want to insert after ends a BB insert on the single fallthru
5102         outgoing edge.
5104 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
5106         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
5107         Mention -march=z9-109, z9-ec and z10.
5109 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
5111         PR rtl-optimization/37544
5112         * regrename.c (maybe_mode_change): Exit early when copy_mode
5113         is narrower than orig_mode and narrower than new_mode.
5115 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
5117         PR middle-end/37499
5118         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
5120         * sched-rgn.c (ref_counts): Remove.
5121         (insn_referenced): New static variable.
5122         (INSN_REF_COUNT): Remove.
5123         (sched_run_compute_dependencies): Use insn_referenced instead of
5124         INSN_REF_COUNT.
5125         (add_branch_dependences): Likewise.  Delete dead assignment.
5127 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
5129         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
5130         consumer is an asm.  Add comment why this is important.
5131         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
5132         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
5134 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
5136         * expr.c (emit_group_store): Do not shift before moving via a
5137         stack slot.
5139 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
5141         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
5142         from aggregate to non-aggregate type if the bit pattern is not fully
5143         preserved afterwards.
5145 2008-09-17  Richard Guenther  <rguenther@suse.de>
5147         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
5148         (verify_gimple_assign): ... this.  Split into ...
5149         (verify_gimple_assign_unary): ... this,
5150         (verify_gimple_assign_binary): ... that,
5151         (verify_gimple_assign_single): ... and this.
5152         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
5153         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
5154         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
5155         (verify_types_in_gimple_reference): Be forgiving with
5156         VIEW_CONVERT_EXPRs.
5157         (verify_gimple_phi): Deal with virtual operands.
5159         * tree.def (PREDICT_EXPR): Change to tcc_expression.
5161 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5163         * tree.c (get_callee_fndecl): Don't call the language hook.
5164         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
5165         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
5166         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
5168 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
5170         * tree.c (protected_set_expr_location): Don't unnecessarily
5171         check for error_mark_node.
5173 2008-09-17  Art Haas  <ahaas@impactweather.com>
5175         * ipa-reference.c (analyze_function): Declare step only if
5176         ENABLE_CHECKING is defined.
5178 2008-09-17  Jan Hubicka  <jh@suse.cz>
5180         PR c++/18071
5181         * tree.h (DECL_INLINE): remove.
5182         (DECL_DECLARED_INLINE_P): Update docs.
5183         (DECL_NO_INLINE_WARNING_P): new.
5184         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
5185         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
5187 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
5188             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5190         PR bootstrap/37441
5191         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
5192         false.
5194 2008-09-17  Jan Hubicka  <jh@suse.cz>
5196         * ipa-reference.c (ipa_obstack): Remove.
5197         (local_info_obstack, global_info_obstack): New.
5198         (add_static_var): We now handle variables only.
5199         (mark_address_taken, mark_load, mark_store): New functions based on ...
5200         (check_operand): ... remove.
5201         (get_asm_stmt_operands): Rename to ...
5202         (check_asm_memory_clobber): ... this. Look only for memory clobber.
5203         (scan_stmt_for_static_refs): Rewrite.
5204         (scan_op_for_static_refs): Rename to ...
5205         (scan_initializer_for_static_refs): do not look for VAR_DECL
5206         initializers; stop recursion on types and decls.
5207         (ipa_init): Use proper obstacks.
5208         (analyze_variable): Use scan_initializer_for_static_refs.
5209         (init_function_info): Use local obstack.
5210         (analyze_function): Simplify.
5211         (add_new_function): We don't need visited_nodes obstack.
5212         (generate_summary): Use proper obstacks; cleanup after propagation.
5214 2008-09-17  Richard Guenther  <rguenther@suse.de>
5216         PR middle-end/37385
5217         PR tree-optimization/37491
5218         * alias.c (get_alias_set): Use the canonical type.
5219         * tree-vect-transform.c (vectorizable_store): Use the type of
5220         the lhs for the vector type.  Adjust checking.
5221         (vectorizable_load): Adjust checking.
5223 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
5224             Adam Nemet  <anemet@caviumnetworks.com>
5226         PR rtl-optimization/37483
5227         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
5228         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
5229         Rearrange code to better match the original comment.  Check
5230         t_unconditional first.  Improve comment.
5232 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
5234         PR c/37529
5235         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
5236         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
5238         PR c++/37530
5239         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
5240         GIMPLE_TRY if cleanup sequence is empty.
5242 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5244         PR middle-end/37263
5245         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
5246         eliminate IV if the cost are the same.
5248 2008-09-16  Richard Guenther  <rguenther@suse.de>
5250         PR middle-end/37380
5251         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
5252         if not necessary.
5254 2008-09-16  Richard Guenther  <rguenther@suse.de>
5256         PR tree-optimization/37508
5257         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
5259 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5261         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
5263 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5265         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
5266         use gen_floatdidf2 directly.
5267         (floatunssidf2): Likewise.
5268         (floatsidf_ppc64_mfpgpr): Remove.
5269         (floatsidf_ppc64): Remove.
5270         (floatunssidf_ppc64): Remove.
5272 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
5274         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
5275         rather than update_cost_queue.
5277         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
5278         in every call starting with the second one, instead of only when
5279         alias_bitmap_obstack.elements != NULL.
5281         * tree-predcom.c (filter_suitable_components): Free all refs in
5282         act->refs vector before calling release_component.
5283         (add_ref_to_chain): Free ref if not adding it to chain->refs.
5285         * tree-data-ref.c (free_subscripts): Free all subscript objects.
5287         * tree-loop-linear.c (linear_transform_loops): Initialize
5288         lambda_obstack only after calling perfect_loop_nest_depth.
5289         Goto free_and_continue instead of just continue for later failures.
5291         PR middle-end/37479
5292         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
5294         PR libmudflap/36397
5295         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
5297 2008-09-14  Andreas Schwab  <schwab@suse.de>
5299         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
5301 2008-09-14  Jan Hubicka  <jh@suse.cz>
5303         * invoke.texi (-fconserve-stack): Document.
5304         * opts.c (decode_options): Handle conserve_stack.
5305         * common.opt (fconvserve_stack): New.
5307 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
5309         * config.host: Add x-aix to host_xmake_file.
5310         * config/rs6000/t-aix52: Do not override LDFLAGS.
5311         * config/rs6000/x-aix: New file.
5313 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
5315         PR target/19636
5316         PR target/24894
5317         PR target/31644
5318         PR target/31786
5319         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
5320         is not recognized as a valid register usage. Allow REG_X to be used
5321         as a base pointer.
5322         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
5323         forces a reload when using a base register.
5325 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
5327         * config/i386/cygming-crtend.c (register_frame_ctor): If
5328         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
5329         directly with atexit.
5330         (deregister_frame_ctor): Rename to ...
5331         (deregister_frame_dtor): Use to call __gcc_deregister_frame
5332         if !DEFAULT_USE_CXA_ATEXIT.
5334 2008-09-13  Jan Hubicka  <jh@suse.cz>
5336         * cgraph.c: Include value-prof.h
5337         * Makefile.in (cgraph.o): Add value-prof.h dependency.
5339 2008-09-13  Jan Hubicka  <jh@suse.cz>
5341         PR middle-end/32581
5342         * tree-profile.c (add_abnormal_goto_call_edges): New function.
5343         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
5344         tree_gen_one_value_profiler, tree_gen_average_profiler,
5345         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
5347 2008-09-13  Jan Hubicka  <jh@suse.cz>
5349         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
5350         too many bytes on misalligned blocks.
5352 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5354         * doc/cfg.texi: Fix some typos.
5355         * doc/extend.texi: Likewise.
5356         * doc/install.texi: Likewise.
5357         * doc/invoke.texi: Likewise.
5358         * doc/rtl.texi: Likewise.
5359         * doc/tree-ssa.texi: Likewise.
5361 2008-09-13  Richard Guenther  <rguenther@suse.de>
5363         PR middle-end/30141
5364         * tree-nested.c (finalize_nesting_tree_1): Generate valid
5365         gimple stores for memory rhs.
5367 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
5369         PR rtl-optimization/37489
5370         * cse.c (fold_rtx): Don't return const_true_rtx for float
5371         compare if FLOAT_STORE_FLAG_VALUE is undefined.
5373 2008-09-13  Jan Hubicka  <jh@suse.cz>
5375         PR tree-optimization/37392
5376         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
5378 2008-09-13  Martin Jambor  <mjambor@suse.cz>
5379             Jan Hubicka  <jh@suse.cz>
5381         * cgraph.c (free_edges): New variable.
5382         (NEXT_FREE_EDGE): New macro.
5383         (cgraph_free_edge): New function.
5384         (cgraph_remove_edge): Call cgraph_remove_edge_1.
5385         (cgraph_node_remove_callees): Likewise.
5386         (cgraph_node_remove_callers): Likewise.
5387         (cgraph_create_edge): Reuse edges from the free list.  Do not
5388         update uid if doing so.
5389         (cgraph_remove_*_hook): Add free call.
5391 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
5393         * ira-color.c (conflict_allocno_vec): Delete.
5394         (update_cost_queue_elem): New structure.
5395         (update_cost_queue): New variable.
5396         (update_cost_queue_tail): Likewise.
5397         (update_cost_queue_elems): Likewise.
5398         (allocno_update_cost_check): Delete.
5399         (initiate_cost_update): Allocate update_cost_queue_elems
5400         instead of allocno_update_cost_check.
5401         (finish_cost_update): Update the free()s accordingly.
5402         (start_update_cost): New function.
5403         (queue_update_cost): Likewise.
5404         (get_next_update_cost): Likewise.
5405         (update_copy_costs_1): Inline into...
5406         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
5407         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
5408         once we've established they are equal.  Don't allocate update
5409         costs if there is nothing to add to them.
5410         (update_conflict_hard_regno_costs): Remove ALLOCNO and
5411         DIVISOR arguments.  Use a queue instead of recursive calls;
5412         process all the allocnos in the initial queue, rather than
5413         a single allocno.
5414         (assign_hard_reg): Use queue_update_cost instead of
5415         conflict_allocno_vec.  Queue coalesced allocnos instead
5416         of calling update_conflict_hard_regno_costs for each one.
5417         Just call update_conflict_hard_regno_costs once for the
5418         entire queue.
5419         (ira_color): Remove conflict_allocno_vec handling.
5421 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
5423         PR tree-optimization/37484
5424         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
5425         (save_var_name): Same.
5426         (initialize_cloog_names): Same.
5427         (initialize_cloog_names): Same.
5429 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
5431         * tree-scalar-evolution.c (set_instantiated_value): Set
5432         instantiated_below.
5434 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
5436         PR rtl-opt/37377
5438         * ira-build.c (common_loop_tree_node_dominator): Remove.
5439         (copy_live_ranges_to_removed_store_destinations): New function.
5440         (regno_top_level_allocno_map): Move to top level from ...
5441         (ira_flattening): ... here.  Use
5442         copy_live_ranges_to_removed_store_destinations.
5444         * ira-emit.c (generate_edge_moves): Fix a comment.
5446 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
5448         PR target/37466
5449         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
5450         scratch register after 'set' pattern.
5452 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5454         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
5455         information passed to mark_reg_pointer.
5456         * explow.c (force_reg): Likewise.
5458 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5460         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
5461         when building for the celledp architecture.
5463 2008-09-12  Richard Guenther  <rguenther@suse.de>
5465         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
5467 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
5469         PR rtl-optimization/37424
5470         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
5471         the regnos instead of the addresses.
5473 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
5475         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
5477 2008-09-11  Richard Guenther  <rguenther@suse.de>
5479         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
5480         entering the weaker equivalence recording.
5482         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
5484 2008-09-11  Jeff Law <law@redhat.com>
5486         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
5487         by assign_stack_local on the IRA path for stack slot sharing
5488         as well as the non-IRA path.
5490 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
5492         * config/i386/i386.h: Fix whitespace issues.
5494 2008-09-11  Martin Jambor  <mjambor@suse.cz>
5496         * ipa-prop.h (struct ipa_param_flags): Removed.
5497         (struct ipa_param_descriptor): New structure.
5498         (struct ipa_node_params): ipcp_lattices, param_decls and
5499         param_flags moved to ipa_param_description.
5500         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
5501         descriptors.  Renamed all users.
5502         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
5503         changed to access descriptors.  Renamed all users.
5504         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
5505         to access descriptors. Renamed all users.
5506         * ipa-cp.c (ipcp_init_cloned_node): Call
5507         ipa_initialize_node_params instead of ipa_count_formal_params and
5508         ipa_create_param_decls_array.
5509         (ipcp_analyze_node): Likewise.
5510         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
5511         descriptors.  Renamed all users.
5512         (ipcp_initialize_node_lattices): Remove allocation.
5513         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
5514         ipa_initialize_node_params instead of ipa_count_formal_params and
5515         ipa_create_param_decls_array.
5516         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
5517         ipa_populate_param_decls, made static, added parameter info,
5518         renamed mt to node, removed allocation, changed to use
5519         descriptors.
5520         (ipa_count_formal_params): Made static, added parameter info,
5521         renamed mt to node.
5522         (ipa_initialize_node_params): New function.
5523         (ipa_check_stmt_modifications): Changed to use descriptors.
5524         (ipa_detect_param_modifications): Removed allocation, changed to
5525         use descriptors.
5526         (ipa_note_param_call): Changed to use descriptors.
5527         (ipa_analyze_params_uses): Removed allocation.
5528         (ipa_free_node_params_substructures): Changed to use descriptors.
5529         (ipa_edge_duplication_hook): Use the unused attribute.
5530         (ipa_node_duplication_hook): Use the unused attribute, changed to
5531         use descriptors, changed to duplicate descriptors.
5533         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
5534         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
5535         indirect inlining.  Made static.
5536         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
5537         functions called only once.
5538         (cgraph_decide_recursive_inlining): Don't call
5539         ipa_propagate_indirect_call_infos, pass new_edges to
5540         cgraph_mark_inline_edge instead.
5541         (cgraph_decide_inlining_of_small_functions): Don't call
5542         ipa_propagate_indirect_call_infos, pass new_edges to
5543         cgraph_mark_inline_edge instead.
5544         (cgraph_decide_inlining): Don't call
5545         ipa_propagate_indirect_call_infos.
5546         * ipa-prop.c: Check that vectors are allocated.
5548         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
5549         iff a new cgraph edges have been created.
5550         (cgraph_decide_inlining): New variable redo_always_inline.
5551         Flattening and always_inlining loop until callgraph stabilizes.
5552         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
5553         true iff new cgraph edges have been created.
5554         (propagate_info_to_inlined_callees): Likewise.
5555         (ipa_propagate_indirect_call_infos): Likewise.
5557 2008-09-11  Richard Guenther  <rguenther@suse.de>
5559         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
5560         (set_prologue_iterations): Likewise.
5561         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
5562         Likewise.
5563         (vect_update_init_of_dr): Likewise.
5564         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
5565         type verification.
5566         * fold-const.c (fold_unary): Do not generate calculations
5567         in sub-types.
5569 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
5571         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
5572         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
5573         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
5575         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
5576         a bool.
5577         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
5578         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
5579         before finalizing the changes.
5580         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
5581         for BIT_IOR_EXPR.
5582         (simplify_truth_ops_using_ranges): New.
5583         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
5584         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
5585         whether a simplification was made.
5586         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
5587         use a switch statement and also call simplify_truth_ops_using_ranges.
5589 2008-09-11  Jan Hubicka  <jh@suse.cz>
5591         * ggc-common.c (loc_array): Make static.
5592         * dce.c (rest_of_handle_ud_dce): Free worklist.
5594 2008-09-11  Jan Hubicka  <jh@suse.cz>
5596         * cgraph.c (cgraph_release_function_body): Plug memory leak on
5597         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
5598         function so we are sure we do not dangle it forever.
5599         * function.c (outer_function_chain, find_function_data): Remove.
5600         (function_context_stack): New.
5601         (push_function_context, pop_function_context): Update.
5602         * function.h (struct function): Remove pointer outer.
5603         (outer_function_chain, find_function_data): Remove.
5604         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
5606 2008-09-11  Jan Hubicka  <jh@suse.cz>
5608         PR middle-end/37448
5609         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
5611 2008-09-11  Jan Hubicka  <jh@suse.cz>
5613         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
5615 2008-09-11  Jan Hubicka  <jh@suse.cz>
5617         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
5618         (free_var_map_entry): New function.
5619         (redirect_edge_var_map_destroy): Use it.
5621 2008-09-11  Jan Hubicka  <jh@suse.cz>
5623         PR middle-end/37448
5624         * tree-inline.c (add_lexical_block): Replace with ...
5625         (prepend_lexical_block): ... prepend at begginig.
5626         (remap_blocks): Use it and reverse later.
5627         (expand_call_inline): Use prepend_lexical_block.
5629 2008-09-11  Jan Hubicka  <jh@suse.cz>
5631         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
5633 2008-09-11  Jan Hubicka  <jh@suse.cz>
5635         * function.c (free_after_compilation): Call insn_locators_free.
5636         * cfglayout.c (insn_locators_free): New function.
5637         * rtl.h (insn_locators_free): Declare.
5639 2008-09-11  Jan Hubicka  <jh@suse.cz>
5641         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
5642         vector pointer.
5643         (cond_move_process_if_block): Update call.
5645 2008-09-11  Jan Hubicka  <jh@suse.cz>
5647         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
5648         * vec.c: Include hashtab.h
5649         (vec_descriptor, ptr_hash_entry): New structures.
5650         (vec_desc_hash, vec_ptr_map): New static variables.
5651         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
5652         register_overhead, free_overhead, vec_heap_free): New functions.
5653         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
5654         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
5655         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
5656         New functions.
5658 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5660         PR tree-optimization/37474
5661         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
5662         length of load permutation.
5664 2008-09-11  Andreas Schwab  <schwab@suse.de>
5666         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
5668 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
5670         PR target/37382
5671         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
5672         * dse.c (find_shift_sequence): Use extract_low_bits instead of
5673         simplify_gen_subreg.
5675 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5677         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
5678         for alias check.
5680 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5682         PR middle-end/37338
5683         * gimplify.c (gimplify_body): Call default_rtl_profile.
5685         PR target/36904
5686         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
5687         instead of tok->val.node if not expanding to something else.  Handle
5688         intervening CPP_PADDING tokens.
5689         (altivec_categorize_keyword): Remove unneeded comparisons.
5691 2008-09-10  Richard Guenther  <rguenther@suse.de>
5693         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
5695 2008-09-10  Richard Guenther  <rguenther@suse.de>
5697         PR middle-end/37432
5698         * tree-inline.c (insert_init_stmt): Make sure to not
5699         insert invalid gimple stores.
5701 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
5703         PR tree-optimization/37388
5704         * toplev.c (process_options): Fail and warn when graphite
5705         flags are used, but the compiler has not been configured
5706         with graphite libraries.
5707         * graphite.c (graphite_transform_loops): Remove printfs
5708         to dump_file for the case when graphite is not available.
5710 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
5712         PR target/37434:
5713         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
5714         the even element into register.
5715         (ix86_expand_vector_init_general): Don't use
5716         ix86_expand_vector_init_interleave on V16QImode and V8HImode
5717         if we can't move from GPR to SSE register directly.
5719 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
5721         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
5722         not lose track of the number of NOPs needed.  Number of NOPs needed
5723         for sync vs. loads workaround was switched; corrected.  Run second
5724         pass for all workarounds.  No NOPs needed after call insns.  Change
5725         second pass to use find_next_insn_start and find_load helpers in order
5726         to properly detect parallel insns.
5727         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
5729 2008-09-10  Jan Hubicka  <jh@suse.cz>
5731         * value-prof.c (gimple_ic): Fix tuplification bug.
5732         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
5733         var warning.
5735 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5737         PR tree-optimization/37353
5738         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
5739         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
5740         calls instead of cond_dead_built_in_calls.
5741         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
5742         initalize the vector only before adding first entry.  Use VEC_safe_push
5743         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
5744         shrink_wrap_conditional_dead_built_in_calls call.
5746 2008-09-10  Ira Rosen  <irar@il.ibm.com>
5748         PR tree-optimization/37385
5749         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
5750         argument, and use it as a vector type if not NULL.
5751         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
5752         vectorized rhs.
5753         (vect_setup_realignment): Call vect_create_data_ref_ptr with
5754         additional argument.
5755         (vectorizable_load): Likewise.
5757 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5759         * config/i386/i386.md (SWI32): New mode iterator.
5760         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
5761         of SWI.
5763 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5765         PR rtl-optimization/37435
5766         * caller-save.c (insert_restore, insert_save): Check the mode by
5767         reg_save_code.
5769 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5771         PR other/37265
5772         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
5773         splay tree lookup.
5774         (dw2_output_indirect_constant_1): Use unstripped name in symbol
5775         reference.
5777 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5779         * doc/invoke.texi (ARM Options): Correct errors in discussion
5780         of -mfloat-abi, -mhard-float, and -msoft-float.
5782 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5783             Jan Hubicka  <jh@suse.cz>
5785         PR middle-end/37356
5786         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
5787         calling gimple_regimplify_operands on it.  Iterate over all newly
5788         added statements, not just the last one.
5789         (insert_init_stmt): Insert stmt into seq first, then call
5790         gimple_regimplify_operands on it.  Don't create new gimplification
5791         context, nor find referenced vars.
5793 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5795         PR other/37419
5796         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
5797         to pointer to vector pointer.
5798         * ipa-prop.c (ipa_propagate_indirect_call_infos,
5799         propagate_info_to_inlined_callees): Likewise.
5800         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
5801         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
5802         ipa_check_create_edge_args.
5803         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
5804         argument to pointer to vector pointer.
5805         (cgraph_decide_inlining_of_small_function): Adjust
5806         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
5807         calls.
5809         PR target/37438
5810         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
5811         optimizing for size, not speed.
5813         PR rtl-optimization/37408
5814         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
5815         if parm is promoted.
5817 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
5819         PR tree-optimization/37375
5820         * tree-scalar-evolution.c (scev_info_str): Add field
5821         instantiated_below.
5822         (new_scev_info_str, eq_scev_info, find_var_scev_info,
5823         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
5824         set_instantiated_value): Pass instantiated_below.
5825         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
5826         to above functions.
5827         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
5828         the definitions are not instantiated.
5830         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
5831         (block_before_loop): New.
5832         * tree-data-ref.c (dr_analyze_indices): Update uses of
5833         instantiate_scev.
5834         * graphite.c (block_before_scop): New.
5835         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
5836         basic block, not a loop for determining the parameters.
5837         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
5838         scop.
5839         (idx_record_params, find_params_in_bb, find_scop_parameters,
5840         build_loop_iteration_domains, add_conditions_to_domain): Update calls
5841         to instantiate_scev.
5843         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
5845 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5847         PR rtl-opt/37333
5849         * ira-build.c (ira_create_allocno): Setup frequency to 0.
5851         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
5852         Check zero freq and increase if necessary.
5854 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5856         * ira-conflicts.c (process_regs_for_copy): Check that the hard
5857         regno is in the right range.  Add comments.
5859 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5861         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
5862         warnings.
5863         * mips-tfile.c (copy_object): Cast alloca result to int *.
5864         * mips-tdump.c (print_symbol): Cast xmalloc return values to
5865         proper types.
5866         Rename class to sclass.
5867         (read_tfile): Cast read_seek return values to proper types.
5868         Cast xcalloc return value to proper type.
5870 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5872         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
5873         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
5874         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
5876 2008-09-09  Jan Hubicka  <jh@suse.cz>
5878         * profile.c (is_edge_inconsistent): Add debug output; ignore
5879         negative count on fake edges.
5880         (is_inconsistent): Add debug output.
5882 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5884         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
5885         dump message.
5886         (choose_ready): When first insn is chosen from the ready list, also
5887         dump it.
5889 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5891         PR rtl-optimization/37360
5892         * haifa-sched.c (max_issue): Do not assert that we never issue more
5893         insns than issue_rate.  Add comment.
5895 2008-09-09  Richard Guenther  <rguenther@suse.de>
5897         * tree-cfg.c (verify_types_in_gimple_op): Remove.
5898         (verify_types_in_gimple_call): Rename to ...
5899         (verify_gimple_call): ... this.  Enhance.
5900         (verify_types_in_gimple_cond): Remove.
5901         (verify_gimple_comparison): New function ...
5902         (verify_types_in_gimple_assign): ... split out from here.
5903         (verify_types_in_gimple_return): Rename to ...
5904         (verify_gimple_return): ... this.  Enhance.
5905         (verify_types_in_gimple_switch): Rename to ...
5906         (verify_gimple_switch): ... this.  Enhance.
5907         (verify_gimple_goto): New function.
5908         (verify_types_in_gimple_phi): Rename to ...
5909         (verify_gimple_phi): ... this.  Enhance.
5910         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
5911         Fold in single-statement cases from verify_types_in_gimple_seq_2.
5912         (verify_types_in_gimple_seq_2): Remove cases handled in
5913         verify_types_in_gimple_stmt.
5915 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5917         * config/bfin/bfin.c (n_regs_to_save): New static variable.
5918         (push_multiple_operation, pop_multiple_operation): Set it.
5919         (workaround_rts_anomaly): New function.
5920         (workaround_speculation): New function, broken out of bfin_reorg.
5921         (bfin_reorg): Call the new functions.
5923 2008-09-09  Richard Guenther  <rguenther@suse.de>
5925         PR middle-end/37354
5926         PR middle-end/30165
5927         * gimplify.c (gimplify_conversion): Change conversions of
5928         non-register type to VIEW_CONVERT_EXPRs.
5929         (gimplify_addr_expr): If we need to make the operand
5930         addressable make sure to use a properly initialized
5931         temporary for that so it gets a valid gimple store.
5933 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
5935         * function.h (struct function): Add function_start_locus.
5936         * cfgexpand.c (gimple_expand_cfg): Use it.
5937         * c-parser.c (c_parser_declaration_or_fndef): Set it.
5939 2008-09-09  Richard Guenther  <rguenther@suse.de>
5941         PR tree-optimization/37433
5942         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
5943         function calls.
5945 2008-09-09  Richard Guenther  <rguenther@suse.de>
5947         PR tree-optimization/37387
5948         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
5949         and bits to a common type.
5951 2008-09-09  Nick Clifton  <nickc@redhat.com>
5953         * config/v850/v850.md (return): Restore frame size restriction.
5955 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
5957         * c-common.c (c_expand_decl): Remove.
5958         * c-common.h (anon_aggr_type_p): Remove prototype.
5959         (DECL_ANON_UNION_ELEMS): Remove.
5960         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
5961         * c-decl.c (anon_aggr_type_p): Remove.
5962         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
5963         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
5964         * langhooks.h (struct lang_hooks): Remove expand_decl.
5965         * langhooks.c (lhd_expand_decl): Remove.
5966         * stmt.c (expand_anon_union_decl): Remove.
5967         * tree.h (expand_anon_union_decl): Remove prototype.
5969 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
5971         PR target/36609
5972         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
5973         zero.
5974         * config/avr/avr.md  (QISI) : Define mode iterator.
5975         (negated_tst<mode>) : Redefine as split using mode macro.
5976         (reversed_tstqi): Define insn as reversed compare with zero.
5977         (reversed_tsthi): Ditto.
5978         (reversed_tstsi): Ditto.
5980 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5982         PR middle-end/37393
5983         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
5984         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
5986         PR middle-end/37414
5987         * predict.c (optimize_function_for_size_p): Don't segfault if
5988         FUN is NULL.
5989         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
5990         tree_swap_operands_p): Don't test cfun != NULL before calling
5991         optimize_function_for_s*_p.
5993 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
5995         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
5996         end of the search.
5998 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
6000         * crx/crx.h (IRA_COVER_CLASSES): Define.
6002 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
6004         PR middle-end/37337
6005         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
6006         even when a stmt has been gimple_modified_p, but after fold_stmt is
6007         not any longer.  Remove unneeded may_have_exposed_new_symbols
6008         initializations.
6010 2008-09-08  Richard Guenther  <rguenther@suse.de>
6012         PR tree-optimization/37421
6013         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
6014         valueize the RHS.
6016 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
6018         PR middle-end/37415
6019         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
6021 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6023         PR driver/37409
6024         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
6025         * pa-hpux10.h (LINK_SPEC): Likewise.
6026         * pa-hpux11.h (LINK_SPEC): Likewise.
6028 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6030         * pa32-regs.h (IRA_COVER_CLASSES): Define.
6031         * pa64-regs.h (IRA_COVER_CLASSES): Define.
6033 2008-09-07  Helge Deller  <deller@gmx.de>
6035         * pa/linux-atomic.c: New file.
6036         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
6037         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
6039 2008-09-07  Richard Guenther  <rguenther@suse.de>
6040             Ira Rosen  <irar@il.ibm.com>
6042         PR tree-optimization/36630
6043         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
6044         Call STRIP_NOPS before calling evolution_part_in_loop_num.
6046 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
6047             Ira Rosen  <irar@il.ibm.com>
6049         PR tree-optimization/35642
6050         * config/rs6000/altivec.md (mulv8hi3): Implement.
6052 2008-09-06  Jeff Law <law@redhat.com>
6054         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
6056 2008-09-06  Jan Hubicka  <jh@suse.cz>
6058         PR tree-optimization/14703
6059         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
6060         declarations.
6061         * passes.c (init_optimization_passes): Recompute inline parameters.
6063 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
6065         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
6066         DECL being null.
6068 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
6069             Peter Fuerst  <post@pfrst.de>
6071         * doc/invoke.texi: Document -mr10k-cache-barrier=.
6072         * doc/extend.texi: Document __builtin_mips_cache.
6073         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
6074         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
6075         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6076         __GCC_HAVE_BUILTIN_MIPS_CACHE.
6077         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
6078         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
6079         (set_push_mips_isas): New variable.
6080         (mips_r10k_cache_barrier): New variable.
6081         (cache): New availability predicate.
6082         (mips_builtins): Add an entry for __builtin_mips_cache.
6083         (mips_build_cvpointer_type): New function.
6084         (MIPS_ATYPE_CVPOINTER): New macro.
6085         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
6086         mode is VOIDmode.
6087         (r10k_simplified_address_p, r10k_simplify_address)
6088         (r10k_uncached_address_p, r10k_safe_address_p)
6089         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
6090         (r10k_needs_protection_p_call, r10k_needs_protection_p)
6091         (r10k_insert_cache_barriers): New functions.
6092         (mips_reorg_process_insns): Delete cache barriers after a
6093         branch-likely instruction.
6094         (mips_reorg): Call r10k_insert_cache_barriers.
6095         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
6096         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
6097         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
6098         (mips_cache, r10k_cache_barrier): New define_insns.
6100 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
6102         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
6103         * ira-color.c (setup_allocno_left_conflicts_num): Use
6104         hard_reg_set_equal_p instead of a comparison with
6105         ira_zero_hard_reg_set.
6106         * ira.c (setup_reg_subclasses): Likewise.
6107         (setup_cover_and_important_classes): Likewise.
6108         (setup_class_translate): Likewise.
6109         (setup_reg_class_intersect_union): Likewise.
6110         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
6111         (ira_init_once): Don't initialize them.
6113 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
6115         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
6117 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
6119         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
6121 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
6123         Improved branch hints, safe hints, and scheduling.
6125         * haifa-sched.c (sched_emit_insn) : Define.
6126         * sched-int.h (sched_emit_insn) : Add prototype.
6127         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
6128         -mhint-max-distance -msafe-hints) : Document.
6129         * config/spu/spu.c (spu_flag_var_tracking): New.
6130         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
6131         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
6132         TARGET_ASM_FILE_START): Define.
6133         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
6134         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
6135         (spu_emit_branch_hint): Add blocks argument.
6136         (insert_branch_hints, insert_nops): Remove.
6137         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
6138         uses_ls_unit, spu_sched_init_global, spu_sched_init,
6139         spu_sched_reorder, asm_file_start): New functions.
6140         (clock_var, spu_sched_length, pipe0_clock,
6141         pipe1_clock, prev_clock_var, prev_priority,
6142         spu_ls_first, prev_ls_clock): New static variables.
6143         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
6144         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
6145         (nopn_nv): Add a non-volatile version of nop.
6146         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
6147         -mhint-max-distance, -msafe-hints): New options.
6149 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
6150             Samuel Tardieu  <sam@rfc1149.net>
6152         * opts.c (decode_options): Combine nested if statements.
6154         PR target/37283
6155         * opts.c (decode_options): Handle more relationships among
6156         unit-at-a-time, toplevel-reorder, and section-anchors.
6158 2008-09-05  David Daney  <ddaney@avtrex.com>
6160         * doc/install.texi (--enable-reduced-reflection): Document new option.
6162 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
6164         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
6165         constantpool_mem_p.
6166         (constantpool_operand): New.
6167         (move_operand): Disallow sub-word modes for the constant pool.
6168         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
6169         (xtensa_secondary_reload_class): Replace with....
6170         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
6171         Set icode for sub-word reloads from the constant pool.
6172         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
6173         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
6174         * config/xtensa/xtensa.md (reload<mode>_literal): New.
6175         * config/xtensa/xtensa-protos.h: Update prototypes.
6177 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
6179         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
6180         (REG_CLASS_NAMES): Update.
6181         (REG_CLASS_CONTENTS): Update.
6182         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
6183         of ALL_REGS for regs 77 and 78.
6184         * function.c (instantiate_virtual_regs_in_insn): Assert that
6185         return value of simplify_gen_subreg is not NULL.
6187 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
6189         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
6190         (gen_rtvec_v): Fix coding standards.
6192 2008-09-04  Jan Hubicka  <jh@suse.cz>
6194         * i386.c (decide_alg): Be more conservative about optimizing for size.
6196 2008-09-04  Ian Lance Taylor  <iant@google.com>
6198         * varasm.c (narrowing_initializer_constant_valid_p): New
6199         static function.
6200         (initializer_constant_valid_p): Call it.
6202 2008-09-04  Jeff Law  <law@redhat.com>
6204         * fold-const.c (native_encode_real): Fix computation of WORDS.
6205         (native_interpret_real): Likewise.
6207 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
6209         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
6211 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
6213         * ira-conflicts.c (process_regs_for_copy): Check insn to check
6214         that the cost is already taken into account in ira-costs.c
6216         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
6218         * ira-build.c (print_copy, print_copies, ira_debug_copy,
6219         ira_debug_copies): New.
6220         (ira_bulid): Call print_copies.
6222         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
6224 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
6226         PR target/32783
6227         * config/rs6000/rs6000.c (optimization_options): Remove check of
6228         flag_toplevel_order.
6230 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
6232         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
6233         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
6234         second operand is a reg_imm10_operand.
6235         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
6236         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
6237         (*seq_<GPR:mode><GPR2:mode>): Rename to
6238         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
6239         ISA_HAS_SEQ_SNE.
6240         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
6241         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
6242         ISA_HAS_SEQ_SNE.
6243         (*sne_<GPR:mode><GPR2:mode>): Rename to
6244         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
6245         ISA_HAS_SEQ_SNE.
6247 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
6249         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
6250         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
6251         combining an arithmetic right shift by more than 31 and a
6252         trunction.  Don't match for out-of-range shift amounts.  Set
6253         attribute mode to <MODE>.
6254         (*lshr32_trunc<mode>): Name the pattern combining a logical right
6255         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
6256         (*<optab>_trunc<mode>_exts): New pattern for truncated right
6257         shifts by less than 32.
6258         (extv): Change predicate on first operand to accept registers.
6259         Change predicate of the other operands from immediate_operand to
6260         const_int_operand.  Expand exts when source is a register.
6261         (extzv): Change predicate of the constant operands from
6262         immediate_operand to const_int_operand.
6263         (extzv<mode>): Change predicate of the constant operands from
6264         immediate_operand to const_int_operand and no constraint. Also
6265         remove mode.
6266         (*extzv_trunc<mode>_exts): New pattern.
6268 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
6270         * config/mips/mips.h (ISA_HAS_CINS): New macro.
6271         * config/mips/mips-protos.h (mask_low_and_shift_p,
6272         mask_low_and_shift_len): Declare.
6273         * config/mips/mips.c (mask_low_and_shift_p,
6274         mask_low_and_shift_len): New functions.
6275         (mips_print_operand): Handle new operand prefix "m".
6276         * config/mips/mips.md (*cins<mode>): New pattern.
6278 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
6280         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
6281         optimizing for size.
6283 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
6285         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
6286         regardless of epilogue_completed.
6288 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
6290         PR middle-end/37359
6291         * ira-lives.c (process_bb_node_lives): Check setjmp.
6293 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
6295         PR middle-end/37243
6296         * ira-build.c (form_loop_tree): Reverse BB walk.
6297         (create_bb_allocnos): Likewise.
6298         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
6299         (mark_reg_store): Rename to...
6300         (mark_ref_live): ...this and take a df_ref argument instead of
6301         note_stores arguments.  Assert that we have a register.
6302         (mark_reg_clobber): Delete.
6303         (def_conflicts_with_inputs_p): New function.
6304         (mark_reg_conflicts): Delete.
6305         (mark_reg_death): Rename to...
6306         (mark_ref_dead): ...this and take a df_ref argument instead of
6307         a register.  Assert that we have a register.
6308         (process_bb_node_lives): Hoist frequency calculation out of
6309         instruction walk.  Convert from a forwards scan to a backwards scan.
6310         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
6311         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
6312         (create_allocno_live_ranges): Don't create regs_set.
6314 2008-09-04  Ian Lance Taylor  <iant@google.com>
6316         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
6317         or REG_LABEL_TARGET.
6318         * calls.c (emit_library_call_value_1): Use MEM_P rather than
6319         comparing MODE with MEM.
6320         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
6321         comparing with GF_PREDICT_TAKEN.
6322         (gimple_get_lhs): Change code to enum gimple_code.
6323         (gimple_set_lhs): Likewise.
6324         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
6325         * omp-low.c (find_omp_clause): Change kind parameter to enum
6326         omp_clause_code.
6327         * tree-flow.h (find_omp_clause): Update declaration.
6328         * regrename.c (clear_dead_regs): Change kind parameter to enum
6329         reg_note.
6330         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
6331         GET_MODE.
6332         * see.c (see_get_extension_data): Change return type to enum
6333         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
6334         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
6335         (see_gen_normalized_extension): Change extension_code parameter to
6336         enum entry_type.
6337         (see_seek_pre_extension_expr): Change extension_code to enum
6338         entry_type.
6339         (see_merge_one_def_extension): Likewise.
6340         (see_handle_relevant_defs): Likewise.
6341         (see_handle_relevant_uses): Likewise.
6342         (see_analyze_one_def): Likewise.
6343         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
6344         GIMPLE_ASM rather than ASM_EXPR.
6345         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
6346         GIMPLE_RETURN rather than RETURN_EXPR.
6347         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
6348         (evaluate_stmt): Likewise.
6349         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
6350         to enum vect_relevant.
6351         (vect_mark_stmts_to_be_vectorized): Change assertion to not
6352         compare gimple codes with tree codes.
6354 2008-09-04  Paul Brook  <paul@codesourcery.com>
6356         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
6358 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
6360         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
6361         pointer check lost in the recent no-unit-at-a-time patch.
6363 2008-09-04  Jan Hubicka  <jh@suse.cz>
6365         PR middle-end/37343
6366         * tree-switch-conversion.c (check_final_bb): Accept only IP
6367         invariants.
6369 2008-09-04  Jan Hubicka  <jh@suse.cz>
6371         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
6372         Break out from ...
6373         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
6374         using_ranges argument.
6375         (vrp_evaluate_conditional): Avoid bogus warning for type range.
6376         (vrp_visit_cond_stmt): Update call of
6377         vrp_evaluate_conditional_warnv_with_ops
6379 2008-09-04  Jan Hubicka  <jh@suse.cz>
6381         PR tree-optimization/37345
6382         PR tree-optimization/37358
6383         PR tree-optimization/37357
6384         * tree.c (build_function_type_skip_args): Build distinct type copy;
6385         set TYPE_CONTEXT.
6386         (build_function_decl_skip_args): Set type of new decl not orig decl;
6387         clear DECL_VINDEX for methods turned into functions.
6389 2008-09-04  Nick Clifton  <nickc@redhat.com>
6391         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
6392         * configure: Regenerate.
6393         * config.in: Regenerate.
6394         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
6395         alignment field, if it is supported.
6397 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
6399         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
6400         libraries.
6402 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
6404         * config/rs6000/rs6000.c (processor_target_table): Do not
6405         enable VMX for POWER6.
6407 2008-09-03  Anton Blanchard  <anton@samba.org>
6409         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
6410         emit memory barrier before operation.
6412 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
6414         PR testsuite/37325
6415         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
6416         default_elf_asm_output_external.
6418 2008-09-03  Jeff Law  <law@redhat.com>
6420         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
6422 2008-09-03  Richard Henderson  <rth@redhat.com>
6424         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
6425         memory barrier to below the test-and-set.
6426         (alpha_split_lock_test_and_set_12): Likewise.
6428 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6430         PR rtl-opt/37243
6432         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
6433         all_allocnos.
6435         * ira-color.c (print_loop_title): Use all_allocnos.
6436         (color_pass): Ditto.  Don't add border_allocnos.  Check that
6437         subloop allocno in the correspdoning bitmap all_allocnos.
6439         * ira-emit.c (change_loop): Use all_allocnos.
6441         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
6442         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
6443         (create_cap_allocno): Remove setting mentioned_allocnos.
6444         (create_insn_allocnos): Ditto.
6445         (remove_unnecessary_allocnos): Use all_allocnos.
6446         (check_allocno_creation): Check that allocnos are in the
6447         corresponding bitmap all_allocnos.
6449 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6451         PR rtl-opt/37243
6453         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
6454         (process_regs_for_copy): Process subregs.  Refine check when cost
6455         is taken into account in ira-costs.c.
6456         (process_reg_shuffles): Use REG_SUBREG_P.
6457         (add_insn_allocno_copies): Ditto.  Ignore modes.
6459         * ira-color.c (conflict_allocno_vec): New.
6460         (COST_HOP_DIVISOR): New macro.
6461         (update_copy_costs_1): Use it.
6462         (update_conflict_hard_regno_costs): New function.
6463         (assign_hard_reg): Use it.
6464         (ira_color): Allocate and free conflict_allocno_vec.
6466 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6468         PR rtl-opt/37296
6470         * ira-int.h (ira_sort_insn_chain): Remove.
6472         * ira.c (basic_block_order_nums, chain_insn_order,
6473         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
6474         (ira): Don't call ira_sort_insn_chain.
6476         * reload1.c (reload): Don't call ira_sort_insn_chain.
6478 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6480         PR middle-end/37293
6481         * cgraphunit.c (update_call_expr): Remove eh regions from statements
6482         which become non throw.
6483         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
6484         update_call_expr after updating the flags on the decl.
6486 2008-09-03  Jan Hubicka  <jh@suse.cz>
6488         PR tree-optimization/37315
6489         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
6490         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
6491         (cgraph_analyze_functions): Use node->analyzed
6492         (cgraph_mark_functions_to_output): Likewise.
6493         (cgraph_expand_function): All functions can be released after
6494         expanding.
6495         (cgraph_optimize): Use gimple_has_body_p.
6496         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
6497         (cgraph_decide_inlining_incrementally): Likewise.
6498         (inline_transform): Inline transform.
6499         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
6500         copy fields needed.
6501         (inlinable_function_p): Drop gimple_body check.
6502         (expand_call_inline): Use gimple_has_body_p.
6503         * gimple.c (gimple_has_body_p): New.
6504         * gimple.h (gimple_has_body_p): Add prototype.
6505         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
6506         (dump_function_to_file): Use gimple_has_body_p check.
6508 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
6510         PR c++/37346
6511         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
6512         substatements.
6513         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
6515 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6517         From Michael Frysinger  <michael.frysinger@analog.com>
6518         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
6519         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
6520         for bf538.
6522 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
6524         Add picoChip port.
6525         * doc/extend.texi: Document picoChip builtin functions.
6526         * doc/invoke.texi: Document picoChip options.
6527         * doc/contrib.texi: Add picoChip contribution.
6528         * doc/md.texi: Document picoChip constraints.
6529         * config.gcc: Add picochip-*-*.
6530         * config/picochip/: Add new port.
6532 2008-09-03  Richard Guenther  <rguenther@suse.de>
6534         PR tree-optimization/37328
6535         * tree-sra.c (sra_build_assignment): Gimplify properly.
6536         (generate_copy_inout): Take the correct stmt as definition,
6537         remove bogus assert.
6539 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6541         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
6542         attributes.
6544         From Michael Frysinger  <michael.frysinger@analog.com>
6545         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
6547 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
6549         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
6550         (__gthread_setspecific): Revert 2008-08-31 change to
6551         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
6553 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
6555         * diagnostic.c (error_at): New.
6556         * toplev.h (error_at): New prototype.
6557         * c-typeck.c (build_array_ref): Call error_at instead of error.
6558         Pass location to pedwarn.
6560 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
6562         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
6564 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6566         * dwarf2out.c (tree_add_const_value_attribute): Only handle
6567         VAR_DECL and CONST_DECL.
6569 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6570             Jakub Jelinek  <jakub@redhat.com>
6572         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
6573         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
6574         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
6575         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
6576         Don't set ix86_save_varrargs_registers.
6577         (ix86_setup_incoming_varargs): Assume cum != NULL.
6578         (ix86_va_start): Check ix86_varargs_gpr_size and
6579         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
6580         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
6581         from frame pointer if ix86_varargs_gpr_size == 0.
6582         (ix86_compute_frame_layout): Updated.
6583         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
6584         (ix86_varargs_gpr_size): Define.
6585         (ix86_varargs_fpr_size): Likewise.
6586         (machine_function): Remove save_varrargs_registers.
6587         Add varargs_gpr_size and varargs_fpr_size.
6589 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6591         * config/alpha/alpha.c (va_list_skip_additions,
6592         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
6593         (alpha_gimplify_va_arg): Call unshare_expr on second use of
6594         offset_field.
6596         PR tree-optimization/36766
6597         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
6598         for already removed basic blocks.
6600         PR target/36332
6601         * real.c (real_maxval): Clear a lower bit to make real_maxval
6602         match get_max_float for IBM long double format.
6604 2008-09-02  Andreas Schwab  <schwab@suse.de>
6606         * configure.ac: Use m4_quote to quote the expansion of m4_do.
6607         * configure: Regenerate.
6609 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
6611         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
6612         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
6613         checking for a non-VOID CONSTANT_P.
6615 2008-09-02  Jan Hubicka  <jh@suse.cz>
6617         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
6618         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
6619         sdiv_pow2_cheap
6621 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6623         * expr.c (emit_group_store): Don't assert stack temp mode size.
6625 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
6626             Tobias Grosser  <grosser@fim.uni-passau.de>
6627             Jan Sjodin  <jan.sjodin@amd.com>
6628             Harsha Jagasia  <harsha.jagasia@amd.com>
6629             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6630             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
6631             Adrien Eliche  <aeliche@isty.uvsq.fr>
6633         Merge from graphite branch.
6634         * graphite.c: New.
6635         * graphite.h: New.
6636         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
6637         * doc/invoke.texi (-floop-block, -floop-interchange,
6638         -floop-strip-mine): Document new flags.
6639         * tree-into-ssa.c (gimple_vec): Moved...
6640         * tree-loop-distribution.c (rdg_component): Moved...
6641         * cfgloopmanip.c: Include tree-flow.h.
6642         (update_dominators_in_loop): New.
6643         (create_empty_if_region_on_edge): New.
6644         (create_empty_loop_on_edge): New.
6645         (loopify): Use update_dominators_in_loop.
6646         * tree-pass.h (pass_graphite_transforms): Declared.
6647         * configure: Regenerate.
6648         * tree-phinodes.c (make_phi_node): Export.
6649         (add_phi_node_to_bb): New, split from create_phi_node.
6650         * tree-chrec.c (for_each_scev_op): New.
6651         * tree-chrec.h (for_each_scev_op): Declared.
6652         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
6653         (remove_statement): Call get_phi_with_result.
6654         * config.in (HAVE_cloog): Undef.
6655         * gdbinit.in (pgg): New.
6656         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
6657         * tree-ssa-loop.c (graphite_transforms): New.
6658         (gate_graphite_transforms): New.
6659         (pass_graphite_transforms): New.
6660         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
6661         HAVE_cloog): Defined.
6662         * tree-vectorizer.c (rename_variables_in_bb): Export.
6663         * tree-data-ref.c (dr_may_alias_p): Export.
6664         (stmt_simple_memref_p): New.
6665         (find_data_references_in_stmt): Export.
6666         (find_data_references_in_loop): Export.
6667         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
6668         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
6669         (create_rdg_vertices): Export.
6670         (build_empty_rdg): New.
6671         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
6672         * tree-data-ref.h (rdg_component): ... here.
6673         (scop_p): New.
6674         (struct data_reference): Add a field scop.
6675         (DR_SCOP): New.
6676         (find_data_references_in_loop): Declared.
6677         (find_data_references_in_stmt): Declared.
6678         (create_rdg_vertices): Declared.
6679         (dr_may_alias_p): Declared.
6680         (stmt_simple_memref_p): Declared.
6681         (struct rdg_edge): Add a field ddr_p relation.
6682         (build_empty_rdg): Declared.
6683         * lambda.h (lambda_matrix): Declare a VEC of.
6684         (find_induction_var_from_exit_cond): Declared.
6685         (lambda_vector_compare): New.
6686         * common.opt (fgraphite, floop-strip-mine,
6687         floop-interchange, floop-block): New flags.
6688         * lambda-code.c (find_induction_var_from_exit_cond): Export.
6689         * cfgloop.c (is_loop_exit): New.
6690         * cfgloop.h (is_loop_exit): Declared.
6691         (create_empty_if_region_on_edge): Declared.
6692         (create_empty_loop_on_edge): Declared.
6693         * tree-flow.h (add_phi_node_to_bb): Declared.
6694         (make_phi_node): Declared.
6695         (rename_variables_in_bb): Declared.
6696         (perfect_loop_nest_depth): Declared.
6697         (graphite_transform_loops): Declared.
6698         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
6699         (graphite.o-warn): Add -Wno-error.
6700         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
6701         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
6702         (INCLUDES): Add PPLINC, CLOOGINC.
6703         (OBJS-common): Add graphite.o.
6704         (graphite.o): Add rule.
6705         * gimple.h (gimple_vec): ... here.
6706         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
6707         * passes.c (init_optimization_passes): Schedule
6708         pass_graphite_transforms.
6710 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
6712         PR target/37283
6713         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
6714         and -fno-toplevel-reorder after handle_options.
6716 2008-09-02  Paul Brook  <paul@codesourcery.com>
6718         * config/arm/arm.c (arm_tune_cortex_a9): Define.
6719         (arm_override_options): Set arm_tune_cortex_a9.
6720         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
6721         (arm_issue_rate): Handle cortexa9.
6722         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
6723         * config/arm/arm-cores.def: Add cortex-a9.
6724         * config/arm/arm-tune.md: Regenerate.
6725         * config/arm/arm.md: Include cortex-a9.md.
6726         (generic_sched, generic_vfp): Add cortexa9.
6727         * config/arm/cortex-a9.md: New file.
6729 2008-09-02  Richard Guenther  <rguenther@suse.de>
6731         PR tree-optimization/37327
6732         * tree-vrp.c (register_new_assert_for): Make sure to not have
6733         TREE_OVERFLOW set on the bound.
6735 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
6737         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
6739         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
6740         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
6741         spec_info->mask.
6743 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
6745         * gcc/config/spu/spu.md (divdf3): Removed.
6747 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6749         PR tree-optimization/37095
6750         * cgraph.c (cgraph_node): When creating new cgraph node after
6751         assembler_name_hash has been populated, record it in the hash
6752         table.
6754 2008-09-01  Paul Brook  <paul@codesourcery.com>
6756         * doc/invoke.texi: Document -mword-relocations.
6757         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6758         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6759         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6760         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
6761         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
6762         (arm_emit_movpair): New function.
6763         (arm_print_operand <c>): Handle sybolic addresses.
6764         * config/arm/arm.h (TARGET_USE_MOVT): Define.
6765         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6766         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
6767         * config/arm/arm.opt: Add -mword-relocations.
6768         * config/arm/arm.md (movsi): Use arm_emit_movpair.
6769         (arm_movt, arm_movw): New.
6771 2008-09-01  Paul Brook  <paul@codesourcery.com>
6773         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
6774         Allow Interworking on ARMv4 EABI based targets.
6775         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
6776         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
6778 2008-09-01  Paul Brook  <paul@codesourcery.com>
6780         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
6781         optimized LT0 test.  Remove optimization for GT.
6783 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6785         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
6786         openmp applications.
6787         * pa-hpux11.h (LIB_SPEC): Likewise.
6789         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
6790         is defined.
6792 2008-09-01  Jan Hubicka  <jh@suse.cz>
6794         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
6795         present, use only counts; when guessed use only frequencies.
6796         (estimate_bb_frequencies): Use function_frequency.
6797         * profile.c (compute_branch_probabilities): Exit early when
6798         profile reading failed. Set profile_status.
6799         (branch_prob): Do not set profile_status.
6801 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
6803         * tree.c (protected_set_expr_location): New.
6804         * tree.h (protected_set_expr_location): New prototype.
6805         * c-tree.h (build_array_ref): Add argument.
6806         (parser_build_unary_op): Same.
6807         * c-typeck.c (build_indirect_ref): Handle new location argument.
6808         (build_array_ref): Same.
6809         (parser_build_unary_op): Same.
6810         * gimplify.c (gimplify_asm_expr): Set input_location before calling
6811         error.
6812         * c-omp.c (c_finish_omp_atomic): Pass location when calling
6813         build_indirect_ref.
6814         * c-common.c (finish_label_address_expr): Handle new location argument.
6815         * c-common.h (build_indirect_ref): Add argument.
6816         (finish_label_address_expr): Same.
6817         * c-parser.c (c_parser_unary_expression): Pass location to build
6818         functions.
6819         (c_parser_postfix_expression): Same.
6821 2008-09-01  Paul Brook  <paul@codesourcery.com>
6823         * config/arm/arm.md: Include cortex-r4f.md.
6824         (attr fpu): Update type list.
6825         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
6826         fconstd, fcmps and fcmpd.
6827         (attr tune_cortexr4): Define.
6828         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
6829         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
6830         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
6831         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
6832         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
6833         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
6834         cortex_a8_vfp_farith: Ditto.
6835         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
6836         * config/arm/cortex-r4.md: Use tune_cortexr4.
6837         * config/arm/cortex-r4f.md: New file.
6839 2008-09-01  Richard Guenther  <rguenther@suse.de>
6841         PR tree-optimization/37305
6842         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
6843         the result of constant conversions.
6844         (fold_gimple_assign): Likewise.
6846 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6848         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
6849         #ifdef ENABLE_CHECKING.
6851 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6853         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
6854         * sched-int.h (print_insn, print_pattern, print_value): Declare also
6855         when !INSN_SCHEDULING.
6857 2008-09-01  Andreas Schwab  <schwab@suse.de>
6859         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
6861 2008-09-01  Paul Brook  <paul@codesourcery.com>
6863         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
6865 2008-09-01  Jan Hubicka  <jh@suse.cz>
6867         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
6869         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
6870         Pass speed operand.
6871         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
6872         * gimplify.c (gimplify_init_constructor): Add speed operand.
6873         * tree-sra.c (decide_block_copy): Likewise.
6874         * tree-inline.c (estimate_move_cost): Likewise.
6875         * config/alpha/alpha.h (MOVE_RATIO): Update.
6876         * config/frv/frv.c (MOVE_RATIO): Update.
6877         * config/spu/spu.h (MOVE_RATIO): Update.
6878         * config/sparc/sparc.h (MOVE_RATIO): Update.
6879         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
6880         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
6881         * config/cris/cris.h (MOVE_RATIO): Update.
6882         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
6883         * config/arm/arm.h (MOVE_RATIO): Update.
6884         * config/pa/pa.md: Update uses of MOVE_RATIO
6885         * config/pa/pa.h (MOVE_RATIO): Update.
6886         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
6887         CLEAR_RATIO, SET_RATIO): Update.
6888         * config/h8300/h8300.h (MOVE_RATIO): Update.
6889         * config/v850/v850.h (MOVE_RATIO): Update.
6890         * config/bfin/bfin.h (MOVE_RATIO): Update.
6892 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
6893             Dmitry Melnik  <dm@ispras.ru>
6894             Dmitry Zhurikhin  <zhur@ispras.ru>
6895             Alexander Monakov  <amonakov@ispras.ru>
6896             Maxim Kuvyrkov  <maxim@codesourcery.com>
6898         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
6899         sel-sched-dump.c, sel-sched-ir.c: New files.
6900         * Makefile.in (OBJS-common): Add selective scheduling object files.
6901         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
6902         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
6903         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
6904         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
6905         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
6906         (make_forwarder_block): Update loop latch if we have redirected
6907         the loop latch edge.
6908         * cfgloop.c (get_loop_body_in_custom_order): New function.
6909         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
6910         (CP_FALLTHRU_PREHEADERS): Likewise.
6911         (get_loop_body_in_custom_order): Declare.
6912         * cfgloopmanip.c (has_preds_from_loop): New.
6913         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
6914         Assert that the preheader edge will be fall thru when it is set.
6915         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
6916         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
6917         fsel-sched-substitution, fselective-scheduling): New flags.
6918         * cse.c (hash_rtx_cb): New.
6919         (hash_rtx): Use it.
6920         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
6921         sel_sched_insn_cnt): New counters.
6922         * final.c (compute_alignments): Export.  Free dominance
6923         info after loop_optimizer_finalize.
6924         * genattr.c (main): Output maximal_insn_latency prototype.
6925         * genautomata.c (output_default_latencies): New.
6926         Factor its code from ...
6927         (output_internal_insn_latency_func): ... here.
6928         (output_internal_maximal_insn_latency_func): New.
6929         (output_maximal_insn_latency_func): New.
6930         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
6931         (struct hard_reg_set_iterator): New.
6932         (hard_reg_set_iter_init, hard_reg_set_iter_set,
6933         hard_reg_set_iter_next): New functions.
6934         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
6935         * lists.c (remove_free_INSN_LIST_node,
6936         remove_free_EXPR_LIST_node): New functions.
6937         * loop-init.c (loop_optimizer_init): When
6938         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
6939         calling create_preheaders.
6940         (loop_optimizer_finalize): Do not verify flow info after reload.
6941         * recog.c (validate_replace_rtx_1): New parameter simplify.
6942         Default it to true.  Update all uses.  Factor out simplifying
6943         code to ...
6944         (simplify_while_replacing): ... this new function.
6945         (validate_replace_rtx_part,
6946         validate_replace_rtx_part_nosimplify): New.
6947         * recog.h (validate_replace_rtx_part,
6948         validate_replace_rtx_part_nosimplify): Declare.
6949         * rtl.c (rtx_equal_p_cb): New.
6950         (rtx_equal_p): Use it.
6951         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
6952         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
6953         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
6954         * vecprim.h: Add a vector type for unsigned int.
6955         * haifa-sched.c: Include vecprim.h and cfgloop.h.
6956         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
6957         ready_try, cycle_issued_insns, spec_info): Make global.
6958         (readyp): Initialize.
6959         (dfa_lookahead): New global variable.
6960         (old_max_uid, old_last_basic_block): Remove.
6961         (h_i_d): Make it a vector.
6962         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
6963         through HID macro.
6964         (after_recovery, adding_bb_to_current_region_p):
6965         New variables to handle correct insertion of the recovery code.
6966         (struct ready_list): Move declaration to sched-int.h.
6967         (rgn_n_insns): Removed.
6968         (rtx_vec_t): Move to sched-int.h.
6969         (find_insn_reg_weight): Remove.
6970         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
6971         (haifa_init_h_i_d, haifa_finish_h_i_d):
6972         New functions to initialize / finalize haifa instruction data.
6973         (extend_h_i_d, init_h_i_d): Rewrite.
6974         (unlink_other_notes): Move logic to add_to_note_list.  Handle
6975         selective scheduler.
6976         (ready_lastpos, ready_element, ready_sort, reemit_notes,
6977         find_fallthru_edge): Make global, remove static prototypes.
6978         (max_issue): Make global.  Add privileged_n and state parameters.  Use
6979         them.
6980         (extend_global, extend_all): Removed.
6981         (init_before_recovery): Add new param.  Fix the handling of the case
6982         when we insert a recovery code before the EXIT which has a predecessor
6983         with a fallthrough edge to it.
6984         (create_recovery_block): Make global.  Rename to
6985         sched_create_recovery_block.  Update.
6986         (change_pattern): Rename to sched_change_pattern.  Make global.
6987         (speculate_insn): Rename to sched_speculate_insn.  Make global.
6988         Split haifa-specific functionality into ...
6989         (haifa_change_pattern): New static function.
6990         (sched_extend_bb): New static function.
6991         (sched_init_bbs): New function.
6992         (current_sched_info): Change type to struct haifa_sched_info.
6993         (insn_cost): Adjust for selective scheduling.
6994         (dep_cost_1): New function.  Move logic from ...
6995         (dep_cost): ... here.
6996         (dep_cost): Use dep_cost_1.
6997         (contributes_to_priority_p): Use sched_deps_info instead of
6998         current_sched_info.
6999         (priority): Adjust to work with selective scheduling.  Process the
7000         corner case when all dependencies don't contribute to priority.
7001         (rank_for_schedule): Use ds_weak instead of dep_weak.
7002         (advance_state): New function.  Move logic from ...
7003         (advance_one_cycle): ... here.
7004         (add_to_note_list, concat_note_lists): New functions.
7005         (rm_other_notes): Make static.  Adjust for selective scheduling.
7006         (remove_notes, restore_other_notes): New functions.
7007         (move_insn): Add two arguments.  Update assert.  Don't call
7008         reemit_notes.
7009         (choose_ready): Remove lookahead variable, use dfa_lookahead.
7010         Remove more_issue, max_points.  Move the code to initialize
7011         max_lookahead_tries to max_issue.
7012         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
7013         ready.  Adjust use of move_insn.  Call restore_other_notes.
7014         (luid): Remove.
7015         (sched_init, sched_finish): Move Haifa-specific initialization/
7016         finalization to ...
7017         (haifa_sched_init, haifa_sched_finish): ... respectively.
7018         New functions.
7019         (setup_sched_dump): New function.
7020         (haifa_init_only_bb): New static function.
7021         (haifa_speculate_insn): New static function.
7022         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
7023         (extend_ready, extend_all): Remove.
7024         (sched_extend_ready_list, sched_finish_ready_list): New functions.
7025         (create_check_block_twin, add_to_speculative_block): Use
7026         haifa_insns_init instead of extend_global.  Update to use new
7027         initialization functions.  Change parameter.  Factor out code from
7028         create_check_block_twin to ...
7029         (sched_create_recovery_edges) ... this new function.
7030         (add_block): Remove.
7031         (sched_scan_info): New.
7032         (extend_bb): Use sched_scan_info.
7033         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
7034         static functions for walking through scheduling region.
7035         (sched_luids): New vector variable to replace uid_to_luid.
7036         (luids_extend_insn): New function.
7037         (sched_max_luid): New variable.
7038         (luids_init_insn): New function.
7039         (sched_init_luids, sched_finish_luids): New functions.
7040         (insn_luid): New debug function.
7041         (sched_extend_target): New function.
7042         (haifa_init_insn): New static function.
7043         (sched_init_only_bb): New hook.
7044         (sched_split_block): New hook.
7045         (sched_split_block_1): New function.
7046         (sched_create_empty_bb): New hook.
7047         (sched_create_empty_bb_1): New function.
7048         (common_sched_info, ready): New global variables.
7049         (current_sched_info_var): Remove.
7050         (move_block_after_check): Use common_sched_info.
7051         (haifa_luid_for_non_insn): New static function.
7052         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
7053         (increase_insn_priority): New.
7054         * modulo-sched.c: (issue_rate): Remove static declaration.
7055         (sms_sched_info): Change type to haifa_sched_info.
7056         (sms_sched_deps_info, sms_common_sched_info): New variables.
7057         (setup_sched_infos): New.
7058         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
7059         Do not call regstat_free_calls_crossed.
7060         (sms_print_insn): Use const_rtx.
7061         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
7062         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
7063         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
7064         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
7065         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
7066         current_sched_info to use it.
7067         (enum reg_pending_barrier_mode): Move to sched-int.h.
7068         (h_d_i_d): New variable. Initialize to NULL.
7069         ({true, output, anti, spec, forward}_dependency_cache): Initialize
7070         to NULL.
7071         (estimate_dep_weak): Remove static declaration.
7072         (sched_has_condition_p): New function.  Adjust users of
7073         sched_get_condition to use it instead.
7074         (conditions_mutex_p): Add arguments indicating which conditions are
7075         reversed.  Use them.
7076         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
7077         argument to indicate whether returned condition is reversed.  Do not
7078         generate new rtx when condition should be reversed; indicate it by
7079         setting new argument instead.
7080         (add_dependence_list_and_free): Add deps parameter.
7081         Update all users.  Do not free dependence list when
7082         deps context is readonly.
7083         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
7084         contexts.
7085         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
7086         (remove_from_deps): New. Use the above functions.
7087         (cur_insn, can_start_lhs_rhs_p): New static variables.
7088         (add_or_update_back_dep_1): Initialize present_dep_type.
7089         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
7090         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
7091         haifa_note_dep): New functions implementing dependence hooks for
7092         the Haifa scheduler.
7093         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
7094         note_dep): New functions.
7095         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
7096         functions.
7097         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
7098         (free_deps): Initialize deps->reg_last.
7099         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
7100         sched_analyze_insn): Update to use dependency hooks infrastructure
7101         and readonly contexts.
7102         (deps_analyze_insn): New function.  Move part of logic from ...
7103         (sched_analyze): ... here.  Also move some logic to ...
7104         (deps_start_bb): ... here.  New function.
7105         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
7106         sel_sched_p.
7107         (sched_deps_init): New function.  Move code from ...
7108         (init_dependency_caches): ... here.  Remove.
7109         (init_deps_data_vector): New.
7110         (sched_deps_finish): New function.  Move code from ...
7111         (free_dependency_caches): ... here.  Remove.
7112         (init_deps_global, finish_deps_global): Adjust for use with
7113         selective scheduling.
7114         (get_dep_weak): Move logic to ...
7115         (get_dep_weak_1): New function.
7116         (ds_merge): Move logic to ...
7117         (ds_merge_1): New static function.
7118         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
7119         (ds_get_max_dep_weak): New function.
7120         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
7121         (n_insns): Rename to rgn_n_insns.
7122         (debug_ebb_dependencies): New function.
7123         (init_ready_list): Use it.
7124         (begin_schedule_ready): Use sched_init_only_bb.
7125         (ebb_print_insn): Indicate when an insn starts a new cycle.
7126         (contributes_to_priority, compute_jump_reg_dependencies,
7127         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
7128         (add_block1): Remove to ebb_add_block.
7129         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
7130         (schedule_ebb): Initialize them.  Use remove_notes instead of
7131         rm_other_notes.  Use haifa_local_init/finish.
7132         (schedule_ebbs): Use haifa_sched_init/finish.
7133         * sched-int.h: Include vecprim.h, remove rtl.h.
7134         (struct ready_list): Delete declaration.
7135         (sched_verbose_param, enum sched_pass_id_t,
7136         bb_vec_t, insn_vec_t, rtx_vec_t): New.
7137         (struct sched_scan_info_def): New structure.
7138         (sched_scan_info, sched_scan, sched_init_bbs,
7139         sched_init_luids, sched_finish_luids, sched_extend_target,
7140         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
7141         (struct common_sched_info_def): New.
7142         (common_sched_info, haifa_common_sched_info,
7143         sched_emulate_haifa_p): Declare.
7144         (sel_sched_p): New.
7145         (sched_luids): Declare.
7146         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
7147         (sched_max_luid, insn_luid): Declare.
7148         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
7149         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
7150         print_insn, print_pattern, print_value, haifa_classify_insn,
7151         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
7152         setup_sched_dump, sched_init, sched_finish,
7153         sel_insn_is_speculation_check): Export.
7154         (struct ready_list): Move from haifa-sched.c.
7155         (ready_try, ready, max_issue): Export.
7156         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
7157         sched_init_only_bb, sched_split_block, sched_split_block_1,
7158         sched_create_empty_bb, sched_create_empty_bb_1,
7159         sched_create_recovery_block, sched_create_recovery_edges): Export.
7160         (enum reg_pending_barrier_mode): Export.
7161         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
7162         (deps_t): New.
7163         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
7164         print_insn field.  Move add_block and fix_recovery_cfg to
7165         common_sched_info_def.  Move compute_jump_reg_dependencies,
7166         use_cselib  ...
7167         (struct sched_deps_info_def): ... this new structure.
7168         (sched_deps_info): Declare.
7169         (struct spec_info_def): Remove weakness_cutoff, add
7170         data_weakness_cutoff and control_weakness_cutoff.
7171         (spec_info): Declare.
7172         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
7173         dep_count field.
7174         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
7175         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
7176         (current_sched_info): Change type to struct haifa_sched_info.
7177         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
7178         (h_d_i_d): New variable.
7179         (HDID): New accessor macro.
7180         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
7181         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
7182         and HDID.
7183         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
7184         (enum SCHED_FLAGS): Update for selective scheduler.
7185         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
7186         (init_dependency_caches, free_dependency_caches): Delete declarations.
7187         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
7188         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
7189         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
7190         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
7191         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
7192         ds_to_dt): Export.
7193         (rm_other_notes): Delete declaration.
7194         (schedule_block): Remove one argument.
7195         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
7196         ready_element, ready_lastpos, sched_extend_ready_list,
7197         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
7198         concat_note_lists): Export.
7199         (struct region): Move from sched-rgn.h.
7200         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
7201         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
7202         BLOCK_TO_BB, CONTAINING_RGN): Export.
7203         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
7204         (current_nr_blocks, current_blocks, target_bb): Likewise.
7205         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
7206         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
7207         sched_rgn_local_init, extend_regions,
7208         rgn_make_new_region_out_of_new_block, compute_priorities,
7209         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
7210         extend_rgns, deps_join rgn_setup_common_sched_info,
7211         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
7212         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
7213         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
7214         increase_insn_priority): Likewise.
7215         * sched-rgn.c: Include sel-sched.h.
7216         (ref_counts): New static variable.  Use it ...
7217         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
7218         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
7219         (sched_is_disabled_for_current_region_p): Delete static declaration.
7220         (struct region): Move to sched-int.h.
7221         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
7222         ebb_head): Define and initialize.
7223         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
7224         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
7225         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
7226         sched-int.h.
7227         (find_single_block_region): Add new argument to indicate that EBB
7228         regions should be constructed.
7229         (debug_live): Delete declaration.
7230         (current_nr_blocks, current_blocks, target_bb):
7231         Remove static qualifiers.
7232         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
7233         declaration.
7234         (init_regions): Delete declaration.
7235         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
7236         rgn_estimate_number_of_insns): New.
7237         (too_large): Use estimate_number_of_insns.
7238         (haifa_find_rgns): New. Move the code from ...
7239         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
7240         (free_trg_info): New.
7241         (compute_trg_info): Allocate candidate tables here instead of ...
7242         (init_ready_list): ... here.
7243         (rgn_print_insn): Use const_rtx.
7244         (contributes_to_priority, extend_regions): Delete static declaration.
7245         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
7246         (add_block1): Rename to rgn_add_block.
7247         (debug_rgn_dependencies): Delete static qualifier.
7248         (new_ready): Use sched_deps_info.  Simplify.
7249         (rgn_common_sched_info, rgn_const_sched_deps_info,
7250         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
7251         New.
7252         (region_sched_info): Rename to rgn_const_sched_info.
7253         (deps_join): New, extracted from ...
7254         (propagate_deps): ... here.
7255         (compute_block_dependences, debug_dependencies): Update for selective
7256         scheduling.
7257         (free_rgn_deps, compute_priorities): New functions.
7258         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
7259         sched_rgn_compute_dependencies): New functions.
7260         (schedule_region): Use them.
7261         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
7262         rgn_setup_common_sched_info, rgn_setup_sched_infos):
7263         New functions.
7264         (schedule_insns): Call new functions that were split out.
7265         (rgn_make_new_region_out_of_new_block): New.
7266         (get_rgn_sched_max_insns_priority): New.
7267         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
7268         scheduling when appropriate.
7269         * sched-vis.c: Include insn-attr.h.
7270         (print_value, print_pattern): Make global.
7271         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
7272         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
7273         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
7274         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
7275         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
7276         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
7277         hooks.  Initialize them to 0.
7278         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
7279         * target.h (struct gcc_target): Add them.  Rename gen_check field to
7280         gen_spec_check.
7281         * flags.h (sel_sched_switch_set): Declare.
7282         * opts.c (sel_sched_switch_set): New variable.
7283         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
7284         pipelining is disabled from command line.
7285         (common_handle_option): Record whether selective scheduling is
7286         requested from command line.
7287         * doc/invoke.texi: Document new flags and parameters.
7288         * doc/tm.texi: Document new target hooks.
7289         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
7290         ia64_gen_check.
7291         (dfa_state_size): Do not declare locally.
7292         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
7293         * config/rs6000/rs6000.c (rs6000_init_sched_context,
7294         rs6000_alloc_sched_context, rs6000_set_sched_context,
7295         rs6000_free_sched_context): New functions.
7296         (struct _rs6000_sched_context): New.
7297         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
7298         scheduling.
7299         (rs6000_sched_finish): Do not run for selective scheduling.
7301 2008-08-31  Jan Hubicka  <jh@suse.cz>
7303         * frv.c (frv_rtx_costs): Update forward declaration.
7304         * spu.c (spu_rtx_costs): Likewise.
7305         * pdp11.c: Include df.h
7306         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
7307         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
7308         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
7309         * iq2000.c (iq2000_address_cost): Add speed argument.
7310         (iq2000_rtx_costs): Likewise.
7311         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
7312         update call of mn10300_address_cost.
7313         * mcore.c: Include df.h
7314         (mcore_rtx_costs): Update prototype.
7315         * score3.c: Include df.h
7316         (score3_rtx_costs): Remove speed argument.
7317         * score7.c: Include df.h
7318         (score7_address_cost): Remove speed argument.
7319         * score-protos.h (score_address_cost): Update prototype.
7320         * score.c: Include df.h
7321         (score_rtx_costs): Update call of costs functions.
7322         * v850.c (v850_rtx_costs): Add bool argument.
7324 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
7326         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
7328 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7330         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
7331         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
7333 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7335         * mkmap-flat.awk: Add option pe_dll.
7336         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
7337         * config/i386/t-cygwin (SHLIB_LC): Add.
7338         * config/i386/t-mingw32 (SHLIB_LC): Add.
7339         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
7340         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
7341         (LINK_SPEC): Support libgcc_s.
7342         (LIBGCC_SPEC): Support libgcc_s.
7343         (LIBGCC_SONAME): New.
7345 2008-08-31  Jan Hubicka  <jh@suse.cz>
7347         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
7348         mistakely had old version of patch.
7350         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
7351         (ipcp_estimate_growth): New.
7352         (ipcp_insert_stage): Use ipcp_estimate_growth.
7353         * profile.c (branch_prob): When reading failed, do not consider
7354         profile as read.
7356 2008-08-31  Jan Hubicka  <jh@suse.cz>
7358         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
7359         loop is optimized for speed.
7361 2008-08-31  Richard Guenther  <rguenther@suse.de>
7363         PR middle-end/37289
7364         * fold-const.c (fold_binary): Retain conversions in folding
7365         ~A + 1 to -A.
7367 2008-08-31  Jan Hubicka  <jh@suse.cz>
7369         * postreload-gcse.c (eliminate_partially_redundant_loads):
7370         Use optimize_bb_for_size_p.
7371         * predict.c (maybe_hot_frequency_p): Make inline.
7372         (maybe_hot_count_p): Break out from ...
7373         (maybe_hot_bb_p): ... this one.
7374         (maybe_hot_edge_p): Simplify.
7375         * basic-block.h (probably_cold_bb_p): Remove.
7377 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
7379         PR target/37168
7380         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
7381         prototype.
7382         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
7383         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
7384         Also split V4SFmode.
7385         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
7386         vector float modes.
7388 2008-08-31  Jan Hubicka  <jh@suse.cz>
7390         * predict.c (PROB_VERY_LIKELY): Make small enough so things
7391         become cold.
7392         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
7394 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
7396         PR debug/37287
7397         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
7398         add source coords.
7400         * dwarf2out.c (native_encode_initializer): Subtract min_index for
7401         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
7403 2008-08-31  Jan Hubicka  <jh@suse.cz>
7405         * sparc.h (BRANCH_COST): Fix macro definition.
7406         * avr.c (avr_operand_rtx_cost): Add speed argument.
7407         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
7409 2008-08-31  Richard Guenther  <rguenther@suse.de>
7411         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
7412         types instead of operands.  Re-instantiate verifying of
7413         binary expression operands.
7415 2008-08-30  Jan Hubicka  <jh@suse.cz>
7417         * fwprop.c (should_replace_address): Add speed attribute.
7418         (PR_OPTIMIZE_FOR_SPEED): New flag.
7419         (propagate_rtx_1): Use it.
7420         (propagate_rtx): Set it.
7421         (try_fwprop_subst): Update call of rtx_costs.
7422         (forward_propagate_and_simplify): LIkewise.
7423         * hooks.c (hook_int_rtx_bool_0): New
7424         (hook_bool_rtx_int_int_intp_false): Replace by ...
7425         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
7426         * hooks.h (hook_int_rtx_bool_0): New
7427         (hook_bool_rtx_int_int_intp_false): Replace by ...
7428         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
7429         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
7430         (prepare_cmp_insn): UPdate call of rtx_cost.
7431         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
7432         (reload_cse_simplify_operands): Update call of rtx_cost.
7433         (reload_cse_move2add): call of rtx_cost.
7434         * target.h (struct gcc_target): Update rtx_costs and address_costs.
7435         * rtlanal.c (rtx_cost): Add speed argument.
7436         (address_cost): Add speed argument
7437         (default_address_cost): Likewise.
7438         (insn_rtx_cost): Likewise.
7439         * cfgloopanal.c (seq_cost): Add speed argument.
7440         (target_reg_cost, target_spill_cost): Turn to array.
7441         (init_set_costs): Update for speed.
7442         (estimate_reg_pressure_cost): Add speed argument.
7443         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
7444         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
7445         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
7446         (seq_cost): Add speed argument.
7447         (computation_cost): Add speed arugment.
7448         (add_cost, multiply_by_const, get_address_cost): add speed argument.
7449         (force_expr_to_var_cost): Update for profile info.
7450         (force_var_cost): Likewise.
7451         (split_address_cost): Likewise.
7452         (ptr_difference_cost): Likewise.
7453         (difference_cost): Likewise.
7454         (get_computation_cost_at): Likewise.
7455         (determine_iv_cost): Likewise.
7456         (ivopts_global_cost_for_size): Likewise.
7457         (rewrite_use_address): Likewise.
7458         (tree_ssa_iv_optimize_loop): Initialize speed field.
7459         * cse.c (optimize_this_for_speed_p): New static var.
7460         (notreg_cost): Update call of rtx_cost.
7461         (cse_extended_basic_block): set optimize_this_for_speed_p.
7462         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
7463         (noce_try_cmove_arith): Likewise.
7464         (noce_try_sign_mask): LIkewise.
7465         * expr.c (compress_float_constant): Update rtx_cost calls.
7466         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
7467         argument.
7468         (addr_to_parts): Likewise.
7469         (create_mem_ref): Likewise.
7470         * dse.c (find_shift_sequence): Add speed argument.
7471         (replace_read): Update call.
7472         * calls.c (precompute_register_parameters): Update call of rtx_cost.
7473         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
7474         * neg_cost, shift_cost, shiftadd_cost,
7475         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
7476         mul_highpart_cost): Increase dimension.
7477         (init_expmed): Initialize for both size and speed.
7478         (expand_shift): Use profile.
7479         (synth_mult): Use profile.
7480         (choose_mult_variant): Use profile.
7481         (expand_mult): Use profile.
7482         (expand_mult_highpart_optab): Use profile.
7483         (expand_mult_highpart): Use profile.
7484         (expand_smod_pow2): Use profile.
7485         (expand_divmod): Use profile.
7486         * simplify-rtx.c (simplify_binary_operation_1): Update call of
7487         rtx_cost.
7488         * loop-invariant.c (create_new_invariant): Use profile.
7489         (gain_for_invariant): Add speed parameter.
7490         (best_gain_for_invariant): Likewise.
7491         (find_invariants_to_move): Likewise.
7492         (move_single_loop_invariants): Set it.
7493         * target-def.h (TARGET_RTX_COSTS): Use hook.
7494         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
7495         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
7496         * output.h (default_address_cost): Update prototype.
7497         * combine.c (optimize_this_for_speed_p): New static var.
7498         (combine_validate_cost): Update call of rtx_cost.
7499         (combine_instructions): Set optimize_this_for_speed_p.
7500         (expand_compound_operation): Update call of rtx_cost.
7501         (make_extraction):Update call of rtx_cost.
7502         (force_to_mode):Update call of rtx_cost.
7503         (distribute_and_simplify_rtx):Update call of rtx_cost.
7504         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
7505         (estimate_reg_pressure_cost): Update prototype.
7506         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
7507         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
7508         Remove.
7509         * config/alpha/alpha.c (alpha_rtx_costs): Update.
7510         (alpha_rtx_costs): Update.
7511         * config/frv/frv.c (frv_rtx_costs): Update.
7512         * config/s390/s390.c (s390_rtx_costs): Update.
7513         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
7514         (m32c_rtx_costs): Update.
7515         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
7516         (spu_rtx_costs): Update.
7517         * config/sparc/sparc.c (sparc_rtx_costs): Update.
7518         * config/m32r/m32r.c (m32r_rtx_costs): Update.
7519         * config/i386/i386.c (:ix86_address_cost): Update.
7520         (ix86_rtx_costs): Update.
7521         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
7522         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
7523         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
7524         * config/crx/crx.c (crx_address_cost): Update.
7525         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
7526         * config/stormy16/stormy16.c
7527         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
7528         * config/m68hc11/m68hc11.c
7529         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
7530         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
7531         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
7532         Update.
7533         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
7534         Update
7535         * config/ia64/ia64.c (ia64_rtx_costs): Update.
7536         * config/m68k/m68k.c (m68k_rtx_costs): Update.
7537         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
7538         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
7539         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
7540         (mcore_rtx_costs): update.
7541         * config/score/score3.c (score3_rtx_costs): Update.
7542         * config/score/score7.c (score7_rtx_costs): Update.
7543         * config/score/score3.h (score3_rtx_costs):Update.
7544         * config/score/score7.h (score7_rtx_costs): Update.
7545         * config/score/score.c (score_rtx_costs): Update.
7546         * config/arm/arm.c (arm_address_cost): Update.
7547         (arm_rtx_costs_1): Update.
7548         (arm_rtx_costs_1): Update.
7549         (arm_size_rtx_costs): Update.
7550         (arm_size_rtx_costs): Update.
7551         (arm_size_rtx_costs): Update.
7552         (arm_xscale_rtx_costs): Update.
7553         (arm_thumb_address_cost): Update.
7554         * config/pa/pa.c (hppa_address_cost): Update.
7555         * config/mips/mips.c (mips_rtx_costs): Update.
7556         * config/vax/vax.c (vax_address_cost): Update.
7557         * config/h8300/h8300.c (h8300_shift_costs): Update.
7558         (h8300_rtx_costs): Update.
7559         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
7560         (v850_rtx_costs): Update.
7561         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
7562         * config/bfin/bfin.c
7563         (bfin_address_cost): Update.
7564         (bfin_rtx_costs): Update.
7565         * stmt.c (lshift_cheap_p): Update.
7567 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7569         PR middle-end/36444
7570         * expmed.c (extract_bit_field_1): Check the mode size to make
7571         sure the vector modes have the same size.
7573 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
7575         * dojump.c (top level): Include basic-block.h to declare
7576         optimize_insn_for_speed_p
7578         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
7580         * opts.h (CL_SAVE): New option class for marking options that are
7581         target specific options usable in the target attribute.
7582         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
7584         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
7585         can easily find the target specific options that are safe to use
7586         in the attribute or pragma.
7588         * attribs.c (decl_attributes): Change #pragma GCC option to
7589         #pragma GCC target, and attribute((option(...))) to
7590         attribute((target(...))).
7592         * doc/extend.texi (target attribute): Change from option
7593         attribute.  Delete push/pop/reset.
7594         (#pragma GCC target): Change from #pragma GCC option.  Delete
7595         push/pop/reset.
7596         (#pragma GCC push_options): Document new pragma.
7597         (#pragma GCC pop_options): Document new pragma.
7598         (#pragma GCC reset_options): Document new pragma.
7600         * targhooks.c (default_target_option_valid_attribute_p): Add
7601         warning about port not supporting target attributes.
7602         (default_target_option_pragma_parse): New function, warn about
7603         #pragma GCC target not being supported.
7605         * targhooks.h (default_target_option_pragma_parse): Add
7606         declaration.
7608         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
7609         TI_CURRENT_OPTION_PRAGMA.
7610         (current_target_pragma): Rename from current_option_pragma.
7612         * target.h: (struct target_option): Delete booleans for changing
7613         the optimization level on hot/cold functions.  Change signature of
7614         pragma_parse hook to take a second tree.
7616         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
7618         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
7619         that the declaration is done at global scope.
7621         * langhooks.c (add_builtin_function_common): Move most of the code
7622         from add_builtin_function here, calling the hook passed in.
7623         (add_builtin_function): Call add_builtin_function_common with
7624         standard builtin hook.
7625         (add_builtin_function_ext_scope): New function to add builtins to
7626         global scope.
7628         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
7629         hook.
7630         (add_builtin_function_ext_scope): Add declaration.
7632         * c-pragma.c (handle_pragma_target): Rename from
7633         handle_pragma_option, #pragma GCC option is now #pragma GCC
7634         target.  Move warning about port not supporting target options to
7635         default pragma parse hook.  Remove push/pop/reset from this
7636         pragma.
7637         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
7638         (option_stack): Delete static variable.
7639         (optimize_stack): Ditto.
7640         (optons_stack): New stack of saved target and optimization
7641         options.
7642         (handle_pragma_push_options): New function to handle pushing both
7643         target and optimization options.
7644         (handle_pragma_pop_options): New function to handle popping both
7645         target and optimization options.
7646         (handle_pragma_reset_options): New function to handle resetting
7647         both target and optimization options to their initial state.
7648         (init_pragma): Rename handle_pragma_option to
7649         handle_pragma_target.  Add support for push_options, pop_options,
7650         and reset_options pragmas.
7652         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
7653         default_target_option_pragma_parse.
7654         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
7655         default_target_option_valid_attribute_p.
7656         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7657         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7658         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
7659         optimization level on hot/cold functions.
7661         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
7662         if the caller and callee have different optimization levels.
7664         * c-common.c (handle_target_attribute): Rename from
7665         handle_option_attribute, attribute((option(...))) is now
7666         attribute((target(...))).  Move warning if the port does not
7667         support target attributes to the default hook.
7668         (handle_hot_attribute): Delete code to change the optimization
7669         level of hot functions.
7670         (handle_cold_attribute): Ditto.
7672         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
7673         argument that is the binary tree options to use if there are no
7674         arguments.  Call ix86_valid_target_attribute_tree instead of
7675         ix86_valid_option_attribute_tree.
7676         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
7677         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
7678         ix86_pragma_option_parse.
7680         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
7681         Rename from ix86_valid_option_attribute_tree.
7683         * config/i386/i386.c (ix86_add_new_builtins): New function to add
7684         new builtins when the ISA changes.
7685         (ix86_valid_target_attribute_tree): Rename from
7686         ix86_valid_option_attribute_tree.  Change callers.  If the
7687         function specified optimization options, use those as the starting
7688         point before setting up the target attributes.  If the
7689         optimization options were changed in the course of setting the
7690         target attributes, record the new optimization options.
7691         (ix86_valid_target_attribute_tree_inner_p): Rename from
7692         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
7693         ix86_add_new_builtins if the ISA changed.
7694         (ix86_valid_target_attribute_p): Rename from
7695         ix86_valid_option_attribute_p.  Change callers.
7696         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
7697         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
7698         as delayed builtin functions.
7699         (struct builtin_isa): New structure to record builtin functions
7700         that should be delayed until the ISA for that function is used.
7701         (ix86_builtins_isa): Change from int to struct to track builtin
7702         functions we want to declare at some point.
7703         (def_builtin): If the front end can delay defining the builtin
7704         functions, don't create builtins for ISAs not part of the default
7705         options.
7706         (def_builtin_const): Ditto.
7707         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
7708         __builtin_ia32_pcmov_v2di to be different builtin functions.
7709         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
7710         a structure instead of an int.
7711         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
7712         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
7713         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7714         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7716         * config/ia64/ia64.h
7717         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7718         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7720         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
7721         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
7722         (LANG_HOOKS_INITIALIZER): Add
7723         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
7725 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
7727         PR target/37270
7728         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
7729         the reload address with the index register for SFmode
7730         access with a displacement.
7732 2008-08-30  Jan Hubicka  <jh@suse.cz>
7734         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
7735         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
7736         * dojump.c (do_jump): Likewise.
7737         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
7738         (note-if_info): Add BRANCH_COST.
7739         (noce_try_store_flag_constants, noce_try_addcc,
7740         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
7741         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
7742         find_if_case_2): Use computed branch cost.
7743         * expr.h (BRANCH_COST): Update default.
7744         * predict.c (predictable_edge_p): New function.
7745         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
7746         Update BRANCH_COST call.
7747         * basic-block.h (predictable_edge_p): Declare.
7748         * config/alpha/alpha.h (BRANCH_COST): Update.
7749         * config/frv/frv.h (BRANCH_COST): Update.
7750         * config/s390/s390.h (BRANCH_COST): Update.
7751         * config/spu/spu.h (BRANCH_COST): Update.
7752         * config/sparc/sparc.h (BRANCH_COST): Update.
7753         * config/m32r/m32r.h (BRANCH_COST): Update.
7754         * config/i386/i386.h (BRANCH_COST): Update.
7755         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
7756         BRANCH_COST.
7757         * config/sh/sh.h (BRANCH_COST): Update.
7758         * config/pdp11/pdp11.h (BRANCH_COST): Update.
7759         * config/avr/avr.h (BRANCH_COST): Update.
7760         * config/crx/crx.h (BRANCH_COST): Update.
7761         * config/xtensa/xtensa.h (BRANCH_COST): Update.
7762         * config/stormy16/stormy16.h (BRANCH_COST): Update.
7763         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
7764         * config/iq2000/iq2000.h (BRANCH_COST): Update.
7765         * config/ia64/ia64.h (BRANCH_COST): Update.
7766         * config/rs6000/rs6000.h (BRANCH_COST): Update.
7767         * config/arc/arc.h (BRANCH_COST): Update.
7768         * config/score/score.h (BRANCH_COST): Update.
7769         * config/arm/arm.h (BRANCH_COST): Update.
7770         * config/pa/pa.h (BRANCH_COST): Update.
7771         * config/mips/mips.h (BRANCH_COST): Update.
7772         * config/vax/vax.h (BRANCH_COST): Update.
7773         * config/h8300/h8300.h (BRANCH_COST): Update.
7774         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
7775         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
7776         * doc/tm.texi (BRANCH_COST): Update.
7778 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
7780         PR target/37283
7781         * config/arm/arm.c (arm_optimization_options): Set
7782         flag_section_anchors to 2 instead of 1 to distinguish it from
7783         -fsection-anchors given explicitely on the command line.
7785 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
7787         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
7788         final insn of a split.
7790 2008-08-30  Jan Hubicka  <jh@suse.cz>
7792         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
7793         optimized for speed.
7794         * final.c (compute_alignments): Use optimize_bb_for_size_p.
7795         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
7796         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
7797         flag_gcse_after_reload_set): New static vars.
7798         (common_handle_option): Enable those flags for profile-use.
7799         (decode_options): Remove optimize_size flags that are handled
7800         on higher granuality.
7801         * tree-vectorizer.c (vectorize_loops): Use
7802         optimize_loop_nest_for_speed_p.
7803         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
7804         * tree-predcom.c (tree_predictive_commoning): Use
7805         optimize_loop_for_speed_p.
7806         * varasm.c (assemble_start_function): Use
7807         optimize_function_for_speed_p.
7808         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
7809         * predict.c (optimize_loop_for_speed_p): Fix walk.
7811 2008-08-30  Jan Hubicka  <jh@suse.cz>
7813         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
7814         functions.
7815         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
7816         profile presence locally.
7818 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
7820         PR bootstrap/37086
7821         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
7822         versions before 4.0.
7824 2008-08-29  Jan Hubicka  <jh@suse.cz>
7826         * tree-inline.c (insert_init_stmt): Insert sequence even when
7827         not in SSA form.
7829 2008-08-29  Jeff Law  <law@redhat.com>
7831         * mn10300.c (mn10300_secondary_reload_class): We need secondary
7832         reloads for AM33-2 if IN is a pseudo with an equivalent memory
7833         location and class is an FP register.
7835 2008-08-29  Jan Hubicka  <jh@suse.cz>
7837         * see.c (see_merge_one_def_extension): Silence used uninitialized
7838         warning.
7839         * matrix-reorg.c (check_allocation_function): Likewise.
7840         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
7842 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
7844         PR c/37261
7845         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
7846         compute new & and | in type rather than TREE_TYPE (arg0).
7848         * dwarf2out.c (fortran_common): Update comment.
7849         (gen_variable_die): Swap com_die and var_die variables in Fortran
7850         COMMON block handling code.
7852         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
7854         * dwarf2out.c (gen_const_die): New function.
7855         (size_of_die, value_format, output_die): Output larger
7856         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
7857         (native_encode_initializer): New function.
7858         (tree_add_const_value_attribute): Call it.
7859         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
7861         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
7862         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
7863         TREE_THIS_VOLATILE to add_type_attribute.
7865         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
7866         types.
7867         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
7868         types.
7870         * dwarf2out.c (loc_by_reference): New function.
7871         (add_location_or_const_value_attribute): Use it.
7873         PR fortran/23057
7874         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
7875         as DW_TAG_variable children of DW_TAG_common_block rather than
7876         DW_TAG_member children.  Put DW_AT_external to individual
7877         DW_TAG_variable DIEs, not to DW_TAG_common_block.
7879         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
7880         loc_descriptor_from_tree_1.
7882         PR fortran/29635
7883         PR fortran/23057
7884         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
7885         arguments to imported_module_or_decl.
7886         (debug_nothing_tree_tree): Removed.
7887         (debug_nothing_tree_tree_tree_bool): New prototype.
7888         * debug.c (do_nothing_debug_hooks): Adjust.
7889         (debug_nothing_tree_tree): Removed.
7890         (debug_nothing_tree_tree_tree_bool): New function.
7891         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
7892         (gen_variable_die): Put all common vars for the
7893         same COMMON block under one DW_TAG_common_block.
7894         (declare_in_namespace): Return new context_die, for Fortran
7895         return the module DIE instead of adding extra declarations into
7896         the namespace.
7897         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
7898         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
7899         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
7900         DW_AT_declaration.
7901         (dwarf2out_global_decl): Don't skip Fortran global vars.
7902         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
7903         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
7904         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
7905         DW_TAG_imported_declaration as child of previous
7906         DW_TAG_imported_module.
7907         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
7908         * sdbout.c (sdb_debug_hooks): Likewise.
7909         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
7911 2008-08-29  Jan Hubicka  <jh@suse.cz>
7913         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
7915         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
7916         * ipa-cp.c (n_cloning_candidates): New static variable.
7917         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
7918         (ipcp_print_all_lattices): Improve debug output.
7919         (ipcp_cloning_candidate_p): New function.
7920         (ipcp_initialize_node_lattices): Use it.
7921         (ipcp_init_stage): Do only analyzis here; prettier debug output.
7922         (ipcp_propagate_stage): Prettier debug output.
7923         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
7924         (ipcp_print_all_structures): Remove.
7925         (ipcp_need_redirect_p): Test !n_cloning_candidates.
7926         (ipcp_insert_stage): Prettier debug output; call
7927         cgraph_remove_unreachable_nodes before propagating.
7928         (pass_ipa_cp): Schedule function removal pass.
7929         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
7930         debug output.
7931         (cgraph_maybe_hot_edge_p): Move to ...
7932         * predict.c (cgraph_maybe_hot_edge_p) ... here.
7933         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
7934         (common_handle_option): Set them; enable ipa-cp when profiling.
7935         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
7936         (ipa_print_all_jump_functions): Likewise.
7937         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
7938         (ipa_print_node_params, ipa_print_all_params): New.
7939         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
7940         ipa_print_all_param_flags): Remove.
7941         (ipa_print_node_params, ipa_print_all_params): New.
7943 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
7945         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
7946         change from 2008-04-03.
7947         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
7949 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7951         PR rtl-opt/37251
7952         * ira-color.c (push_allocnos_to_stack): Truncate
7953         removed_splay_allocno_vec.
7955 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7957         PR rtl-opt/37243
7958         * ira-color (ira_fast_allocation): Don't assign hard registers to
7959         global allocnos.
7961 2008-08-29  Jan Hubicka  <jh@suse.cz>
7963         PR middle-end/37278
7964         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
7965         for cold internal loops.
7967 2008-08-29  Richard Guenther  <rguenther@suse.de>
7969         * tree-ssa-structalias.c (create_variable_info_for): Do not
7970         create fields for heap vars or vars with a noalias state.
7971         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
7972         from ESCAPED.
7974 2008-08-29  Richard Guenther  <rguenther@suse.de>
7976         * common.opt (ftree-store-ccp): Mark as preserved for
7977         backward compatibility.
7978         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
7979         * tree-pass.h (pass_store_ccp): Remove.
7980         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
7981         (first_vdef): Remove declaration.
7982         (get_value_loaded_by): Likewise.
7983         * tree-ssa-ccp.c (do_store_ccp): Remove.
7984         (get_default_value): Simplify as do_store_ccp is always false
7985         now.  Do not initialize mem_ref.
7986         (set_value_varying): Likewise.
7987         (canonicalize_float_value): Likewise.
7988         (set_lattice_value): Likewise.
7989         (likely_value): Likewise.
7990         (surely_varying_stmt_p): Likewise.
7991         (ccp_initialize): Likewise.
7992         (ccp_lattice_meet): Likewise.
7993         (ccp_visit_phi_node): Likewise.
7994         (ccp_fold): Likewise.
7995         (evaluate_stmt): Likewise.
7996         (visit_assignment): Likewise.
7997         (ccp_visit_stmt): Likewise.
7998         (execute_ssa_ccp): Fold into ...
7999         (do_ssa_ccp): ... this.
8000         (do_ssa_store_ccp): Remove.
8001         (gate_store_ccp): Likewise.
8002         (pass_store_ccp): Likewise.
8003         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
8004         initialize mem_ref.
8005         * tree-ssa-propagate.c (first_vdef): Remove.
8006         (get_value_loaded_by): Likewise.
8007         (replace_vuses_in): Likewise.
8008         (substitute_and_fold): Do not call replace_vuses_in.
8009         * opts.c (decode_options): Do not set flag_tree_store_ccp.
8011 2008-08-29  Richard Guenther  <rguenther@suse.de>
8013         PR middle-end/37236
8014         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
8015         PARAM_NOALIAS tags with is_heapvar.
8016         * tree-ssa-operands.c (access_can_touch_variable): Offset
8017         based tests do not apply for heapvars.  Fix offset test.
8019 2008-08-29  Jan Hubicka  <jh@suse.cz>
8021         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
8022         (-fipa-cp-clone): Enabled by default at -O3.
8023         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
8024         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
8026 2008-08-29  Jan Hubicka  <jh@suse.cz>
8028         * tree.c (build_function_type_skip_args,
8029         build_function_decl_skip_args): New functions.
8030         * tree.h (build_function_type_skip_args,
8031         build_function_decl_skip_args): Declare.
8032         * gimple.c (giple_copy_call_skip_args): New function.
8033         (giple_copy_call_skip_args): Declare.
8035         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
8036         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
8037         (ipcp_node_modifiable_p): ... this one; use
8038         tree_versionable_function_p.
8039         (ipcp_create_replace_map): Improve debug output.
8040         (ipcp_need_redirect_p): Return false when not clonning.
8041         (ipcp_update_callgraph): Skip args.
8042         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
8043         skip args.
8044         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
8045         (save_inline_function_body): Update call of tree_function_versioning.
8046         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
8047         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
8048         argument.
8049         (tree_function_versioning): Likewise.
8050         * tree-inline.h (tree_function_versioning): Update prototype.
8052 2008-08-29  Jan Hubicka  <jh@suse.cz>
8054         * loop-unswitch.c (unswitch_single_loop): Use
8055         optimize_loop_for_speed_p.
8056         * tree-ssa-threadupdate.c (mark_threaded_blocks):
8057         Use optimize_function_for_size_p.
8058         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
8059         * postreload-gcse.c (eliminate_partially_redundant_load):
8060         Use optimize_bb_for_size_p.
8061         * value-prof.c (gimple_divmod_fixed_value_transform,
8062         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
8063         gimple_stringops_transform): Use optimize_bb_for_size_p.
8064         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
8065         * final.c (compute_alignments): Use optimize_function_for_size_p.
8066         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
8067         (fold_builtin_strcpy, fold_builtin_fputs): Use
8068         optimize_function_for_size_p.
8069         * fold-const.c (tree_swap_operands_p): Use
8070         optimize_function_for_size_p.
8071         * recog.c (relax_delay_slots): Likewise.
8072         * tree-ssa-math-opts.c (replace_reciprocal):
8073         Use optimize_bb_for_speed_p.
8074         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
8075         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
8076         optimize_function_for_size_p.
8077         (cgraph_decide_inlining_of_small_function): Use
8078         optimize_function_for_size_p.
8079         * global.c (find_reg): Use optimize_function_for_size_p.
8080         * opts.c (decode_options): Do not clear flag_tree_ch,
8081         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
8082         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
8083         work it out from profile.
8084         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
8085         optimize_loop_for_speed_p.
8086         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
8087         Constify argument.
8088         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
8089         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
8090         * tree-eh.c (decide_copy_try_finally): Use
8091         optimize_function_for_size_p.
8092         * local-alloc.c (block_alloc): Pass BB pointer.
8093         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
8094         * gcse.c (gcse_main): Use optimize_function_for_size_p.
8095         * loop-unroll.c (decide_unrolling_and_peeling):
8096         Use optimize_loop_for_size_p.
8097         (decide_peel_completely): Likewise.
8098         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
8099         optimize_loop_for_size_p.
8100         (vect_enhance_data_refs_alignment): Likewise.
8101         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
8102         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
8103         Update call.
8104         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
8105         (try_crossjump_bb): Use optimize_bb_for_size_p.
8106         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
8107         optimize_loop_for_speed_p.
8108         * bb-reorder.c (find_traces_1_round): Likewise.
8109         (copy_bb): Use optimize_bb_for_speed_p.
8110         (duplicate_computed_gotos): Likewise.
8111         * basic-block.h (optimize_loop_nest_for_size_p,
8112         optimize_loop_nest_for_speed_p): New.
8113         * stmt.c (expand_case): Use optimize_insn_for_size_p.
8115 2008-08-29  Tristan Gingold  <gingold@adacore.com>
8117         * gcov.c (main): Call expandargv.
8119 2008-08-29  Jan Hubicka  <jh@suse.cz>
8121         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
8122         is not cold.
8123         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
8124         Constify arguments.
8125         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
8126         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
8127         Constify.
8128         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
8130 2008-08-29  Jan Hubicka  <jh@suse.cz>
8132         * tree-pass.h (pass_strip_predict_hints): Declare.
8133         * predict.c (strip_builtin_expect): Rename to ...
8134         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
8135         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
8136         (tree_estimate_probability): Do not strip builtin_expect.
8137         (pass_strip_predict_hints): New pass.
8138         * tree-inline.c (expand_call_inline): When inlining cold function,
8139         predict it as unlikely.
8140         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
8142 2008-08-29  Richard Guenther  <rguenther@suse.de>
8144         PR tree-optimization/37207
8145         * tree-vrp.c (extract_range_from_binary_expr): Also try
8146         to constant fold if only one of the operands is a constant.
8148 2008-08-29  Nick Clifton  <nickc@redhat.com>
8150         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
8151         the same way as SYMBOL_REFs.
8153 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
8155         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
8157 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
8159         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
8160         * config/mips/mips.md (branch_likely): Remove const.  Fix
8161         comment formatting.
8162         (define_delay for type "branch"): Change to only apply for branch
8163         with likely variant.
8164         (define_delay for type "branch" and "branch_likely" no).  New delay
8165         definition.
8166         (equality_op): New code iterator.
8167         (bbv, bbinv): New code attributes.
8168         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
8169         patterns.
8171 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8172             Andrew Pinski  <pinskia@gcc.gnu.org>
8174         PR 18050
8175         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
8177 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
8179         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
8180         rule that a symbolic constant must be defined and >= 0 for the
8181         corresponding facility to be present at compile-time.
8182         * gthr-posix.c: Likewise.
8184 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
8186         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
8187         * config/mips/mips.md (D): New mode attribute.
8188         (mulsi3, muldi3): Merge it into ...
8189         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
8190         (muldi3_mul3): New pattern.
8191         (mulsi3_mult3): Rename to mulsi3_mul3.
8193 2008-08-28  Jan Hubicka  <jh@suse.cz>
8195         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
8196         to fail.
8197         * predict.c (always_optimize_for_size_p): Rename to ...
8198         (optimize_function_for_size): ... this one; make extern.
8199         (optimize_function_for_speed_p): New.
8200         (optimize_bb_for_size_p, optimize_bb_for_size_p,
8201         optimize_edge_for_size_p,optimize_edge_for_size_p,
8202         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
8203         * basic-block.h (optimize_function_for_size_p,
8204         optimize_function_for_speed_p): Declare.
8205         * i386.md (optimize_size checks): Replace them by appropriate
8206         predicate.
8207         (standard_80387_constant_p, ix86_compute_frame_layout,
8208         ix86_expand_epilogue, ix86_decompose_address,
8209         print_operand, emit_i387_cw_initialization,
8210         inline_memory_move_cost, ix86_pad_returns,
8211         ix86_reorg): Replace optimize_size checks.
8213 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
8215         * rtl.h (simplify_subreg_regno): Declare.
8216         * rtlanal.c (simplify_subreg_regno): New function, split out from...
8217         * simplify-rtx.c (simplify_subreg): ...here.
8218         * reload.c (find_reloads): Use simplify_subreg_regno instead of
8219         subreg_offset_representable_p.
8221 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8223         PR c/30949
8224         * c-typeck.c (convert_for_assignment): Give a note describing what
8225         was passed and what was expected.
8227 2008-08-28  Joey Ye  <joey.ye@intel.com>
8229         * doc/extend.texi: Document AVX built-in functions.
8230         * doc/invoke.texi: Document -mavx.
8232 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
8233             Joey Ye  <joey.ye@intel.com>
8234             Xuepeng Guo  <xuepeng.guo@intel.com>
8236         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
8238         * config/i386/cpuid.h (bit_FMA): New.
8239         (bit_XSAVE): Likewise.
8240         (bit_OSXSAVE): Likewise.
8241         (bit_AVX): Likewise.
8243         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
8244         define.  Use ASM_OUTPUT_AVX_PREFIX.
8246         * config/i386/gmmintrin.h: New.
8248         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
8249         (OPTION_MASK_ISA_AVX_SET): New.
8250         (OPTION_MASK_ISA_FMA_SET): Likewise.
8251         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
8252         (OPTION_MASK_ISA_FMA_SET): Likewise.
8253         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
8254         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
8255         (pta_flags): Add PTA_AVX and PTA_FMA.
8256         (override_options): Handle PTA_AVX and PTA_FMA.
8257         (init_cumulative_args): Handle warn_avx.
8258         (classify_argument): Return 0 for COImode and OImode.  Return
8259         1 and X86_64_AVX_CLASS for 256bit vector types.
8260         (examine_argument): Handle X86_64_AVX_CLASS.
8261         (construct_container): Likewise.
8262         (function_arg_advance_32): Pass OImode and 256bit vector types
8263         in AVX register.
8264         (function_arg_advance_64): Take a new argument to indicate if a
8265         parameter is named.  Handle 256bit vector types.  Return
8266         immediately for unnamed 256bit vector mode parameters.
8267         (function_arg_advance): Updated.
8268         (function_arg_32): Add comments for TImode.  Handle OImode
8269         and 256bit vector types.
8270         (function_arg_64): Take a new argument to indicate if a
8271         parameter is named.  Handle 256bit vector types.  Return NULL
8272         for unnamed 256bit vector mode parameters.
8273         (function_arg): Updated.
8274         (setup_incoming_varargs_64): Support
8275         AVX encoding for *sse_prologue_save_insn.
8276         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
8277         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
8278         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
8279         enabled, otherwise return -3.
8280         (standard_sse_constant_opcode): Handle AVX and 256bit vector
8281         modes.
8282         (print_reg): Support AVX registers.  Handle 'x' and 't'.
8283         Handle 'd' to duplicate the operand.
8284         (print_operand): Likewise.  Also support AVX vector compare
8285         instructions.
8286         (output_387_binary_op): Support AVX.
8287         (output_fp_compare): Likewise.
8288         (ix86_expand_vector_move_misalign): Likewise.
8289         (ix86_attr_length_vex_default): New.
8290         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
8291         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
8292         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
8293         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
8294         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
8295         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
8296         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
8297         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
8298         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
8299         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
8300         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
8301         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
8302         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
8303         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
8304         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
8305         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
8306         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
8307         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
8308         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
8309         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
8310         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
8311         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
8312         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
8313         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
8314         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
8315         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
8316         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
8317         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
8318         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
8319         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
8320         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
8321         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
8322         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
8323         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
8324         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
8325         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
8326         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
8327         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
8328         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
8329         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
8330         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
8331         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
8332         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
8333         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
8334         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
8335         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
8336         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
8337         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
8338         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
8339         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
8340         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
8341         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
8342         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
8343         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
8344         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
8345         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
8346         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
8347         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
8348         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
8349         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
8350         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
8351         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
8352         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
8353         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
8354         and IX86_BUILTIN_MOVMSKPS256,
8355         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
8356         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
8357         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
8358         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
8359         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
8360         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
8361         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
8362         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
8363         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
8364         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
8365         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
8366         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
8367         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
8368         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
8369         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
8370         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
8371         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
8372         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
8373         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
8374         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
8375         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
8376         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
8377         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
8378         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
8379         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
8380         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
8381         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
8382         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
8383         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
8384         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
8385         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
8386         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
8387         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
8388         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
8389         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
8390         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
8391         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
8392         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
8393         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
8394         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
8395         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
8396         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
8397         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
8398         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
8399         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
8400         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
8401         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
8402         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
8403         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
8404         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
8405         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
8406         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
8407         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
8408         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
8409         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
8410         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
8411         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
8412         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
8413         IX86_BUILTIN_CMPPS,
8414         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
8415         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
8416         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
8417         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
8418         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
8419         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
8420         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
8421         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
8422         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
8423         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
8424         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
8425         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
8426         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
8427         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
8428         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
8429         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
8430         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
8431         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
8432         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
8433         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
8434         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
8435         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
8436         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
8437         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
8438         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
8439         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
8440         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
8441         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
8442         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
8443         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
8444         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
8445         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
8446         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
8447         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
8448         IX86_BUILTIN_MOVMSKPS256.
8449         (ix86_init_mmx_sse_builtins): Support AVX builtins.
8450         (ix86_expand_args_builtin): Likewise.
8451         (ix86_expand_special_args_builtin): Likewise.
8452         (ix86_hard_regno_mode_ok): Handle AVX modes.
8453         (ix86_expand_vector_init_duplicate): Likewise.
8454         (ix86_expand_vector_init_one_nonzero): Likewise.
8455         (ix86_expand_vector_init_one_var): Likewise.
8456         (ix86_expand_vector_init_concat): Likewise.
8457         (ix86_expand_vector_init_general): Likewise.
8458         (ix86_expand_vector_set): Likewise.
8459         (ix86_vector_mode_supported_p): Likewise.
8460         (x86_extended_reg_mentioned_p): Check INSN_P before using
8461         PATTERN.
8463         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
8464         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
8466         * config/i386/i386.h (TARGET_AVX): New.
8467         (TARGET_FMA): Likewise.
8468         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
8469         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
8470         (VALID_AVX256_REG_MODE): New.
8471         (AVX256_VEC_FLOAT_MODE_P): Likewise.
8472         (AVX_FLOAT_MODE_P): Likewise.
8473         (AVX128_VEC_FLOAT_MODE_P): Likewise.
8474         (AVX256_VEC_FLOAT_MODE_P): Likewise.
8475         (AVX_VEC_FLOAT_MODE_P): Likewise.
8476         (ASM_OUTPUT_AVX_PREFIX): Likewise.
8477         (ASM_OUTPUT_OPCODE): Likewise.
8478         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
8479         support.
8480         (SSE_REG_MODE_P): Allow 256bit vector modes.
8481         (ix86_args): Add a warn_avx field.
8483         * config/i386/i386.md (UNSPEC_PCMP): New.
8484         (UNSPEC_VPERMIL): Likewise.
8485         (UNSPEC_VPERMIL2): Likewise.
8486         (UNSPEC_VPERMIL2F128): Likewise.
8487         (UNSPEC_MASKLOAD): Likewise.
8488         (UNSPEC_MASKSTORE): Likewise.
8489         (UNSPEC_CAST): Likewise.
8490         (UNSPEC_VTESTP): Likewise.
8491         (UNSPECV_VZEROALL): Likewise.
8492         (UNSPECV_VZEROUPPER): Likewise.
8493         (XMM0_REG): Likewise.
8494         (XMM1_REG): Likewise.
8495         (XMM2_REG): Likewise.
8496         (XMM3_REG): Likewise.
8497         (XMM4_REG): Likewise.
8498         (XMM5_REG): Likewise.
8499         (XMM6_REG): Likewise.
8500         (XMM8_REG): Likewise.
8501         (XMM9_REG): Likewise.
8502         (XMM10_REG): Likewise.
8503         (XMM11_REG): Likewise.
8504         (XMM12_REG): Likewise.
8505         (XMM13_REG): Likewise.
8506         (XMM14_REG): Likewise.
8507         (XMM15_REG): Likewise.
8508         (prefix): Likewise.
8509         (prefix_vex_imm8): Likewise.
8510         (prefix_vex_w): Likewise.
8511         (length_vex): Likewise.
8512         (maxmin): Likewise.
8513         (movoi): Likewise.
8514         (*avx_ashlti3): Likewise.
8515         (*avx_lshrti3): Likewise.
8516         (*avx_setcc<mode>): Likewise.
8517         (*fop_<mode>_comm_mixed_avx): Likewise.
8518         (*fop_<mode>_comm_avx): Likewise.
8519         (*fop_<mode>_1_mixed_avx): Likewise.
8520         (*fop_<mode>_1_avx): Likewise.
8521         (*avx_<code><mode>3): Likewise.
8522         (*avx_ieee_smin<mode>3): Likewise.
8523         (*avx_ieee_smax<mode>3): Likewise.
8524         (mode): Add OI, V8SF and V4DF.
8525         (length): Support VEX prefix.
8526         (*cmpfp_i_mixed): Set prefix attribute.
8527         (*cmpfp_i_sse): Likewise.
8528         (*cmpfp_iu_mixed): Likewise.
8529         (*cmpfp_iu_sse): Likewise.
8530         (*movsi_1): Support AVX.
8531         (*movdi_2): Likewise.
8532         (*movdi_1_rex64): Likewise.
8533         (*movti_internal): Likewise.
8534         (*movti_rex64): Likewise.
8535         (*movsf_1): Likewise.
8536         (*movdf_nointeger): Likewise.
8537         (*movdf_integer_rex64): Likewise.
8538         (*movtf_internal): Likewise.
8539         (zero_extendsidi2_32): Likewise.
8540         (zero_extendsidi2_rex64): Likewise.
8541         (*extendsfdf2_mixed): Likewise.
8542         (*extendsfdf2_sse): Likewise.
8543         (*truncdfsf_fast_mixed): Likewise.
8544         (*truncdfsf_fast_sse): Likewise.
8545         (*truncdfsf_mixed): Likewise.
8546         (fix_trunc<mode>di_sse): Likewise.
8547         (fix_trunc<mode>si_sse): Likewise.
8548         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
8549         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
8550         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
8551         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
8552         (*rcpsf2_sse): Likewise.
8553         (*rsqrtsf2_sse): Likewise.
8554         (*sqrt<mode>2_sse): Likewise.
8555         (sse4_1_round<mode>2): Likewise.
8556         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
8557         Support AVX.  Set length attribute properly for AVX.
8559         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
8560         (VECTOR_MODES (FLOAT, 32)): Likewise.
8561         (VECTOR_MODE (INT, DI, 8)): Likewise.
8562         (VECTOR_MODE (INT, HI, 32)): Likewise.
8563         (VECTOR_MODE (INT, QI, 64)): Likewise.
8564         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
8565         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
8566         (VECTOR_MODE (INT, DI, 4)): Removed.
8567         (VECTOR_MODE (INT, SI, 8)): Likewise.
8568         (VECTOR_MODE (INT, HI, 16)): Likewise.
8569         (VECTOR_MODE (INT, QI, 32)): Likewise.
8570         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
8571         (INT_MODE (OI, 32)): Likewise.
8573         * config/i386/i386.opt (mavx): New.
8574         (mfma): Likewise.
8576         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
8578         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
8579         (*mov<mode>_internal_avx): New.
8580         (*movv2sf_internal_rex64_avx): Likewise.
8581         (*movv2sf_internal_avx): Likewise.
8583         * config/i386/predicates.md (const_4_to_5_operand): New.
8584         (const_6_to_7_operand): Likewise.
8585         (const_8_to_11_operand): Likewise.
8586         (const_12_to_15_operand): Likewise.
8587         (avx_comparison_float_operator): Likewise.
8589         * config/i386/sse.md (AVX256MODEI): New.
8590         (AVX256MODE): Likewise.
8591         (AVXMODEQI): Likewise.
8592         (AVXMODE): Likewise.
8593         (AVX256MODEF2P): Likewise.
8594         (AVX256MODE2P): Likewise.
8595         (AVX256MODE4P): Likewise.
8596         (AVX256MODE8P): Likewise.
8597         (AVXMODEF2P): Likewise.
8598         (AVXMODEF4P): Likewise.
8599         (AVXMODEDCVTDQ2PS): Likewise.
8600         (AVXMODEDCVTPS2DQ): Likewise.
8601         (avxvecmode): Likewise.
8602         (avxvecpsmode): Likewise.
8603         (avxhalfvecmode): Likewise.
8604         (avxscalarmode): Likewise.
8605         (avxcvtvecmode): Likewise.
8606         (avxpermvecmode): Likewise.
8607         (avxmodesuffixf2c): Likewise.
8608         (avxmodesuffixp): Likewise.
8609         (avxmodesuffixs): Likewise.
8610         (avxmodesuffix): Likewise.
8611         (vpermilbits): Likewise.
8612         (pinsrbits): Likewise.
8613         (mov<mode>): Likewise.
8614         (*mov<mode>_internal): Likewise.
8615         (push<mode>1): Likewise.
8616         (movmisalign<mode>): Likewise.
8617         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8618         (avx_movdqu<avxmodesuffix>): Likewise.
8619         (avx_lddqu<avxmodesuffix>): Likewise.
8620         (<plusminus_insn><mode>3): Likewise.
8621         (*avx_<plusminus_insn><mode>3): Likewise.
8622         (*avx_vm<plusminus_insn><mode>3): Likewise.
8623         (mul<mode>3): Likewise.
8624         (*avx_mul<mode>3): Likewise.
8625         (*avx_vmmul<mode>3): Likewise.
8626         (divv8sf3): Likewise.
8627         (divv4df3): Likewise.
8628         (avx_div<mode>3): Likewise.
8629         (*avx_div<mode>3): Likewise.
8630         (*avx_vmdiv<mode>3): Likewise.
8631         (avx_rcpv8sf2): Likewise.
8632         (*avx_vmrcpv4sf2): Likewise.
8633         (sqrtv8sf2): Likewise.
8634         (avx_sqrtv8sf2): Likewise.
8635         (*avx_vmsqrt<mode>2): Likewise.
8636         (rsqrtv8sf2): Likewise.
8637         (avx_rsqrtv8sf2): Likewise.
8638         (*avx_vmrsqrtv4sf2): Likewise.
8639         (<code><mode>3): Likewise.
8640         (*avx_<code><mode>3_finite): Likewise.
8641         (*avx_<code><mode>3): Likewise.
8642         (*avx_vm<code><mode>3): Likewise.
8643         (*avx_ieee_smin<mode>3): Likewise.
8644         (*avx_ieee_smax<mode>3): Likewise.
8645         (avx_addsubv8sf3): Likewise.
8646         (avx_addsubv4df3): Likewise.
8647         (*avx_addsubv4sf3): Likewise.
8648         (*avx_addsubv2df3): Likewise.
8649         (avx_h<plusminus_insn>v4df3): Likewise.
8650         (avx_h<plusminus_insn>v8sf3): Likewise.
8651         (*avx_h<plusminus_insn>v4sf3): Likewise.
8652         (*avx_h<plusminus_insn>v2df3): Likewise.
8653         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
8654         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
8655         (*avx_maskcmp<mode>3): Likewise.
8656         (avx_nand<mode>3): Likewise.
8657         (*avx_<code><mode>3): Likewise.
8658         (*avx_nand<mode>3): Likewise.
8659         (*avx_<code><mode>3): Likewise.
8660         (*avx_cvtsi2ss): Likewise.
8661         (*avx_cvtsi2ssq): Likewise.
8662         (*avx_cvtsi2sd): Likewise.
8663         (*avx_cvtsi2sdq): Likewise.
8664         (*avx_cvtsd2ss): Likewise.
8665         (avx_cvtss2sd): Likewise.
8666         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
8667         (avx_cvtps2dq<avxmodesuffix>): Likewise.
8668         (avx_cvttps2dq<avxmodesuffix>): Likewise.
8669         (*avx_cvtsi2sd): Likewise.
8670         (*avx_cvtsi2sdq): Likewise.
8671         (avx_cvtdq2pd256): Likewise.
8672         (avx_cvtpd2dq256): Likewise.
8673         (avx_cvttpd2dq256): Likewise.
8674         (*avx_cvtsd2ss): Likewise.
8675         (*avx_cvtss2sd): Likewise.
8676         (avx_cvtpd2ps256): Likewise.
8677         (avx_cvtps2pd256): Likewise.
8678         (*avx_movhlps): Likewise.
8679         (*avx_movlhps): Likewise.
8680         (avx_unpckhps256): Likewise.
8681         (*avx_unpckhps): Likewise.
8682         (avx_unpcklps256): Likewise.
8683         (*avx_unpcklps): Likewise.
8684         (avx_movshdup256): Likewise.
8685         (avx_movsldup256): Likewise.
8686         (avx_shufps256): Likewise.
8687         (avx_shufps256_1): Likewise.
8688         (*avx_shufps_<mode>): Likewise.
8689         (*avx_loadhps): Likewise.
8690         (*avx_storelps): Likewise.
8691         (*avx_loadlps): Likewise.
8692         (*avx_movss): Likewise.
8693         (*vec_dupv4sf_avx): Likewise.
8694         (*vec_concatv2sf_avx): Likewise.
8695         (*vec_concatv4sf_avx): Likewise.
8696         (*vec_setv4sf_0_avx): Likewise.
8697         (*vec_setv4sf_avx): Likewise.
8698         (*avx_insertps): Likewise.
8699         (avx_vextractf128<mode>): Likewise.
8700         (vec_extract_lo_<mode>): Likewise.
8701         (vec_extract_hi_<mode>): Likewise.
8702         (vec_extract_lo_<mode>): Likewise.
8703         (vec_extract_hi_<mode>): Likewise.
8704         (vec_extract_lo_v16hi): Likewise.
8705         (vec_extract_hi_v16hi): Likewise.
8706         (vec_extract_lo_v32qi): Likewise.
8707         (vec_extract_hi_v32qi): Likewise.
8708         (avx_unpckhpd256): Likewise.
8709         (*avx_unpckhpd): Likewise.
8710         (avx_movddup256): Likewise.
8711         (*avx_movddup): Likewise.
8712         (avx_unpcklpd256): Likewise.
8713         (*avx_unpcklpd): Likewise.
8714         (avx_shufpd256): Likewise.
8715         (avx_shufpd256_1): Likewise.
8716         (*avx_punpckhqdq): Likewise.
8717         (*avx_punpcklqdq): Likewise.
8718         (*avx_shufpd_<mode>): Likewise.
8719         (*avx_storehpd): Likewise.
8720         (*avx_loadhpd): Likewise.
8721         (*avx_loadlpd): Likewise.
8722         (*avx_movsd): Likewise.
8723         (*vec_concatv2df_avx): Likewise.
8724         (*avx_<plusminus_insn><mode>3): Likewise.
8725         (*avx_<plusminus_insn><mode>3): Likewise.
8726         (*avx_mulv8hi3): Likewise.
8727         (*avxv8hi3_highpart): Likewise.
8728         (*avx_umulv8hi3_highpart): Likewise.
8729         (*avx_umulv2siv2di3): Likewise.
8730         (*avx_mulv2siv2di3): Likewise.
8731         (*avx_pmaddwd): Likewise.
8732         (*avx_mulv4si3): Likewise.
8733         (*avx_ashr<mode>3): Likewise.
8734         (*avx_lshr<mode>3): Likewise.
8735         (*avx_ashl<mode>3): Likewise.
8736         (*avx_<code><mode>3): Likewise.
8737         (*avx_eq<mode>3): Likewise.
8738         (*avx_gt<mode>3): Likewise.
8739         (*avx_nand<mode>3): Likewise.
8740         (*avx_nand<mode>3): Likewise.
8741         (*avx_<code><mode>3): Likewise.
8742         (*avx_<code><mode>3): Likewise.
8743         (*avx_packsswb): Likewise.
8744         (*avx_packssdw): Likewise.
8745         (*avx_packuswb): Likewise.
8746         (*avx_punpckhbw): Likewise.
8747         (*avx_punpcklbw): Likewise.
8748         (*avx_punpckhwd): Likewise.
8749         (*avx_punpcklwd): Likewise.
8750         (*avx_punpckhdq): Likewise.
8751         (*avx_punpckldq): Likewise.
8752         (*avx_pinsr<avxmodesuffixs>): Likewise.
8753         (*avx_pinsrq): Likewise.
8754         (*avx_loadld): Likewise.
8755         (*vec_extractv2di_1_rex64_avx): Likewise.
8756         (*vec_extractv2di_1_avx): Likewise.
8757         (*vec_dupv2di_avx): Likewise.
8758         (*vec_concatv2si_avx): Likewise.
8759         (*vec_concatv4si_1_avx): Likewise.
8760         (*vec_concatv2di_avx): Likewise.
8761         (*vec_concatv2di_rex64_avx): Likewise.
8762         (*avx_uavgv16qi3): Likewise.
8763         (*avx_uavgv8hi3): Likewise.
8764         (*avx_psadbw): Likewise.
8765         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
8766         (*avx_phaddwv8hi3): Likewise.
8767         (*avx_phadddv4si3): Likewise.
8768         (*avx_phaddswv8hi3): Likewise.
8769         (*avx_phsubwv8hi3): Likewise.
8770         (*avx_phsubdv4si3): Likewise.
8771         (*avx_phsubswv8hi3): Likewise.
8772         (*avx_pmaddubsw128): Likewise.
8773         (*avx_pmulhrswv8hi3): Likewise.
8774         (*avx_pshufbv16qi3): Likewise.
8775         (*avx_psign<mode>3): Likewise.
8776         (*avx_palignrti): Likewise.
8777         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8778         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8779         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8780         (*avx_mpsadbw): Likewise.
8781         (*avx_packusdw): Likewise.
8782         (*avx_pblendvb): Likewise.
8783         (*avx_pblendw): Likewise.
8784         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8785         (avx_ptest256): Likewise.
8786         (avx_roundp<avxmodesuffixf2c>256): Likewise.
8787         (*avx_rounds<ssemodesuffixf2c>): Likewise.
8788         (*avx_aesenc): Likewise.
8789         (*avx_aesenclast): Likewise.
8790         (*avx_aesdec): Likewise.
8791         (*avx_aesdeclast): Likewise.
8792         (avx_vzeroupper): Likewise.
8793         (avx_vzeroupper_rex64): Likewise.
8794         (avx_vpermil<mode>): Likewise.
8795         (avx_vpermilvar<mode>3): Likewise.
8796         (avx_vpermil2<mode>3): Likewise.
8797         (avx_vperm2f128<mode>3): Likewise.
8798         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8799         (avx_vbroadcastss256): Likewise.
8800         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
8801         (avx_vinsertf128<mode>): Likewise.
8802         (vec_set_lo_<mode>): Likewise.
8803         (vec_set_hi_<mode>): Likewise.
8804         (vec_set_lo_<mode>): Likewise.
8805         (vec_set_hi_<mode>): Likewise.
8806         (vec_set_lo_v16hi): Likewise.
8807         (vec_set_hi_v16hi): Likewise.
8808         (vec_set_lo_v32qi): Likewise.
8809         (vec_set_hi_v32qi): Likewise.
8810         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8811         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8812         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
8813         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
8814         (vec_init<mode>): Likewise.
8815         (*vec_concat<mode>_avx): Likewise.
8816         (blendbits): Support V8SF and V4DF.
8817         (sse2_movq128): Support AVX.
8818         (<sse>_movnt<mode>): Likewise.
8819         (sse2_movntv2di): Likewise.
8820         (sse_rcpv4sf2): Likewise.
8821         (sse_sqrtv4sf2): Likewise.
8822         (sse_rsqrtv4sf2): Likewise.
8823         (<sse>_comi): Likewise.
8824         (<sse>_ucomi): Likewise.
8825         (sse_cvtss2si): Likewise.
8826         (sse_cvtss2si_2): Likewise.
8827         (sse_cvtss2siq): Likewise.
8828         (sse_cvtss2siq_2): Likewise.
8829         (sse_cvttss2si): Likewise.
8830         (sse_cvttss2siq): Likewise.
8831         (sse2_cvtsd2si): Likewise.
8832         (sse2_cvtsd2si_2): Likewise.
8833         (sse2_cvtsd2siq): Likewise.
8834         (sse2_cvtsd2siq_2): Likewise.
8835         (sse2_cvttsd2si): Likewise.
8836         (sse2_cvttsd2siq): Likewise.
8837         (sse2_cvtdq2pd): Likewise.
8838         (*sse2_cvtpd2dq): Likewise.
8839         (*sse2_cvttpd2dq): Likewise.
8840         (*sse2_cvtpd2ps): Likewise.
8841         (sse2_cvtps2pd): Likewise.
8842         (sse3_movshdup): Likewise.
8843         (sse3_movsldup): Likewise.
8844         (sse_storehps): Likewise.
8845         (*sse4_1_extractps): Likewise.
8846         (sse2_storelpd): Likewise.
8847         (vec_dupv2df_sse3): Likewise.
8848         (*vec_concatv2df_sse3): Likewise.
8849         (*sse4_1_pextrb): Likewise.
8850         (*sse4_1_pextrb_memory): Likewise.
8851         (*sse2_pextrw): Likewise.
8852         (*sse4_1_pextrw_memory): Likewise.
8853         (*sse4_1_pextrd): Likewise.
8854         (*sse4_1_pextrq): Likewise.
8855         (sse2_pshufd_1): Likewise.
8856         (sse2_pshuflw_1): Likewise.
8857         (sse2_pshufhw_1): Likewise.
8858         (*sse2_storeq_rex64): Likewise.
8859         (*vec_dupv4si): Likewise.
8860         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
8861         (sse2_pmovmskb): Likewise.
8862         (*sse2_maskmovdqu): Likewise.
8863         (*sse2_maskmovdqu_rex64): Likewise.
8864         (sse_ldmxcsr): Likewise.
8865         (sse_stmxcsr): Likewise.
8866         (abs<mode>2): Likewise.
8867         (sse4_1_movntdqa): Likewise.
8868         (sse4_1_phminposuw): Likewise.
8869         (sse4_1_extendv8qiv8hi2): Likewise.
8870         (*sse4_1_extendv8qiv8hi2): Likewise.
8871         (sse4_1_extendv4qiv4si2): Likewise.
8872         (*sse4_1_extendv4qiv4si2): Likewise.
8873         (sse4_1_extendv2qiv2di2): Likewise.
8874         (*sse4_1_extendv2qiv2di2): Likewise.
8875         (sse4_1_extendv4hiv4si2): Likewise.
8876         (*sse4_1_extendv4hiv4si2): Likewise.
8877         (sse4_1_extendv2hiv2di2): Likewise.
8878         (*sse4_1_extendv2hiv2di2): Likewise.
8879         (sse4_1_extendv2siv2di2): Likewise.
8880         (*sse4_1_extendv2siv2di2): Likewise.
8881         (sse4_1_zero_extendv8qiv8hi2): Likewise.
8882         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
8883         (sse4_1_zero_extendv4qiv4si2): Likewise.
8884         (*sse4_1_zero_extendv4qiv4si2): Likewise.
8885         (sse4_1_zero_extendv2qiv2di2): Likewise.
8886         (*sse4_1_zero_extendv2qiv2di2): Likewise.
8887         (sse4_1_zero_extendv4hiv4si2): Likewise.
8888         (*sse4_1_zero_extendv4hiv4si2): Likewise.
8889         (sse4_1_zero_extendv2hiv2di2): Likewise.
8890         (*sse4_1_zero_extendv2hiv2di2): Likewise.
8891         (sse4_1_zero_extendv2siv2di2): Likewise.
8892         (*sse4_1_zero_extendv2siv2di2): Likewise.
8893         (sse4_1_ptest): Likewise.
8894         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
8895         (sse4_2_pcmpestri): Likewise.
8896         (sse4_2_pcmpestrm): Likewise.
8897         (sse4_2_pcmpistri): Likewise.
8898         (sse4_2_pcmpistrm): Likewise.
8899         (aesimc): Likewise.
8900         (aeskeygenassist): Likewise.
8902 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
8904         * config/i386/predicates.md (vzeroall_operation): New.
8906         * config/i386/sse.md (avx_vzeroall): New.
8907         (*avx_vzeroall): Likewise.
8909 2008-08-28  Paul Brook  <paul@codesourcery.com>
8910             Mark Shinwell  <shinwell@codesourcery.com>
8911             Richard Earnshaw  <richard.earnshaw@arm.com>
8913         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
8914         (TARGET_MIN_ANCHOR_OFFSET): New.
8915         (arm_override_options): Set correct anchor ranges for Thumb-1
8916         and Thumb-2 if required.
8917         (legitimize_pic_address): Handle case involving a TLS symbol
8918         reference with an addend.
8919         (arm_optimization_options): Enable section anchors at -O1 and
8920         above.
8921         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
8922         * config/arm/arm-protos.h (arm_optimization_options): New.
8924 2008-08-28  Nick Clifton  <nickc@redhat.com>
8926         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
8927         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
8928         attribute.
8930         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
8931         * config/v850/v850.md (return): Remove frame size restriction.
8933         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
8935         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
8937         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
8939         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
8941 2008-08-28  Paul Brook  <paul@codesourcery.com>
8943         * config/arm/vfp11.md: Update license notice.
8944         * config/arm/cortex-r4.md: Ditto.
8946 2008-08-28  Richard Guenther  <rguenther@suse.de>
8948         PR tree-optimization/37207
8949         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
8950         tuplification bug.
8952 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
8954         PR c++/36741
8955         * tree.c (int_fits_type_p): Don't forget unsigned integers
8956           of type sizetype which higher end word equals -1.
8958 2008-08-28  Ira Rosen  <irar@il.ibm.com>
8960         * target.h (struct vectorize): Add new target builtin.
8961         * tree-vectorizer.c (destroy_loop_vec_info): Call
8962         vect_free_slp_instance instead of vect_free_slp_node.
8963         * tree-vectorizer.h (enum slp_load_perm_type): New.
8964         (struct _slp_instance): Add new fields.
8965         (SLP_INSTANCE_LOAD_PERMUTATION): New.
8966         (SLP_INSTANCE_LOADS): New.
8967         (vect_free_slp_tree): Remove.
8968         (vect_free_slp_instance): Declare.
8969         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
8970         (vectorizable_load): Add argument.
8971         (vect_transform_slp_perm_load): New.
8972         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
8973         vectorizable_load.
8974         (vect_get_place_in_interleaving_chain): New function.
8975         (vect_free_slp_tree): Make static.
8976         (vect_free_slp_instance): New function.
8977         (vect_build_slp_tree): Add new arguments. Allow load permutations and
8978         collect the load location in the interleaving chain.
8979         (vect_supported_slp_permutation_p): New function.
8980         (vect_supported_load_permutation_p): Likewise.
8981         (vect_analyze_slp_instance): In case of loads permutation, call
8982         vect_supported_load_permutation_p to check that the permutation is
8983         supported.
8984         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
8985         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
8986         (vect_create_mask_and_perm): New function.
8987         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
8988         (vectorizable_load): Add an argument. Don't keep the created vectors
8989         statements in the node if permutation is required. Call
8990         vect_transform_slp_perm_load to generate the permutation.
8991         (vect_transform_stmt): Add new argument. Call vectorizable_load with
8992         additional argument.
8993         (vect_schedule_slp_instance): In case of loads permutation, allocate
8994         vectorized statements structure for all the related SLP nodes. Call
8995         vect_transform_stmt with addditional argument.
8996         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
8997         * config/spu/spu.c (spu_builtin_vec_perm): New.
8998         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8999         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
9000         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
9001         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
9003 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
9005         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
9006         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
9007         __gthread_cond_signal, __gthread_cond_timedwait,
9008         __gthread_cond_timedwait_recursive): New functions.
9009         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
9010         Likewise.
9011         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
9012         thread interfaces.
9014 2008-08-28  Richard Guenther  <rguenther@suse.de>
9016         PR middle-end/37005
9017         * fold-const.c (maybe_canonicalize_comparison_1): Require
9018         undefined overflow only for canonicalizing A +- CST cmp CST.
9019         Make sure to not generate new constants that are not inside
9020         their TYPE_MIN/MAX_VALUE range.
9021         (maybe_canonicalize_comparison): Remove undefined overflow
9022         checking from here.
9023         (fold_binary): Remove now duplicate folding.
9025 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
9027         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
9028         use not updated in the last change.
9030 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9032         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
9033         (IRA_COVER_CLASSES): Add FPUL_REGS.
9035 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9037         PR 37217
9038         * c-common.c (conversion_warning): Check for null operands.
9040 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9042         PR c/31673
9043         * c-decl.c (check_for_loop_decls): Improve error message. Give
9044         hint.
9046 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9048         PR c/37186
9049         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
9050         (convert_for_assignment): Pass corrent OPT_W* parameter to
9051         WARN_FOR_ASSIGNMENT.
9053 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
9055         PR c++/35321
9056         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
9058 2008-08-27  Paul Brook  <paul@codesourcery.com>
9060         * config.gcc: Loosen checks for arm uclinux eabi targets.
9062 2008-08-27  Paul Brook  <paul@codesourcery.com>
9064         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
9065         _clzsi2.
9066         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
9068 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
9070         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
9071         the enumerators of an ENUMERAL_TYPE.
9072         * dbxout.c (dbxout_type): Ditto.
9074 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9076         PR rtl-opt/37219
9077         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
9078         (fwprop_addr): Check that the loop_father is not the outer loop.
9080 2008-08-26  Paul Brook  <paul@codesourcery.com>
9082         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
9083         Remove documentation entry for fmul type.
9084         Use fmuls to annotate single-precision multiplication patterns,
9085         fmuld to annotate double-precision multiplication patterns,
9086         fmacs to annotate single-precision multiply-accumulate patterns
9087         and fmacd to annotate double-precision multiply-accumulate patterns.
9088         * config/arm/vfp11.md: Update reservations accordingly.
9089         * config/arm/arm.md: Note that certain values of the "type"
9090         attribute are documented in vfp.md.
9091         * config/arm/arm1020e.md: Remove out of date duplicate comment.
9092         (v10_cvt): Use new fmul types.
9094 2008-08-26  Paul Brook  <paul@codesourcery.com>
9096         * config/arm/vfp.md: Move pipeline description for VFP11 to...
9097         * config/arm/vfp11.md: ...here.  New.
9098         * config/arm/arm.md: Include vfp11.md.
9100 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
9102         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
9103         parameter to inform call.
9105 2008-08-26  Jeff Law  <law@redhat.com>
9107         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
9108         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
9109         preferred class when copying a constant into a partial word register.
9111 2008-08-26  Ben Elliston  <bje@au.ibm.com>
9113         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
9114         * cp/typeck.c: Likewise.
9115         * cp/tree.c: Likewise.
9116         * gimple-low.c: Likewise.
9117         * jump.c: Likewise.
9119 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
9121         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
9122         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
9124         * doc/passes.texi: Describe IRA.
9126         * doc/tm.texi (IRA_COVER_CLASSES,
9127         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
9129         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
9130         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
9131         -fira-propagate-cost, -fno-ira-share-save-slots,
9132         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
9134         * flags.h (ira_algorithm): New enumeration.
9135         (flag_ira_algorithm, flag_ira_verbose): New external variable
9136         declarations.
9138         * postreload.c (gate_handle_postreload): Don't do post reload
9139         optimizations unless the reload is completed.
9141         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
9142         IRA.
9144         * tree-pass.h (pass_ira): New external variable declaration.
9146         * reload.h: Add 2008 to the Copyright.
9148         * cfgloopanal.c: Include params.h.
9149         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
9150         mode.
9152         * params.h (IRA_MAX_LOOPS_NUM): New macro.
9154         * toplev.c (ira.h): New include.
9155         (flag_ira_algorithm, flag_ira_verbose): New external variables.
9156         (backend_init_target): Call ira_init.
9157         (backend_init): Call ira_init_once.
9158         (finalize): Call finish_ira_once.
9160         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
9161         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
9162         external variables.
9164         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
9165         may_move_out_cost): New external variable declarations.
9166         (move_table): New typedef.
9168         * caller-save.c: Include headers output.h and ira.h.
9169         (no_caller_save_reg_set): New global variable.
9170         (save_slots_num, save_slots): New variables.
9171         (reg_save_code, reg_restore_code, add_stored_regs): Add
9172         prototypes.
9173         (init_caller_save): Set up no_caller_save_reg_set.
9174         (init_save_areas): Reset save_slots_num.
9175         (saved_hard_reg): New structure.
9176         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
9177         (initiate_saved_hard_regs, new_saved_hard_reg,
9178         finish_saved_hard_regs, saved_hard_reg_compare_func): New
9179         functions.
9180         (setup_save_areas): Add code for sharing stack slots.
9181         (all_blocks): New variable.
9182         (save_call_clobbered_regs): Process pseudo-register too.
9183         (mark_set_regs): Process pseudo-register too.
9184         (insert_one_insn): Put the insn after bb note in a empty basic
9185         block.  Add insn check.
9187         * global.c (eliminable_regset): Make it external.
9188         (mark_elimination): Use DF_LR_IN for IRA.
9189         (pseudo_for_reload_consideration_p): New.
9190         (build_insn_chain): Make it external.  Don't ignore spilled
9191         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
9192         (gate_handle_global_alloc): New function.
9193         (pass_global_alloc): Add the gate function.
9195         * opts.c (decode_options): Set up flag_ira.  Print the warning for
9196         -fira.
9197         (common_handle_option): Process -fira-algorithm and -fira-verbose.
9199         * timevar.def (TV_IRA, TV_RELOAD): New passes.
9201         * regmove.c (regmove_optimize): Don't do replacement of output for
9202         IRA.
9204         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
9205         New external variable declarations.
9207         * local-alloc.c (update_equiv_regs): Make it external.  Return
9208         true if jump label rebuilding should be done.  Rescan new_insn for
9209         notes.
9210         (gate_handle_local_alloc): New function.
9211         (pass_local_alloc): Add the gate function.
9213         * alias.c (value_addr_p, stack_addr_p): New functions.
9214         (nonoverlapping_memrefs_p): Use them for IRA.
9216         * common.opt (fira, fira-algorithm, fira-coalesce,
9217         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
9218         fira-verbose): New options.
9220         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
9221         move_cost, may_move_in_cost, may_move_out_cost): Make the
9222         variables external.
9223         (move_table): Remove typedef.
9224         (init_move_cost): Make it external.
9225         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
9226         functions.
9228         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
9229         setup_reg_classes): New function prototypes.
9230         (eliminable_regset): New external variable declaration.
9231         (build_insn_chain, update_equiv_regs): New function prototypes.
9233         * Makefile.in (IRA_INT_H): New definition.
9234         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
9235         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
9236         (reload1.o, toplev.o): Add dependence on ira.h.
9237         (cfgloopanal.o): Add PARAMS_H.
9238         (caller-save.o): Add dependence on output.h and ira.h.
9239         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
9240         ira-emit.o, ira-lives.o): New entries.
9242         * passes.c (pass_ira): New pass.
9244         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
9246         * reload1.c (ira.h): Include the header.
9247         (changed_allocation_pseudos): New bitmap.
9248         (init_reload): Initiate the bitmap.
9249         (compute_use_by_pseudos): Permits spilled registers in FROM.
9250         (temp_pseudo_reg_arr): New variable.
9251         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
9252         IRA.  Call alter_reg with the additional parameter.  Don't clear
9253         spilled_pseudos for IRA.  Restore original insn chain for IRA.
9254         Clear changed_allocation_pseudos at the end of reload.
9255         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
9256         (hard_regno_to_pseudo_regno): New variable.
9257         (count_pseudo): Check spilled pseudos.  Set up
9258         hard_regno_to_pseudo_regno.
9259         (count_spilled_pseudo): Check spilled pseudos. Update
9260         hard_regno_to_pseudo_regno.
9261         (find_reg): Use better_spill_reload_regno_p.  Check
9262         hard_regno_to_pseudo_regno.
9263         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
9264         code for IRA.
9265         (eliminate_regs_1): Use additional parameter for alter_reg.
9266         (finish_spills): Set up pseudo_previous_regs only for spilled
9267         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
9268         more arguments.  Don't clear live_throughout and dead_or_set for
9269         spilled pseudos.  Use additional parameter for alter_reg.  Call
9270         mark_allocation_change.  Set up changed_allocation_pseudos.
9271         Remove sanity check.
9272         (emit_input_reload_insns, delete_output_reload): Use additional
9273         parameter for alter_reg.  Call mark_allocation_change.
9274         (substitute, gen_reload_chain_without_interm_reg_p): New
9275         functions.
9276         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
9278         * testsuite/gcc.dg/20080410-1.c: New file.
9280         * config/s390/s390.h (IRA_COVER_CLASSES,
9281         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
9283         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
9285         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
9287         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
9289         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
9291         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
9293         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
9295         2008-08-24  Jeff Law  <law@redhat.com>
9296         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
9297         when ignoring unavailable registers.
9299         2008-08-24  Jeff Law  <law@redhat.com>
9300         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
9301         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
9302         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
9303         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
9305         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
9306         * ira-build.c (allocno_range_compare_func): Stabilize sort.
9308         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
9309         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
9310         * reload1.c (find_reg): Process registers in register allocation order.
9312         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
9313         * toplev.c (backend_init_target): Move ira_init call from
9314         here...
9315         (lang_dependent_init_target): ...to here.
9317         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
9318         * ira.c (setup_class_subset_and_memory_move_costs): Don't
9319         calculate memory move costs for NO_REGS.
9321         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
9322         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
9323         STACK_REGS is defined.
9325         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
9326         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
9328         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
9329         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
9331         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
9332         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
9333         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
9334         barrier.
9336 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
9337             Dorit Nuzman  <dorit@il.ibm.com>
9339         * gcc/config/spu/spu.md (vec_extract_evenv4si,
9340         vec_extract_evenv4sf, vec_extract_evenv8hi,
9341         vec_extract_evenv16qi, vec_extract_oddv4si,
9342         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
9343         vec_interleave_highv4sf, vec_interleave_lowv4sf,
9344         vec_interleave_highv4si, vec_interleave_lowv4si,
9345         vec_interleave_highv8hi, vec_interleave_lowv8hi,
9346         vec_interleave_highv16qi, vec_interleave_lowv16qi,
9347         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
9349 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
9351         PR target/36756
9352         * config/rs6000/rs6000.c (optimization_options): Don't default to
9353         section anchors without toplevel reorder.
9355 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9357         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
9358         (mfc_end_critical_section): Likewise.
9360 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9362         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
9363         all type qualifiers from element type to vector type.
9365 2008-08-25  David Daney  <ddaney@avtrex.com>
9367         * config/mips/mips.md (immediate_insn): Move up in file, fix
9368         comment typo, reformat.
9369         (fetchop_bit, atomic_hiqi_op memory_barrier,
9370         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
9371         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
9372         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
9373         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
9374         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
9375         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
9376         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
9377         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
9378         sync_old_nand<mode>, sync_new_nand<mode>,
9379         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
9380         test_and_set_12): Moved to sync.md.
9381         (sync.md): Include.
9382         * config/mips/sync.md: New file.
9384 2008-08-25  Richard Henderson  <rth@redhat.com>
9386         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
9387         (regsave): Likewise.
9388         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
9389         (output_cfi_directive): Likewise.
9390         (div_data_align): New.
9391         (output_cfi): Use it.
9393 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
9395         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
9396         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
9397         (TARGET_OCTEON): New macro.
9398         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
9399         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
9400         (ISA_HAS_POP): New macro.
9401         * config/mips/driver-native.c (host_detect_local_cpu): Handle
9402         Octeon.
9403         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
9404         Handle Octeon.
9405         * config/mips/mips.md (cpu): Add octeon.
9406         (type): Add pop attribute value.
9407         (popcount<mode>2): New pattern.
9408         * doc/invoke.texi (-march=@var{arch}): Add octeon.
9410 2008-08-24  Jan Hubicka  <jh@suse.cz>
9412         * doc/invoke.texi (-fipa-cp-clone): New option.
9413         (-fipa-cp): Update docs.
9414         (--param ipcp-unit-growth):New.
9415         * ipa-cp.c: Include fibheap.h, params.h
9416         (ipcp_initialize_node_lattices): When not cloning, all externally
9417         visible functions are bottom.
9418         (ipcp_need_redirect_p): Accept clones.
9419         (ipcp_insert_stage): Use cost driven heuristics.
9420         (max_count, dead_nodes): New static vars.
9421         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
9422         ipcp_const_param_count): New functions.
9423         * common.opt (ipa-cp-clone): New command line option.
9424         * params.def (ipcp-unit-growth): New.
9426 2008-08-24  Jan Hubicka  <jh@suse.cz>
9428         * tree-inline.c (tree_function_versioning): Look harder
9429         for referenced vars.
9431 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
9433         PR tree-optimization/37185
9434         * matrix-reorg.c (transform_access_sites): Update changed stmt.
9436 2008-08-23  Jan Hubicka  <jh@suse.cz>
9438         * ipa-cp.c (ipcp_analyze_node): New function.
9439         (ipcp_update_cloned_node): Use it.
9440         (ipcp_init_stage): Likewise.
9441         * ipa-inline.c (function_insertion_hook_holder): New static var.
9442         (analyze_function): Break out from ....
9443         (inline_generate_summary): Here; register insertion hook.
9444         (cgraph_decide_inlining): Remove hook.
9445         (add_new_function): New function.
9447 2008-08-23  Jan Hubicka  <jh@suse.cz>
9449         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
9451 2008-08-23  Jan Hubicka  <jh@suse.cz>
9453         * ipa-cp.c (constant_val_insert): Remove.
9454         (ipcp_propagate_one_const): Remove.
9455         (ipcp_create_replace_map): Always insert replacements to the map.
9456         (ipcp_insert_stage): Do not try to insert statements by hand.
9457         * tree-inline.c (insert_init_stmt): Break out from ...
9458         (setup_one_parameter): ... here; allow NULL BB pointer.
9459         (tree_function_versioning): Use setup_one_parameter to process
9460         replacement map.
9462 2008-08-23  Jan Hubicka  <jh@suse.cz>
9464         * tree.c (decl_address_ip_invariant_p): New function.
9465         * tree.h (decl_address_ip_invariant_p): Declare.
9466         * gimple.c (strip_invariant_refs): Break out from ...
9467         (is_gimple_invariant_address): ... here
9468         (is_gimple_ip_invariant_address): New function.
9469         (is_gimple_ip_invariant): New function.
9470         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
9471         Declare.
9473         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
9474         (ipcp_lat_is_insertable): All constants are insertable.
9475         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
9476         IPA_CONST_VALUE_REF.
9477         (ipcp_initialize_node_lattices): Propagate all types of operands.
9478         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
9479         (ipcp_create_replace_map): Reformat.
9480         (ipcp_need_redirect_p): Simplify.
9481         (ipcp_insert_stage): Check that argument is used before clonning.
9482         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
9483         IPA_CONST_REF.
9484         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
9485         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
9486         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
9487         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
9488         (jump_func_type): Remove IPA_CONST_VALUE_REF.
9489         * tree-inline.c (tree_function_versioning): Add variables referenced
9490         by replacing trees.
9492 2008-08-23  Jan Hubicka  <jh@suse.cz>
9494         PR target/37094
9495         * i386.c (standard_80387_constant_p): Use optimize_size.
9497 2008-08-23  Ira Rosen  <irar@il.ibm.com>
9499         PR tree-optimization/37161
9500         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
9501         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
9502         (vect_determine_vectorization_factor): Move the scalar type
9503         retrieval to vect_get_smallest_scalar_type.
9504         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
9505         scalar type. Remove redundant computation.
9506         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
9507         (vect_get_slp_defs): Take the type of RHS into account if
9508         necessary by calling vect_get_smallest_scalar_type. Call
9509         vect_get_constant_vectors with additional argument.
9511 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9513         PR 35648
9514         * doc/invoke.texi (Wwrite-strings): Clarify description.
9516 2008-08-23  Ira Rosen  <irar@il.ibm.com>
9518         PR tree-optimization/37174
9519         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
9520         def stmt is a part of the loop before accessing its stmt_vec_info.
9522 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
9524         PR target/11259
9525         * config/avr/avr.md (UNSPEC_SWAP): New constants.
9526         (*swap): New insn pattern.
9527         (*ashlqi3): Rename from ashlqi3 insn pattern.
9528         (ashlqi3): New expanders.
9529         (*lshrqi3): Rename from lshrqi3 insn pattern.
9530         (lshrqi3): New expanders.
9531         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
9532         lshrqi3_const5, lshrqi3_const6): New splitters.
9533         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
9534         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
9535         peephole2 patterns.
9537 2008-08-22  Richard Guenther  <rguenther@suse.de>
9539         PR tree-optimization/37078
9540         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
9541         [+INF, +INF] ranges.
9543 2008-08-22  Richard Guenther  <rguenther@suse.de>
9545         PR tree-optimization/37143
9546         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
9547         a conversion statement instead of a copy.
9549 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
9551         PR target/37184
9552         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
9553         CCCmode, CCOmode and CCSmode destination modes.
9555         PR target/37191
9556         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
9557         from different units in a single alternative.
9558         (*vec_extractv2sf_1): Ditto.
9559         (*vec_extractv2si_0): Ditto.
9560         (*vec_extractv2si_1): Ditto.
9561         * config/i386/sse.md (sse2_storehpd): Ditto.
9562         (sse2_storelpd): Ditto.
9563         (sse2_loadhpd): Ditto.
9564         (sse2_loadlpd): Ditto.
9566         PR target/37197
9567         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
9568         (popcountsi2): Ditto.
9569         (clzdi2_abm): Ditto.
9570         (popcountdi2): Ditto.
9571         (clzhi2_abm): Ditto.
9572         (popcounthi2): Ditto.
9574 2008-08-22  Richard Guenther  <rguenther@suse.de>
9576         PR middle-end/36548
9577         PR middle-end/37125
9578         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
9579         if the multiplication does not overflow.
9581 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
9583         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
9585 2008-08-21  Richard Henderson  <rth@redhat.com>
9587         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
9588         spurrious comma from test.
9589         * configure: Rebuild.
9591 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9593         PR 30457
9594         * builtins.c (fold_builtin_next_arg): Add warning about undefined
9595         behaviour.
9597 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
9599         * c-tree.h (grokfield): New argument.
9600         * c-decl.c (grokfield): Handle new location argument.
9601         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
9603 2008-08-21  Richard Guenther  <rguenther@suse.de>
9605         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
9607 2008-08-21  Jan Hubicka  <jh@suse.cz>
9609         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
9610         (cgraph_add_function_insertion_hook,
9611         cgraph_remove_function_insertion_hook,
9612         cgraph_call_function_insertion_hooks): New functions.
9613         * cgraph.h (cgraph_add_function_insertion_hook,
9614         cgraph_remove_function_insertion_hook,
9615         cgraph_call_function_insertion_hooks): Declare.
9616         * ipa-reference.c (function_insertion_hook_holder): New variable.
9617         (check_operand, look_for_address_of): When checking late, do not care
9618         about module bitmaps.
9619         (add_new_function): New function.
9620         (generate_summary): Register hooks; zero module bitmaps.
9621         (propagate): Unregister hooks.
9622         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
9623         (add_new_function): New function.
9624         (generate_summary): Register hook.
9625         (propagate): Remove hook.
9627         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
9629         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
9630         * ipa-cp.c (ipcp_update_cloned_node): New function.
9631         (build_const_val): Handle functions correctly; bring type logic
9632         into sync with tree-inline.c
9633         (ipcp_init_stage):  Take care of computing stuff needed by
9634         indirect inlining; update clones.
9635         (ipcp_generate_summary): Break out of ipcp_driver.
9636         (ipcp_driver): Do only execution and transformation.
9637         (pass_ipa_cp): Make IPA_PASS.
9638         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
9639         offset to address.
9640         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
9641         ipcp, some info is already available.
9642         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
9643         * tree-inline.c (remap_ssa_name): Unshare expression.
9645 2008-08-21  Richard Guenther  <rguenther@suse.de>
9647         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
9648         a PHI ask VN if it is already available.
9649         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
9650         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
9652 2008-08-21  Richard Guenther  <rguenther@suse.de>
9654         PR middle-end/36817
9655         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
9656         makes sure to produce a result of the correct type.
9658 2008-08-21  Jan Hubicka  <jh@suse.cz>
9659         Backport from LTO branch:
9661         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
9662                     Jan Hubicka  <jh@suse.cz>
9664         * ipa-pure-const.c
9665         (init_state, finish_state, set_function_state, generate_summary):
9666         New functions.
9667         (scan_stmt): Renamed from scan_function.  Changed to keep state in
9668         local static vars rather than cgraph aux field.
9669         (propagate): Renamed from static_execute. Changed to keep state in
9670         local static vars rather than cgraph aux field.
9671         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
9672         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
9674         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
9676         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
9677         * ipa-reference.c (init_function_info, generate_summary,
9678         propagate): New functions.
9679         (analyze_function):  Call init_function_info.
9680         (static_execute): Stripped into generate_summary and propagate.
9681         (pass_ipa_reference): Made into ipa_opt_pass.
9683 2008-08-21  Richard Guenther  <rguenther@suse.de>
9685         PR tree-optimization/37181
9686         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
9687         folding result.
9688         (extract_range_from_unary_expr): Likewise.
9690 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9692         * diagnostic.c (pedwarn_at): Rename as pedwarn.
9693         (pedwarn): Delete.
9694         * toplev.h (pedwarn_at): Likewise.
9695         * builtins.c: Update all calls to pedwarn.
9696         * c-lex.c: Likewise.
9697         * toplev.c: Likewise.
9698         * c-tree.h: Likewise.
9699         * c-decl.c: Likewise.
9700         * c-errors.c: Likewise.
9701         * c-typeck.c: Likewise.
9702         * c-common.c: Likewise.
9703         * c-parser.c: Likewise.
9705 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
9707         PR target/31070
9708         * config/sparc/sparc.c (function_arg_slotno): Handle structure
9709         with MODE_VECTOR_INT mode.
9711 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9713         PR middle-end/179
9714         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
9715         initialized outside the current module.
9716         (warn_uninitialized_var): Ignore left-hand side when walking the
9717         trees. Ignore address expressions. Examine VUSE operands in gimple
9718         statements with a variable declaration on the right-hand side.
9720 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
9722         PR bootstrap/37155
9723         * rtlanal.c (subreg_offset_representable_p): Revert last change.
9725 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9727         PR 35701
9728         * c-common.c (conversion_warning): Do not warn if applying bit-and
9729         operator to unsigned constant that fits in the target type.
9731 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9733         PR c++/35602
9734         * c-common.c (conversion_warning): Do not warn for artificial
9735         expressions.
9737 2008-08-20  Richard Guenther  <rguenther@suse.de>
9739         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
9740         (extract_range_from_binary_expr): Fall back to constant propagation.
9741         (extract_range_from_unary_expr): Likewise.
9743 2008-08-20  Richard Guenther  <rguenther@suse.de>
9745         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
9746         with TREE_THIS_VOLATILE on shared nodes.
9747         (fold_stmt_r): Likewise.
9749 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
9751         PR c/37171
9752         * c-parser.c (c_parser_attributes): For keywords use canonical
9753         spelling for attr_name.
9755 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9757         * value-prof.c (check_counter): Revert wrong call to error.
9759 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9761         * profile.c: Update calls to inform.
9762         * value-prof.c: Update calls to inform.
9764 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9766         * diagnostic.c (inform): Add an explicit location_t parameter.
9767         * toplev.h (inform): Update declaration.
9768         * builtins.c: Update all calls to inform.
9769         * c-common.c: Likewise.
9770         * c-decl.c: Likewise.
9771         * c-opts.c: Likewise.
9772         * c-pch.c: Likewise.
9773         * c-pragma.c: Likewise.
9774         * c-typeck.c: Likewise.
9775         * coverage.c: Likewise.
9776         * opts.c: Likewise.
9777         * toplev.c: Likewise.
9778         * tree-cfg.c: Likewise.
9779         * tree-ssa.c: Likewise.
9781 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
9783         PR target/37169
9784         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
9785         V2DI mode, for SSE4.1, use movq instead of vector set if the
9786         second element is zero and inter-unit moves are OK.
9788 2008-08-20  Richard Guenther  <rguenther@suse.de>
9790         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
9791         properly handle conversion/copy chains after tuplification.
9793 2008-08-20  Richard Guenther  <rguenther@suse.de>
9795         * passes.c (init_optimization_passes): Move the second
9796         forwprop pass before alias computation.  Remove the second
9797         DCE pass.  Remove the first dominator and phi copy/const
9798         prop passes.
9800 2008-08-20  Nick Clifton  <nickc@redhat.com>
9802         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
9803         support of this feature.  Do not assume that a sufficiently new
9804         assembler will support the feature regardless of the target type.
9805         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
9806         * configure: Regenerate.
9808 2008-08-20  Richard Guenther  <rguenther@suse.de>
9810         * tree-vrp.c (found_in_subgraph): Remove.
9811         (live): New global static.
9812         (live_on_edge): New function.
9813         (blocks_visited): Remove.
9814         (register_edge_assert_for_2): Use live_on_edge.
9815         (find_conditional_asserts): Remove code dealing with
9816         found_in_subgraph.  Do not walk the CFG.
9817         (find_switch_asserts): Likewise.
9818         (find_assert_locations_1): Renamed from find_assert_locations.
9819         Move finding assert locations for conditional and switch
9820         statements first.  Update live bitmap.  Do not walk the CFG.
9821         (find_assert_locations): New function.
9822         (insert_range_assertions): Remove entry of CFG walk.
9823         Adjust call to find_assert_locations.
9824         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
9825         that only can appear because of fake exit edges but assert we
9826         never try to insert on those.
9827         (fini_pre): Do not remove fake exit edges here...
9828         (execute_pre): ...but here, before committing edge inserts.
9830 2008-08-19  Richard Guenther  <rguenther@suse.de>
9832         * passes.c (init_optimization_passes): Exchange store-ccp
9833         with a ccp pass.
9835 2008-08-19  Rafael Espíndola  <espindola@google.com>
9837         * varasm.c (weak_decls): Move earlier in the file.
9838         (assemble_external): Add weak decls to the weak_decls list.
9839         (declare_weak): Don't add decls to the weak_decls list.
9841 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
9843         PR target/37157
9844         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
9845         before (sse2_shufpd_<mode>).
9847 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
9849         PR debug/37156
9850         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
9851         * tree.c (block_nonartificial_location): Likewise.
9853 2008-08-19  Richard Guenther  <rguenther@suse.de>
9855         PR tree-optimization/35972
9856         PR tree-optimization/23094
9857         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
9858         parameter.
9859         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
9860         handle MISALIGNED_INDIRECT_REF.
9861         (get_ref_from_reference_ops): New helper.
9862         (vn_reference_lookup_pieces): Walk the use-def chain using the
9863         alias-oracle if requested.
9864         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
9865         walking the use-def chain.
9866         (compute_avail): But not here.
9867         (create_component_ref_by_pieces_1): Properly handle
9868         MISALIGNED_INDIRECT_REF.
9869         (do_regular_insertion): Handle fully redundant
9870         expressions after PHI-translation also for SSA_NAME values, not
9871         only constants.  Correctly use edoubleprime for that.
9873 2008-08-19  Ira Rosen  <irar@il.ibm.com>
9875         * tree-vectorizer.c (supportable_widening_operation): Support
9876         multi-step conversion, return the number of steps in such conversion
9877         and the required intermediate types.
9878         (supportable_narrowing_operation): Likewise.
9879         * tree-vectorizer.h (vect_pow2): New function.
9880         (supportable_widening_operation): Change argument types.
9881         (supportable_narrowing_operation): Likewise.
9882         (vectorizable_type_promotion): Add an argument.
9883         (vectorizable_type_demotion): Likewise.
9884         * tree-vect-analyze.c (vect_analyze_operations): Call
9885         vectorizable_type_promotion and vectorizable_type_demotion with
9886         additional argument.
9887         (vect_get_and_check_slp_defs): Detect patterns.
9888         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
9889         types.
9890         (vect_analyze_slp_instance): Don't fail in case of multiple types.
9891         Call vect_build_slp_tree with correct arguments. Calculate unrolling
9892         factor according to the smallest type in the loop.
9893         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
9894         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
9895         supportable_widening_operation with correct arguments.
9896         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
9897         operands lists according to the number of vector statements in left
9898         or right node, if exists.
9899         (vect_gen_widened_results_half): Remove unused argument.
9900         (vectorizable_conversion): Call supportable_widening_operation,
9901         supportable_narrowing_operation, and vect_gen_widened_results_half
9902         with correct arguments.
9903         (vectorizable_assignment): Change documentation, support multiple
9904         types in SLP.
9905         (vectorizable_operation): Likewise.
9906         (vect_get_loop_based_defs): New function.
9907         (vect_create_vectorized_demotion_stmts): Likewise.
9908         (vectorizable_type_demotion): Support loop-aware SLP and general
9909         multi-step conversion. Call vect_get_loop_based_defs and
9910         vect_create_vectorized_demotion_stmts for transformation.
9911         (vect_create_vectorized_promotion_stmts): New function.
9912         (vectorizable_type_promotion): Support loop-aware SLP and general
9913         multi-step conversion. Call vect_create_vectorized_promotion_stmts
9914         for transformation.
9915         (vectorizable_store): Change documentation, support multiple
9916         types in SLP.
9917         (vectorizable_load): Likewise.
9918         (vect_transform_stmt): Pass SLP_NODE to
9919         vectorizable_type_promotion and vectorizable_type_demotion.
9920         (vect_schedule_slp_instance): Move here the calculation of number
9921         of vectorized statements for each node from...
9922         (vect_schedule_slp): ... here.
9923         (vect_transform_loop): Call vect_schedule_slp without the last
9924         argument.
9926 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9928         PR bootstrap/37152
9929         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
9930         to == in assert statement.
9931         (vectorizable_reduction): Fix typo.
9933 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9935         PR bootstrap/37153
9936         * value-prof.c (check_counter): Dereference pointer to overall
9937         count when printing it.
9939 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9941         * profile.h: Really add it.
9943 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9945         * mcf.c: Really add it.
9947 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
9948             Vinodha Ramasamy  <vinodha@google.com>
9950         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
9951         count_scale.
9952         * value-prof.c (check_counter): Fix the counter if
9953         flag_profile_correction is true.
9954         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
9955         tree_mod_subtract_transform):
9956         Follow check_counter parameter change.
9957         * common.opt (fprofile-correction): New option.
9958         * mcf.c: New file.
9959         * profile.h: Likewise.
9960         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
9961         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
9962         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
9963         functions.
9964         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
9965         flag_profile_correction is set.
9967 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
9969         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
9971 2008-08-18  Tomas Bily  <tbily@suse.cz>
9973         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
9974         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
9975         CONVERT_EXPR_P.
9976         * tree-data-ref.c (split_constant_offset_1): Likewise.
9977         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
9978         * tree-sra.c (sra_walk_expr): Likewise.
9979         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
9980         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
9981         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
9982         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
9983         Likewise.
9984         * gimple.c (gimple_assign_unary_nop_p): Likewise.
9985         * tree-vect-transform.c (vectorizable_type_demotion)
9986         (vectorizable_type_promotion): Likewise.
9987         * tree-inline.c (expand_call_inline):
9988         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
9989         (forward_propagate_addr_expr_1, forward_propagate_comparison)
9990         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9991         * expr.c (expand_expr_real_1): Likewise.
9992         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
9993         (gimple_assign_unary_useless_conversion_p): Likewise.
9994         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
9995         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
9996         * fold-const.c (fold_unary): Likewise.
9997         * tree.h (CONVERT_EXPR_P): Likewise.
9998         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
9999         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
10000         * tree-vrp.c:
10001         (register_edge_assert_for_2, extract_range_from_unary_expr)
10002         (register_edge_assert_for_1): Likewise.
10004 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10006         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
10007         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
10008         (enum real_value_const): Delete.
10009         (get_real_const): Delete.
10010         * real.c (get_real_const): Delete.
10011         (dconst_e_ptr): Define.
10012         (dconst_third_ptr): Define.
10013         (dconst_sqrt2_ptr): Define.
10014         * builtins.c: Update all callers.
10016 2008-08-18  Richard Guenther  <rguenther@suse.de>
10018         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
10019         statement iterator after statement removal.
10021 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
10023         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
10024         (detect_processor_freebsd): Likewise.
10025         (host_detect_local_cpu): Call newly added functions for FreeBSD.
10027 2008-08-18  Richard Guenther  <rguenther@suse.de>
10029         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
10030         and loads have the correct types.
10032 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10034         PR cpp/7263
10035         * c-opts.c (cpp_opts): Remove static.
10036         * c-parser.c (cpp_opts): Declare it extern.
10037         (disable_extension_diagnostics): Handle cpp options.
10038         (enable_extension_diagnostics): Likewise.
10040 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10042         * diagnostics.c (permerror_at): Rename as permerror.
10043         (permerror): Delete.
10044         * toplev.h: Likewise.
10046 2008-08-18  Richard Guenther  <rguenther@suse.de>
10048         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
10049         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
10050         Move call_cdce before build_alias.  Move copyrename2,
10051         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
10052         right after final inlining.
10053         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
10054         (pass_build_cfg): But instead via TODO_dump_func.
10056 2008-08-18  Richard Guenther  <rguenther@suse.de>
10058         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
10059         element index.
10060         (scalarize_init): If we failed to generate some initializers
10061         do not generate zeros for not instantiated members.  Instead
10062         rely on the copy out.
10063         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
10064         about missing flow-sensitive alias info only if we have
10065         aliases computed.
10067 2008-08-17  Nick Clifton  <nickc@redhat.com>
10069         * doc/extend.texi (Function Attributes): Fix typo in description
10070         if hot function attribute.
10072 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
10073             Richard Sandiford  <rdsandiford@googlemail.com>
10075         * doc/install.texi (--with-mips-plt): Document.
10076         * doc/invoke.texi (-mplt, -mno-plt): Document.
10077         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
10078         and handle ${with_mips_plt}.
10079         * config/mips/mips.opt (mplt): New option.
10080         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
10081         (TARGET_ABICALLS_PIC2): Likewise.
10082         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
10083         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
10084         (ASM_SPEC): Use !mabi=* instead of !mabi*.
10085         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
10086         to decide whether to output ".option picX" directives.
10087         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
10088         Pass -call_nonpic rather than -KPIC for -mplt.
10089         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
10090         on the command line.  Also remove it when -mabi=64 is used without
10091         -msym32.
10092         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
10093         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
10094         TARGET_ABICALLS_PIC0.
10095         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
10096         TARGET_ABICALLS.
10097         (mips16_build_function_stub): Only output ".option pic" directives
10098         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
10099         (mips16_build_call_stub): Fix comment and remove redundant
10100         ".set at"/"set .noat" directives.
10101         (mips_function_rodata_section): Use the default behaviour for
10102         TARGET_ABSOLUTE_ABICALLS.
10103         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
10104         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
10105         (mips_restore_gp): Do nothing if the current function doesn't use
10106         a global pointer.
10107         (mips_expand_prologue): Only save $gp if the current function uses it.
10108         Use a normal move for TARGET_ABICALLS_PIC0.
10109         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
10111 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
10113         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
10114         of function when handling GLOBAL_POINTER_REGNUM.
10116 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
10118         PR ada/20548
10119         * common.opt (-fstack-check): Do not declare the variable here.
10120         (-fstack-check=): New option variant.
10121         * doc/invoke.texi (Code Gen Options): Document it.
10122         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
10123         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
10124         (STACK_CHECK_STATIC_BUILTIN): New macro.
10125         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
10126         * opts.c: Include expr.h.
10127         (common_handle_option) <OPT_fold_stack_check_>: New case.
10128         <OPT_fstack_check>: Likewise.
10129         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
10130         consistently in the test for variable-sized types.  Adjust for
10131         new behaviour of flag_stack_check.
10132         * explow.c: Include except.h.
10133         (allocate_dynamic_stack_space): Do not take into account
10134         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
10135         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
10136         for variable-sized parameters.  Treat all parameters whose size is
10137         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
10138         stack checking is enabled.
10139         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
10140         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
10141         if generic stack checking is enabled.
10142         (expand_function_end): Adjust for new behaviour of flag_stack_check.
10143         * reload1.c (reload): Likewise.
10144         * stmt.c (expand_decl): Assert that all automatic variables have
10145         fixed size at this point and remove dead code.
10146         * flags.h (stack_check_type): New enumeration type.
10147         (flag_stack_check): Declare.
10148         * toplev.c (flag_stack_check): New global variable.
10149         * Makefile.in (opts.o): Add dependency on EXPR_H.
10150         (explow.o): Add dependency on except.h.
10152 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
10154         * config/avr/avr.c (avr_override_options): Reduce value of
10155         PARAM_INLINE_CALL_COST.
10157 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
10159         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
10160         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
10161         lieu of TYPE_MODE (type) throughout.
10163 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
10165         * config/arm/arm.c (add_minipool_backward_ref): Check for
10166         8-byte-aligned entries in second case of forcing insertion after a
10167         particular entry.  Change third case to avoid inserting
10168         non-8-byte-aligned entries before 8-byte-aligned ones.
10170 2008-08-15  Richard Guenther  <rguenther@suse.de>
10172         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
10173         strip components for unknown size accesses.
10175 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
10177         * config/s390/2097.md New file.
10178         * config/s390/s390.md ("z10prop" attribute): Define none,
10179         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
10180         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
10181         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
10182         possible values and apply them to insns as appropriate.
10183         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
10184         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
10185         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
10186         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
10187         ("bfp" mode attribute): Removed.  Every occurence replaced
10188         with <mode>.
10189         * config/s390/s390.c (struct "z10_cost"): Updated entries.
10190         * config/s390/2084.md (insn_reservation "x_itof"): Updated
10191         type attribute.
10193 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10195         PR c/28152
10196         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
10197         for keywords.
10199 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
10201         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
10202         additional argument. Support reduction when duplication is needed due
10203         to data-types of different sizes in the loop.
10204         (get_initial_def_for_induction): Fix printout.
10205         (vect_get_vec_def_for_stmt_copy): Support case where the
10206         vec_stmt_for_operand is a phi node.
10207         (vectorizable_reduction): Support reduction when duplication is needed
10208         due to data-types of different sizes in the loop.
10209         (vectorizable_call): Remove restriction to not vectorize in case we
10210         have data-types of different sizes in the loop.
10211         (vectorizable_conversion): Likewise.
10212         (vectorizable_operation): Likewise.
10213         (vectorizable_type_demotion): Likewise.
10214         (vectorizable_type_promotion): Likewise.
10215         (vectorizable_induction): Add restriction to not vectorize in case
10216         we have data-types of different sizes in the loop.
10218 2008-08-14  Christophe Saout  <christophe@saout.de>
10219             Uros Bizjak  <ubizjak@gmail.com>
10221         PR target/37101
10222         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
10223         (*vec_concatv2di_rex64_sse4_1): Ditto.
10224         (*vec_concatv2di_rex64_sse): Ditto.
10226 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
10228         PR middle-end/37103
10229         * fold-const.c (fold_widened_comparison): Do not allow
10230         sign changes that change the result even if shorter type
10231         is wider than arg1_unw's type.
10233 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
10235         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
10236         Skip if the multilib testing specifies -march that does not
10237         agree with the one specified in the testcase.
10239 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
10241         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
10242         zero extend SImode values being converted to TFmode before passing
10243         to libcalls.
10245 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10247         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
10248         __PPU__ when targeting the Cell/B.E. PPU processor.
10250 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
10252         * gimple.h (gimple_call_set_chain): Accept SSA variables.
10253         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
10254         Rematerialize the static chain, if any.
10255         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
10256         static chain.
10258 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
10260         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
10261         (new_loc_descr): Likewise.
10262         (add_loc_descr): Likewise.
10263         (size_of_loc_descr): Likewise.
10264         (size_of_locs): Likewise.
10265         (output_loc_operands): Likewise.
10266         (output_loc_sequence): Likewise.
10267         (new_reg_loc_descr): New.
10268         (build_cfa_loc): Use it.
10269         (build_cfa_aligned_loc): Likewise.
10270         (one_reg_loc_descriptor): Likewise.
10271         (based_loc_descr): Likewise.
10273 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10275         PR 30551
10276         * doc/invoke.texi (Wmain): Update.
10277         * c-decl.c (start_decl): warn_main is only 0 or 1.
10278         (start_function): Likewise. Fix formatting.
10279         (finish_function): Delete redundant warning.
10280         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
10281         * c-opts (c_common_handle_option): -Wall only has effect if
10282         warn_main is uninitialized. OPT_Wmain is automatically
10283         handled. -pedantic also enables Wmain.
10284         (c_common_post_options): Handle all logic for Wmain here.
10285         * c-common.c (warn_main): Delete.
10286         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
10287         * c-common.h (warn_main): Delete.
10289 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
10291         PR middle-end/36701
10292         * expr.c (emit_group_store): Allocate stack temp with the
10293         largest alignment when copying from register to stack.
10295 2008-08-13  Richard Guenther  <rguenther@suse.de>
10297         * tree.h (maybe_fold_offset_to_address): Declare.
10298         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
10299         (ccp_fold): Handle pointer conversions the same as fold_stmt.
10300         Likewise for POINTER_PLUS_EXPR.
10301         (maybe_fold_offset_to_reference): Enable disabled code.
10302         (maybe_fold_offset_to_address): New function.
10303         (fold_stmt_r): Use it.
10304         (fold_gimple_assign): Likewise.
10305         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
10306         (gimplify_expr): Likewise.
10308 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10310         * toplev.h (pedwarn_at): Fix declaration.
10312 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
10314         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
10315         LINK_SPEC): Use %R in -Y P argument.
10317 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10319         PR c/15236
10320         * diagnostic.c (pedwarn_at): New.
10321         * toplev.h (pedwarn_at): Declare.
10322         * c-tree.h (build_enumerator): Update declaration.
10323         * c-decl.c (finish_enum): Update comment.
10324         (build_enumerator): Take a location parameter. Give a pedwarn but do
10325         not perform any conversion.
10326         * c-parser.c (c_parser_enum_specifier): Set correct location for
10327         enumerator.
10329 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10331         PR 35635
10332         * c-common.c (conversion_warning): Use a switch. Ignore boolean
10333         expressions except for conversions to signed:1 bitfields. Handle
10334         COND_EXPR with constant operands.
10336 2008-08-13  Richard Guenther  <rguenther@suse.de>
10338         PR tree-optimization/15255
10339         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
10340         (struct oecount_s): New struct and VEC types.
10341         (cvec): New global.
10342         (oecount_hash): New function.
10343         (oecount_eq): Likewise.
10344         (oecount_cmp): Likewise.
10345         (zero_one_operation): New function.
10346         (build_and_add_sum): Likewise.
10347         (undistribute_ops_list): Perform un-distribution of multiplication
10348         and division on the chain of summands.
10349         (should_break_up_subtract): Also break up subtracts for factors.
10350         (reassociate_bb): Delete dead visited statements.
10351         Call undistribute_ops_list.  Re-sort and optimize if it did something.
10352         * passes.c (init_optimization_passes): Move DSE before
10353         reassociation.
10354         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
10355         PHI nodes.
10357 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
10359         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
10361         * doc/invoke.texi: Revert unintended checkin.
10363 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
10365         PR libgomp/26165
10366         * gcc.c (include_spec_function): Tweak call to find_a_file.
10368 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
10370         PR middle-end/37014
10371         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
10372         and TRUTH_ORIF_EXPR.
10373         * dojump.c (do_jump): Likewise.
10375         PR tree-optimization/37084
10376         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
10377         if id->regimplify, don't assume stmt is a cast assignment.
10379 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
10381         * final.c (final_scan_insn): Use app_enable/app_disable functions.
10383 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10385         PR bootstrap/37097
10386         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
10387         by last change.
10389 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10391         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
10392         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
10394         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
10395         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
10396         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
10397         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
10398         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
10400         * doc/tm.texi (Storage Layout): Remove documentation for
10401         TARGET_FLOAT_FORMAT.
10403         * simplify-rtx.c (simplify_binary_operation_1): Replace
10404         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
10406 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10408         * real.h (struct real_format): New member has_sign_dependent_rounding.
10409         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
10410         spu_single_format, ieee_double_format, mips_double_format,
10411         motorola_double_format, ieee_extended_motorola_format,
10412         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
10413         ieee_extended_intel_96_round_53_format, ibm_extended_format,
10414         mips_extended_format, ieee_quad_format, mips_quad_format,
10415         vax_f_format, vax_d_format, vax_g_format): Initialize it.
10416         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
10418         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
10419         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
10420         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
10421         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
10422         (ROUND_TOWARDS_ZERO): Likewise.
10424         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
10425         (FLOAT_MODE_FORMAT): New macro.
10426         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
10427         (MODE_COMPOSITE_P): ... this new macro.
10428         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
10429         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
10430         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
10432         * flags.h: Include "real.h".
10434         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
10435         REAL_MODE_FORMAT_COMPOSITE_P.
10436         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
10438         * doc/tm.texi (Storage Layout): Remove documentation of
10439         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
10440         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
10441         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
10442         they only apply to libgcc2.a.
10444 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10446         * config/spu/float_disf.c: New file.
10447         * config/spu/float_unsdisf.c: New file.
10448         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
10449         (LIB2FUNCS_EXCLUDE): Define.
10451 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10452             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10454         * real.h (struct real_format): New member round_towards_zero.
10455         * real.c (round_for_format): Respect fmt->round_towards_zero.
10456         (ieee_single_format, mips_single_format, motorola_single_format,
10457         spu_single_format, ieee_double_format, mips_double_format,
10458         motorola_double_format, ieee_extended_motorola_format,
10459         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
10460         ieee_extended_intel_96_round_53_format, ibm_extended_format,
10461         mips_extended_format, ieee_quad_format, mips_quad_format,
10462         vax_f_format, vax_d_format, vax_g_format): Initialize it.
10463         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
10465         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
10466         real_format to choose rounding mode when calling MPFR functions.
10467         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
10468         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
10470         * real.h (real_to_decimal_for_mode): Add prototype.
10471         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
10472         Respect target rounding mode when generating decimal representation.
10473         (real_to_decimal): New stub for backwards compatibility.
10474         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
10475         real_to_decimal_for_mode instead of real_to_decimal.
10477         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
10479 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10480             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10482         * real.c (spu_single_format): New variable.
10483         * real.h (spu_single_format): Declare.
10485         * config/spu/spu.c (spu_override_options): Install SFmode format.
10486         (spu_split_immediate): Use integer mode to operate on pieces of
10487         floating-point values in all cases.
10489         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
10490         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
10491         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
10493 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10495         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
10497 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10499         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
10501 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
10503         PR c++/36688
10504         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
10505         on the VAR_DECL instead of TYPE_READONLY on its type.
10507 2008-08-12  Ira Rosen  <irar@il.ibm.com>
10509         * tree-vectorizer.c: Depend on langhooks.h.
10510         (supportable_widening_operation): Add two arguments. Support double
10511         type conversions.
10512         (supportable_narrowing_operation): Likewise.
10513         * tree-vectorizer.h (supportable_widening_operation): Add two
10514         arguments.
10515         (supportable_narrowing_operation): Likewise.
10516         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
10517         supportable_widening_operation with correct arguments.
10518         * tree-vect-transform.c (vectorizable_conversion): Likewise.
10519         (vectorizable_type_demotion): Support double type conversions.
10520         (vectorizable_type_promotion): Likewise.
10521         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
10523 2008-08-11  Michael Matz  <matz@suse.de>
10525         * i386/i386.c (override_options): Move initialisation from
10526         flag_schedule_insns_after_reload to here from ...
10527         (optimization_options): ... here.
10529 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
10531         PR rtl-optimization/36998
10532         * dwarf2out.c (compute_barrier_args_size_1,
10533         compute_barrier_args_size): Temporarily remove assertions.
10535 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10537         PR middle-end/20644
10538         * tree-ssa.c (struct walk_data): Add new flag
10539         warn_possibly_uninitialized.
10540         (warn_uninitialized_var): Use it.
10541         (warn_uninitialized_vars): New.
10542         (execute_early_warn_uninitialized): Call it.
10543         (execute_late_warn_uninitialized): Likewise.
10545 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10547         PR middle-end/36238
10548         * reload1.c (gen_reload): Guard calls to get_secondary_mem
10549         for memory subregs.
10551 2008-08-09  Jan Hubicka  <jh@suse.cz>
10553         PR target/37055
10554         * optabs.c (maybe_emit_unop_insn): Remove produced code if
10555         expansion failed.
10556         (expand_fix): Be prepared for expansion to fail.
10557         (expand_sfix_optab): Remove instructions if expansion failed.
10559 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
10561         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
10562         avr31 architecture.
10563         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
10564         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10566 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10568         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
10569         mips/t-libgcc-mips16 to tmake_file.
10570         * config/mips/mips-protos.h (mips_call_type): New enum.
10571         (mips_pic_base_register, mips_got_load): Declare.
10572         (mips_restore_gp): Take an rtx argument.
10573         (mips_use_pic_fn_addr_reg_p): Declare.
10574         (mips_expand_call): Replace the sibcall_p argument with
10575         a mips_call_type argument.  Add a lazy_p parameter.
10576         (mips_split_call): Declare.
10577         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
10578         (MIPS16_PIC_TEMP): Likewise.
10579         (reg_class): Delete M16_NA_REGS.
10580         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
10581         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
10582         (mips_split_hi_p): Declare.
10583         * config/mips/mips.c (mips_split_hi_p): New array.
10584         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
10585         (mips_got_symbol_type_p): New function.
10586         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
10587         (mips16_stub_function_p): New function.
10588         (mips16_local_function_p): Likewise.
10589         (mips_use_pic_fn_addr_reg_p): Likewise.
10590         (mips_cannot_force_const_mem): Return false for HIGHs.
10591         Extend CONST_INT and symbolic handling to MIPS16, using
10592         mips_symbol_insns to check that the base symbol type is a
10593         legitimate constant.  Reject GOT-based constants if
10594         TARGET_MIPS16_PCREL_LOADS.
10595         (mips_const_insns): Check targetm.cannot_force_const_mem when
10596         decomposing a symbolic base and a large offset.
10597         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
10598         When calling a function that needs $25 from MIPS16 code,
10599         move the target address into $25 separately and add a USE
10600         to the call insn.
10601         (mips16_gp_pseudo_reg): Insert the initializer immediately
10602         before the first real insn.
10603         (mips_pic_base_register, mips_got_load): New functions.
10604         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
10605         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
10606         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
10607         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
10608         (mips_call_tls_get_addr): Update the call to mips_expand_call,
10609         also passing NULL_RTX rather than const0_rtx as the aux argument.
10610         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
10611         instead of TARGET_EXPLICIT_RELOCS.
10612         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
10613         (mips_load_call_address): Replace the sibcall_p argument with
10614         a mips_call_type argument.  Use mips_got_load.
10615         (mips16_local_alias): New structure.
10616         (mips16_local_aliases): New variable.
10617         (mips16_local_aliases_hash): New function.
10618         (mips16_local_aliases_eq): Likewise.
10619         (mips16_local_alias): Likewise.
10620         (mips16_stub_function): Likewise.
10621         (mips16_build_function_stub): Create a local alias for the target
10622         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
10623         .cpload directive and an R_MIPS_NONE relocation for the target
10624         function, then load the alias rather than the function itself.
10625         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
10626         (mips16_copy_fpr_return_value): Use mips16_stub_function and
10627         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
10628         (mips16_build_call_stub): Replace the FN parameter with an
10629         FN_PTR parameter.  Force the address into a register if it
10630         isn't a call_insn_operand; don't rely on the caller to do this.
10631         If a call to a locally-defined and locally-binding MIPS16
10632         function must be made indirectly, redirect the call to the
10633         function's local alias.  Use mips16_stub_function_p,
10634         mips16_stub_function, mips_expand_call and use_reg.
10635         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
10636         Use explicit %hi and %lo accesses where possible.
10637         Use MIPS_CALL to generate the correct code form of a
10638         jal instruction.  Add clobbers of $18 instead of uses.
10639         Update the call to mips_emit_call_insn.
10640         (mips_expand_call): Replace the SIBCALL_P argument with a
10641         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
10642         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
10643         allowing it to modify the call address.  Update the calls to
10644         mips_load_call_address and mips_emit_call_insn.
10645         (mips_split_call): New function.
10646         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
10647         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
10648         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
10649         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
10650         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
10651         if TARGET_MIPS16.
10652         (mips_cprestore_slot): New function.
10653         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
10654         and use mips_cprestore_slot.
10655         (mips_output_function_prologue): Handle TARGET_MIPS16 for
10656         LOADGP_OLDABI.
10657         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
10658         then use a copygp_mips16 instruction to set up $28.
10659         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
10660         (mips16_lay_out_constants): Call split_all_insns_noflow.
10661         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
10662         false if TARGET_MIPS16.
10663         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
10664         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
10665         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
10666         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
10667         MIPS16 code.  Allow MIPS16 o32 PIC.
10668         (mips_override_options): Allow MIPS16 o32 PIC.
10669         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
10670         after reload if TARGET_USE_GOT.
10671         (UNSPEC_COPYGP): New constant.
10672         (length): Use a default length of 8 for MIPS16 GOT loads.
10673         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
10674         (*got_page<mode>): Check mips_split_hi_p.
10675         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
10676         (unspec_got<mode>, unspec_call<mode>): New expanders.
10677         (load_got<mode>, load_call<mode>): Remove the length attributes.
10678         Use a got attribute instead of a type attribute.
10679         (copygp_mips16): New insn.
10680         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
10681         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
10682         (sibcall, sibcall_value, call, call_value): Update the calls
10683         to mips_expand_call.
10684         (call_internal, call_value_internal): Use mips_split_call.
10685         (call_value_multiple_internal): Likewise.
10686         (call_split): Move after call_internal (the insn it is split from).
10687         (call_internal_direct, call_value_internal_direct): Turn into
10688         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
10689         (call_direct_split, call_value_direct_split): New patterns.
10690         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
10691         and use M16_REGS instead of M16_NA_REGS.
10692         * config/mips/predicates.md (const_call_insn_operand): Replace
10693         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
10694         mips_use_pic_fn_addr_reg_p check.
10695         (move_operand): Reject HIGHs if mips_split_hi_p.
10696         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
10697         (__mips16_floatunsisf): Inline __mips16_floatsisf.
10698         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
10699         * config/mips/libgcc-mips16.ver: New file.
10700         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
10701         $(srcdir)/config/mips/libgcc-mips16.ver.
10703 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10705         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
10706         in file.
10707         (mips_unspec_address, mips_unspec_offset_high): Likewise.
10708         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
10709         (mips16_cfun_returns_in_fpr_p): Likewise.
10711 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10713         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
10714         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
10715         rather than 4 to PC.
10717 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10719         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
10720         (FUNCTION_PROFILER): Save the static chain pointer into $2
10721         beforehand and restore it aftewards.
10722         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
10723         address directly into $25 and call the function through $25;
10724         do not clobber $3.  Pad the DImode version to cover the space
10725         left by the deleted $25 <- $3 move.
10726         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
10727         the removal of the $25 <- $3 move.
10728         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
10729         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10731 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10732             Daniel Jacobowitz  <dan@codesourcery.com>
10734         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
10735         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
10736         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
10737         * config/mips/mips.c (mips_start_function_definition): New function.
10738         (mips_end_function_definition): Likewise.
10739         (mips_output_function_prologue): Use mips_start_function_definition.
10740         (mips_output_function_epilogue): Use mips_end_function_definition.
10741         (build_mips16_function_stub): Use mips_start_function_definition
10742         and mips_end_function_definition.
10743         (build_mips16_call_stub): Likewise.
10745 2008-08-09  Richard Guenther  <rguenther@suse.de>
10747         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
10748         * gimple.h (gimple_call_fn): Adjust comment.
10749         (gimple_call_set_fndecl): New function.
10750         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
10751         longer having bare FUNCTION_DECL operand.
10752         (gimple_call_return_type): Likewise.
10753         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
10755         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
10756         (gimple_mod_pow2): Likewise.
10757         (gimple_mod_subtract): Likewise.
10758         (gimple_ic): Likewise.
10759         (gimple_stringop_fixed_value): Likewise.
10760         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
10761         longer having bare FUNCTION_DECL operand.
10762         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
10763         * omp-low.c (optimize_omp_library_calls): Likewise.
10764         * cgraphunit.c (update_call_expr): Likewise.
10765         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
10766         (execute_convert_to_rsqrt): Likewise.
10767         * cfgexpand.c (gimple_to_tree): Simplify.
10768         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
10769         bare FUNCTION_DECL operand.
10770         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
10771         (convert_gimple_call): Use gimple_call_fndecl.
10772         * c-common.c (c_warn_unused_result): Likewise.
10774 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10776         PR c/17880
10777         * c-typeck.c (digest_init): Call verify_sequence_points from here.
10778         (c_finish_return): Likewise.
10779         (c_start_case): Likewise.
10780         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
10781         * c-parser.c (c_parser_condition): New. Call
10782         verify_sequence_points.
10783         (c_parser_paren_condition): Call c_parser_condition.
10784         (c_parser_for_statement): Call c_parser_condition.
10786 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10788         PR 36901
10789         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
10790         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
10791         Moved from diagnostic.h
10792         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
10793         DK_PERMERROR.
10794         (emit_diagnostic): New.
10795         (warning0, pedwarn0): Delete.
10796         (warning, warning_at, pedwarn, permerror): Return bool.
10797         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
10798         Moved to diagnostic.c.
10799         (struct diagnostic_context): Use correct type for
10800         classify_diagnostic.
10801         (diagnostic_report_diagnostic): Update declaration.
10802         (emit_diagnostic): Declare.
10803         * errors.c (warning): Return bool.
10804         * errors.h (warning): Update declaration.
10805         * toplev.h (warning0, pedwarn0): Delete.
10806         (warning, warning_at, pedwarn, permerror): Return bool.
10807         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
10808         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
10809         inform. Update all calls.
10810         (diagnose_mismatched_decls): Check return value of warning/pedwarn
10811         before giving informative note.
10812         (implicit_decl_warning): Likewise.
10813         * c-typeck.c (build_function_call): Likewise.
10814         * tree-sssa.c (warn_uninit): Likewise.
10815         * builtins.c (gimplify_va_arg_expr): Likewise.
10817 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10819         PR 7651
10820         * doc/invoke.texi (-Wextra): Move warning from here...
10821         (-Wuninitialized): ... to here.
10823 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10825         PR 28875
10826         * flags.h (set_Wunused): Delete
10827         * toplev.c (process_options): Handle Wunused flags here.
10828         * opts.c (maybe_warn_unused_parameter): Delete.
10829         (common_handle_option): Replace set_Wunused by warn_unused.
10830         (set_Wextra): Do not handle Wunused-parameter here.
10831         (set_Wunused): Delete.
10832         * c-opts.c (c_common_handle_option): Replace set_Wunused by
10833         warn_unused.
10834         * common.opt (Wunused): Add Var and Init.
10835         (Wunused-function): Likewise.
10836         (Wunused-label): Likewise.
10837         (Wunused-parameter): Likewise.
10838         (Wunused-value): Likewise.
10839         (Wunused-variable): Likewise.
10841 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
10843         * doc/invoke.texi: Add cpu_type power7.
10844         * config.in (HAVE_AS_VSX): New.
10845         * config.gcc: Add cpu_type power7.
10846         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
10847         VSX instructions.
10848         * configure: Regenerate.
10849         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
10850         power5.
10851         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
10852         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
10853         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
10855 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
10857         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
10858         type to vectorize.builtin_conversion.
10859         (vectorizable_conversion): Likewise.
10860         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
10861         integral type as input.
10862         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
10863         FIX_TRUNC_EXPR.
10864         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
10865         and ALTIVEC_BUILTIN_VCTSXS.
10866         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
10867         formatting.
10869 2008-08-08  Richard Guenther  <rguenther@suse.de>
10871         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
10872         (surely_varying_stmt_p): Calls are varying only if they are
10873         non-builtin and not indirect or have no result.
10874         (ccp_fold): Re-instantiate code before the tuples merge.
10876 2008-08-08  Richard Guenther  <rguenther@suse.de>
10878         PR tree-optimization/37056
10879         * gimple.h (gimple_assign_rhs_class): New helper function.
10880         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
10881         unary operations properly.
10883 2008-08-07  Jan Hubicka  <jh@suse.cz>
10885         * i386.h (ix86_size_cost): Declare.
10886         (ix86_cur_cost): New function macro.
10887         * i386.md (peepholes expanding size and splitters): Predicate by
10888         optimize_insn_for_speed_p.
10889         (peepholes reduce size and splitters): Predicate by
10890         optimize_insn_for_size_p.
10891         * i386.c (ix86_size_cost): Rename from ...
10892         (size_cost): This one.
10893         (override_options): Update.
10894         (decide_alg): Likewise.
10895         (ix86_expand_clear): Use RTL profile.
10896         (ix86_pad_returns): Use RTL profile.
10898 2008-08-07  Jan Hubicka  <jh@suse.cz>
10900         * recog.c (split_all_insns): Set RTL profile
10901         (peephole2_optimize): Likewise.
10902         * function.c (thread_prologue_and_epilogue_insns): Likewise.
10903         * combine.c (combine_instructions): Likewise.
10905 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10907         * c-common.c (c_common_reswords): Also warn about keyword "bool".
10909 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
10911         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
10912         value in a6 after the set_frame_ptr insn.
10914 2008-08-07  Richard Henderson  <rth@redhat.com>
10916         PR debug/37033
10917         * gcc.c (cpp_options): Pass along -g*.
10919 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10921         * config/arm/arm.c (output_move_neon): Update comment describing
10922         big-endian vector layout.
10923         (arm_assemble_integer): Do not handle big-endian NEON vectors
10924         specially.
10925         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
10926         neon_vget_lane<mode>_sext_internal,
10927         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
10928         element indices for big-endian.
10930 2008-08-07  Richard Henderson  <rth@redhat.com>
10932         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
10933         * configure, config.in: Rebuild.
10934         * debug.h (dwarf2out_do_cfi_asm): Declare.
10935         * c-cppbuiltin.c (c_cpp_builtins): Use it.
10936         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
10937         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
10938         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
10940 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10942         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10943         movv2si_internal): Combine into mov<mode>_internal.
10944         (movv2si_internal_2): Remove.
10946 2008-08-07  Jan Hubicka  <jh@suse.cz>
10948         PR target/37048
10949         * i386.md (single stringop patterns): Enable unconditionally.
10951 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
10953         PR target/36992
10954         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
10956         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
10957         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
10959         * config/i386/sse.md (sse2_movq128): New.
10961         * doc/extend.texi: Document __builtin_ia32_movq128.
10963 2008-08-07  Richard Guenther  <rguenther@suse.de>
10965         PR middle-end/37042
10966         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
10967         pointers can access anything.
10969 2008-08-06  Jan Hubicka  <jh@suse.cz>
10971         * optabs.c (emit_unop_insn): Break out to ...
10972         (maybe_emit_unop_insn): ... this one.
10973         (expand_sfix_optab): Use maybe variant.
10974         * optabs.h (maybe_emit_unop_insn): Declare.
10976         * i386.md (mov0 patterns): Enable by default.
10977         (FP conversion expanders): Disable expansion of code expanding
10978         sequences when instruction should be optimized for size.
10979         (single strinop patterns): Enable when optimizing for size.
10980         (string expanders): Disable expanding of code expanding sequences
10981         when optimizning instruction for size.
10982         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
10983         per BB basis.
10984         (ix86_fp_comparison_sahf_cost): Likewise.
10985         (ix86_expand_branch): Likewise.
10986         (ix86_expand_ashl_const): Likewise.
10987         (ix86_split_ashl): Likewise.
10988         (ix86_expand_strlen): Likewise.
10989         (ix86_emit_fp_unordered_jump): Likewie.
10991 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10993         * c-common.c: Fix typo.
10994         (c_common_reswords): Activate more C++ keyword warnings.
10996         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
10998 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11000         PR 26785
11001         * diagnostic.c (permerror_at): New.
11002         * toplev.h (permerror_at): Declare.
11004 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
11005             Ira Rosen  <irar@il.ibm.com>
11007         * tree-vect-transform.c (vect_model_simple_cost): Return
11008         immediately if stmt is pure SLP.
11009         (vect_model_store_cost): Ditto.
11010         (vect_model_load_cost): Ditto.
11011         (vectorizable_store): Remove PURE_SLP check before call
11012         to vect_model_store_cost.
11013         (vect_model_store_cost): When checking whether stmt describe
11014         strided access, add a check that it is not slp_node.
11016 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11018         PR 8715
11019         * c-common.c (warn_for_sign_compare): New. Handle separately the
11020         case that 'constant' is zero.
11021         * c-typeck.c (build_binary_op): Move code to c-common.c
11023 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11025         * config/alpha/alpha.c (alpha_preferred_reload_class,
11026         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
11027         alpha_output_mi_thunk_osf): Avoid C++ keywords.
11028         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
11029         * config/arm/arm.md: Likewise.
11030         * config/avr/avr-protos.h (preferred_reload_class,
11031         test_hard_reg_class, avr_simplify_comparison_p,
11032         out_shift_with_cnt, class_max_nregs): Likewise.
11033         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
11034         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
11035         preferred_reload_class, test_hard_reg_class): Likewise.
11036         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
11037         bfin_memory_move_cost, bfin_secondary_reload,
11038         bfin_output_mi_thunk): Likewise.
11039         * config/crx/crx.c (crx_secondary_reload_class,
11040         crx_memory_move_cost): Likewise.
11041         * config/frv/frv-protos.h (frv_secondary_reload_class,
11042         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
11043         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
11044         frv_secondary_reload_class, frv_class_likely_spilled_p,
11045         frv_class_max_nregs): Likewise.
11046         * config/h8300/h8300.c (h8300_classify_operand,
11047         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
11048         Likewise.
11049         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
11050         * config/ia64/ia64.c (ia64_preferred_reload_class,
11051         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
11052         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
11053         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
11054         Likewise.
11055         * config/m68hc11/m68hc11.c (preferred_reload_class,
11056         m68hc11_memory_move_cost): Likewise.
11057         * config/mcore/mcore.c (mcore_secondary_reload_class,
11058         mcore_reload_class): Likewise.
11059         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
11060         mips_class_max_nregs, mips_cannot_change_mode_class,
11061         mips_preferred_reload_class, mips_secondary_reload_class,
11062         mips_output_mi_thunk): Likewise.
11063         * config/mmix/mmix.c (mmix_preferred_reload_class,
11064         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
11065         Likewise.
11066         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
11067         Likewise.
11068         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
11069         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
11070         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
11071         * config/rs6000/rs6000.c (paired_expand_vector_init,
11072         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
11073         compare_section_name, rs6000_memory_move_cost): Likewise.
11074         * config/s390/s390.c (s390_emit_compare_and_swap,
11075         s390_preferred_reload_class, s390_secondary_reload,
11076         legitimize_pic_address, legitimize_tls_address,
11077         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
11078         s390_class_max_nregs): Likewise.
11079         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
11080         * config/s390/s390.md: Likewise.
11081         * config/score/score-protos.h (score_secondary_reload_class,
11082         score_preferred_reload_class): Likewise.
11083         * config/score/score.c (score_preferred_reload_class,
11084         score_secondary_reload_class): Likewise.
11085         * config/score/score3.c (score3_output_mi_thunk,
11086         score3_preferred_reload_class, score3_secondary_reload_class,
11087         score3_hard_regno_mode_ok): Likewise.
11088         * config/score/score3.h (score3_preferred_reload_class,
11089         score3_secondary_reload_class): Likewise.
11090         * config/score/score7.c (score7_output_mi_thunk,
11091         score7_preferred_reload_class, score7_secondary_reload_class,
11092         score7_hard_regno_mode_ok): Likewise.
11093         * config/score/score7.h (score7_preferred_reload_class,
11094         score7_secondary_reload_class): Likewise.
11095         * config/sh/sh.c (prepare_move_operands, output_far_jump,
11096         output_branchy_insn, add_constant, gen_block_redirect,
11097         sh_insn_length_adjustment, sh_cannot_change_mode_class,
11098         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
11099         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11100         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
11101         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
11102         xstormy16_preferred_reload_class): Likewise.
11103         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
11104         xtensa_expand_atomic, override_options,
11105         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
11106         Likewise.
11107         * reorg.c (try_merge_delay_insns): Likewise.
11108         * tree.c (merge_dllimport_decl_attributes): Likewise.
11110         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
11112 2008-08-06  Michael Matz  <matz@suse.de>
11114         * Makefile.in (write_entries_to_file): Quote words.
11115         * gengtype.c: (read_input_line): Skip over leading white-space.
11117 2008-08-06  Marc Gauthier  <marc@tensilica.com>
11119         * config.gcc: Match more processor names for Xtensa.
11120         * configure.ac: Likewise.
11121         * doc/install.texi (Specific): Likewise.
11122         * configure: Regenerate.
11124 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11126         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
11127         * calls.c (avoid_likely_spilled_reg): Likewise.
11128         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
11129         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
11130         * config/i386/i386.c (ix86_expand_special_args_builtin,
11131         ix86_secondary_reload): Likewise.
11132         * except.c (struct eh_region, gen_eh_region_catch,
11133         remove_unreachable_regions, duplicate_eh_regions,
11134         assign_filter_values, build_post_landing_pads,
11135         sjlj_find_directly_reachable_regions, remove_eh_handler,
11136         reachable_next_level, foreach_reachable_handler,
11137         can_throw_internal_1, can_throw_external_1,
11138         collect_one_action_chain): Likewise.
11139         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
11140         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
11141         * function.c (update_temp_slot_address, instantiate_new_reg,
11142         instantiate_virtual_regs_in_rtx,
11143         instantiate_virtual_regs_in_insn): Likewise.
11144         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
11145         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
11146         gimplify_cleanup_point_expr): Likewise.
11147         * ipa-cp.c (ipcp_lattice_changed): Likewise.
11148         * passes.c (next_pass_1): Likewise.
11149         * print-tree.c (print_node_brief, print_node): Likewise.
11150         * profile.c (branch_prob): Likewise.
11151         * tree-dump.c (dump_register): Likewise.
11152         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
11153         Likewise.
11154         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
11155         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
11156         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
11157         copy_arguments_for_versioning, copy_static_chain): Likewise.
11158         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
11159         add_new_name_mapping, register_new_name_mapping): Likewise.
11160         * tree-mudflap.c (mf_xform_derefs): Likewise.
11161         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
11162         get_init_expr, combine_chains): Likewise.
11163         * tree-pretty-print.c (dump_generic_node): Likewise.
11164         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
11165         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
11166         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
11167         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
11169 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11171         PR middle-end/37010
11172         * calls.c (expand_call): Use the biggest preferred stack
11173         boundary.
11175 2008-08-06  Michael Matz  <matz@suse.de>
11177         PR target/36613
11178         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
11179         for reused reload, instead of overwriting them.
11181 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11183         PR middle-end/37009
11184         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
11185         for incoming stack boundary.
11187         * function.c (assign_parm_find_entry_rtl): Update
11188         parm_stack_boundary.
11190         * function.h (rtl_data): Add parm_stack_boundary.
11192         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
11193         parm_stack_boundary for incoming stack boundary.
11195 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
11197         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
11198         for unrepresentable subregs or treat them as equal to other regs
11199         or subregs with the same register number.
11201 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
11203         PR middle-end/35432
11204         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
11205         if want_value.
11207 2008-08-06  Jan Hubicka  <jh@suse.cz>
11209         * predict.c (maybe_hot_frequency_p): When profile is absent, all
11210         frequencies might be hot.
11212 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
11214         * reload.c (find_reloads): Force constants into literal pool
11215         also if they are wrapped in a SUBREG.
11217 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
11219         PR target/35659
11220         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
11221         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
11222         Don't allow predicated instructions for data speculation.
11223         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
11224         declaration.
11226 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
11228         * haifa-sched.c (extend_global): Split to extend_global_data and
11229         extend_region_data.  Update all uses.
11230         (extend_all): Rename to extend_block_data.
11232 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
11234         * sched-rgn.c (new_ready): Check if instruction can be
11235         speculatively scheduled before attempting speculation.
11236         (debug_rgn_dependencies): Remove wrongful assert.
11238 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
11240         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
11242 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
11244         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
11245         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
11246         va_size, and type_size.
11248 2008-08-04  Jason Merrill  <jason@redhat.com>
11250         PR c++/37016
11251         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
11252         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
11254 2008-08-05  Richard Henderson  <rth@redhat.com>
11256         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
11257         * configure: Rebuild.
11259 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11261         PR tree-opt/37024
11262         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
11263         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
11264         is a conversion.
11266 2008-08-05  Richard Henderson  <rth@redhat.com>
11268         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
11269         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
11270         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
11271         * common.opt (fdwarf2-cfi-asm): New.
11272         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
11273         * config.in, configure: Rebuild.
11274         * dwarf2asm.c (dw2_asm_output_data_raw): New.
11275         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
11276         New.
11277         (dw2_force_const_mem): Externalize.
11278         * dwarf2asm.h: Update.
11279         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
11280         generate a real label.
11281         (output_cfi_directive): New.
11282         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
11283         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
11284         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
11285         and .cfi_lsda.
11286         (dwarf2out_end_epilogue): Emit .cfi_endproc.
11287         (output_loc_operands_raw, output_loc_sequence_raw): New.
11288         (output_cfa_loc_raw): New.
11290 2008-08-05  Paul Brook  <paul@codesourcery.com>
11292         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
11293         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
11294         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
11295         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
11296         * config/arm/arm.h (TARGET_VFPD32): Define.
11297         (TARGET_VFP3): Use TARGET_VFPD32.
11298         (fputype): Add FPUTYPE_VFP3D16.
11299         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
11300         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
11301         * config/arm/arm-cores.def: Add cortex-r4f.
11302         * config/arm/arm-tune.md: Regenerate.
11304 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11306         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
11307         Reword some comments throughout the file.
11309         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
11310         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
11311         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
11312         MFC_MIN_DMA_LIST_ELEMENTS.
11313         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
11314         MFC_MAX_DMA_LIST_ELEMENTS.
11316         (MFC_START_ENABLE): Remove PPU-only define.
11317         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
11318         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
11320         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
11321         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
11322         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
11323         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
11324         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
11325         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
11326         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
11328         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
11329         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
11330         (mfc_sdcrt, mfc_sdcrtst): Likewise.
11331         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
11333         (spu_read_machine_status): Fix typo.
11335 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11337         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
11338         SUBREG of multi-word hard register.
11339         * config/spu/spu.c (valid_subreg): Likewise.
11340         (adjust_operand): Handle SUBREGs of multi-word hard registers.
11342 2008-08-04  Richard Guenther  <rguenther@suse.de>
11344         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
11345         the candidate with the stripped base if that base is different
11346         from the original base even for offset zero.
11348 2008-08-04  Richard Guenther  <rguenther@suse.de>
11350         PR middle-end/36691
11351         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
11352         check for no_overflow.
11354 2008-08-04  Richard Guenther  <rguenther@suse.de>
11356         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
11358 2008-08-04  Paul Brook  <paul@codesourcery.com>
11360         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
11361         (arm_order_regs_for_local_alloc): New function.
11362         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
11363         prototype.
11364         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
11366 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
11368         PR target/37012
11369         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
11370         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
11371         (ix86_expand_epilogue): Likewise.
11373 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
11375         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
11376         in comments.
11378 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
11380         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
11381         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
11382         (*movv2sf_internal_rex64): Ditto.
11384 2008-08-03  Jan Hubicka  <jh@suse.cz>
11386         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
11387         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
11388         * expmed.c (expand_smod_pow2): Likewise.
11390 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
11392         PR target/36992
11393         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
11394         alternative 0 of operand 1.
11395         (*vec_concatv2di_rex64_sse): Ditto.
11396         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
11397         of operand 1.
11398         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
11399         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
11400         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
11401         (*movv2sf_internal_rex64): Ditto.
11403 2008-08-02  Richard Guenther  <rguenther@suse.de>
11405         PR target/35252
11406         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
11407         (ssedoublesizemode): New mode attribute.
11408         (sse_shufps): Call gen_sse_shufps_v4sf.
11409         (sse_shufps_1): Macroize.
11410         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
11411         (sse2_shufpd_1): Macroize.
11412         (vec_extract_odd, vec_extract_even): New expanders.
11413         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
11414         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
11415         * i386.c (ix86_expand_vector_init_one_nonzero): Call
11416         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
11417         (ix86_expand_vector_set): Likewise.
11418         (ix86_expand_reduc_v4sf): Likewise.
11420 2008-08-01  Doug Kwan  <dougkwan@google.com>
11422         * matrix-reorg.c: Re-enable all code.
11423         (struct malloc_call_data): Change CALL_STMT to gimple type.
11424         (collect_data_for_malloc_call): Tuplify.
11425         (struct access_site_info): Change STMT to gimple type.
11426         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
11427         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
11428         (struct free_info): Change STMT to gimple type.
11429         (struct matrix_access_phi_node):  Change PHI to gimple type.
11430         (get_inner_of_cast_expr): Remove.
11431         (may_flatten_matrices_1): Tuplify.
11432         (may_flatten_matrices): Ditto.
11433         (mark_min_matrix_escape_level): Ditto.
11434         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
11435         (ssa_accessed_in_call_rhs): New
11436         (ssa_accessed_in_assign_rhs): New
11437         (record_access_alloc_site_info): Tuplify.
11438         (add_allocation_site): Ditto.
11439         (analyze_matrix_allocation_site): Ditto.
11440         (analyze_transpose): Ditto.
11441         (get_index_from_offset): Ditto.
11442         (update_type_size): Ditto.
11443         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
11444         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
11445         (analyze_accesses_for_phi_node): Tuplify.
11446         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
11447         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
11448         (analyze_matrix_accesses): Tuplify.
11449         (check_var_data): New call-back type for check_var_notmodified_p.
11450         (check_var_notmodified_p): Tuplify and use call-back struct to
11451         return statement found.
11452         (can_calculate_expr_before_stmt): Factor out statement related code
11453         into ...
11454         (can_calculate_stmt_before_stmt): New.
11455         (check_allocation_function): Tuplify.
11456         (find_sites_in_func): Ditto.
11457         (record_all_accesses_in_func): Ditto.
11458         (transform_access_sites): Ditto.
11459         (transform_allocation_sites): Ditto.
11460         (matrix_reorg): Re-enable.
11461         (gate_matrix_reorg): Re-enable.
11463 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
11465         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
11466         for labels for which it hasn't been set yet.  If it has been set,
11467         stop walking insns and continue with next worklist item.
11468         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
11469         if the only BARRIER is at the very end of a function.
11471 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
11473         * cfgexpand.c (expand_stack_alignment): Assert that
11474         stack_realign_drap and drap_rtx must match.
11476         * function.c (instantiate_new_reg): If DRAP is used to realign
11477         stack, replace virtual_incoming_args_rtx with internal arg
11478         pointer.
11480 2008-08-01  Richard Guenther  <rguenther@suse.de>
11482         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
11483         loop information only if we initialized it.
11484         (execute_pre): Call fini_pre with in_fre.
11485         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
11486         if we do not unroll because we hit max-completely-peeled-insns.
11487         Use our estimation for consistency, do allow shrinking.
11489 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
11491         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
11492         with MIN_STACK_BOUNDARY.
11493         (ix86_update_stack_boundary): Likewise.
11494         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
11495         STACK_BOUNDARY.
11497         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
11498         (MIN_STACK_BOUNDARY): This.
11500 2008-08-01  Richard Guenther  <rguenther@suse.de>
11502         PR middle-end/36997
11503         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
11505 2008-08-01  Richard Guenther  <rguenther@suse.de>
11507         PR tree-optimization/36988
11508         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
11509         do not matter if that doesn't change volatile qualification.
11511 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
11513         * configure.ac: Do not generate libada-mk.  Do not subst
11514         host_cc_for_libada.
11515         * libada-mk.in: Remove.
11516         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
11517         * configure: Regenerate.
11519 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
11521         * tree-pass.h: Added comment about not dumping passes with name
11522         starting with star in struct opt_pass.
11523         * passes.c (register_dump_files_1): Don't do dump for a pass with
11524         name starting with star.
11525         * doc/passes.texi (Pass manager): Mention pass names and special
11526         meaning of star prefix to avoid dump.
11528 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
11530         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
11531         to MIPS64r2.
11532         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
11533         (ISA_MIPS64R2): New macro.
11534         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
11535         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
11536         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
11537         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
11538         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
11539         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
11540         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
11541         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
11542         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
11543         Move up to keep list alphabetically sorted.
11544         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
11545         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
11546         processor.
11547         * doc/invoke.texi (MIPS Options): Add -mips64r2.
11548         (-march=@var{arch}): Add mips64r2.
11550 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11552         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
11554 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
11556         * expr.c (expand_assignment): Check for complete type.
11558 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11560         PR debug/36977
11561         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
11563         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
11564         for stack alignment.
11566         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
11568 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11570         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
11571         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
11573 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11575         PR rtl-optimization/36419
11576         * dwarf2out.c (barrier_args_size): New variable.
11577         (compute_barrier_args_size, compute_barrier_args_size_1): New
11578         functions.
11579         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
11580         if not called yet in the current function, use barrier_args_size
11581         array to find the new args_size value.
11582         (dwarf2out_frame_debug): Free and clear barrier_args_size.
11584 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11586         PR debug/36980
11587         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
11588         rule 19.
11590 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11592         PR debug/36976
11593         * dwarf2out.c (dwarf2out_args_size_adjust): New.
11594         (dwarf2out_stack_adjust): Use it.
11595         (dwarf2out_frame_debug_expr): Likewise.
11597 2008-07-31  Richard Guenther  <rguenther@suse.de>
11599         PR tree-optimization/36978
11600         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
11601         the generated condition.
11603 2008-07-31  Richard Guenther  <rguenther@suse.de>
11605         * passes.c (init_optimization_passes): Always call
11606         pass_early_warn_uninitialized.
11607         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
11608         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
11609         * doc/passes.texi (Warn for uninitialized variables): Adjust.
11611 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11613         PR c/36970
11614         * builtins.c (maybe_emit_free_warning): New function.
11615         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
11616         maybe_emit_free_warning for BUILT_IN_FREE.
11618         PR debug/36278
11619         * dwarf2out.c (get_context_die): New function.
11620         (force_decl_die, force_type_die): Use it.
11621         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
11622         returns NULL, force generation of DW_TAG_typedef and put that into
11623         DW_AT_import.
11625         PR preprocessor/36649
11626         * c-pch.c (c_common_read_pch): Save and restore
11627         line_table->trace_includes across PCH restore.
11629 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
11631         PR ada/36554
11632         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
11634 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11636         PR 36974
11637         * final.c (call_from_call_insn): Handle COND_EXEC.
11639 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11641         * builtins.c (std_gimplify_va_arg_expr): Replace
11642         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
11643         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11645 2008-07-30  Joey Ye  <joey.ye@intel.com>
11646             H.J. Lu  <hongjiu.lu@intel.com>
11648         * builtins.c (expand_builtin_setjmp_receiver): Replace
11649         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
11650         (expand_builtin_apply_args_1): Likewise.
11651         (expand_builtin_longjmp): Need DRAP for stack alignment.
11652         (expand_builtin_apply): Likewise.
11654         * caller-save.c (setup_save_areas): Call assign_stack_local_1
11655         instead of assign_stack_local to allow alignment reduction.
11657         * calls.c (emit_call_1): Need DRAP for stack alignment if
11658         return pops.
11659         (expand_call): Replace virtual_incoming_args_rtx with
11660         crtl->args.internal_arg_pointer.
11661         * stmt.c (expand_nl_goto_receiver): Likewise.
11663         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
11664         alignment and store to stack_alignment_estimated and
11665         max_used_stack_slot_alignment.
11666         (expand_one_var): Likewise.
11667         (expand_stack_alignment): New function.
11668         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
11669         and stack_alignment_estimated fields in rtl_data.  Call
11670         expand_stack_alignment at end.
11672         * defaults.h (INCOMING_STACK_BOUNDARY): New.
11673         (MAX_STACK_ALIGNMENT): Likewise.
11674         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
11675         (SUPPORTS_STACK_ALIGNMENT): Likewise.
11677         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
11678         stack alignment when generating virtual registers.
11680         * function.c (assign_stack_local): Renamed to ...
11681         (assign_stack_local_1): This.  Add a parameter to indicate
11682         if it is OK to reduce alignment.
11683         (assign_stack_local): Use it.
11684         (instantiate_new_reg): Instantiate virtual incoming args rtx
11685         to vDRAP if stack realignment and DRAP is needed.
11686         (assign_parms): Collect parameter/return type alignment and
11687         contribute to stack_alignment_estimated.
11688         (locate_and_pad_parm): Likewise.
11689         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
11690         with crtl->args.internal_arg_pointer.
11692         * function.h (rtl_data): Add new field drap_reg,
11693         max_used_stack_slot_alignment, stack_alignment_estimated,
11694         stack_realign_needed, need_drap, stack_realign_processed and
11695         stack_realign_finalized.
11696         (stack_realign_fp): New macro.
11697         (stack_realign_drap): Likewise.
11699         * global.c (compute_regsets): Frame pointer is needed when
11700         stack is realigned.  Can eliminate frame pointer when stack is
11701         realigned and dynamic realigned argument pointer isn't used.
11703         * reload1.c (update_eliminables):  Frame pointer is needed
11704         when stack is realigned.
11705         (init_elim_table): Can eliminate frame pointer when stack is
11706         realigned and dynamic realigned argument pointer isn't used.
11708         * rtl.h (assign_stack_local_1): Declare new funtion.
11710         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
11711         (TARGET_GET_DRAP_RTX): Likewise.
11712         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
11713         TARGET_GET_DRAP_RTX.
11715         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
11717         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
11718         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
11720 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
11721             H.J. Lu  <hongjiu.lu@intel.com>
11723         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
11724         vdrap_reg, stack_realign and drap_reg_saved.
11725         (add_cfi): Don't allow redefining CFA when DRAP is used.
11726         (reg_save): Handle stack alignment.
11727         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
11728         alignment.  Don't generate DWARF information for (set fp sp)
11729         when DRAP is used.
11730         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
11731         to INVALID_REGNUM.
11732         (int_loc_descriptor): Move prototype forward.  Also define if
11733         DWARF2_UNWIND_INFO is true.
11734         (output_cfa_loc): Handle DW_CFA_expression.
11735         (build_cfa_aligned_loc): New.
11736         (based_loc_descr): Update assert for stack realign.  For local
11737         variables, use sp+offset when stack is aligned without drap and
11738         fp+offset when stack is aligned with drap.  For arguments, use
11739         cfa+offset when drap is used to align stack.
11741 2008-07-30  Joey Ye  <joey.ye@intel.com>
11742             H.J. Lu  <hongjiu.lu@intel.com>
11744         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
11745         Break long line.
11746         (ix86_gen_andsp): New.
11747         (ix86_user_incoming_stack_boundary): Likewise.
11748         (ix86_default_incoming_stack_boundary): Likewise.
11749         (ix86_incoming_stack_boundary): Likewise.
11750         (ix86_can_eliminate): Likewise.
11751         (find_drap_reg): Likewise.
11752         (ix86_update_stack_boundary): Likewise.
11753         (ix86_get_drap_rtx): Likewise.
11754         (ix86_finalize_stack_realign_flags): Likewise.
11755         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
11756         (TARGET_GET_DRAP_RTX): Likewise.
11757         (override_options): Overide option value for new options.
11758         (ix86_function_ok_for_sibcall): Remove check for
11759         force_align_arg_pointer.
11760         (ix86_handle_cconv_attribute): Likewise.
11761         (ix86_function_regparm): Likewise.
11762         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
11763         (ix86_va_start): Replace virtual_incoming_args_rtx with
11764         crtl->args.internal_arg_pointer.
11765         (ix86_select_alt_pic_regnum): Check DRAP register.
11766         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
11767         (ix86_compute_frame_layout): Compute frame layout wrt stack
11768         realignment.
11769         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
11770         (ix86_expand_prologue): Decide if stack realignment is needed
11771         and generate prologue code accordingly.
11772         (ix86_expand_epilogue): Generate epilogue code wrt stack
11773         realignment is really needed or not.
11775         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
11776         (ABI_STACK_BOUNDARY): Likewise.
11777         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
11778         (STACK_REALIGN_DEFAULT): Likewise.
11779         (INCOMING_STACK_BOUNDARY): Likewise.
11780         (MAX_STACK_ALIGNMENT): Likewise.
11781         (ix86_incoming_stack_boundary): Likewise.
11782         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
11783         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
11784         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
11785         (machine_function): Remove force_align_arg_pointer.
11787         * config/i386/i386.md (BX_REG): New.
11788         (R13_REG): Likewise.
11790         * config/i386/i386.opt (mforce_drap): New.
11791         (mincoming-stack-boundary): Likewise.
11792         (mstackrealign): Add Init(-1).
11794         * config/i386/i386-protos.h (ix86_can_eliminate): New
11796 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11798         * doc/extend.texi: Update force_align_arg_pointer.
11800         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
11801         -mstackrealign.
11803         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
11804         (INCOMING_STACK_BOUNDARY): Likewise.
11805         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
11806         (TARGET_GET_DRAP_RTX): Likewise.
11808 2008-07-30  Andreas Schwab  <schwab@suse.de>
11810         PR rtl-optimization/36929
11811         * dse.c (replace_inc_dec): Use emit_insn_before instead of
11812         add_insn_before and fix argument order.
11813         (replace_inc_dec_mem): Handle NULL rtx.
11815 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
11817         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
11818         function.
11819         (arm_compute_initial_elimination_offset): Use it.
11820         (arm_compute_save_reg_mask): Include static chain save slot when
11821         calculating alignment.
11822         (arm_get_frame_offsets): Ditto.
11823         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
11824         that we can use to decrement the stack when the stack decrement
11825         could be too big for an immediate value in a single insn.
11826         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
11828 2008-07-30  Richard Guenther  <rguenther@suse.de>
11830         PR tree-optimization/36967
11831         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
11832         Release defs of statements we remove.
11834 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11836         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
11837         instead of NULL_RTVEC.
11839 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11841         PR target/35866
11843         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
11844         vector modes.
11846 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11848         * final.c (call_from_call_insn): New.
11849         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
11851 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
11853         * configure.ac: Substitute ADA_CFLAGS.
11854         * configure: Regenerate.
11855         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
11856         * Makefile.in: Remove mention of X_* variables.
11857         * config/pa/x-ada-hpux10: Remove.
11858         * config/pa/x-ada: Remove.
11860         * doc/fragments.texi: Update.
11862 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11864         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
11865         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
11866         __dso_handle explicitly here.
11868 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11870         PR 34389
11871         * c-typeck.c (build_binary_op): Encapsulate code into...
11872         * c-common.c (shorten_binary_op): ...this new function.
11873         (conversion_warning): Use the new function. Handle non-negative
11874         constant in bitwise-and.
11875         * c-common.h (shorten_binary_op): Declare.
11877 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11879         * scan.c (make_sstring_space): Add explicit conversions of
11880         allocator's return value.
11881         * fix-header.c (recognized_function): Likewise.
11883 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11885         * doc/cpp.texi: Update to GFDL 1.2.
11886         * doc/gcc.texi: Do not list GPL as Invariant Section.
11887         * doc/gccint.texi: Likewise.  Update copyright years.
11888         * doc/install.texi: Update copyright years.
11890 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
11892         PR target/36955
11893         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
11894         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
11896 2008-07-29  Jan Hubicka  <jh@suse.cz>
11898         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
11899         (grokdeclarator): Likewise.
11900         * langhooks.c (lhd_warn_unused_global_decl): Use
11901         DECL_DECLARED_INLINE_P.
11902         * print-tree.c (print_node): Remove DECL_INLINE check.
11904 2008-07-29  Richard Guenther  <rguenther@suse.de>
11906         PR tree-optimization/36945
11907         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
11908         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
11909         Record invariant addresses un-decomposed.
11910         (copy_reference_ops_from_call): Record reference call
11911         arguments properly.  Simplify.
11912         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
11913         helper split out from ...
11914         (create_component_ref_by_pieces): ... here.  Simplify.
11915         Prepare for recursive invocation for call arguments.
11916         (create_expression_by_pieces): Adjust call to
11917         create_component_ref_by_pieces.
11918         (compute_avail): Process operand 2 of reference ops.
11920 2008-07-29  Richard Guenther  <rguenther@suse.de>
11922         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
11924 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
11926         * c-format.c (check_format_types): Revert unwanted checkin.
11928 2008-07-29  Jan Hubicka  <jh@suse.cz>
11930         * flags.h (flag_really_no_inline): Remove.
11931         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
11932         * toplev.c (flag_really_no_inline): Remove.
11933         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
11934         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
11935         (cgraph_decide_inlining_incrementally): Likewise.
11936         (compute_inline_parameters): Likewise.
11937         * opts.c (decode_options): Simplify.
11938         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
11939         * common.opt (finline): Initialize to 1.
11940         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
11942 2008-07-29  Jan Hubicka  <jh@suse.cz>
11944         * predict.c (always_optimize_for_size_p): New function.
11945         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11946         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11947         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
11948         functions.
11949         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
11950         * function.c (prepare_function_start): Set default profile.
11951         * function.h (rtl_data): Add maybe_hot_insn_p.
11952         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
11953         (construct_exit_block): Likewise.
11954         (tree_expand_cfg): Likewise.
11955         * basic-block.h
11956         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11957         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11958         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
11959         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
11960         Declare.
11962 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11964         PR 34985
11965         * c-decl.c (merge_decls): Merge USED flags.
11967 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11969         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
11970         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
11971         next_stack, lab_false and lab_over trees.
11973 2008-07-28  Richard Guenther  <rguenther@suse.de>
11975         PR tree-optimization/36957
11976         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
11977         (useless_type_conversion_p): Remove.
11978         (types_compatible_p): Remove.
11979         * gimple.h (tree_ssa_useless_type_conversion): Declare.
11980         (useless_type_conversion_p): Declare.
11981         (types_compatible_p): Declare.
11982         (gimple_expr_type): Return the base type only if it is
11983         trivially convertible to the subtype.
11985 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
11987         * configure.ac: Use the m4_do macro to concatenate the warnings into
11988         one string in ACX_PROG_CC_WARNING_OPTS,
11989         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
11990         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
11991         * configure: Regenerate.
11993 2008-07-28  Richard Guenther  <rguenther@suse.de>
11995         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
11996         (insert_fake_stores): Remove.
11997         (realify_fake_stores): Likewise.
11998         (execute_pre): Remove dead code.
11999         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
12000         (find_func_aliases): Deal with it here instead.
12001         Re-enable gcc_unreachable call.
12003 2008-07-28  Richard Guenther  <rguenther@suse.de>
12005         Merge from gimple-tuples-branch.
12007         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
12008         * gimple.def: New file.
12009         * gsstruct.def: Likewise.
12010         * gimple-iterator.c: Likewise.
12011         * gimple-pretty-print.c: Likewise.
12012         * tree-gimple.c: Removed.  Merged into ...
12013         * gimple.c: ... here.  New file.
12014         * tree-gimple.h: Removed.  Merged into ...
12015         * gimple.h: ... here.  New file.
12017         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
12018         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
12019         --enable-checking=gimple flag.
12020         * config.in: Likewise.
12021         * configure: Regenerated.
12023         * tree-ssa-operands.h: Tuplified.
12024         * tree-vrp.c: Likewise.
12025         * tree-loop-linear.c: Likewise.
12026         * tree-into-ssa.c: Likewise.
12027         * tree-ssa-loop-im.c: Likewise.
12028         * tree-dump.c: Likewise.
12029         * tree-complex.c: Likewise.
12030         * cgraphbuild.c: Likewise.
12031         * tree-ssa-threadupdate.c: Likewise.
12032         * tree-ssa-loop-niter.c: Likewise.
12033         * tree-pretty-print.c: Likewise.
12034         * tracer.c: Likewise.
12035         * gengtype.c: Likewise.
12036         * tree-loop-distribution.c: Likewise.
12037         * tree-ssa-loop-unswitch.c: Likewise.
12038         * cgraph.c: Likewise.
12039         * cgraph.h: Likewise.
12040         * tree-ssa-loop-manip.c: Likewise.
12041         * value-prof.c: Likewise.
12042         * tree-ssa-loop-ch.c: Likewise.
12043         * tree-tailcall.c: Likewise.
12044         * value-prof.h: Likewise.
12045         * tree.c: Likewise.
12046         * tree.h: Likewise.
12047         * tree-pass.h: Likewise.
12048         * ipa-cp.c: Likewise.
12049         * tree-scalar-evolution.c: Likewise.
12050         * tree-scalar-evolution.h: Likewise.
12051         * target.h: Likewise.
12052         * lambda-mat.c: Likewise.
12053         * tree-phinodes.c: Likewise.
12054         * diagnostic.h: Likewise.
12055         * builtins.c: Likewise.
12056         * tree-ssa-alias-warnings.c: Likewise.
12057         * cfghooks.c: Likewise.
12058         * fold-const.c: Likewise.
12059         * cfghooks.h: Likewise.
12060         * omp-low.c: Likewise.
12061         * tree-ssa-dse.c: Likewise.
12062         * ipa-reference.c: Likewise.
12063         * tree-ssa-uncprop.c: Likewise.
12064         * toplev.c: Likewise.
12065         * tree-gimple.c: Likewise.
12066         * tree-gimple.h: Likewise.
12067         * tree-chrec.c: Likewise.
12068         * tree-chrec.h: Likewise.
12069         * tree-ssa-sccvn.c: Likewise.
12070         * tree-ssa-sccvn.h: Likewise.
12071         * cgraphunit.c: Likewise.
12072         * tree-ssa-copyrename.c: Likewise.
12073         * tree-ssa-ccp.c: Likewise.
12074         * tree-ssa-loop-ivopts.c: Likewise.
12075         * tree-nomudflap.c: Likewise.
12076         * tree-call-cdce.c: Likewise.
12077         * ipa-pure-const.c: Likewise.
12078         * c-format.c: Likewise.
12079         * tree-stdarg.c: Likewise.
12080         * tree-ssa-math-opts.c: Likewise.
12081         * tree-ssa-dom.c: Likewise.
12082         * tree-nrv.c: Likewise.
12083         * tree-ssa-propagate.c: Likewise.
12084         * ipa-utils.c: Likewise.
12085         * tree-ssa-propagate.h: Likewise.
12086         * tree-ssa-alias.c: Likewise.
12087         * gimple-low.c: Likewise.
12088         * tree-ssa-sink.c: Likewise.
12089         * ipa-inline.c: Likewise.
12090         * c-semantics.c: Likewise.
12091         * dwarf2out.c: Likewise.
12092         * expr.c: Likewise.
12093         * tree-ssa-loop-ivcanon.c: Likewise.
12094         * predict.c: Likewise.
12095         * tree-ssa-loop.c: Likewise.
12096         * tree-parloops.c: Likewise.
12097         * tree-ssa-address.c: Likewise.
12098         * tree-ssa-ifcombine.c: Likewise.
12099         * matrix-reorg.c: Likewise.
12100         * c-decl.c: Likewise.
12101         * tree-eh.c: Likewise.
12102         * c-pretty-print.c: Likewise.
12103         * lambda-trans.c: Likewise.
12104         * function.c: Likewise.
12105         * langhooks.c: Likewise.
12106         * ebitmap.h: Likewise.
12107         * tree-vectorizer.c: Likewise.
12108         * function.h: Likewise.
12109         * langhooks.h: Likewise.
12110         * tree-vectorizer.h: Likewise.
12111         * ipa-type-escape.c: Likewise.
12112         * ipa-type-escape.h: Likewise.
12113         * domwalk.c: Likewise.
12114         * tree-if-conv.c: Likewise.
12115         * profile.c: Likewise.
12116         * domwalk.h: Likewise.
12117         * tree-data-ref.c: Likewise.
12118         * tree-data-ref.h: Likewise.
12119         * tree-flow-inline.h: Likewise.
12120         * tree-affine.c: Likewise.
12121         * tree-vect-analyze.c: Likewise.
12122         * c-typeck.c: Likewise.
12123         * gimplify.c: Likewise.
12124         * coretypes.h: Likewise.
12125         * tree-ssa-phiopt.c: Likewise.
12126         * calls.c: Likewise.
12127         * tree-ssa-coalesce.c: Likewise.
12128         * tree.def: Likewise.
12129         * tree-dfa.c: Likewise.
12130         * except.c: Likewise.
12131         * except.h: Likewise.
12132         * cfgexpand.c: Likewise.
12133         * tree-cfgcleanup.c: Likewise.
12134         * tree-ssa-pre.c: Likewise.
12135         * tree-ssa-live.c: Likewise.
12136         * tree-sra.c: Likewise.
12137         * tree-ssa-live.h: Likewise.
12138         * tree-predcom.c: Likewise.
12139         * lambda.h: Likewise.
12140         * tree-mudflap.c: Likewise.
12141         * ipa-prop.c: Likewise.
12142         * print-tree.c: Likewise.
12143         * tree-ssa-copy.c: Likewise.
12144         * ipa-prop.h: Likewise.
12145         * tree-ssa-forwprop.c: Likewise.
12146         * ggc-page.c: Likewise.
12147         * c-omp.c: Likewise.
12148         * tree-ssa-dce.c: Likewise.
12149         * tree-vect-patterns.c: Likewise.
12150         * tree-ssa-ter.c: Likewise.
12151         * tree-nested.c: Likewise.
12152         * tree-ssa.c: Likewise.
12153         * lambda-code.c: Likewise.
12154         * tree-ssa-loop-prefetch.c: Likewise.
12155         * tree-inline.c: Likewise.
12156         * tree-inline.h: Likewise.
12157         * tree-iterator.c: Likewise.
12158         * tree-optimize.c: Likewise.
12159         * tree-ssa-phiprop.c: Likewise.
12160         * tree-vect-transform.c: Likewise.
12161         * tree-object-size.c: Likewise.
12162         * tree-outof-ssa.c: Likewise.
12163         * cfgloop.c: Likewise.
12164         * system.h: Likewise.
12165         * tree-profile.c: Likewise.
12166         * cfgloop.h: Likewise.
12167         * c-gimplify.c: Likewise.
12168         * c-common.c: Likewise.
12169         * tree-vect-generic.c: Likewise.
12170         * tree-flow.h: Likewise.
12171         * c-common.h: Likewise.
12172         * basic-block.h: Likewise.
12173         * tree-ssa-structalias.c: Likewise.
12174         * tree-switch-conversion.c: Likewise.
12175         * tree-ssa-structalias.h: Likewise.
12176         * tree-cfg.c: Likewise.
12177         * passes.c: Likewise.
12178         * ipa-struct-reorg.c: Likewise.
12179         * ipa-struct-reorg.h: Likewise.
12180         * tree-ssa-reassoc.c: Likewise.
12181         * cfgrtl.c: Likewise.
12182         * varpool.c: Likewise.
12183         * stmt.c: Likewise.
12184         * tree-ssanames.c: Likewise.
12185         * tree-ssa-threadedge.c: Likewise.
12186         * langhooks-def.h: Likewise.
12187         * tree-ssa-operands.c: Likewise.
12188         * config/alpha/alpha.c: Likewise.
12189         * config/frv/frv.c: Likewise.
12190         * config/s390/s390.c: Likewise.
12191         * config/m32c/m32c.c: Likewise.
12192         * config/m32c/m32c-protos.h: Likewise.
12193         * config/spu/spu.c: Likewise.
12194         * config/sparc/sparc.c: Likewise.
12195         * config/i386/i386.c: Likewise.
12196         * config/sh/sh.c: Likewise.
12197         * config/xtensa/xtensa.c: Likewise.
12198         * config/stormy16/stormy16.c: Likewise.
12199         * config/ia64/ia64.c: Likewise.
12200         * config/rs6000/rs6000.c: Likewise.
12201         * config/pa/pa.c: Likewise.
12202         * config/mips/mips.c: Likewise.
12204 2008-07-28  Simon Baldwin  <simonb@google.com>
12206         * c-pragma.c (handle_pragma_message): New function.
12207         (init_pragma): Register handle_pragma_message.
12208         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
12209         documentation.
12211 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
12213         PR tree-optimization/35252
12214         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
12215         REALPART_EXPR to be considered as same load operation.
12217 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
12219         PR tree-optimization/36830
12220         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
12221         (expressions_equal_p): Return false if only one operand is null.
12223 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
12225         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
12226         version requirements.
12228 2008-07-26  Olivier Hainque  <hainque@adacore.com>
12230         * collect2.c (symkind): New enum.  Symbol kinds we care about.
12231         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
12232         code and head comment accordingly.
12233         (scan_prog_file): Use symkind names instead of bare integers.
12235 2008-07-25  Jan Hubicka  <jh@suse.cz>
12237         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
12238         DECL_INLINE.
12239         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
12240         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
12241         * dojump.c (clear_pending_stack_adjust): Likewise.
12242         * print-tree.c (print_node): Ignore DECL_INLINE.
12243         * tree-inline.c (inlinable_function_p): Likewise.
12245 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
12247         * doc/extend.texi (hot attribute): Document that the hot attribute
12248         turns on -O3 for some ports.
12249         (cold attribute): Document that the cold attribute turns on -Os
12250         for some ports
12252         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
12253         reflect function specific option support.
12255         * target.h (struct target_option_hooks): Add fields to say whether
12256         the cold attribute implies -Os and the hot attribute implies -O3.
12258         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
12259         By default, do not turn on -Os for cold functions.
12260         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
12261         not turn on -O3 for hot functions.
12263         * c-common.c (handle_hot_attribute): Use target hook to determine
12264         if hot functions should enable -O3.
12265         (handle_cold_attribute): Use target hook to determine if cold
12266         functions should enable -Os.
12268         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
12269         (override_options): Move disable scheduling to
12270         optimization_options.
12271         (optimization_options): Disable scheduling here, not
12272         override_options.
12273         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12274         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12276         * config/ia64/ia64.c (ia64_override_options): Move setting
12277         scheduling flags to ia64_optimization_options.
12278         (ia64_optimization_options): Disable scheduling options here, and
12279         not in ia64_override_options.
12280         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12281         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12283 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
12285         PR target/36936
12286         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
12288 2008-07-25  Martin Jambor  <mjambor@suse.cz>
12290         PR tree-optimization/36926
12291         * ipa-prop.c (ipa_analyze_call_uses): Call
12292         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
12294 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
12296         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
12297         movv2si_internal): Add mem = reg alternative.
12299 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
12301         PR bootstrap/36918
12302         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
12303         DEFAULT_PCC_STRUCT_RETURN to 127.
12305 2008-07-24  Jan Hubicka  <jh@suse.cz>
12307         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
12308         (build_cgraph_edges): Likewise.
12309         * cgraph.c (cgraph_node): Do not update assembler hash.
12310         (cgraph_remove_node): Drop non-unit-at-a-time code.
12311         * tree-pass.h (pass_O0_always_inline): Remove.
12312         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
12313         * toplev.c (process_options): Flag unit-at-a-time does not imply
12314         no section anchors.
12315         * cgraphunit.c: Update comments.
12316         (decide_is_function_needed): Drop non-unit-at-a-time mode.
12317         (cgraph_assemble_pending_functions): Remove.
12318         (cgraph_reset_node): Drop non-unit-at-a-time code.
12319         (cgraph_finalize_function): Likewise.
12320         (cgraph_analyze_function): Likewise.
12321         (cgraph_finalize_compilation_unit): Likewise.
12322         (cgraph_expand_function): Likewise.
12323         (cgraph_optimize): Likesise.
12324         (save_inline_function_body): Likewise.
12325         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
12326         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
12327         * ipa-inline.c: Update comments.
12328         (enum inlining_mode): remove INLINE_SPEED.
12329         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
12330         (cgraph_mark_inline_edge): Likewise.
12331         (try_inline): Likewise.
12332         (cgraph_decide_inlining_incrementally): Likewise.
12333         (cgraph_gate_inlining): Remove.
12334         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
12335         (cgraph_gate_early_inlining): Likewise.
12336         (gate_inline_passes): Remove.
12337         (pass_inline_parameters, pass_ipa_inline): Remove gates.
12338         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
12339         pass_O0_always_inline): Remove.
12340         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
12341         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
12342         * opts.c (no_unit_at_a_time_default): Remove.
12343         (decode_options): Remove flag_unit_at_a_time reset and warning.
12344         * opts.h (no_unit_at_a_time_default): Remove.
12345         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
12346         early in GNU dialect.
12347         (merge_decls): Update comment; drop unit-at-a-time check.
12348         (finish_decl): Likewise.
12349         (grok_declaration): Remove flag_inline_trees code.
12350         (finish_functions): Return on function returning non-void on all
12351         statics.
12352         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
12353         * cfgexpand.c (expand_one_static_var): Remove.
12354         (expand_one_var): Remove expand_one_static_var call.
12355         (expand_used_vars_for_block): Remove flag_unit_a_time check.
12356         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
12357         and flag_unit_at_a-time compatibility checks.
12358         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
12359         * tree-inline.c (flag_inline_trees): Remove.
12360         (inlinable_function_p): Don't check it.
12361         (expand_call_inline): Remove non-unit-at-a-time code.
12362         * tree-inline.h (flag_inline_trees): Remove.
12363         * tree-optimize.c (execute_early_local_optimizations): Remove
12364         unit-at-a-time checks.
12365         (tree_rest_of_compilation): Likewise.
12366         * combine.c (setup_incoming_promotions): Likewise.
12367         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
12368         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
12369         * passes.c (pass_inline_parameters): Update comments; remove
12370         O0_alwaysinline pass.
12371         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
12372         (execute_one_pass): Likewise.
12373         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
12374         (ix86_function_sseregparm): Likewise.
12375         * arm.c (arm_function_in_section_p): Likewise.
12376         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
12377         * varpool.c: Update comments.
12378         (decide_is_variable_needed): Remove unit-at-a-time checks.
12379         (varpool_finalize_decl): Likewise.
12381 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
12383         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
12384         to 2 instead of -1.
12385         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
12387 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
12389         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
12390         imp symbol extension.
12392         2008-07-23  Ian Lance Taylor  <iant@google.com>
12394         * tree-vrp.c (infer_value_range): Ignore asm statements when
12395         looking for memory accesses for -fdelete-null-pointer-checks.
12397 2008-07-24  Ben Elliston  <bje@au.ibm.com>
12399         * config/spu/spu-c.c (__vector_keyword): New variable.
12400         (vector_keyword): Likewise.
12401         (spu_categorize_keyword): New function.
12402         (spu_macro_to_expand): Likewise.
12403         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
12404         compiling an ISO C dialect.
12406 2008-07-24  Ben Elliston  <bje@au.ibm.com>
12408         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
12409         conventional usage.
12411 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12413         * configure: Regenerate.
12414         * configure.ac: Require texinfo 4.7.
12415         * doc/install.texi: Document texinfo 4.7 requirement.
12417 2008-07-23  Martin Jambor  <mjambor@suse.cz>
12419         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
12420         rather than for DECL_SAVED_TREE.
12421         * ipa-prop.c: Include diagnostic.h.
12422         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
12423         thoroughly.
12424         (ipa_detect_param_modifications): Function rewritten from scratch.
12425         (ipa_compute_jump_functions): Changed accesses to modification flags.
12426         (ipa_free_node_params_substructures): Update flags destruction.
12427         (ipa_node_duplication_hook): Update flags duplication.
12428         (ipa_print_all_params_modified): Updated flag access.
12429         * ipa-prop.h (struct ipa_param_flags): New structure.
12430         (struct ipa_node_params): New field modification_analysis_done,
12431         modified_flags changed into param_flags.
12432         (ipa_is_ith_param_modified): Changed to use new flags.
12433         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
12435         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
12436         ipa-cp.c and split into two functions.
12437         (ipa_print_node_jump_functions): New function.
12438         (compute_scalar_jump_functions): New function.
12439         (type_like_member_ptr_p): New function.
12440         (compute_pass_through_member_ptrs): New function.
12441         (fill_member_ptr_cst_jump_function): New function.
12442         (determine_cst_member_ptr): New function.
12443         (compute_cst_member_ptr_arguments): New function.
12444         (ipa_compute_jump_functions): Complete rewrite.
12445         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
12446         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
12447         (struct ipa_member_ptr_cst): New structure.
12448         (union jump_func_value): New field member_cst.
12449         * ipa-cp.c (ipcp_lat_is_insertable): New function.
12450         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
12451         jump function types.
12452         (ipcp_print_all_lattices): Slight fprintf rearrangement.
12453         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
12454         instead of ipcp_print_all_jump_functions.
12455         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
12456         only for replacable scalars.
12458         * doc/invoke.texi (Optimize options): Add description of
12459         -findirect-inlining.
12460         * common.opt (flag_indirect_inlining): New flag.
12461         * opts.c (decode_options): Set flag_indirect_inlining when
12462         optimize >= 3.
12464         * ipa-inline.c: Include ipa-prop.h.
12465         (inline_indirect_intraprocedural_analysis): New function.
12466         (inline_generate_summary): Allocate parameter and argument info
12467         structures, call inline_indirect_intraprocedural_analysis on each
12468         node when doing indirect inlining and deallocate indirect inlining
12469         data structures in the end.
12470         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
12471         (free_all_ipa_structures_after_iinln): New function.
12472         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
12473         done.
12474         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
12476         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
12477         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
12478         of computing the frequency separately.
12479         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
12480         of computing the frequency separately.
12481         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
12482         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
12483         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
12484         (ipa_get_stmt_member_ptr_load_param): New function.
12485         (ipa_is_ssa_with_stmt_def): New function.
12486         (ipa_note_param_call): New function.
12487         (ipa_analyze_call_uses): New function.
12488         (ipa_analyze_stmt_uses): New function.
12489         (ipa_analyze_params_uses): New function.
12490         (ipa_free_node_params_substructures): Also free the param_calls linked
12491         list.
12492         (ipa_node_duplication_hook): Also duplicate the param_calls
12493         linked list.
12494         (ipa_print_node_param_flags): New function.
12495         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
12496         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
12497         * ipa-prop.h (struct ipa_param_flags): New field called.
12498         (struct ipa_param_call_note): New structure.
12499         (struct ipa_node_params): New fields param_calls and
12500         uses_analysis_done.
12501         (ipa_is_ith_param_called): New function.
12502         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
12503         ipa_analyze_params_uses and dump parameter flags.
12505         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
12506         ipa_propagate_indirect_call_infos if performing indirect inlining,
12507         pass a new parameter new_edges to it.
12508         (add_new_edges_to_heap): New fucntion.
12509         (cgraph_decide_inlining_of_small_functions): New vector
12510         new_indirect_edges for newly found indirect edges , call
12511         ipa_propagate_indirect_call_infos after inlining.
12512         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
12513         inlining if performing indirect inlining.  Call
12514         free_all_ipa_structures_after_iinln when doing so too.
12515         (inline_generate_summary): Do not call
12516         free_all_ipa_structures_after_iinln here.
12517         * ipa-prop.c (update_jump_functions_after_inlining): New function.
12518         (print_edge_addition_message): New function.
12519         (update_call_notes_after_inlining): New function.
12520         (propagate_info_to_inlined_callees): New function.
12521         (ipa_propagate_indirect_call_infos): New function.
12522         * ipa-prop.h: Include cgraph.h
12523         (struct ipa_param_call_note): Fields reordered, new field processed.
12524         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
12525         flag indirect_call.
12526         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
12527         rediscovered call statements.
12528         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
12529         (dump_cgraph_node): Dump also the indirect_call flag.
12530         (cgraph_clone_edge): Copy also the indirect_call flag.
12531         * tree-inline.c (copy_bb): Do not check for fndecls from call
12532         expressions, check for edge availability when moving clones.
12533         (get_indirect_callee_fndecl): New function.
12534         (expand_call_inline): If callee declaration is not apprent from
12535         the statement, try calling get_indirect_callee_fndecl.  Do not
12536         issue warnings or call sorry when not inlinings an indirect edge.
12537         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
12539         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
12540         bit more frandly to matching.
12541         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
12542         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
12543         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
12545 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12547         PR 36907
12548         * opth-gen.awk: Suppress function specific features when building
12549         target libraries.
12550         * optc-gen.awk: Ditto.
12552 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12554         PR 35058
12555         * diagnostic.c (pedwarn): Add opt parameter.
12556         (pedwarn0): New.
12557         * c-tree.h (pedwarn_init): Add opt parameter.
12558         (pedwarn_c90): Likewise.
12559         (pedwarn_c99): Likewise.
12560         * c-errors.c (pedwarn_c99): Likewise.
12561         (pedwarn_c90): Likewise.
12562         * toplev.h (pedwarn): Update declaration.
12563         (pedwarn0): Declare.
12564         * c-lex.c: All calls to pedwarn changed.
12565         * builtins.c: All calls to pedwarn changed.
12566         * toplev.c: All calls to pedwarn changed.
12567         * c-decl.c: All calls to pedwarn changed.
12568         * c-typeck.c: All calls to pedwarn changed.
12569         * c-common.c: All calls to pedwarn changed.
12570         * c-parser.c: All calls to pedwarn changed.
12572 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12573             Karthik Kumar  <karthikkumar@gmail.com>
12575         * attribs.c (file scope): Include c-common.h.
12576         (decl_attributes): Add support for #pragma GCC optimize and
12577         #pragma GCC option.
12579         * targhooks.c (default_can_inline_p): New function that is the
12580         default for the TARGET_CAN_INLINE_P target hook.
12582         * targhooks.h (default_can_inline_p): Add declaration.
12584         * tree.c (cl_optimization_node): New static tree for building
12585         OPTIMIZATION_NODE tree.
12586         (cl_target_option_node): New static tree for building
12587         TARGET_OPTION_NODE tree.
12588         (cl_option_hash_table): New hash table for hashing
12589         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12590         (cl_option_hash_hash): New function to provide the hash value for
12591         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12592         (cl_option_hash_eq): New function to provide an equality test for
12593         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12594         (tree_code_size): Add support for OPTIMIZATION_NODE and
12595         TARGET_OPTION_NODE trees.
12596         (tree_code_structure): Add support for OPTIMIZATION_NODE and
12597         TARGET_OPTION_NODE trees.
12598         (build_optimization_node): Build a tree that has all of the
12599         current optimization options.
12600         (build_target_option_node): Build a tree that has the target
12601         options that might be changed on a per function basis.
12603         * tree.h (file scope): Include options.h.
12604         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
12605         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12606         (TREE_OPTIMIZATION): Ditto.
12607         (TREE_TARGET_SPECIFIC): Ditto.
12608         (struct tree_function_decl): Add fields for remembering the
12609         current optimization options and target specific options.
12610         (struct tree_optimization_option): New tree variant that remembers
12611         the optimization options.
12612         (struct tree_target_option): New tree variant that remembers the
12613         target specific flags that might change for compiling a particular
12614         function.
12615         (union tree_node): Include tree_optimization_option and
12616         tree_target_option fields.
12617         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
12618         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
12619         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
12620         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
12621         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
12622         optimization and target options.
12623         (optimization_default_node): New macro to refer to global_trees
12624         field.
12625         (optimization_current_node): Ditto.
12626         (optimization_cold_node): Ditto.
12627         (optimization_hot_node): Ditto.
12628         (target_option_default_node): Ditto.
12629         (target_option_current_node): Ditto.
12630         (current_option_pragma): Ditto.
12631         (current_optimize_pragma): Ditto.
12633         * target.h (struct gcc_target): Add valid_option_attribute_p,
12634         target_option_save, target_option_restore, target_option_print,
12635         target_option_pragma_parse, and can_inline_p hooks.
12637         * toplev.h (parse_optimize_options): Add declaration.
12638         (fast_math_flags_struct_set_p): Ditto.
12640         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
12641         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
12642         optimize is used.
12644         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
12645         tree_can_inline_p hook to see if one function can inline another.
12646         (cgraph_decide_inlining): Ditto.
12647         (cgraph_decide_inlining_incrementally): Ditto.
12649         * opts.c (decode_options): Add support for running multiple times
12650         to allow functions with different target or optimization options
12651         than was specified on the command line.
12652         (fast_math_flags_struct_set_p): New function that is similar to
12653         fast_math_flags_set_p, except it uses the values in the
12654         cl_optimization structure instead of global variables.
12656         * optc-gen.awk: Add support for TargetSave to allow a back end to
12657         declare new fields that need to be saved when using function
12658         specific options.  Include flags.h and target.h in the options.c
12659         source.  Add support for Save to indicate which options can be set
12660         for individual functions.  Generate cl_optimize_save,
12661         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
12662         cl_target_option_restore, cl_target_option_print functions to
12663         allow functions to use different optimization or target options.
12665         * opt-functions.awk (var_type_struct): Return the type used for
12666         storing the field in a structure.
12668         * opth-gen.awk: Add support for TargetSave to allow a back end to
12669         declare new fields that need to be saved when using function
12670         specific options.  Add support for Save to indicate which options
12671         can be set for individual functions.  Only generate one extern for
12672         Mask fields.  Generate cl_optimization and cl_target_option
12673         structures to remember optimization and target options.
12675         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
12676         collecting new tree nodes.
12677         (TS_TARGET_OPTION): Ditto.
12679         * c-decl.c (merge_decls): Merge function specific target and
12680         optimization options.
12682         * function.c (invoke_set_current_function_hook): If the function
12683         uses different optimization options, change the global variables
12684         to reflect this.
12686         * coretypes.h (struct cl_optimization): Add forward reference.
12687         (struct cl_target_option): Ditto.
12689         * c-pragma.c (option_stack): New static vector to remember the
12690         current #pragma GCC option stack.
12691         (handle_pragma_option): New function to support #pragma GCC option
12692         to change target options.
12693         (optimize_stack): New static vector to remember the current
12694         #pragma GCC optimize stack.
12695         (handle_pragma_optimize): New function to support #pragma GCC
12696         optimize to change optimization options.
12697         (init_pragma): Add support for #pragma GCC optimize and #pragma
12698         GCC option.
12700         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
12701         optimization options.
12702         (TARGET_OPTION_NODE): New tree code for remembering certain target
12703         options.
12705         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
12706         TARGET_OPTION_NODE trees.
12708         * common.opt (-O): Add Optimization flag.
12709         (-Os): Ditto.
12710         (-fmath-errno): Ditto.
12711         (-falign-functions): Add UInteger flag to make sure flag gets full
12712         int in cl_optimization structure.
12713         (-falign-jumps): Ditto.
12714         (-falign-labels): Ditto.
12715         (-falign-loops): Ditto.
12716         (-fsched-stalled-insns): Ditto.
12717         (-fsched-stalled-insns-dep): Ditto.
12719         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
12720         definition.
12721         (TARGET_OPTION_SAVE): Ditto.
12722         (TARGET_OPTION_RESTORE): Ditto.
12723         (TARGET_OPTION_PRINT): Ditto.
12724         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12725         (TARGET_CAN_INLINE_P): Ditto.
12726         (TARGET_INITIALIZER): Add new hooks.
12728         * tree-inline.c (tree_can_inline_p): New function to determine
12729         whether one function can inline another.  Check if the functions
12730         use compatible optimization options, and also call the backend
12731         can_inline_p hook.
12733         * tree-inline.h (tree_can_inline_p): Add declaration.
12735         * c-common.c (c_common_attribute): Add support for option and
12736         optimize attributes.
12737         (handle_option_attribute): Add support for the option attribute to
12738         allow the user to specify different target options for compiling a
12739         specific function.
12740         (handle_optimize_attribute): Add support for the optimize
12741         attribute to allow the user to specify different optimization
12742         options for compiling a specific function.
12743         (handle_hot_attribute): Turn on -O3 optimization for this one
12744         function if it isn't the default optimization level.
12745         (handle_cold_attribute): Turn on -Os optimization for this one
12746         function if it insn't the default optimization.
12747         (const_char_p): New const char * typedef.
12748         (optimize_args): New static vector to remember the optimization
12749         arguments.
12750         (parse_optimize_options): New function to set up the optimization
12751         arguments from either the optimize attribute or #pragma GCC optimize.
12753         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
12754         (builtin_define_std): Ditto.
12756         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
12757         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
12758         (x86_64-*-*): Ditto.
12760         * Makefile.in (TREE_H): Add options.h.
12761         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
12763         * doc/extend.texi (option attribute): Document new attribute.
12764         (optimize attribute): Ditto.
12765         (hot attribute): Document hot attribute sets -O3.
12766         (cold attribute): Document cold attribute sets -Os.
12767         (#pragma GCC option): Document new pragma.
12768         (#pragma GCC optimize): Ditto.
12770         * doc/options.texi (TargetSave): Document TargetSave syntax.
12771         (UInteger): Document UInteger must be used for certain flags.
12772         (Save): Document Save option to create target specific options
12773         that can be saved/restored on a function specific context.
12775         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
12776         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12778         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
12779         (TARGET_OPTION_SAVE): Ditto.
12780         (TARGET_OPTION_RESTORE): Ditto.
12781         (TARGET_OPTION_PRINT): Ditto.
12782         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12783         (TARGET_CAN_INLINE_P): Ditto.
12785         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
12786         -mfpmath=sse,387.
12787         (-mfpmath=both): Ditto.
12789 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12790             Karthik Kumar  <karthikkumar@gmail.com>
12792         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
12793         (TARGET_POPCNT): Ditto.
12794         (TARGET_SAHF): Ditto.
12795         (TARGET_AES): Ditto.
12796         (TARGET_PCLMUL): Ditto.
12797         (TARGET_CMPXCHG16B): Ditto.
12798         (TARGET_RECIP): Move switch into target_flags.
12799         (TARGET_FUSED_MADD): Ditto.
12800         (ix86_arch_features): Make an unsigned char type.
12801         (ix86_tune_features): Ditto.
12802         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
12803         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
12804         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
12806         * config/i386/i386.opt (arch): New TargetSave field to define
12807         fields that need to be saved for function specific option support.
12808         (tune): Ditto.
12809         (fpmath): Ditto.
12810         (branch_cost): Ditto.
12811         (ix86_isa_flags_explicit): Ditto.
12812         (tune_defaulted): Ditto.
12813         (arch_specified): Ditto.
12814         (-m128-long-double): Add Save flag to save option for target
12815         specific option support.
12816         (-m80387): Ditto.
12817         (-maccumulate-outgoing-args): Ditto.
12818         (-malign-double): Ditto.
12819         (-malign-stringops): Ditto.
12820         (-mfancy-math-387): Ditto.
12821         (-mhard-float): Ditto.
12822         (-mieee-fp): Ditto.
12823         (-minline-all-stringops): Ditto.
12824         (-minline-stringops-dynamically): Ditto.
12825         (-mms-bitfields): Ditto.
12826         (-mno-align-stringops): Ditto.
12827         (-mno-fancy-math-387): Ditto.
12828         (-mno-push-args): Ditto.
12829         (-mno-red-zone): Ditto.
12830         (-mpush-args): Ditto.
12831         (-mred-zone): Ditto.
12832         (-mrtd): Ditto.
12833         (-msseregparm): Ditto.
12834         (-mstack-arg-probe): Ditto.
12835         (-m32): Ditto.
12836         (-m64): Ditto.
12837         (-mmmx): Ditto.
12838         (-m3dnow): Ditto.
12839         (-m3dnowa): Ditto.
12840         (-msse): Ditto.
12841         (-msse2): Ditto.
12842         (-msse3): Ditto.
12843         (-msse4.1): Ditto.
12844         (-msse4.2): Ditto.
12845         (-msse4): Ditto.
12846         (-mno-sse4): Ditto.
12847         (-msse4a): Ditto.
12848         (-msse5): Ditto.
12849         (-mrecip): Move flag into target_flags.
12850         (-mcld): Ditto.
12851         (-mno-fused-madd): Ditto.
12852         (-mfused-madd): Ditto.
12853         (-mabm): Move flag into ix86_isa_flags.
12854         (-mcx16): Ditto.
12855         (-mpopcnt): Ditto.
12856         (-msahf): Ditto.
12857         (-maes): Ditto.
12858         (-mpclmul): Ditto.
12860         * config/i386/i386-c.c: New file for #pragma support.
12861         (ix86_target_macros_internal): New function to #define or #undef
12862         target macros based when the user uses the #pragma GCC option to
12863         change target options.
12864         (ix86_pragma_option_parse): New function to add #pragma GCC option
12865         support.
12866         (ix86_target_macros): Move defining the target macros here from
12867         TARGET_CPU_CPP_BUILTINS in i386.h.
12868         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
12869         defined, initialize any subtarget #pragmas.
12871         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
12872         REGISTER_TARGET_PRAGMAS.
12874         * config/i386/t-i386: New file for x86 dependencies.
12875         (i386.o): Make dependencies mirror the include files used.
12876         (i386-c.o): New file, add dependencies.
12878         * config/i386/i386-protos.h (override_options): Add bool argument.
12879         (ix86_valid_option_attribute_tree): Add declaration.
12880         (ix86_target_macros): Ditto.
12881         (ix86_register_macros): Ditto.
12883         * config/i386/i386.c (ix86_tune_features): Move initialization of
12884         the target masks to initial_ix86_tune_features to allow functions
12885         to have different target options.  Make type unsigned char,
12886         instead of unsigned int.
12887         (initial_ix86_tune_features): New static vector to hold processor
12888         masks for the tune variables.
12889         (ix86_arch_features): Move initialization of the target masks to
12890         initial_ix86_arch_features to allow functions to have different
12891         target options.  Make type unsigned char, instead of unsigned int.
12892         (initial_ix86_arch_features): New static vector to hold processor
12893         masks for the arch variables.
12894         (enum ix86_function_specific_strings): New enum to describe the
12895         string options used for attribute((option(...))).
12896         (ix86_target_string): New function to return a string that
12897         describes the target options.
12898         (ix86_debug_options): New function to print the current options in
12899         the debugger.
12900         (ix86_function_specific_save): New function hook to save the
12901         function specific global variables in the cl_target_option structure.
12902         (ix86_function_specific_restore): New function hook to restore the
12903         function specific variables from the cl_target_option structure to
12904         the global variables.
12905         (ix86_function_specific_print): New function hook to print the
12906         target specific options in the cl_target_option structure.
12907         (ix86_valid_option_attribute_p): New function hook to validate
12908         attribute((option(...))) arguments.
12909         (ix86_valid_option_attribute_tree): New function that is common
12910         code between attribute((option(...))) and #pragma GCC option
12911         support that parses the options and returns a tree holding the options.
12912         (ix86_valid_option_attribute_inner_p): New helper function for
12913         ix86_valid_option_attribute_tree.
12914         (ix86_can_inline_p): New function hook to decide if one function
12915         can inline another on a target specific basis.
12916         (ix86_set_current_function); New function hook to switch target
12917         options if the user used attribute((option(...))) or #pragma GCC
12918         option.
12919         (ix86_tune_defaulted): Move to static file scope from
12920         override_options.
12921         (ix86_arch_specified): Ditto.
12922         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
12923         ix86_isa_flags.
12924         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
12925         (OPTION_MASK_ISA_ABM_SET): Ditto.
12926         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
12927         (OPTION_MASK_ISA_CX16_SET): Ditto.
12928         (OPTION_MASK_ISA_SAHF_SET): Ditto.
12929         (OPTION_MASK_ISA_AES_UNSET): Ditto.
12930         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
12931         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
12932         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
12933         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
12934         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
12935         (struct ptt): Move to static file scope from override_options.
12936         (processor_target_table): Ditto.
12937         (cpu_names): Ditto.
12938         (ix86_handle_option): Add support for options that are now isa options.
12939         (override_options): Add support for declaring functions that
12940         support different target options than were specified on the
12941         command line.  Move struct ptt, processor_target_table, cpu_names,
12942         ix86_tune_defaulted, ix86_arch_specified to static file scope.
12943         Add bool argument.  Fix up error messages so the appropriate error
12944         is given for either command line or attribute.
12945         (ix86_previous_fndecl): New static to remember previous function
12946         declaration to see if we need to change target options.
12947         (ix86_builtins_isa): New array to record the ISA of each builtin
12948         function.
12949         (def_builtin): Always create the builtin function, even if the
12950         current ISA doesn't support it.
12951         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
12952         tests for those builtins.
12953         (ix86_init_builtins): Remove TARGET_MMX test for calling
12954         ix86_init_mmx_sse_builtins.
12955         (ix86_expand_builtin): If the current ISA doesn't support a given
12956         builtin, signal an error.
12957         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
12958         (TARGET_SET_CURRENT_FUNCTION): Ditto.
12959         (TARGET_OPTION_SAVE): Ditto.
12960         (TARGET_OPTION_RESTORE): Ditto.
12961         (TARGET_OPTION_PRINT): Ditto.
12962         (TARGET_CAN_INLINE_P): Ditto.
12964 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
12966         * c-typeck.c (build_external_ref): Don't call assemble_external.
12967         * final.c (output_operand): Call assemble_external.
12969 2008-07-21  DJ Delorie  <dj@redhat.com>
12971         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
12972         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12974 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12976         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
12977         original insn and splitter contents into ...
12978         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
12979         flag_unsafe_math_optimizations.  Add dummy scratch register.
12980         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
12981         !flag_unsafe_math_optimizations.  Returns number with next
12982         highest magnitude if this is still less or equal to the true
12983         quotient in magnitude.
12985 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
12987         * Makefile.in: Replace toplev.h with TOPLEV_H.
12988         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
12989         * c-lex.c (fe_file_change): Don't set in_system_header.
12990         * c-parser.c (c_token): Remove in_system_header.
12991         (c_lex_one_token): Don't set in_system_header.
12992         (c_parser_set_source_position_from_token): Don't set in_system_header.
12993         * diagnostic.c (diagnostic_report_diagnostic): Use location from
12994         diagnostic_info.
12995         (warning_at): New.
12996         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
12997         * flags.h (in_system_header): Remove.
12998         * function.c (saved_in_system_header): Remove.
12999         (push_cfun): Don't set in_system_header.
13000         (pop_cfun): Don't set in_system_header.
13001         (push_struct_function): Don't set in_system_header.
13002         * input.h (expanded_location): Add sysp.
13003         (in_system_header_at): New.
13004         (in_system_header): New.
13005         * toplev.c (in_system_header): Remove.
13006         * toplev.h: Include input.h
13007         (warning_at): New.
13008         * tree-cfg.c (execute_warn_function_return): Call warning_at.
13009         * tree-ssa.c (warn_uninit): Call warning_at.
13010         (warn_uninitialized_var): Update calls to warn_uninit.
13011         (warn_uninitialized_phi): Update calls to warn_uninit.
13012         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
13013         (expand_location): Initialize xloc.sysp.
13014         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
13015         (tree_decl_with_vis): Remove in_system_header_flag.
13017 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
13019         PR target/36822
13020         * recog.c (asm_operand_ok): Change the order of the extra
13021         memory constraint checks.
13023 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13025         PR tree-opt/36879
13026         * tree-switch-conversion.c (build_one_array): Call
13027         varpool_mark_needed_node and varpool_finalize_decl
13028         instead of assemble_variable.
13030 2008-07-19  Jan Hubicka  <jh@suse.cz>
13032         * cgraph.c (cgraph_add_new_function): Do early local passes.
13033         * tree-nrv.c (gate_pass_return_slot): New gate.
13034         (pass_nrv): Add the gate.
13035         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
13036         functions.
13037         (coalesce_ssa_name): Coalesce SSA names.
13038         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
13039         not optimizing so unused user vars remains visible.
13040         * common.opt (flag_tree_ter): Always enable by default.
13041         * tree-ssa-ter.c: Include flags.h
13042         (is_replaceable_p): Check that locations match; when aliasing
13043         is missing be conservative about loads.
13044         * tree-optimize.c (gate_init_datastructures): Remove.
13045         (pass_init_datastructures): New.
13046         * passes.c: Reorder passes so we always go into SSA.
13048 2008-07-19  Jan Hubicka  <jh@suse.cz>
13050         * doc/extend.texi (flatten attribute): Remove note about
13051         unit-at-a-time.
13052         * doc/invoke.texi (--combine): Likewise.
13053         (-finline-functions-called-once): Update levels when enabled.
13054         (-funit-at-a-time): Document new behaviour.
13055         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
13056         -fno-section-anchors when disabled explicitly.
13057         (inline params): They are not ignored now.
13058         (precompiled headers): Remove unit-at-a-time as being incompatible.
13059         * opts.c (decode_options): Handle unit-at-a-time as alias;
13060         imply -fno-section-anchors when toplevel reorder is disabled
13061         explicitly.
13062         * common.opt (ftoplevel-reorder): Set default value to 2.
13063         (funit-at-a-time): Set default value to 1.
13064         * config/rs6000/rs6000.c (optimization_options): Set section anchors
13065         to 2.
13067 2008-07-19  Jan Hubicka  <jh@suse.cz>
13069         * builtins.c (expand_builtin_int_roundingfn,
13070         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
13071         it is not useful.
13073 2008-07-19  Richard Guenther  <rguenther@suse.de>
13075         PR bootstrap/36864
13076         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
13077         * tree-ssa-sccvn.c (get_constant_value_id): New function.
13078         * tree-ssa-pre.c (get_expr_value_id): For newly created
13079         constant value-ids make sure to add the expression to its
13080         expression-set.
13082 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
13084         PR middle-end/36877
13085         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
13086         return value of the builtin is ignored.
13088 2008-07-19  Olivier Hainque  <hainque@adacore.com>
13090         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
13091         bits, a C conformant malloc implementation has to provide.
13092         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
13094 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
13096         PR target/36780
13097         PR target/36827
13098         * reload.c (find_reloads_subreg_address): Only reload address if
13099         reloaded == 0, not for reloaded != 1.
13101         Revert:
13102         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
13103         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
13104         (m32c_legitimate_address_p): Handle "++rii" addresses created by
13105         m32c_legitimize_reload_address.
13107         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13108         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
13109         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
13111 2008-07-19  Olivier Hainque  <hainque@adacore.com>
13113         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
13114         argument, saying whether nested array are to be collapsed
13115         into a single array type DIE with multiple subscripts.
13116         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
13117         issues, centralize the nested array types collapsing control and
13118         disable the transformation for Ada.
13120 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
13122         PR target/36786
13123         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
13124         x86_64_shift_adj.
13125         (x86_64_shift_adj_2): New expander.
13126         (x86_64_shift_adj_3): Ditto.
13127         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
13128         to split TImode operands.
13129         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
13130         (ix86_split_lshr): Ditto.
13132 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
13134         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
13135         and __CHAR32_TYPE__.
13136         * c-typeck.c (digest_init): Support char16_t and char32_t.
13137         (set_nonincremental_init_from_string): Idem.
13139 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13141         PR middle-end/36859
13142         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
13143         PREFERRED_STACK_BOUNDARY.
13144         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
13146 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13148         PR middle-end/36858
13149         * function.c (locate_and_pad_parm): Cap boundary earlier.
13151 2008-07-17  Julian Brown  <julian@codesourcery.com>
13153         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
13154         no-op for targets which don't use DLLs.
13156 2008-07-17  Martin Jambor  <mjambor@suse.cz>
13158         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
13159         that nodes are relevant by examining the node->analyzed flag.
13160         (ipcp_init_stage): Check which nodes are relevant, assert that the
13161         relevant ones are also required.
13162         (ipcp_propagate_stage): Check on the side arrays are properly
13163         allocated.
13164         (ipcp_print_all_jump_functions): Make sure not to touch any node
13165         that is not analyzed or an edge that does not have a corresponding
13166         entry in the on-the-side vectors.
13167         (ipcp_function_scale_print): Likewise.
13168         (ipcp_update_callgraph): Check that the node is relevant.
13169         (ipcp_insert_stage): Check that the node is relevant.  Check there is
13170         an info for every node and edge.
13171         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
13172         (ipa_print_all_tree_maps): Likewise and a new variable info.
13173         (ipa_print_all_params_modified): Likewise.
13174         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
13176 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
13178         PR target/25343
13179         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
13181 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
13183         PR rtl-optimization/36753
13184         * fwprop.c (use_killed_between): Don't shortcut
13185         single-definition global registers.
13187 2008-07-16  Jan Hubicka  <jh@suse.cz>
13189         * cgraph.h (varpool_empty_needed_queue): Declare.
13190         * cgraphunit.c (output_in_order): Mark all variables as needed;
13191         empty the queue.
13192         * varpool.c (varpool_assemble_node): Update debug queue.
13193         (varpool_assemble_pending_decls): Don't do it here.
13194         (varpool_empty_needed_queue):  New function.
13196 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13198         * recog.c (peephole2_optimize): Fix formatting.
13200 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13202         * c-pch.c (get_ident): Avoid C++ keywords.
13203         * combine-stack-adj.c (single_set_for_csa): Likewise.
13204         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
13205         output_asm_insn): Likewise.
13206         * reload.c (push_secondary_reload, find_reusable_reload,
13207         push_reload, combine_reloads, find_reloads,
13208         debug_reload_to_stream): Likewise.
13209         * reload.h (struct reload): Likewise.
13210         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
13211         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
13212         emit_output_reload_insns): Likewise.
13213         * targhooks.c (default_secondary_reload): Likewise.
13214         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
13216 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13218         * recog.c (validate_change_1, validate_change,
13219         validate_unshare_change, validate_replace_rtx_1, struct
13220         funny_match, constrain_operands, peephole2_optimize): Avoid C++
13221         keywords.
13222         * reload.c (push_secondary_reload, secondary_reload_class,
13223         scratch_reload_class, find_valid_class, find_reusable_reload,
13224         push_reload, find_dummy_reload, find_reloads_address_1,
13225         find_reloads_address_part, find_equiv_reg): Likewise.
13226         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
13227         choose_reload_regs): Likewise.
13228         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
13229         Likewise.
13230         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
13231         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
13232         * sched-rgn.c (concat_INSN_LIST): Likewise.
13233         * stor-layout.c (mode_for_size, mode_for_size_tree,
13234         smallest_mode_for_size): Likewise.
13236 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13238         * cfg.c (dump_reg_info): Avoid C++ keywords.
13239         * dwarf2asm.c (dw2_force_const_mem,
13240         dw2_asm_output_encoded_addr_rtx): Likewise.
13241         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
13242         * expmed.c (expand_shift): Likewise.
13243         * global.c (find_reg): Likewise.
13244         * graph.c (draw_edge): Likewise.
13245         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
13246         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
13247         widen_clz, widen_bswap, expand_parity, expand_unop,
13248         emit_cmp_and_jump_insn_1): Likewise.
13249         * postreload.c (reload_cse_simplify_operands): Likewise.
13250         * ra.h (add_neighbor): Likewise.
13251         * reg-stack.c (remove_regno_note, change_stack): Likewise.
13252         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
13253         record_reg_classes, copy_cost, record_address_regs,
13254         invalid_mode_change_p): Likewise.
13255         * regrename.c (regrename_optimize, scan_rtx_reg,
13256         dump_def_use_chain, find_oldest_value_reg,
13257         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
13259 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
13261         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
13262         MASK_POWERPC64 for power4 in previous commit.
13264 2008-07-16  Olivier Hainque  <hainque@adacore.com>
13266         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
13267         instead of bare conversion to cast const-ness away.
13269 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
13271         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
13272         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
13273         * config/xtensa/xtensa.c (xtensa_function_value): New function.
13274         (TARGET_FUNCTION_VALUE): Define.
13276 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
13278         * config/rs6000/rs6000.c (processor_target_table): Add
13279         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
13281 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
13283         PR target/36827
13284         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
13285         (m32c_legitimate_address_p): Handle "++rii" addresses created by
13286         m32c_legitimize_reload_address.
13288 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
13290         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
13291         DECL_IN_SYSTEM_HEADER in sync.
13293 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
13295         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
13296         * tree-ssa-pre.c (pre_expr_eq): Ditto
13297         (get_constant_for_value_id): Take a type as an argument.
13298         (fully_constant_expression): Pass in type.
13299         (find_or_generate_expression): Short circuit constant case.
13300         (create_expression_by_pieces): Remove special casing of
13301         pointer_plus.
13302         (do_regular_insertion): Short circuit constant case.
13303         (do_partial_partial_insertion): Ditto.
13305 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13307         PR target/36782
13308         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
13310 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
13312         * config/xtensa/libgcc-xtensa.ver: New file.
13313         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
13315 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13317         * df-problems.c (df_set_note): Avoid C++ keywords.
13318         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
13319         * dse.c (record_store, remove_useless_values): Likewise.
13320         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
13321         gen_reg_rtx_offset, operand_subword, change_address_1,
13322         change_address, adjust_address_1, offset_address,
13323         widen_memory_access, emit_copy_of_insn_after): Likewise.
13324         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
13325         * fwprop.c (should_replace_address, propagate_rtx_1,
13326         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
13327         Likewise.
13328         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
13329         gcse_emit_move_after, update_ld_motion_stores): Likewise.
13330         * lcm.c (compute_insert_delete, pre_edge_lcm,
13331         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
13332         * lower-subreg.c (resolve_reg_notes): Likewise.
13333         * mode-switching.c (optimize_mode_switching): Likewise.
13335 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13337         * bt-load.c (add_btr_def, migrate_btr_def,
13338         branch_target_load_optimize): Avoid C++ keywords.
13339         * caller-save.c (insert_restore, insert_save, insert_one_insn):
13340         Likewise.
13341         * combine.c (subst, simplify_set, make_extraction,
13342         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
13343         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
13344         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
13346 2008-07-15  Richard Guenther  <rguenther@suse.de>
13348         PR middle-end/36369
13349         * c-common.c (strict_aliasing_warning): Do not warn for
13350         TYPE_REF_CAN_ALIAS_ALL pointers.
13351         (c_common_get_alias_set): may_alias types are not special.
13352         * tree.c (build_pointer_type_for_mode): Look up the may_alias
13353         attribute and set can_ref_all accordingly.
13354         (build_reference_type_for_mode): Likewise.
13355         * doc/extend.texi (may_alias): Clarify.
13357 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13359         PR target/36780
13360         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
13361         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
13363 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13365         PR target/31568
13366         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
13367         gcc_assert, instead call output_operand_lossage.
13369 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
13371         * builtins.c (std_canonical_va_list): Treat structure based
13372         va_list types.
13374 2008-07-15  Ben Elliston  <bje@au.ibm.com>
13376         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
13378 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
13380         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
13381         is set.
13383 2008-07-14  Jan Hubicka  <jh@suse.cz>
13385         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
13386         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
13387         fix predicates and constraints.
13388         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
13389         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
13391 2008-07-14  Doug Kwan  <dougkwan@google.com>
13393         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
13394         additional option file arm/eabi.opt.
13395         * config/arm/eabi.h (File): New configuration file for EABI targets.
13396         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
13397         SUBSUBTARGET_EXTRA_SPECS.
13398         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
13399         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
13400         from STARTFILE_SPEC so that it can be referenced in an override.
13401         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
13402         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
13403         can be referenced in an override.
13404         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
13405         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
13406         so that it can be referenced in an override.
13407         (LINK_SPEC): Use BPABI_LINK_SPEC.
13408         * config/arm/eabi.opt (File): New.
13410 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13412         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
13413         (FIXED_VALUE_H): New variable.
13414         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
13415         input.h, fixed-value.h.
13416         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
13417         (BASIC_BLOCK_H): Use $(BITMAP_H).
13418         (FUNCTION_H): Add varray.h.
13419         (IPA_REFERENCE_H): Use $(BITMAP_H).
13420         (CGRAPH_H): Add $(BASIC_BLOCK_H).
13421         (DF_H): Use $(BITMAP_H).
13422         (GGC_H): Add statistics.h.
13423         (INSN_ADDR_H): New.
13424         (INSN_ATTR_H): Use it.
13425         (SYSTEM_H): Add safe-ctype.h, filenames.h.
13426         (INPUT_H): New.
13427         (SYMTAB_H): Add $(OBSTACK_H).
13428         (CPP_INTERNAL_H): New.
13429         (TREE_DUMP_H): Add tree-pass.h.
13430         (TREE_FLOW_H): Use $(BITMAP_H)
13431         (PRETTY_PRINT_H): Use $(INPUT_H).
13432         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
13433         (GSTAB_H): New.
13434         (BITMAP_H): New.
13435         (many object files): Fix lots of header dependencies throughout.
13437 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13439         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
13440         New macros.
13441         (s-gtyp-input): Use them to write tmp-gi.list.
13442         (echo_to_gi.list): Remove.
13444 2008-07-14  Richard Guenther  <rguenther@suse.de>
13446         * tree-ssa-sccvn.c (pre_info): Remove.
13447         (switch_to_PRE_table): Likewise.
13448         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
13449         (set_hashtable_value_ids): Do not create value-ids for the
13450         optimistic tables.
13451         (run_scc_vn): Remove double test.  Remove bogus special-case
13452         in value-number printing.
13453         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
13454         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
13455         SSA_NAME_VALUE.
13456         * tree-flow-inline.h (get_value_handle): Remove.
13457         * tree-flow.h (get_value_handle): Remove.
13459 2008-07-14  Martin Jambor  <mjambor@suse.cz>
13461         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
13462         in which we generate arithmetics is not a subrange.
13464 2008-07-14  Martin Jambor  <mjambor@suse.cz>
13466         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
13468 2008-07-14  Richard Guenther  <rguenther@suse.de>
13470         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
13472 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
13474         PR target/36745
13475         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
13476         reload for symbol refs moved to r0 with -fPIC.
13477         (legitimize_pic_address): Use the target register as temporary
13478         reg if possible.
13479         (emit_symbolic_move): Adjust comment.
13480         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
13481         New expanders.
13483 2008-07-14  Ben Elliston  <bje@au.ibm.com>
13485         * c-common.h (C_CPP_HASHNODE): New macro.
13486         * coretypes.h (struct cpp_token): Forward declare.
13487         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
13488         the context-sensitive keyword method.
13489         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
13490         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
13491         expand_bool_pixel): New.
13492         (altivec_categorize_keyword): New function.
13493         (init_vector_keywords): New function.
13494         (rs6000_macro_to_expand): Likewise.
13495         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
13496         compiling an ISO C dialect.
13498 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
13500         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
13501         (create_expression_by_pieces): Fix typo.
13502         (do_regular_insertion): Use debug counter here too.
13504 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
13506         PR target/35492.
13507         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
13508         CONST_OK_FOR_LETTER_P.  All port-local users changed.
13509         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
13510         implement Kp matching power-of-two.
13511         (CONSTRAINT_LEN): Define to match.
13512         * config/cris/cris.md: Replace all use of constraint K with Kc.
13513         ("*btst*): Use Kp for operand 0 of last alternative.
13515 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13517         PR testsuite/36440
13518         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
13519         and quad formats.
13521 2008-07-13  Jan Hubicka  <jh@suse.cz>
13523         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
13524         to be mangled too.
13526 2008-07-13  Richard Guenther  <rguenther@suse.de>
13528         PR middle-end/36811
13529         * langhooks.c (lhd_print_error_function): Deal with recursive
13530         BLOCK trees.
13532 2008-07-12  Jan Hubicka  <jh@suse.cz>
13534         * cgraph.c (assembler_name_hash): New static var.
13535         (hash_node_by_assembler_name, eq_assembler_name): New.
13536         (cgraph_node_for_asm): Use hashtable.
13537         (cgraph_remove_node): Maintain hashtable.
13538         (change_decl_assembler_name): Sanity check that names are not changing
13539         after aliasing was processed.
13540         * cgraph.h (varpoon_node): Add next GGC marker.
13541         * tree.c (decl_assembler_name_equal): Constify.
13542         (decl_assembler_name_hash): New.
13543         * tree.h (decl_assembler_name_equal): Constify.
13544         (decl_assembler_name_hash): Update.
13546 2008-07-12  David Daney  <ddaney@avtrex.com>
13548         * config/mips/driver-native.c (host_detect_local_cpu): Handle
13549         sb1 and r5000 cpus.
13551 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
13553         * doc/md.texi: Document the MIPS "v" constraint.
13554         * config/mips/mips.h (reg_class): Revert last change.
13555         (REG_CLASS_NAMES): Likewise.
13556         (REG_CLASS_CONTENTS): Likewise.
13557         * config/mips/mips.c (mips_regno_to_class): Likewise.
13558         * config/mips/constraints.md (v): Likewise, but add documentation.
13559         Add a comment to say that this constraint should not be used in
13560         gcc code.
13562 2008-07-11  DJ Delorie  <dj@redhat.com>
13564         * config/h8300/h8300.md (length): Fix branch offset limit.
13566 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
13568         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
13569         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
13570         (avr_hard_regno_scratch_ok): New function.
13571         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
13572         * config/avr/avr.md (all peepholes that request a scratch register):
13573         Remove avr_peep2_scratch_safe use.
13575 2008-07-11  Tom Tromey  <tromey@redhat.com>
13576             Ian Lance Taylor  <iant@google.com>
13578         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
13579         (struct c_common_resword): Define.
13580         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
13581         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
13582         (c_common_reswords, num_c_common_reswords): Declare.
13583         * c-common.c (c_common_reswords): New global const array.
13584         (num_c_common_reswords): New const int.
13585         * c-parser.c (struct resword, reswords): Don't define.
13586         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
13587         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
13588         than reswords.  If warning about C++ keywords, give them a special
13589         RID code.
13590         (c_lex_one_token): Warn about C++ keywords.  Call
13591         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
13592         (c_parser_external_declaration): Look for RID_xxx rather than
13593         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
13594         (c_parser_statement_after_labels): Likewise.
13595         (c_parser_objc_class_instance_variables): Likewise.
13596         (c_parser_objc_class_declaration): Likewise.
13597         (c_parser_objc_try_catch_statement): Likewise.
13598         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
13599         (declspecs_add_type): Likewise.
13601 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
13603         * ggc-page.c (alloc_page):
13604         Substituting xmalloc, xcalloc with
13605         XNEWVEC and XCNEWVAR macros which add the
13606         needed casts.
13608 2008-07-11  Richard Guenther  <rguenther@suse.de>
13610         PR tree-optimization/36765
13611         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
13612         aliases from HEAP vars to SMTs.
13614 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13616         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
13617         * configure.ac (loose_warn): Move -Wc++-compat from here...
13618         (strict_warn): ...to here.
13619         * configure: Regenerate.
13621 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
13623         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
13624         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
13625         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
13626         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
13627         excluding more specific h8300-*-* and sh-*-* targets.
13629 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
13631         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
13632         (eliminate): Ditto.
13633         (execute_pre): Call loop_optimizer_finalize in early exit.
13635 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
13637         PR middle-end/36790
13638         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
13639         uids in the bitmap, not just VAR_DECL uids.
13641         PR rtl-optimization/36419
13642         * combine-stack-adj.c (adjust_frame_related_expr): New function.
13643         (combine_stack_adjustments_for_block): Call it if needed.  Delete
13644         correct insn.
13645         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
13646         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
13647         prologue sp adjustment.
13649 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
13651         PR other/28322
13652         * opts.c (print_ignored_options): Report postponed diagnostics for
13653         unknown -Wno-* options as warnings, not errors.
13654         (postpone_unknown_option_error): Renamed to...
13655         (postpone_unknown_option_warning): ... this.
13657 2008-07-09  Doug Kwan  <dougkwan@google.com>
13659         Revert:
13660         2008-07-08  Doug Kwan  <dougkwan@google.com>
13662         * config/arm/arm.opt (mandroid): New option.
13663         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13664         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13665         (CC1_SPEC): Same.
13666         (CC1PLUS_SPEC): Same.
13667         (LIB_SPEC): Same.
13668         (STARTFILE_SPEC): Same.
13669         (ENDFILE_SPEC): Same.
13670         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13671         used.
13673 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
13675         PR target/35802
13676         * config/mips/mips.h (reg_class): Remove V1_REG.
13677         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13678         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
13679         instead of V1_REGS.
13680         (mips_get_tp): New function.
13681         (mips_legitimize_tls_address): Use it.
13682         * config/mips/constraints.md (v): Delete.
13683         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
13684         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
13685         After reload, split into a move and ...
13686         (*tls_get_tp_<mode>_split): ...this new instruction.
13688 2008-07-09  David Daney  <ddaney@avtrex.com>
13690         * config/mips/driver-native.c: Include coretypes.h and tm.h.
13692 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
13694         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
13695         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
13696         Add c argument.
13697         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
13698         htab_delete should be called.  Don't free c.
13699         (lookup_tmp_var): Create temp_htab lazily.
13700         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
13701         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
13702         callers.
13703         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
13704         lower_omp_ordered, lower_omp_critical, lower_omp_for,
13705         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
13706         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
13707         * tree-sra.c (generate_element_init): Likewise.
13708         * tree-mudflap.c (execute_mudflap_function_ops,
13709         execute_mudflap_function_decls): Likewise.
13710         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
13711         * tree-gimple.h (struct gimplify_ctx): New type.
13712         (push_gimplify_context): Adjust prototype.
13714 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
13716         * tree-ssa-pre.c (phi_translate_1): Update placement of
13717         add_to_value calls.
13719 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
13721         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
13722         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
13723         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
13724         * targhooks.c (default_hard_regno_scratch_ok): New function.
13725         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
13726         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
13727         * recog.c:  Include "target.h".
13728         (peep2_find_free_register): Add check for global regs. Add target
13729         specific check.
13730         * Makefile.in (recog.o): Depend on target.h.
13732 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
13734         * config/sh/sh.c (sh_canonical_va_list_type): New.
13735         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
13737 2008-07-09  Raksit Ashok <raksit@google.com>
13739         * doc/invoke.texi (Option Summary): Mention new option
13740         -Wdisallowed-function-list=...
13741         (Warning Options): Document -Wdisallowed-function-list=...
13742         * common.opt (Wdisallowed-function-list=): New flag.
13743         * flags.h (warn_disallowed_functions): External definition of new
13744         boolean warning flag.
13745         (warn_if_disallowed_function_p): Declare new function.
13746         * opts.c (warning_disallowed_functions): New static variable.
13747         (warn_disallowed_functions): New boolean warning flag.
13748         (warn_if_disallowed_function_p): New function.
13749         (add_comma_separated_to_vector): Rename
13750         add_instrument_functions_exclude_list to this.
13751         (common_handle_option): Handle new option. Rename calls to
13752         add_instrument_functions_exclude_list into calls to
13753         add_comma_separated_to_vector.
13754         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
13755         based on flag warn_disallowed_functions.
13757 2008-07-09  Christian Bruel  <christian.bruel@st.com>
13759         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
13760          instead of get_attr_length.
13762 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13764         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
13765         keywords.
13766         * genemit.c (gen_insn): Likewise.
13767         * gengtype.c (note_def_vec): Likewise.
13768         * gengtype.h (note_def_vec): Likewise.
13769         * genoutput.c (struct data, output_insn_data, process_template,
13770         gen_expand, gen_split, note_constraint): Likewise.
13771         * genrecog.c (new_decision, add_to_sequence, factor_tests,
13772         make_insn_sequence): Likewise.
13773         * gensupport.c (record_insn_name): Likewise.
13775 2008-07-08  Doug Kwan  <dougkwan@google.com>
13777         * config/arm/arm.opt (mandroid): New option.
13778         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13779         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13780         (CC1_SPEC): Same.
13781         (CC1PLUS_SPEC): Same.
13782         (LIB_SPEC): Same.
13783         (STARTFILE_SPEC): Same.
13784         (ENDFILE_SPEC): Same.
13785         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13786         used.
13788 2008-07-08  Raksit Ashok  <raksit@google.com>
13790         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
13791         (set_storage_via_setmem): Fix expected_align parameter.
13792         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
13793         missing from the list.
13794         * doc/md.texi (movmem): Explicitly state that expected alignment is
13795         to be expressed in bytes.
13796         (setmem): Explicitly state that expected alignment is to be expressed
13797         in bytes.
13799 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
13801         * reload.c (find_reloads_subreg_address): Do not require validity
13802         of address in original mode before reloading address.
13804 2008-07-07  Tianwei Sheng  <tianweis@google.com>
13806         * df-core.c (df_remove_problem): Adjust the access to avoid out of
13807         bounds array access.
13809 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
13811         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
13813 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
13815         Fix PR tree-optimization/23455
13816         Fix PR tree-optimization/35286
13817         Fix PR tree-optimization/35287
13818         * Makefile.in (OBJS-common): Remove tree-vn.o.
13819         (tree-vn.o): Remove.
13820         * dbgcnt.def: Add treepre_insert debug counter.
13821         * gcc/tree-flow.h (add_to_value): Updated for other changes.
13822         (debug_value_expressions): Ditto.
13823         (print_value_expressions): Ditto.
13824         * tree-pretty-print.c (dump_generic_node): Updated for
13825         VALUE_HANDLE removal.
13826         * tree-ssa-dom.c (record_equality): Ditto.
13827         (cprop_operand): Ditto.
13828         (lookup_avail_expr): Ditto.
13829         * tree-ssa-threadedge.c
13830         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
13831         (simplify_control_stmt_condition): Ditto.
13832         * tree.c (tree_code_size): Ditto.
13833         (tree_node_structure): Ditto.
13834         (iterative_hash_expr): Ditto.
13835         * tree.def: Ditto.
13836         * tree.h (VALUE_HANDLE_ID): Ditto.
13837         (VALUE_HANDLE_EXPR_SET): Ditto.
13838         (struct tree_value_handle): Ditto.
13839         (union tree_node): Ditto.
13840         * treestruct.def: Ditto.
13841         * tree-vn.c: Removed.
13842         * tree-ssa-pre.c: Rewritten entirely.
13843         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
13844         (constant_value_ids): Ditto.
13845         (vn_nary_op_t): Moved to header.
13846         (vn_phi_t): Ditto.
13847         (vn_reference_op_t): Ditto
13848         (vn_reference_t): Ditto.
13849         (next_value_id): New variable.
13850         (VN_INFO): Add an assert.
13851         (vn_constant_eq): New function.
13852         (vn_constant_hash): Ditto.
13853         (get_or_alloc_constant_value_id): Ditto.
13854         (value_id_constant_p): Ditto.
13855         (vn_reference_compute_hash): De-staticify.
13856         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
13857         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
13858         (valueize_refs): Update opcode if it changes from ssa name to constant.
13859         (vn_reference_lookup_1): Add new argument.
13860         (vn_reference_lookup):  Ditto.
13861         (vn_reference_lookup_pieces): New function.
13862         (vn_reference_insert): Add return type. Modify to deal with value ids.
13863         (vn_reference_insert_pieces):  New function.
13864         (vn_nary_op_compute_hash): De-staticify.
13865         (vn_nary_op_eq): Ditto.
13866         (vn_nary_op_lookup_pieces): New function.
13867         (vn_nary_op_lookup): Add new argument.
13868         (vn_nary_op_insert_pieces): New function.
13869         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
13870         (vn_phi_insert): Ditto.
13871         (visit_unary_op): Update for callee changes.
13872         (visit_binary_op): Ditto.
13873         (visit_reference_op_load): Ditto.
13874         (visit_reference_op_store): Ditto.
13875         (init_scc_vn): Init next_value_id, constant_to_value_id and
13876         constant_value_ids.
13877         (free_scc_vn): Free them.
13878         (set_hashtable_value_ids): New function.
13879         (run_scc_vn): Use it.
13880         (get_max_value_id): New function.
13881         (get_next_value_id): Ditto.
13882         (expressions_equal_p): Moved from tree-vn.c
13883         (sort_vuses): Ditto.
13884         (sort_vuses_heap): Ditto.
13885         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
13886         above).
13887         * tree.c (iterative_hash_hashval_t): Made non-static
13888         * tree.h (iterative_hash_hashval_t): Declare it.
13890 2008-07-08  Martin Jambor  <mjambor@suse.cz>
13892         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
13893         instead of ipa_create_node_params.
13894         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
13895         ipa_check_create_edge_args, free them with
13896         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
13898         * ipa-prop.c: Include flags.h and tree-inline.h.
13899         (ipa_node_params_vector): New variable.
13900         (ipa_edge_args_vector): New variable.
13901         (edge_removal_hook_holder): New variable.
13902         (node_removal_hook_holder): New variable.
13903         (edge_duplication_hook_holder): New variable.
13904         (node_duplication_hook_holder): New variable.
13905         (ipa_detect_param_modifications): Check for presence of modified flags.
13906         (ipa_compute_jump_functions): Check for presence of jump functions.
13907         (ipa_free_edge_args_substructures): New function.
13908         (ipa_create_node_params): Removed.
13909         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
13910         (ipa_free_node_params_substructures): New function.
13911         (ipa_free_all_node_params): Changed to deallocate the on-the-side
13912         vector.
13913         (ipa_edge_removal_hook): New function.
13914         (ipa_node_removal_hook): New function.
13915         (duplicate_array): New function.
13916         (ipa_edge_duplication_hook): New function.
13917         (ipa_node_duplication_hook): New function.
13918         (ipa_register_cgraph_hooks): New function.
13919         (ipa_unregister_cgraph_hooks): New function.
13920         (free_all_ipa_structures_after_ipa_cp): New function.
13922         * ipa-prop.h: Include vec.h.
13923         (ipa_node_params_t): New typedef with vector types for it.
13924         (ipa_edge_args_t):  New typedef with vector types for it.
13925         (IPA_NODE_REF): Changed to access an on-the-side vector.
13926         (IPA_EDGE_REF): Changed to access an on-the-side vector.
13927         (ipa_check_create_node_params): New function.
13928         (ipa_check_create_edge_args): New function.
13930         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
13931         all users.
13933 2008-07-07  Tom Tromey  <tromey@redhat.com>
13935         * configure, config.in: Rebuilt.
13936         * configure.ac: Don't check for scandir or alphasort.
13938 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13940         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
13941         types immediately after creating them.
13943 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13945         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
13947 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
13949         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
13950         dump_constraint_graph.
13951         (dump_constraint_edge): New function.
13952         (dump_constraint_graph): New function.
13953         (debug_constraint_graph): New function.
13954         (dump_constraint): Removed useless comparison.
13955         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
13956         (dump_constraint_graph): Declare.
13957         (debug_constraint_graph): Declare.
13958         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
13960 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
13962         * config/i386/i386.c (is_va_list_char_pointer): New.
13963         (ix86_va_start): Replace compare with ms_va_list_type_node
13964         by is_va_list_char_pointer.
13965         (ix86_gimplify_va_arg): Likewise.
13967 2008-07-07  Martin Jambor  <mjambor@suse.cz>
13969         * cgraph.c (cgraph_edge_max_uid): New variable.
13970         (struct cgraph_edge_hook_list): New type.
13971         (struct cgraph_node_hook_list): New type.
13972         (struct cgraph_2edge_hook_list): New type.
13973         (struct cgraph_2node_hook_list): New type.
13974         (first_cgraph_edge_removal_hook): New variable.
13975         (first_cgraph_node_removal_hook): New variable.
13976         (first_cgraph_edge_duplicated_hook): New variable.
13977         (first_cgraph_node_duplicated_hook): New variable.
13978         (cgraph_add_edge_removal_hook): New function.
13979         (cgraph_remove_edge_removal_hook): New function.
13980         (cgraph_call_edge_removal_hooks):  New function.
13981         (cgraph_add_node_removal_hook):  New function.
13982         (cgraph_remove_node_removal_hook):  New function.
13983         (cgraph_call_node_removal_hooks):  New function.
13984         (cgraph_add_edge_duplication_hook):  New function.
13985         (cgraph_remove_edge_duplication_hook):  New function.
13986         (cgraph_call_edge_duplication_hooks):  New function.
13987         (cgraph_add_node_duplication_hook):  New function.
13988         (cgraph_remove_node_duplication_hook):  New function.
13989         (cgraph_call_node_duplication_hooks):  New function.
13990         (cgraph_create_edge): Assign to edge uid.
13991         (cgraph_remove_edge): Call edge removal hooks.
13992         (cgraph_node_remove_callees): Call edge removal hooks.
13993         (cgraph_node_remove_callers): Call edge removal hooks.
13994         (cgraph_remove_node): Call node removal hooks.
13995         (cgraph_clone_edge): Call edge duplication hooks.
13996         (cgraph_clone_node): Call node duplication hooks.
13998         * cgraph.h (cgraph_edge): New field uid.
13999         (cgraph_edge_hook): New type.
14000         (cgraph_node_hook): New type.
14001         (cgraph_2edge_hook): New type.
14002         (cgraph_2node_hook): New type.
14004 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
14006         * config.in: Regenerate.
14008 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
14010         * gcc.c (print_sysroot): New.
14011         (option_map, display_help, process_command): Handle the
14012         -print-sysroot option.
14013         (main): Print the sysroot if requested.
14014         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
14016 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14018         PR target/34780
14019         * unwind-pe.h (size_of_encoded_value): add attribute unused.
14021 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
14023         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
14024         (assign_parm_setup_block_p): Also check mode of entry_parm.
14026 2008-07-07  Richard Guenther  <rguenther@suse.de>
14028         * tree-ssa-structalias.h (set_used_smts): Remove.
14029         * tree-ssa-structalias.c (used_smts): Likewise.
14030         (set_used_smts): Likewise.
14031         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
14032         call to set_used_smts.
14034 2008-07-07  Richard Guenther  <rguenther@suse.de>
14036         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
14037         (new_var_info): Set it to false.
14038         (solution_set_add): Correctly handle pointers outside a var and
14039         inside a field.
14040         (type_safe): Treat variables with is_full_var properly.
14041         (do_sd_constraint): Likewise.
14042         (do_ds_constraint): Likewise.
14043         (process_constraint): Remove zeroing offset for !use_field_sensitive.
14044         (get_constraint_for_ptr_offset): New function.
14045         (get_constraint_for_component_ref): For addresses at least include
14046         the last field of the variable.  Handle is_full_vars properly.
14047         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
14048         (handle_ptr_arith): Remove.
14049         (find_func_aliases): Simplify assignment handling.
14050         (create_function_info_for): For parameter and result varinfos set
14051         is_full_var flag.
14052         (create_variable_info_for): Set is_full_var flag whenever we
14053         just created a single varinfo for a decl.
14054         (init_alias_vars): Initialize use_field_sensitive from
14055         max-fields-for-field-sensitive parameter.
14057 2008-07-07  Richard Guenther  <rguenther@suse.de>
14059         PR tree-optimization/36713
14060         * tree-flow-inline.h (is_call_used): New function.
14061         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
14062         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
14063         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
14065 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
14067         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
14069 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
14071         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
14073 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
14074             Nathan Sidwell  <nathan@codesourcery.com>
14076         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
14077         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
14078         tmake_file.
14079         * config/m68k/t-linux: New.
14080         * doc/install.texi: Document m68k-*-linux is now multilibbed by
14081         default.
14083 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
14085         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
14086         * config/m68k/m68k-devices.def: Remove multilibs that only differ
14087         by MAC/EMAC.
14089 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14091         * gcc.c (execute): Fix -Wc++-compat warning.
14093 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
14095         PR target/36720
14096         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
14097         constant for little endian.
14099 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
14101         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
14102         mips_base_mips16 instead of TARGET_MIPS16.
14103         (mips_base_mips16): Declare.
14104         * config/mips/mips.c (mips_base_mips16): Make global.
14105         (was_mips16_p): Remove GTY marker.
14106         (was_mips16_pch_p): New variable.
14107         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
14108         (mips_override_options): Force to non-MIPS16 mode initially.
14109         Do not complain about MIPS16 PIC incompatibilities here.
14110         Only allow -mgpopt if -mexplicit-relocs is in force for
14111         non-MIPS16 code.
14113 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
14115         * configure.ac: Check for caddr_t, define to char * if not defined.
14116         * configure: Regenerate.
14117         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
14118         (mmap_gt_pch_use_address): Likewise.
14119         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
14121 2008-07-06  Richard Guenther  <rguenther@suse.de>
14123         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
14124         (new_var_info): Deal with it.
14125         (solution_set_add): Likewise.
14126         (bitpos_of_field): Make signed, fix.
14127         (struct fieldoff): Remove type and decl fields.  Make size field
14128         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
14129         flags.
14130         (fieldoff_compare): Deal with it.
14131         (push_fields_onto_fieldstack): Remove has_union argument, glob
14132         adjacent non-pointer fields together.
14133         (create_function_info_for): Do not set has_union.
14134         (create_variable_info_for): Simplify.
14136 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
14138         * config.gcc (extra_headers): Add cross-stdarg.h for target
14139         x86_64-*-* and i?86-*-*.
14140         * config/i386/cross-stdarg.h: New.
14141         * builtins.c (std_fn_abi_va_list): New.
14142         (std_canonical_va_list_type): New.
14143         (stabilize_va_list): Replace va_list_type_node use by
14144         mtarget.canonical_va_list_type.
14145         (gimplify_va_arg_expr): Likewise.
14146         (expand_builtin_va_copy): Replace va_list_type_node use by
14147         mtarget.fn_abi_va_list.
14148         * tree-sra.c (is_va_list_type): New helper.
14149         (decl_can_be_decomposed_p): Replace
14150         va_list_type_node use by is_va_list_type.
14151         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
14152         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
14153         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
14154         * config/i386/i386-protos.h (ix86_get_valist_type): New.
14155         (ix86_enum_va_list): New.
14156         * config/i386/i386.c (sysv_va_list_type_node): New.
14157         (ms_va_list_type_node): New.
14158         (ix86_function_type_abi): Remove sorry.
14159         (ix86_build_builtin_va_list_abi): New.
14160         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
14161         for 64-bit targets.
14162         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
14163         (ix86_init_builtins_va_builtins_abi): New.
14164         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
14165         for 64-bit targets.
14166         (ix86_handle_abi_attribute): New.
14167         (attribute_spec): Add sysv_abi and ms_abi.
14168         (ix86_fn_abi_va_list): New.
14169         (ix86_canonical_va_list_type): New.
14170         (ix86_enum_va_list): New.
14171         (TARGET_FN_ABI_VA_LIST): New.
14172         (TARGET_CANONICAL_VA_LIST_TYPE): New.
14173         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
14174         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
14175         (TARGET_CANONICAL_VA_LIST_TYPE): New.
14176         (TARGET_ENUM_VA_LIST): New.
14177         * expr.h (std_fn_abi_va_list): New.
14178         (std_canonical_va_list_type): New.
14179         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
14180         (TARGET_CANONICAL_VA_LIST_TYPE): New.
14181         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
14182         TARGET_CANONICAL_VA_LIST_TYPE.
14183         * target.h (struct gcc_target): Add fn_abi_va_list hook
14184         and canonical_va_list_type hook.
14186 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14188         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
14189         integral and pointer types.
14191 2008-07-04  Roger Sayle  <roger@eyesopen.com>
14193         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
14194         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
14196 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
14198         PR target/36684
14199         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
14201 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
14203         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
14204         build_gimple_modify_stmt.
14205         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
14206         gimple operand.  Use fold_build* instead of build*.
14208 2008-07-04  Richard Guenther  <rguenther@suse.de>
14210         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
14211         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
14212         properly to compute the reachability set if we do field-sensitive PTA.
14213         * invoke.texi (max-fields-for-field-sensitive): Document default.
14214         * opts.c (decode_options): Set max-fields-for-field-sensitive to
14215         100 for optimize >= 2.
14217 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14219         * ggc-zone.c (lookup_page_table_if_allocated,
14220         set_page_table_entry, zone_find_object_size, alloc_small_page,
14221         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
14222         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
14223         -Wc++-compat and/or -Wcast-qual warnings.
14225 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
14227         PR target/36634
14228         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
14229         pic_offset_table_rtx to be marked as used here.
14230         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
14231         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
14232         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
14233         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
14234         !TARGET_SECURE_PLT.
14236 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14238         * alloc-pool.c (hash_descriptor, eq_descriptor,
14239         alloc_pool_descriptor): Fix -Wc++-compat warnings.
14240         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
14241         Likewise.
14242         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
14243         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
14244         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
14245         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
14246         Likewise.
14248 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
14250         * tree-flow.h (loop_only_exit_p): Declare.
14251         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
14252         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
14253         the number of iterations if it is constant.  Otherwise, if this is the
14254         only possible exit of the loop, use the conservative estimate on the
14255         number of iterations of the entire loop if available.
14257 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
14259         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
14260         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
14261         Add synchronization functions.
14262         * config/sync.c: New file.
14263         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
14264         (LIBGCC_SYNC_CFLAGS): Likewise.
14266 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
14268         PR target/36710
14269         * config/i386/i386.md (mode): Add TF to "mode" attribute.
14270         (*pushtf_sse): New insn pattern.
14271         (pushtf splitters): New splitters.
14273 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
14275         PR middle-end/35736
14276         * predict.c (build_predict_expr): Use void_type_node for the tree
14277         type, instead of NULL_TREE.
14279 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
14281         * config/i386/i386.c (contains_aligned_value_p): Return true
14282         for TCmode.
14283         (ix86_data_alignment): Align TCmode to 128bits.
14284         (ix86_local_alignment): Likewise.
14286 2008-07-03  Andrew Haley  <aph@redhat.com>
14288         PR bootstrap/33304
14289         * vec.h (VEC_TA): New.
14290         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
14291         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
14292         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
14293         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
14294         (C_COMMON_FIXED_TYPES): Remove first arg.
14295         (C_COMMON_FIXED_MODE_TYPES): Likewise.
14296         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
14297         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
14298         not to use empty macro arguments.
14300 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
14302         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
14303         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
14304         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
14305         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
14306         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
14307         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
14308         config/ia64/crtn.asm, config/m68hc11/larith.asm,
14309         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
14310         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
14311         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
14312         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
14313         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
14314         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
14315         config/rs6000/e500crtres64gpr.asm,
14316         config/rs6000/e500crtres64gprctr.asm,
14317         config/rs6000/e500crtrest32gpr.asm,
14318         config/rs6000/e500crtrest64gpr.asm,
14319         config/rs6000/e500crtresx32gpr.asm,
14320         config/rs6000/e500crtresx64gpr.asm,
14321         config/rs6000/e500crtsav32gpr.asm,
14322         config/rs6000/e500crtsav64gpr.asm,
14323         config/rs6000/e500crtsav64gprctr.asm,
14324         config/rs6000/e500crtsavg32gpr.asm,
14325         config/rs6000/e500crtsavg64gpr.asm,
14326         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
14327         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
14328         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
14329         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
14330         config/sparc/sol2-cn.asm: Remove .file directives.
14332 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
14334         * resource.c (mark_referenced_resources): Look inside
14335         UNSPEC_VOLATILEs and ASM_INPUTs.
14337 2008-07-02  Ian Lance Taylor  <iant@google.com>
14339         * rtlanal.c (add_reg_note): New function.
14340         * rtl.h (add_reg_note): Declare.
14341         * auto-inc-dec.c (attempt_change): Use add_reg_note.
14342         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
14343         * builtins.c (expand_builtin_longjmp): Likewise.
14344         (expand_builtin_nonlocal_goto): Likewise.
14345         * calls.c (emit_call_1, expand_call): Likewise.
14346         * cfgexpand.c (add_reg_br_prob_note): Likewise.
14347         * cfglayout.c (fixup_reorder_chain): Likewise.
14348         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
14349         (commit_one_edge_insertion): Likewise.
14350         * combine.c (move_deaths, distribute_notes): Likewise.
14351         * df-problems.c (df_set_note): Likewise.
14352         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
14353         (set_unique_reg_note): Likewise.
14354         (emit_copy_of_insn_after): Likewise.
14355         * expr.c (expand_expr_real): Likewise.
14356         * gcse.c (add_label_notes): Likewise.
14357         * haifa-sched.c (create_check_block_twin): Likewise.
14358         * jump.c (mark_jump_label_1): Likewise.
14359         * loop-doloop.c (add_test, doloop_modify): Likewise.
14360         * loop-unswitch.c (compare_and_jump_seq): Likewise.
14361         * lower-subreg.c (move_eh_region_note): Likewise.
14362         * optabs.c (emit_libcall_block): Likewise.
14363         * predict.c (predict_insn): Likewise.
14364         (combine_predictions_for_insn): Likewise.
14365         * recog.c (peephole2_optimize): Likewise.
14366         * regmove.c (try_auto_increment): Likewise.
14367         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
14368         * reload.c (find_reloads): Likewise.
14369         * reload1.c (fixup_eh_region_note): Likewise.
14370         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
14371         * reorg.c (delete_prior_computation): Likewise.
14372         (delete_computation, dbr_schedule): Likewise.
14373         * config/pa/pa.c (legitimize_pic_address): Likewise.
14374         * config/sh/sh.c (sh_reorg): Likewise.
14376 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
14378         PR target/36669
14379         * config/libgcc-glibc.ver: Add %exclude.
14380         * config/m32r/libgcc-glibc.ver: Likwise.
14381         * config/s390/libgcc-glibc.ver: Likwise.
14382         * config/sh/libgcc-glibc.ver: Likwise.
14383         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
14385         * config/i386/libgcc-glibc.ver: New.
14387         * config/i386/libgcc-x86_64-glibc.ver: Removed.
14389 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
14391         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
14392         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
14393         i[34567]86-*-linux*, x86_64-*-linux*.  Add
14394         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
14395         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
14396         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
14397         i[34567]86-*-linux*, x86_64-*-linux*.
14399         * libgcc-std.ver: Add empty GCC_4.4.0.
14401         * mkmap-symver.awk: Support multiple versions per symbol.
14403         * config/i386/i386.c (ix86_init_builtins): Always define
14404         __builtin_fabsq and __builtin_copysignq with fallbacks.
14405         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
14406         and __builtin_copysignq if SSE2 isn't available.
14408         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
14409         (LIBGCC2_TF_CEXT): Likwise.
14410         (TF_SIZE): Likwise.
14412         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
14414         * config/i386/sfp-machine.h: Moved to libgcc.
14416         * config/i386/sfp-machine.h: New.
14417         * config/i386/t-linux: Likwise.
14419         * config/i386/t-darwin: Remove softfp_wrap_start and
14420         softfp_wrap_end.
14421         * config/i386/t-darwin64: Likewise.
14423         * config/i386/t-fprules-softfp64: Renamed to ...
14424         * config/i386/t-fprules-softfp: This.
14426         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
14427         and softfp_wrap_end.
14429 2008-07-02  Jason Merrill  <jason@redhat.com>
14431         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
14433         * tree.c (ctor_to_list): New fn.
14434         * tree.h: Declare it.
14435         (CONSTRUCTOR_ELT): New macro.
14436         (CONSTRUCTOR_NELTS): New macro.
14438 2008-07-02  Richard Guenther  <rguenther@suse.de>
14440         * tree-ssa-structalias.c (struct variable_info): Reorder
14441         to fill padding on 64bit hosts.  Make collapsed_to an int.
14442         (get_varinfo_fc): Deal with that.
14443         (new_var_info): Likewise.
14444         (collapse_rest_of_var): Likewise.
14446 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
14448         * doc/install.texi (--enable-java-home): Document.
14449         (--enable-aot-compile-rpm): Likewise.
14450         (--with-arch-directory): Likewise.
14451         (--with-os-directory): Likewise.
14452         (--with-origin-name): Likewise.
14453         (--with-arch-suffix): Likewise.
14454         (--with-jvm-root-dir): Likewise.
14455         (--with-jvm-jar-dir): Likewise.
14456         (--with-python-dir): Likewise.
14458 2008-07-02  Richard Guenther  <rguenther@suse.de>
14460         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
14461         from decls explicitly.  Merge operand checking from tuples.
14463 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14465         * tree-switch-conversion.c: Included timevar.h which I forgot before.
14467 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14469         * tree-switch-conversion.c: Included timevar.h
14470         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
14472         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
14474 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14476         * tree-switch-conversion.c: Corrected various comments and
14477         whitespace issues
14478         (build_constructors): Fixed minor formatting mistakes.
14480         * invoke.texi (Optimize Options): Corrected the
14481         switch-conversion-max-branch-ratio parameter.
14483 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
14485         * final.c (asm_insn_count): Return zero for an empty asm body.
14487 2008-07-02  Richard Guenther  <rguenther@suse.de>
14489         * bitmap.h (bitmap_set_bit): Return bool.
14490         (bitmap_clear_bit): Likewise.
14491         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
14492         write to the bitmap if it would.
14493         (bitmap_clear_bit): Likewise.
14494         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
14495         bitmap_set_bit return value.
14496         (add_pred_graph_edge): Likewise.
14497         (add_graph_edge): Likewise.
14498         (do_sd_constraint): Likewise.
14499         (do_ds_constraint): Likewise.
14501 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14503         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
14504         Fix -Wc++-compat and/or -Wcast-qual warnings.
14505         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
14506         gen_regparm_prefix): Likewise.
14507         * vmsdbgout.c (write_modbeg, lookup_filename,
14508         vmsdbgout_source_line, vmsdbgout_init): Likewise.
14510 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
14512         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
14513         defaults.h definition apply.
14515 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14517         * function.c (assign_parm_remove_parallels): New.
14518         (assign_parm_setup_block_p): Do not return true for non-BLKmode
14519         PARALLELs.
14520         (assign_parm_setup_block): Do not handle them.
14521         (assign_parm_setup_reg, assign_parm_setup_stack): Call
14522         assign_parm_remove_parallels.
14524 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14526         * c-typeck.c (convert_for_assignment): Use
14527         vector_targets_convertible_p.
14528         * c-common.c (vector_targets_convertible_p): New.
14529         * c-common.h (vector_targets_convertible_p): New prototype.
14530         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
14531         opaque_p_V2SI_type_node.
14533 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
14535         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
14536         RFmode constants.
14538 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
14540         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
14541         TFmode constants via two element DImode vector for hosts with
14542         HOST_BITS_PER_WIDE_INT < 64.
14543         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
14544         also for HOST_BITS_PER_WIDE_INT < 64.
14546 2008-07-01  Richard Guenther  <rguenther@suse.de>
14548         PR tree-optimization/36666
14549         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
14550         (get_constraint_exp_from_ssa_var): Split into ...
14551         (get_constraint_exp_for_temp): ... this ...
14552         (get_constraint_for_ssa_var): ... and that.
14553         Return constraint expressions for all touched sub-fields
14554         if the results address is not taken.
14555         (process_constraint): Remove assertion that aggregate
14556         assignments do not happen at this place.
14557         (get_constraint_for_component_ref): Add address_p argument.
14558         Return constraint expressions for all touched sub-fields
14559         if the results address is not taken.
14560         (do_deref): Use get_constraint_exp_for_temp.
14561         (get_constraint_for_1): Rename from ...
14562         (get_constraint_for): ... this.  Add the old function as wrapper.
14563         (do_structure_copy): Use get_constraint_for_1.
14565 2008-07-01  Martin Jambor  <mjambor@suse.cz>
14567         * Makefile.in (tree-switch-conversion.o): Add.
14568         (OBJS-common): Add tree-swtch-conversion.o.
14569         * passes.c (init_optimization_passes): Add pass_convert_switch.
14570         * tree-pass.h: (pass_convert_switch): Add.
14571         * tree-switch-conversion.c: New file.
14572         * gcc.dg/tree-ssa/cswtch.c: New testcase.
14573         * common.opt (ftree-cswtch): New option.
14574         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
14575         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
14576         * opts.c (decode_options): Set flag_tree_switch_conversion when
14577         optimization level is >= 2.
14578         * doc/invoke.texi (Optimize Options): Added description of
14579         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
14581 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14583         * config/darwin-driver.c (darwin_default_min_version): Fix
14584         -Wc++-compat warnings.
14586 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
14588         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
14589         of operand 0.
14591 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14593         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
14595 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14597         PR rtl-optimization/34744
14598         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
14599         (df_scan_free_internal): Free data structures not
14600         allocated in storage pools.
14601         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
14602         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
14603         df_scan_free_mws_vec.
14604         * dse.c (dse_step6): Free offset_map_p and offset_map_n
14605         unconditionally.
14607 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
14609         * config/i386/i386.c (contains_aligned_value_p): Return true
14610         for __float128.
14611         (ix86_function_arg_boundary): Return its natural boundary
14612         for __float128.
14613         (return_in_memory_32): Don't check TDmode.
14614         (ix86_split_to_parts): Support splitting into 4 parts and
14615         support TFmode for 32bit target.
14616         (ix86_split_long_move): Support splitting into 4 parts.
14617         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
14618         for SSE2.
14619         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
14620         (ix86_init_builtins): Here.
14621         (ix86_scalar_mode_supported_p): Always return true for TFmode.
14622         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
14623         'q' and 'w', respectively.
14625         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
14626         TARGET_64BIT.
14627         (movtf_internal): Likewise.
14628         (<code>tf2): Likewise.
14629         (*absnegtf2_sse): Likewise.
14630         (copysign<mode>3): Likewise.
14631         (copysign<mode>3_const): Likewise.
14632         (copysign<mode>3_var): Likewise.
14633         (define_split UNSPEC_COPYSIGN): Likewise.
14634         * config/i386/sse.md (*nandtf3): Likewise.
14635         (<code>tf3): Likewise.
14636         (*<code>tf3): Likewise.
14638 2008-06-30  Joey Ye  <joey.ye@intel.com>
14639             H.J. Lu  <hongjiu.lu@intel.com>
14641         * global.c (compute_regsets): Set frame_pointer_needed here.
14642         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
14644 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
14646         * doc/install.texi (specific): Expand Windows build notes.
14648 2008-06-30  Ira Rosen  <irar@il.ibm.com>
14650         PR tree-optimization/36648
14651         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
14652         number of prolog iterations by step. Fix the comment.
14654 2008-06-30  Richard Guenther  <rguenther@suse.de>
14656         PR middle-end/36671
14657         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
14658         handle calls from ECF_MALLOC functions.
14659         (handle_pure_call): ECF_MALLOC functions do not return
14660         call-used memory.
14661         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
14663 2008-06-29  Andreas Schwab  <schwab@suse.de>
14665         * config/m68k/m68k.c (print_operand): Always print a float
14666         constant in hex.
14667         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
14668         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
14669         Remove macros.
14671         * config/rs6000/x-linux64: Remove never used file.
14673 2008-06-29  Richard Guenther  <rguenther@suse.de>
14675         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
14676         prototype.
14677         (struct alias_info): Move ...
14678         * tree-ssa-alias.c: ... here.
14679         (update_alias_info): Declare.
14680         (compute_may_aliases): Call it.
14681         (update_alias_info): New function.
14682         * tree-ssa-structalias.c (update_alias_info): Move ...
14683         * tree-ssa-alias.c (update_alias_info_1): ... here.
14684         * tree-ssa-structalias.c (process_constraint_1): Remove
14685         unused from_call argument.  Rename to ...
14686         (process_constraint): ... this.  Delete old wrapper.
14687         (make_constraint_to): Adjust callers.
14688         (handle_const_call): Likewise.
14689         (handle_pure_call): Likewise.
14690         (init_base_vars): Likewise.
14691         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
14692         (find_func_aliases): We don't need structure copies for
14693         complex types.
14694         (make_constraint_from_anything): Remove.
14695         (create_variable_info_for): For globals make constraints
14696         from escaped, not from anything.
14697         (compute_points_to_sets): Do not call update_alias_info.
14698         (ipa_pta_execute): Use make_constraint_from.
14700 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14702         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
14703         (bitmap.o-warn, dominance.o-warn): New.
14704         * configure.ac (cxx_compat_warn): Delete.
14705         (loose_warn): Add -Wcast-qual and -Wc++-compat.
14706         * system.h: Remove #pragma diagnostic for -Wcast-qual and
14707         -Wc++-compat.
14708         * configure: Regenerate.
14710         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
14711         warnings.
14713 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14715         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
14716         * df-scan.c (df_notes_rescan): Likewise.
14717         * ggc-page.c (set_page_table_entry): Likewise.
14718         * intl.c (gcc_gettext_width): Likewise.
14719         * varasm.c (get_unnamed_section, get_noswitch_section,
14720         get_section): Likewise.
14722 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
14724         * regrename.c (build_def_use): Don't copy RTX.
14726 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
14728         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
14729         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
14730         punctuation.  Use @ref instead of @xref.
14731         (Function Names): Remove stray @display/@end display.
14732         (C++ Attributes): Use @ref instead of @xref.
14733         (Deprecated Features): Fix punctuation around @xref.
14734         (Backwards Compatibility): Likewise.
14735         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
14737 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
14739         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
14740         constants for E500 double.
14742 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14744         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
14745         element type of const_vector.
14747 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
14749         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
14750         Remove FLAGS_REG clobber from expander pattern.
14751         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
14752         (anddi3, andsi3, andhi3, andqi3): Ditto.
14753         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
14754         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
14755         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
14756         (ashlsi3, ashlhi3, ashlqi3): Ditto.
14757         (ashrsi3, ashrhi3, ashrqi3): Ditto.
14758         (lshrsi3, lshrhi3, lshrqi3): Ditto.
14759         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
14760         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
14762 2008-06-28  Richard Guenther  <rguenther@suse.de>
14764         * tree-ssa-structalias.c (callused_id, var_callused,
14765         callused_tree): Add.
14766         (handle_pure_call): New function.
14767         (find_func_aliases): Call it.
14768         (find_what_p_points_to): Handle the call-used set.
14769         (clobber_what_escaped): Likewise.
14770         (compute_call_used_vars): New function.
14771         (init_base_vars): Init the call-used variable.
14772         (do_sd_constraint): Do not propagate the solution from CALLUSED
14773         but use CALLUSED as a placeholder.
14774         (solve_graph): Likewise.
14775         * tree-flow-inline.h (gimple_call_used_vars): New function.
14776         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
14777         (compute_call_used_vars): Declare.
14778         * tree-ssa-alias.c (set_initial_properties): Call
14779         compute_call_used_vars.
14780         (reset_alias_info): Clear call-used variables.
14781         (add_call_clobber_ops): Assert we are not called for const/pure
14782         functions.  Remove handling of them.
14783         (add_call_read_ops): Handle pure functions by adding the
14784         call-used set of variables as VUSEs.
14785         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
14786         (delete_tree_ssa): Free it.
14787         * tree-dfa.c (remove_referenced_var): Clear the var from the
14788         call-used bitmap.
14790 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
14792         * tree.c (build_varargs_function_type_list): New.
14793         (build_function_type_list_1): New.
14794         (build_function_type_list): Use build_function_type_list_1.
14795         * tree.h (build_varargs_function_type_list): New.
14797 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14799         PR target/34856
14800         * config/spu/spu.c (spu_builtin_splats): Do not generate
14801         invalid CONST_VECTOR expressions.
14802         (spu_expand_vector_init): Likewise.
14804 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
14806         * optabs.c (libfunc_decls): New variable.
14807         (libfunc_decl_hash, libfunc_decl_eq): New functions.
14808         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
14809         for the same function twice.
14811 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
14813         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
14814         ix86_expand_binary_operator directly.
14815         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
14816         for operand 2.
14817         (*ashrti3_1): Ditto.
14818         (*lshrti3_1): Ditto.
14819         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
14820         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
14821         using only one splitter.  Conditionaly execute splitter before or
14822         after peephole2 pass.
14823         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
14824         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
14825         Use only one alternative in asm template.
14826         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
14827         in asm template.
14828         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
14829         "J" operand constraint for operand 2.
14830         (*ashldi3_cconly_rex64): Ditto.
14831         (*ashrdi3_cmp_rex64): Ditto.
14832         (*ashrdi3_cconly_rex64): Ditto.
14833         (*lshrdi3_cmp_rex64): Ditto.
14834         (*lshrdi3_cconly_rex64): Ditto.
14835         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
14836         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
14837         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
14838         gen_x86_shrd_1.
14840 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
14842         * gimplify.c (omp_is_private): Don't return true if decl is not
14843         already private on #pragma omp for or #pragma omp parallel for.
14845         PR debug/36617
14846         * tree-cfg.c (struct move_stmt_d): Replace block field with
14847         orig_block and new_block fields.
14848         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
14849         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
14850         (move_block_to_fn): Replace vars_map and new_label_map arguments
14851         with struct move_stmt_d pointer.
14852         (replace_block_vars_by_duplicates): New function.
14853         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
14854         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
14855         all subblocks of ORIG_BLOCK to the new function.  Call
14856         replace_block_vars_by_duplicates.
14857         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
14858         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
14859         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
14860         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
14861         (expand_omp): Temporarily set input_location to the location of
14862         region's controlling stmt.
14863         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
14864         BIND_EXPR, push ctx->block_vars and gimplification vars into
14865         the BIND_EXPR and its block's BLOCK_VARS instead of directly
14866         into dest function.
14867         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
14868         there are any BLOCK_VARS.
14869         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
14870         OMP_PARALLEL or OMP_TASK stmt.
14871         (lower_omp): Save and restore input_location around the lower_omp_1
14872         call.
14874 2008-06-27  Richard Guenther  <rguenther@suse.de>
14876         PR tree-optimization/36400
14877         PR tree-optimization/36373
14878         PR tree-optimization/36344
14879         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
14880         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
14881         (update_alias_info): Remove call clobbering code.
14882         (make_constraint_to): New helper function.
14883         (make_escape_constraint): Likewise.
14884         (handle_rhs_call): Use it on all pointer containing arguments.
14885         Also mark the static chain escaped.
14886         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
14887         instead of ANYTHING.
14888         (make_constraint_from): New helper split out from ...
14889         (make_constraint_from_anything): ... here.
14890         (find_func_aliases): Add constraints for escape sites.
14891         (intra_create_variable_infos): Make constraints from NONLOCAL
14892         for parameters.
14893         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
14894         as ANYTHING.
14895         (clobber_what_p_points_to): Remove.
14896         (clobber_what_escaped): New function.
14897         (init_base_vars): Init NONLOCAL and ESCAPED.
14898         (do_sd_constraint): Do not propagate the solution from ESCAPED
14899         but use ESCAPED as a placeholder.
14900         (solve_graph): Likewise.
14901         * tree-flow.h (clobber_what_p_points_to): Remove.
14902         (clobber_what_escaped): Declare.
14903         * tree-ssa-alias.c (set_initial_properties): Call it.
14904         Remove code clobbering escaped pointers.
14906 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14908         * function.c (allocate_struct_function): Only allocate a unique
14909         funcdef_no if the decl is nonzero.
14911 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14913         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
14914         * config/mips/mips.c (mips_split_const_insns): New function.
14915         * config/mips/mips.md (move_type): New attribute.
14916         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
14917         (dword_mode): New attribute.
14918         (type): Avoid long line.  Map "move_type"s to "type"s,
14919         choosing "multi" for doubleword moves if appropriate.
14920         Swap MTC/MFC comments to match their declaration order.
14921         (extended_mips16): Default to "yes" if "move_type" is "sll0",
14922         "type" is "branch" or "jal" is "direct".
14923         (length): Handle "extended_mips16" first.  Make the default
14924         "0" for "ghost" instructions.  Set the length from "move_type".
14925         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
14926         of "type", with "sll0" for the register alternative.  Remove the
14927         "extended_mips16" attribute.
14928         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
14929         of "type", with "shift_shift" for the register alternative.
14930         Remove the "length" attribute.
14931         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
14932         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
14933         of "type", with "andi" for the register alternative.
14934         (*zero_extendqihi2): Likewise.
14935         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
14936         of "andi" instead of a "type" of "arith".
14937         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
14938         instead of "type".
14939         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
14940         (mov_<store>r, *mov<mode>_ra): Likewise.
14941         (extendsidi2): Use "move_type" instead of "type", with "move"
14942         for the register alternative.
14943         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
14944         of "type", with "signext" for the register alternative.
14945         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
14946         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
14947         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
14948         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
14949         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
14950         (unnamed branch insn): Likewise.
14951         (*movdi_gp32_fp64): Fold into...
14952         (*movdi_32bit): ...here.
14953         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
14954         (*movdf_hardfloat): ...this new pattern.
14955         (*movdf_softfloat): Remove redundant FPR alternatives.
14956         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
14957         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
14958         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
14959         the "move" attribute.
14960         (*movdi_32bit): Use "move_type" instead of "type" and remove the
14961         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
14962         and "store" for COP loads and stores.
14963         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
14964         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
14965         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
14966         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
14967         (*movtf_mips16, *movv2sf): Likewise.
14968         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
14969         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
14970         (mfhc1<mode>): Use "move_type" instead of "move".
14971         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
14972         (loadgp_blockage): Remove the "length" attribute.
14973         (blockage, set_got_version, update_got_version): Likewise.
14974         (call_internal): Remove the "extended_mips16" attribute.
14975         (call_value_internal, call_value_multiple_internal): Likewise.
14976         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
14977         instead of "move".
14978         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
14979         the "length" attribute.
14981 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14983         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
14984         -Wcast-qual warnings.
14985         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
14986         handle_pragma_pop_macro): Likewise.
14987         * collect2.c (resolve_lib_name): Likewise.
14988         * config/arc/arc.c (arc_init): Likewise.
14989         * config/arm/arm.c (neon_builtin_compare,
14990         locate_neon_builtin_icode): Likewise.
14991         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
14992         * config/bfin/bfin.c (bfin_init_machine_status,
14993         bfin_optimize_loop): Likewise.
14994         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
14995         * config/cris/cris.c (cris_init_expanders): Likewise.
14996         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
14997         * config/darwin.c (machopic_indirection_eq,
14998         machopic_indirection_name, machopic_output_indirection): Likewise.
14999         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
15000         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
15001         frv_optimize_membar): Likewise.
15002         * config/i386/cygwin.h (mingw_scan,
15003         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
15004         * config/i386/cygwin1.c (mingw_scan): Likewise.
15005         * config/i386/i386.c (machopic_output_stub): Likewise.
15006         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
15007         i386_pe_unique_section): Likewise.
15008         * config/ia64/ia64.c (ia64_init_machine_status,
15009         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
15010         Likewise.
15011         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
15012         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
15013         * config/m68k/m68k.c (m68k_handle_option,
15014         m68k_sched_md_init_global): Likewise.
15015         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
15016         mcore_unique_section): Likewise.
15017         * config/mips/mips.c (mips_block_move_straight,
15018         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
15019         Likewise.
15020         * config/mmix/mmix.c (mmix_init_machine_status,
15021         mmix_encode_section_info): Likewise.
15022         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
15023         * config/rs6000/rs6000.c (rs6000_init_machine_status,
15024         print_operand_address, output_toc, redefine_groups,
15025         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
15026         * config/s390/s390.c (s390_init_machine_status): Likewise.
15027         * config/score/score.c (score_block_move_straight,
15028         score_block_move_loop_body): Likewise.
15029         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
15030         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
15031         * emit-rtl.c (find_auto_inc): Likewise.
15032         * gcc.c (translate_options, process_command): Likewise.
15033         * reorg.c (dbr_schedule): Likewise.
15034         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
15035         * xcoffout.c (xcoffout_declare_function): Likewise.
15037 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
15039         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
15040         ipa-pta working again.
15042 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
15044         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
15045         genautomata.
15047 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
15049         * config.gcc (powerpc*-*-*): Add new core e500mc.
15050         * config/rs6000/e500mc.md: New file.
15051         * config/rs6000/rs6000.c (processor_costs): Add new costs for
15052         e500mc.
15053         (rs6000_override_options): Add e500mc case to
15054         processor_target_table. Altivec and Spe options not allowed
15055         with e500mc. Add isel instruction to e500mc by
15056         default. Initialize rs6000_cost for e500mc.
15057         (rs6000_issue_rate): Set issue rate for e500mc.
15058         * config/rs6000/rs6000.h (processor_type): Add
15059         PROCESSOR_PPCE500MC.
15060         (ASM_CPU_SPEC): Add e500mc.
15061         Set TARGET_ISEL to rs6000_isel.
15062         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
15063         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
15064         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
15065         Include e500mc.md.
15066         * doc/invoke.texi: Add e500mc to list of cpus.
15068 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
15070         PR c/34867
15071         * c-lex.c (lex_charconst): Initialize unsignedp.
15073 2008-06-27  Olivier Hainque  <hainque@adacore.com>
15075         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
15076         documented assumptions.
15078 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15080         * dwarf2out.c: Remove trailing white spaces.  Break long line
15081         in comments.
15083 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
15085         * libfuncs.h (LTI_synchronize): New libfunc_index.
15086         (synchronize_libfunc): Declare.
15087         * builtins.c (expand_builtin_synchronize): Consider using
15088         synchronize_libfunc before falling back on an asm blockage.
15089         * config/mips/mips.c: Include libfuncs.h
15090         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
15092 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
15094         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
15095         parameter.  Copy stack_reg to r11 where appropriate.
15096         (no_global_regs_above): Add gpr parameter.
15097         (rs6000_stack_info): Only add padding for SPE save area if we
15098         are saving SPE GPRs and CR.
15099         (saveres_routine_syms): New variable.
15100         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
15101         Define.
15102         (rs6000_savres_routine_sym): New function.
15103         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
15104         split out of...
15105         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
15106         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
15107         Tweak FPR out-of-line saving.
15108         (rs6000_make_savres_rtx): New function.
15109         (rs6000_use_multiple_p): New function.
15110         (rs6000_savres_strategy): New function.
15111         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
15112         out-of-line if appropriate.
15113         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
15114         if we are optimizing for size.
15115         (GP_SAVE_INLINE): Define.
15116         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
15117         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
15118         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
15119         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
15120         (*save_fpregs_<mode>): Add use of r11.
15121         (*restore_gpregs_<mode>): New insn.
15122         (*return_and_restore_gpregs_<mode>): New insn.
15123         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
15124         use r11.
15125         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
15126         (*restore_gpregs_spe): New insn.
15127         (*return_and_restore_gpregs_spe): New insn.
15128         * config/rs6000/predicates.md (save_world_operation): Fix check.
15130 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15132         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
15133         this point, so assert that.
15135 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15137         * cfganal.c: Include vec.h and vecprim.h.
15138         (compute_idf): Import from...
15139         * tree-into-ssa (compute_idf): ...here.
15140         * basic-block.h (compute_idf): Export.
15142 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
15144         * c-decl.c (merge_decls): Use !current_function_decl to check for
15145         extern declaration of C99 inline function being at file scope.
15147 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
15149         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
15151 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15153         * alias.c (record_alias_subset, init_alias_analysis): Fix
15154         -Wc++-compat and/or -Wcast-qual warnings.
15155         * attribs.c (lookup_attribute_spec): Likewise.
15156         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
15157         copy_bb, connect_traces,
15158         find_rarely_executed_basic_blocks_and_cr): Likewise.
15159         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
15160         note_btr_set, migrate_btr_defs): Likewise.
15161         * builtins.c (result_vector, expand_builtin_memcpy,
15162         expand_builtin_mempcpy_args, expand_builtin_strncpy,
15163         builtin_memset_read_str, expand_builtin_printf,
15164         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
15165         Likewise.
15166         * caller-save.c (mark_set_regs): Likewise.
15167         * calls.c (expand_call, emit_library_call_value_1): Likewise.
15168         * cgraph.c (cgraph_edge): Likewise.
15169         * combine.c (likely_spilled_retval_1): Likewise.
15170         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
15171         htab_counts_entry_del, get_coverage_counts): Likewise.
15172         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
15173         new_cselib_val): Likewise.
15174         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
15175         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
15176         Likewise.
15177         * df-core.c (df_compact_blocks): Likewise.
15178         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
15179         * df-scan.c (df_grow_reg_info, df_ref_create,
15180         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
15181         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
15182         df_record_entry_block_defs, df_record_exit_block_uses,
15183         df_bb_verify): Likewise.
15184         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
15185         DF_REF_EXTRACT_MODE_CONST): New.
15186         * dominance.c (get_immediate_dominator, get_dominated_by,
15187         nearest_common_dominator, root_of_dom_tree,
15188         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
15189         -Wc++-compat and/or -Wcast-qual warnings.
15190         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
15191         record_store, replace_read, check_mem_read_rtx, scan_insn,
15192         dse_step1, dse_record_singleton_alias_set): Likewise.
15193         * dwarf2asm.c (dw2_force_const_mem): Likewise.
15195 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15197         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
15198         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
15199         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
15200         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
15201         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
15202         add_ranges_num, add_ranges_by_labels, file_info_cmp,
15203         file_name_acquire, output_file_names, add_const_value_attribute,
15204         premark_used_types_helper, file_table_eq, file_table_hash,
15205         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
15206         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
15207         -Wcast-qual warnings.
15208         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
15209         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
15210         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
15211         gen_reg_rtx, start_sequence, init_emit): Likewise.
15212         * et-forest.c (et_new_occ, et_new_tree): Likewise.
15213         * except.c (init_eh_for_function, gen_eh_region,
15214         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
15215         arh_to_landing_pad, arh_to_label, add_action_record,
15216         add_call_site, switch_to_exception_section): Likewise.
15217         * expmed.c (synth_mult): Likewise.
15218         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
15219         store_expr): Likewise.
15220         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
15221         Likewise.
15222         * function.c (assign_stack_temp_for_type,
15223         allocate_struct_function, match_asm_constraints_1): Likewise.
15224         * gcov-io.c (gcov_allocate): Likewise.
15225         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
15226         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
15227         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
15228         record_one_set, insert_expr_in_table, insert_set_in_table,
15229         dump_hash_table, compute_hash_table_work, alloc_hash_table,
15230         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
15231         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
15232         -Wcast-qual warnings.
15234 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15236         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
15237         -Wcast-qual warnings.
15238         * gcc.c (process_command): Likewise.
15239         * genattrtab.c (oballoc): Use XOBNEW.
15240         (oballocvec): Define.
15241         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
15242         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
15243         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
15244         -Wc++-compat and/or -Wcast-qual warnings.
15245         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
15246         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
15247         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
15248         gen_presence_absence_set, gen_automaton, gen_regexp_el,
15249         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
15250         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
15251         add_excls, process_presence_absence_names,
15252         process_presence_absence_patterns, add_presence_absence,
15253         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
15254         get_free_state, add_arc, get_free_automata_list_el,
15255         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
15256         transform_3, cache_presence, create_ainsns, create_automata,
15257         create_state_ainsn_table, dfa_insn_code_enlarge,
15258         output_trans_func, output_min_issue_delay_func,
15259         output_dead_lock_func, output_reset_func,
15260         output_get_cpu_unit_code_func, output_dfa_start_func,
15261         expand_automata): Likewise.
15262         * genextract.c (gen_insn): Likewise.
15263         * gengtype-lex.l: Likewise.
15264         * gengtype.c (read_input_list, adjust_field_type,
15265         process_gc_options): Likewise.
15266         * genoutput.c (note_constraint): Likewise.
15267         * genpreds.c (mangle, add_constraint): Likewise.
15268         * genrecog.c (process_define_predicate, new_decision,
15269         add_to_sequence): Likewise.
15270         * gensupport.c (record_insn_name): Likewise.
15272 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15274         * config/i386/driver-i386.c (detect_caches_amd,
15275         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
15276         and/or -Wcast-qual warnings.
15277         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
15278         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
15279         gt_pch_save): Likewise.
15280         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
15281         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
15282         * global.c (compute_regsets): Likewise.
15283         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
15284         finish_graph_dump_file): Likewise.
15285         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
15286         unlink_bb_notes): Likewise.
15287         * integrate.c (get_hard_reg_initial_val): Likewise.
15288         * ipa-prop.c (ipa_push_func_to_list): Likewise.
15289         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
15290         * local-alloc.c (update_equiv_regs): Likewise.
15291         * loop-invariant.c (check_invariant_table_size,
15292         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
15293         Likewise.
15294         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
15295         altered_reg_used, mark_altered): Likewise.
15296         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
15297         insert_var_expansion_initialization,
15298         combine_var_copies_in_loop_exit, apply_opt_in_copies,
15299         release_var_copies): Likewise.
15300         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
15301         analyze_matrix_decl, add_allocation_site, analyze_transpose,
15302         analyze_accesses_for_phi_node, check_var_notmodified_p,
15303         check_allocation_function, find_sites_in_func,
15304         record_all_accesses_in_func, transform_access_sites,
15305         transform_allocation_sites): Likewise.
15306         * omp-low.c (new_omp_region, create_omp_child_function_name,
15307         check_omp_nesting_restrictions, check_combined_parallel,
15308         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
15309         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
15310         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
15311         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
15312         Likewise.
15313         * opts-common.c (prune_options): Likewise.
15314         * opts.c (add_input_filename, print_filtered_help,
15315         get_option_state): Likewise.
15316         * params.c (add_params): Likewise.
15317         * passes.c (set_pass_for_id, next_pass_1,
15318         do_per_function_toporder, pass_fini_dump_file): Likewise.
15319         * postreload.c (reload_cse_simplify_operands): Likewise.
15320         * predict.c (tree_predicted_by_p, tree_predict_edge,
15321         clear_bb_predictions, combine_predictions_for_bb): Likewise.
15323 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15325         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
15326         warnings.
15327         * recog.c (check_asm_operands, validate_change_1): Likewise.
15328         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
15329         subst_asm_stack_regs): Likewise.
15330         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
15331         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
15332         * regmove.c (reg_is_remote_constant_p): Likewise.
15333         * regrename.c (regrename_optimize, scan_rtx_reg,
15334         kill_clobbered_value, kill_set_value, kill_autoinc_value):
15335         Likewise.
15336         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
15337         regstat_compute_calls_crossed): Likewise.
15338         * reload1.c (init_reload, new_insn_chain,
15339         has_nonexceptional_receiver, reload, copy_reloads,
15340         calculate_needs_all_insns, init_elim_table): Likewise.
15341         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
15342         * rtl.c (shallow_copy_rtx_stat): Likewise.
15343         * rtlanal.c (parms_set): Likewise.
15344         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
15345         sbitmap_resize, sbitmap_vector_alloc): Likewise.
15346         * sched-ebb.c (earliest_block_with_similiar_load,
15347         add_deps_for_risky_insns): Likewise.
15348         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
15349         schedule_region): Likewise.
15350         * see.c (eq_descriptor_pre_extension,
15351         hash_descriptor_pre_extension, hash_del_pre_extension,
15352         eq_descriptor_properties, hash_descriptor_properties,
15353         hash_del_properties, see_seek_pre_extension_expr,
15354         see_initialize_data_structures, see_print_register_properties,
15355         see_print_pre_extension_expr, see_delete_merged_def_extension,
15356         see_delete_unmerged_def_extension, see_emit_use_extension,
15357         see_pre_delete_extension, see_map_extension, see_commit_changes,
15358         see_analyze_merged_def_local_prop,
15359         see_analyze_merged_def_local_prop,
15360         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
15361         see_set_prop_merged_def, see_set_prop_unmerged_def,
15362         see_set_prop_unmerged_use, see_print_one_extension,
15363         see_merge_one_use_extension, see_merge_one_def_extension,
15364         see_store_reference_and_extension, see_update_uses_relevancy,
15365         see_update_defs_relevancy): Likewise.
15366         * statistics.c (hash_statistics_hash, hash_statistics_eq,
15367         hash_statistics_free, curr_statistics_hash): Likewise.
15368         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
15369         expand_asm_operands, expand_return, case_bit_test_cmp,
15370         expand_case): Likewise.
15371         * stor-layout.c (start_record_layout): Likewise.
15372         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
15373         gt_pch_save_stringpool): Likewise.
15374         * tree-data-ref.c (hash_stmt_vertex_info,
15375         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
15376         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
15378 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
15380         PR target/36627
15381         * config/i386/i386.md : Change constraints of HImode and QImode
15382         immediate operands from "i" to "n".  Change SImode "ni" constraint to
15383         "i" and SImode "rmi" constraint to "g".  Remove all constraints
15384         from const0_operand and const1_operand predicated operands.
15385         (i): Change QImode and HImode attribute from "i" to "n".
15386         (*subqi_2): Change HImode operands to QImode.
15387         (*subqi_3): Ditto.
15389 2008-06-25  Olivier Hainque  <hainque@adacore.com>
15391         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
15392         sed substitutions.
15394 2008-06-25  Richard Guenther  <rguenther@suse.de>
15396         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
15397         not overflow the result type.
15399 2008-06-25  Richard Guenther  <rguenther@suse.de>
15401         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
15402         (vn_lookup): Likewise.
15404 2008-06-25  Richard Guenther  <rguenther@suse.de>
15406         PR tree-optimization/35518
15407         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
15408         * tree-sra.c (instantiate_element): Use fold_build3 to build
15409         BIT_FIELD_REFs.
15410         (try_instantiate_multiple_fields): Likewise.
15412 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15414         * config/rs6000/rs6000.md: Change all string instruction's clobber to
15415         be early clobbers.
15417 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15419         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
15420         use_backchain_to_restore_sp to true
15421         if the offset of the link register save area would go over the 32k - 1
15422         offset limit of the load
15423         instructions.
15425 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
15427         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
15428         anchor for the type-punning blurb.  Cross-reference "Structures
15429         unions enumerations and bit-fields implementation".  Provide a
15430         cast-through-pointer example.  Make final sentence self-contained.
15431         * doc/implement-c.texi (Structures unions enumerations and
15432         bit-fields implementation): Cross-reference the type-punning blurb
15433         in the -fstrict-aliasing documentation.
15435 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15437         PR middle-end/36594
15438         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
15439         the memory instead of the memory itself for the save area.
15441 2008-06-24  Olivier Hainque  <hainque@adacore.com>
15442             Nicolas Roche  <roche@adacore.com>
15444         * gengtype.c (srcdir_len): size_t instead of int.
15445         (get_file_realbasename): New function.  For F a filename, the real
15446         basename of F, with all the path components stripped.
15447         (get_file_srcdir_relative_path): New function.  For F a filename, the
15448         relative path to F from $(srcdir).
15449         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
15450         get_file_realbasename.  Adjust the head comment.
15451         (get_prefix_langdir_index): New function. For F a filename, return the
15452         lang_dir_names[] relative index of the language directory that is
15453         a prefix in F.
15454         (get_file_langdir): For F a filename, return the name of the language
15455         directory where F is located.
15456         (get_file_gtfilename): New function. The gt- output file name for an
15457         input filename F.
15458         (get_output_file_with_visibility): Replace in-line computations with
15459         uses of get_file_gtfilename and get_prefix_langdir_index.
15460         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
15462 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
15464         PR tree-optimization/36504
15465         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
15466         references without base address.
15468 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15470         PR middle-end/36584
15471         * calls.c (expand_call): Increase alignment for recursive functions.
15473 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
15475         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
15476         (TARGET_FUNCTION_VALUE): New define.
15477         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
15478         * config/avr/avr.h (FUNCTION_VALUE): Remove.
15480 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15482         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
15483         (fmod<mode>3): Ditto.
15484         (remainderxf3): Ditto.
15485         (remainder<mode>3): Ditto.
15487 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
15489         PR target/36533
15490         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
15491         REG is a hard register.
15493         PR tree-optimization/36508
15494         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
15495         499, don't check it at all in release compilers.
15497 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15499         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
15500         together with SSE_TARGET_MATH to disable insn pattern.
15501         (*fop_<MODEF:mode>_2_i387): Ditto.
15502         (*fop_<MODEF:mode>_3_i387): Ditto.
15504 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
15506         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
15508 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
15510         PR middle-end/34906
15511         * gimplify.c (gimplify_asm_expr): Check the return code of
15512         parse_output_constraint call, set function return and is_inout
15513         value if it failed.
15515 2008-06-22  Ian Lance Taylor  <iant@google.com>
15517         * c-lex.c (narrowest_unsigned_type): Change itk to int.
15518         (narrowest_signed_type): Likewise.
15519         * c-typeck.c (c_common_type): Change local variable mclass to enum
15520         mode_class, twice.
15521         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
15522         tcc_comparison, not the tree code itself.
15523         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
15524         (c_expand_expr): Cast modifier to enum expand_modifier.
15525         * c-common.h (C_RID_CODE): Add casts.
15526         (C_SET_RID_CODE): Define.
15527         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
15528         (c_lex_one_token): Add cast to avoid warning.
15529         (c_parser_objc_type_name): Rename local typename to type_name.
15530         (check_no_duplicate_clause): Change code parameter to enum
15531         omp_clause_code.
15532         (c_parser_omp_var_list_parens): Change kind parameter to enum
15533         omp_clause_code.
15534         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
15535         c_parser_omp_list_var_parens.
15536         (c_parser_omp_threadprivate): Likewise.
15537         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
15538         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
15539         * c-format.c (NO_FMT): Define.
15540         (printf_length_specs): Use NO_FMT.
15541         (asm_fprintf_length_specs): Likewise.
15542         (gcc_diag_length_specs): Likewise.
15543         (scanf_length_specs): Likewise.
15544         (strfmon_length_specs): Likewise.
15545         (gcc_gfc_length_specs): Likewise.
15546         (printf_flag_specs): Change 0 to STD_C89.
15547         (asm_fprintf_flag_specs): Likewise.
15548         (gcc_diag_flag_specs): Likewise.
15549         (gcc_cxxdiag_flag_specs): Likewise.
15550         (scanf_flag_specs): Likewise.
15551         (strftime_flag_specs): Likewise.
15552         (strfmon_flag_specs): Likewise.
15553         (print_char_table): Likewise.
15554         (asm_fprintf_char_table): Likewise.
15555         (gcc_diag_char_table): Likewise.
15556         (gcc_tdiag_char_table): Likewise.
15557         (gcc_cdiag_char_table): Likewise.
15558         (gcc_cxxdiag_char_table): Likewise.
15559         (gcc_gfc_char_table): Likewise.
15560         (scan_char_table): Likewise.
15561         (time_char_table): Likewis.
15562         (monetary_char_table): Likewise.
15563         * c-format.h (BADLEN): Likewise.
15565 2008-06-21  Ian Lance Taylor  <iant@google.com>
15567         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
15568         Define END_OF_BASE_TREE_CODES around inclusion.
15569         * tree.c (tree_code_type): New global array.
15570         (tree_code_length, tree_code_name): Likewise.
15571         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
15572         $(lang_tree_files).
15573         (all-tree.def, s-alltree): New targets.
15574         (gencheck.h, s-gencheck): Remove.
15575         (tree.o): Depend upon all-tree.def.
15576         (build/gencheck.o): Remove gencheck.h dependency.
15577         (mostlyclean): Don't remove gencheck.h.
15578         * c-common.h (enum c_tree_code): Remove.
15579         * c-lang.c (tree_code_type): Remove.
15580         (tree_code_length, tree_code_name): Remove.
15581         * gencheck.c (tree_codes): Include all-tree.def, rather than
15582         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
15583         after it is used.
15584         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
15585         than tree.def.
15586         * cp/cp-tree.h (enum cplus_tree_code): Remove.
15587         (operator_name_info): Size to MAX_TREE_CODES.
15588         (assignment_operator_name_info): Likewise.
15589         * cp/cp-lang.c (tree_code_type): Remove.
15590         (tree_code_length, tree_code_name): Remove.
15591         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
15592         (assignment_operator_name_info): Likewise.
15593         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
15594         MAX_TREE_CODES.
15595         * cp/mangle.c (write_expression): Likewise.
15596         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
15597         * fortran/f95-lang.c (tree_code_type): Remove.
15598         (tree_code_length, tree_code_name): Remove.
15599         * java/java-tree.h (enum java_tree_code): Remove.
15600         * java/lang.c (tree_code_type): Remove.
15601         (tree_code_length, tree_code_name): Remove.
15602         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
15603         * objc/objc-act.h (enum objc_tree_code): Remove.
15604         * objc/objc-lang.c (tree_code_type): Remove.
15605         (tree_code_length, tree_code_name): Remove.
15606         * objcp/objcp-lang.c (tree_code_type): Remove.
15607         (tree_code_length, tree_code_name): Remove.
15608         * ada/ada-tree.h (enum gnat_tree_code): Remove.
15609         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
15610         * ada/misc.c (tree_code_type): Remove.
15611         (tree_code_length, tree_code_name): Remove.
15613 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
15615         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
15616         the grand_bitmap_obstack.
15618 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15620         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
15621         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
15622         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
15623         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
15624         move_stmt_r, new_label_mapper): Likewise.
15625         * tree-complex.c (cvc_lookup): Likewise.
15626         * tree-dfa.c (create_function_ann): Likewise.
15627         * tree-dump.c (dump_register): Likewise.
15628         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
15629         find_phi_replacement_condition): Likewise.
15630         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
15631         tree_function_versioning): Likewise.
15632         * tree-into-ssa.c (cmp_dfsnum): Likewise.
15633         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
15634         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
15635         get_nonlocal_debug_decl, convert_nonlocal_reference,
15636         convert_nonlocal_omp_clauses, get_local_debug_decl,
15637         convert_local_reference, convert_local_omp_clauses,
15638         convert_nl_goto_reference, convert_nl_goto_receiver,
15639         convert_tramp_reference, convert_call_expr): Likewise.
15640         * tree-outof-ssa.c (contains_tree_r): Likewise.
15641         * tree-parloops.c (reduction_phi, initialize_reductions,
15642         eliminate_local_variables_1, add_field_for_reduction,
15643         add_field_for_name, create_phi_for_local_result,
15644         create_call_for_reduction_1, create_loads_for_reductions,
15645         create_stores_for_reduction, create_loads_and_stores_for_name):
15646         Likewise.
15647         * tree-phinodes.c (allocate_phi_node): Likewise.
15648         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
15649         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
15650         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
15651         * tree-ssa-coalesce.c (compare_pairs): Likewise.
15652         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
15653         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
15654         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
15655         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
15656         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
15657         vn_nary_op_insert): Likewise.
15658         * tree-ssa.c (redirect_edge_var_map_add,
15659         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
15660         * tree-vectorizer.c (vectorize_loops): Likewise.
15661         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
15662         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
15663         tree_cons_stat, build1_stat, build_variant_type_copy,
15664         decl_init_priority_lookup, decl_fini_priority_lookup,
15665         decl_priority_info, decl_restrict_base_lookup,
15666         decl_restrict_base_insert, decl_debug_expr_lookup,
15667         decl_debug_expr_insert, decl_value_expr_lookup,
15668         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
15669         type_hash_add, get_file_function_name, tree_check_failed,
15670         tree_not_check_failed, tree_range_check_failed,
15671         omp_clause_range_check_failed, build_omp_clause,
15672         build_vl_exp_stat): Likewise.
15673         * value-prof.c (gimple_histogram_value,
15674         gimple_duplicate_stmt_histograms): Likewise.
15675         * var-tracking.c (attrs_list_insert, attrs_list_copy,
15676         unshare_variable, variable_union_info_cmp_pos, variable_union,
15677         dataflow_set_different_1, dataflow_set_different_2,
15678         vt_find_locations, variable_was_changed, set_variable_part,
15679         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
15680         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
15681         section_entry_hash, object_block_entry_eq,
15682         object_block_entry_hash, create_block_symbol,
15683         initialize_cold_section_name, default_function_rodata_section,
15684         strip_reg_name, set_user_assembler_name, const_desc_eq,
15685         build_constant_desc, output_constant_def, lookup_constant_def,
15686         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
15687         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
15688         default_internal_label): Likewise.
15689         * varray.c (varray_init, varray_grow): Likewise.
15690         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
15692 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
15694         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
15695         operators for "test" insn.  Macroize insn using SWI mode macro.
15696         (*jcc_fused_2): Ditto.
15697         (*jcc_fused_3): Macroize insn using SWI mode macro.
15698         (*jcc_fused_4): Ditto.
15700 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
15702         * tree-ssa-pre.c: Fix typo in comment.
15703         (init_antic, fini_antic): Add explicit funtions for
15704         initializing and deinitializing ANTIC and AVAIL sets.
15705         (create_expression_by_pieces): Fix typo in comment.
15706         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
15707         (execute_pre): Eventually dump details about ANTIC_IN.
15709 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15711         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
15712         * gcc.c (translate_options, init_spec, store_arg, read_specs,
15713         add_to_obstack, file_at_path, find_a_file, execute,
15714         add_preprocessor_option, add_assembler_option, add_linker_option,
15715         process_command, insert_wrapper, do_option_spec, do_self_spec,
15716         spec_path, do_spec_1, is_directory, main, used_arg,
15717         getenv_spec_function): Likewise.
15718         * tlink.c (symbol_hash_lookup, file_hash_lookup,
15719         demangled_hash_lookup, symbol_push, file_push, frob_extension):
15720         Likewise.
15722 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15724         * doc/rtl.texi: Updated subreg section.
15726 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
15728         PR c++/36523
15729         * cgraphunit.c (cgraph_process_new_functions): Don't clear
15730         node->needed and node->reachable.
15731         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
15732         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
15733         (expand_task_call): Don't call expand_task_copyfn.
15734         (expand_task_copyfn): Renamed to...
15735         (finalize_task_copyfn): ... this.
15737 2008-06-19  Jan Hubicka  <jh@suse.cz>
15739         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
15740         clobbering framepointer.
15742 2008-06-19  Jan Hubicka  <jh@suse.cz>
15744         * tree-optimize.c (execute_early_local_optimizations): Set
15745         cgraph_state only at first invocation.
15747 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15749         * system.h (-Wc++-compat): Activate as a warning, no an error.
15751 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15753         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
15754         instead of "#" in insn asm template.
15755         (*jcc_fused_2): Ditto.
15757 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15759         * config/i386/i386.h (ix86_tune_indices)
15760         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
15761         (TARGET_FUSE_CMP_AND_BRANCH): New define.
15762         * config/i386/i386.md (*jcc_fused_1): New insn pattern
15763         (*jcc_fused_2): Ditto.
15764         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
15765         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
15766         (print operand): Handle 'E' and 'e' code.
15768 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
15770         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
15771         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
15772         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15774 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
15776         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
15777         node->decl.
15778         (cgraph_expand_function): Use local copy of decl.
15779         (cgraph_expand_all_functions): Remove redundant initialization of
15780         order_pos.
15781         (cgraph_optimize): Reword internal_error message.
15783 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
15785         * arm-protos.h (arm_return_in_memory): Remove public
15786         arm_return_in_memory() prototype.
15787         * arm.c (arm_return_in_memory): Add static prototype, add target
15788         hook macro, change definition and comments.
15789         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
15791 2008-06-19  Ben Elliston  <bje@au.ibm.com>
15793         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
15794         real.c: Remove references to IEEE 754R.
15795         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
15796         * doc/libgcc.texi (Decimal float library routines): Likewise.
15798 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15800         * targhooks.h (struct gcc_target): New member unwind_word_mode.
15801         (default_unwind_word_mode): Add prototype.
15802         * targhooks.c (default_unwind_word_mode): New function.
15803         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
15804         instead of word_mode.
15805         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
15806         (TARGET_INITIALIZER): Use it.
15808         * c-common.c (handle_mode_attribute): Support "unwind_word"
15809         mode attribute.
15810         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
15812         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
15813         word_mode to access SjLj_Function_Context member "data".
15814         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
15815         conversion from targetm.eh_return_filter_mode () to
15816         targetm.unwind_word_mode () if they differ.
15818         * builtin-types.def (BT_UNWINDWORD): New primitive type.
15819         (BT_FN_UNWINDWORD_PTR): New function type.
15820         (BT_FN_WORD_PTR): Remove.
15821         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
15822         * except.c (expand_builtin_extend_pointer): Convert pointer to
15823         targetm.unwind_word_mode () instead of word_mode.
15825         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
15826         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
15827         (spu_unwind_word_mode): New function.
15828         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
15829         (TARGET_UNWIND_WORD_MODE): Define.
15830         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
15832 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15834         * config/spu/spu.c (reg_align): Remove.
15835         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
15836         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
15837         (spu_split_store): Likewise.
15839 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
15841         * gcc/tree-vn.c: Fix typo in comment.
15843 2008-06-18  Jan Hubicka  <jh@suse.cz>
15845         * cgraphunit.c (cgraph_optimize): Output debug info when doing
15846         toplevel reorder too.
15848 2008-06-18  Jan Hubicka  <jh@suse.cz>
15850         * c-opts.c (c_common_post_options): PCH is not compatible with
15851         no-unit-at-a-time.
15852         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
15853         -fno-toplevel-reorder by default now.
15855 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15857         PR documentation/30739
15858         * doc/install.texi (Prerequisites): Document dependency on awk.
15860 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
15861             Ian Lance Taylor  <iant@google.com>
15863         PR rtl-optimization/35604
15864         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
15865         only want to change jump destinations, not eventual label comparisons.
15867 2008-06-16  Jan Hubicka  <jh@suse.cz>
15869         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
15870         syntax errors.
15871         (cgraph_analyze_function): Likewise.
15873 2008-06-16  Jan Hubicka  <jh@suse.cz>
15875         * cgraph.h (cgraph_mark_if_needed): New function.
15876         * cgraphunit.c (cgraph_mark_if_needed): New function.
15877         * c-decl.c (duplicate_decl): Use it.
15879 2008-06-16  Jan Hubicka  <jh@suse.cz>
15881         * cgraph.c (cgraph_add_new_function): When in expansion state, do
15882         lowering.
15884 2008-06-16  Jan Hubicka  <jh@suse.cz>
15886         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
15888 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
15889             Kazu Hirata  <kazu@codesourcery.com>
15890             Maxim Kuvyrkov  <maxim@codesourcery.com
15892         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
15893         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
15894         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
15895         EXTRA_SPEC_FUNCTIONS.
15896         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
15897         (DRIVER_SELF_SPECS): Adjust.
15898         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
15899         * config/mips/st.h, config/mips/t-st: New.
15900         * config/mips/driver-native.c, config/mips/x-native: New.
15901         * doc/invoke.texi (MIPS): Document 'native' value for -march and
15902         -mtune options.
15904 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
15906         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
15907         from it.
15908         (ISA_HAS_FP_CONDMOVE): New macro.
15909         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
15910         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
15911         (ISA_HAS_NMADD3_NMSUB3): New macro.
15912         * config/mips/mips.c (mips_rtx_costs): Update.
15913         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
15914         compiling for ST Loongson 2E/2F.
15915         (madd<mode>): Rename to madd4<mode>.  Update.
15916         (madd3<mode>): New pattern.
15917         (msub<mode>): Rename to msub4<mode>.  Update.
15918         (msub3<mode>): New pattern.
15919         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
15920         (nmadd3<mode>): New pattern.
15921         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
15922         (nmadd3<mode>_fastmath): New pattern.
15923         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
15924         (nmsub3<mode>): New pattern.
15925         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
15926         (nmsub3<mode>_fastmath): New pattern.
15927         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
15929 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
15931         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
15932         (DF_REF_INSN_INFO): New.
15933         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
15934         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
15935         with a NULL DF_REF_INSN_INFO.
15936         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
15937         DF_INSN_SET.
15938         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
15939         DF_INSN_INFO_EQ_USES): New.
15940         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
15941         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
15942         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
15943         * df-core.c: Update comment for above changes.
15944         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
15945         DF_INSN_UID_* macros.
15946         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
15947         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
15948         insn rtx.  Update all callers.
15949         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
15950         df_ref_create_structure, df_insn_refs_collect): Likewise.
15951         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
15952         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
15953         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
15954         macros to access the insn refs.
15955         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
15956         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
15957         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
15958         for accessing the refs.
15959         (try_fwprop_subst): Likewise.
15960         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
15961         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
15962         for accessing the refs.
15963         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
15964         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
15965         to look at the insn refs.
15966         (record_uses): Likewise.
15967         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
15968         function anymore.
15969         (mark_artificial_uses): Don't mark_insn for artificial refs.
15970         (mark_reg_rependencies): Likewise.
15972         * doc/rtl.texi: Remove documentation of ADDRESSOF.
15974 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15976         * configure: Regenerate.
15978 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15980         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
15981         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15982         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15984 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15986         * config/avr/avr.c (avr_mcu_t): Add attiny167.
15987         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15988         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15990 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15992         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
15993         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15994         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15996 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15998         * tree-ssa-sccvn.c: Fix format of comments.
16000 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
16002         * cgraph.c: Remove unneeded forward declarations of eq_node()
16003         and hash_node().
16005 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
16007         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
16008         REG_RETVAL notes.
16009         (see_update_relevancy): Likewise.
16010         * fwprop.c (try_fwprop_subst): Likewise.
16011         * rtlanal.c (noop_move_p): Likewise.
16012         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
16013         notes to non-existing libcall blocks.
16014         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
16015         Remove orig_set.
16016         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
16017         (dead_libcall_p): Remove.
16018         (delete_trivially_dead_insns): Don't use it.
16019         * web.c (union_defs): Remove comment about keeping nops.
16020         * gcse.c (hash_scan_insn): Don't take libcall pointers.
16021         (compute_hash_table_work): Don't track libcall notes.
16022         (do_local_cprop): Don't take libcall pointers.  Don't update
16023         libcall notes.
16024         (adjust_libcall_notes): Deleted.
16025         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
16026         ever have existed in the first place).
16027         (replace_store_insn): Don't try to remove libcall notes.
16028         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
16029         (resolve_reg_notes): Don't call them.
16030         (resolve_simple_move): Likewise.
16031         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
16032         Don't remove REG_RETVAL notes.
16033         * emit-rtl.c (try_split): Don't update libcall notes.
16034         (emit_copy_of_insn_after): Dito.
16035         * cselib.c (cselib_current_insn_in_libcall): Remove.
16036         (cselib_process_insn): Don't set/clear it.
16037         (new_elt_loc_list): Don't record it.
16038         (cselib_init): Don't initialize it.
16039         * cselib.c (struct elt_loc_list): Remove in_libcall field.
16040         * loop-invariant.c (find_invariant_insn): Don't look for libcall
16041         notes.
16042         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
16043         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
16044         (init_deps): Don't initialize it.
16045         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
16046         * combine.c (delete_noop_moves): Don't update libcall notes.
16047         (can_combine_p): Remove now pointless #if 0 block.
16048         (try_combine): Remove another obsolete #if 0 block.
16049         (distribute_notes): Don't distribute libcall notes.
16050         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
16051         * dce.c (libcall_dead_p): Remove.
16052         (delete_unmarked_insns): Don't handle libcall blocks.
16053         (preserve_libcall_for_dce): Remove.
16054         (prescan_insns_for_dce): Don't special-case libcall block insns.
16055         * reload1 (reload): Don't handle libcall notes.
16056         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
16057         documentation.
16059 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
16061         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
16062         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16063         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16065 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
16067         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
16068         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16069         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16071 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16073         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
16075 2008-06-16  Ira Rosen  <irar@il.ibm.com>
16077         PR tree-optimization/36493
16078         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
16079         the arguments list. Use VECTYPE to create vector pointer.
16080         (vectorizable_store): Fail if accesses through a pointer to vectype
16081         do not alias the original memory reference operands.
16082         Call vect_create_data_ref_ptr without the removed argument.
16083         (vectorizable_load): Likewise.
16084         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
16085         removed argument.
16087 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
16089         PR target/36336
16090         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
16091         reg_equiv_constant.
16093 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
16095         * config/mips/loongson2ef.md: New file.
16096         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
16097         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
16098         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
16099         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
16100         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
16101         and loongson_2f.
16102         (loongson2ef.md): New include.
16103         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
16104         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
16105         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
16106         (loongson_gt_<mode>, loongson_extract_halfword)
16107         (loongson_insert_halfword_0, loongson_insert_halfword_2)
16108         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
16109         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
16110         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
16111         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
16112         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
16113         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
16114         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
16115         (vec_interleave_low<mode>): Define type attribute.
16116         * config/mips/mips.c (mips_ls2): New static variable.
16117         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
16118         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
16119         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
16120         Implement target scheduling hooks.
16121         (mips_multipass_dfa_lookahead): Update to handle tuning for
16122         Loongson 2E/2F.
16123         (mips_sched_init): Initialize data for Loongson scheduling.
16124         (mips_ls2_variable_issue): New static function.
16125         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
16126         Add sanity check.
16127         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
16128         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
16129         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
16130         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
16131         Handle ST Loongson 2E/2F cores.
16132         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
16134 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16136         * omp-low.c (extract_omp_for_data): Fix comment typo.
16137         * c.opt: Fix typo.
16139 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16141         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
16142         FIXME note about gcc/config.guess.
16143         * doc/options.texi (Option file format): Remove non-ASCII bytes.
16144         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
16145         * doc/cppopts.texi: Likewise.
16146         * doc/extend.texi: Likewise.
16147         * doc/gcc.texi: Likewise.
16148         * doc/gccint.texi: Likewise.
16149         * doc/gcov.texi: Likewise.
16150         * doc/gty.texi: Likewise.
16151         * doc/hostconfig.texi: Likewise.
16152         * doc/install.texi: Likewise.
16153         * doc/invoke.texi: Likewise.
16154         * doc/loop.texi: Likewise.
16155         * doc/makefile.texi: Likewise.
16156         * doc/md.texi: Likewise.
16157         * doc/passes.texi: Likewise.
16158         * doc/tm.texi: Likewise.
16159         * doc/tree-ssa.texi: Likewise.
16160         * doc/trouble.texi: Likewise.
16162 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
16163             Nathan Sidwell  <nathan@codesourcery.com>
16164             Maxim Kuvyrkov  <maxim@codesourcery.com>
16165             Richard Sandiford  <rdsandiford@googlemail.com>
16167         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
16168         * config/mips/mips-protos.h (mips_expand_vector_init): New.
16169         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
16170         builtins.
16171         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
16172         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
16173         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
16174         V8QImode cases.
16175         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
16176         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
16177         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
16178         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
16179         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
16180         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
16181         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
16182         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
16183         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
16184         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
16185         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
16186         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
16187         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
16188         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
16189         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
16190         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
16191         (mips_builtins): Add Loongson builtins.
16192         (mips_loongson_2ef_bdesc): New.
16193         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
16194         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
16195         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
16196         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
16197         New.
16198         (mips_expand_vector_init): New.
16199         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
16200         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
16201         if appropriate.
16202         * config/mips/mips.md: Add unspec numbers for Loongson
16203         builtins.  Include loongson.md.
16204         (MOVE64): Include Loongson vector modes.
16205         (SPLITF): Include Loongson vector modes.
16206         (HALFMODE): Handle Loongson vector modes.
16207         * config/mips/loongson.md: New.
16208         * config/mips/loongson.h: New.
16209         * config.gcc: Add loongson.h header for mips*-*-* targets.
16210         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
16212 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
16214         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
16215         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
16216         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
16217         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
16218         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
16219         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
16220         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
16221         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
16222         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
16223         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
16224         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
16225         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
16226         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
16227         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
16228         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
16229         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
16230         Remove use_fixproto=yes.
16231         (ia64*-*-hpux*): Remove comment about using fixproto.
16232         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
16234 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16236         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
16237         library rebuilds.
16238         * configure: Regenerate.
16240 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
16242         PR middle-end/36520
16243         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
16244         before evaluating it.
16246 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
16248         PR c/36507
16249         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
16250         nested inline functions.
16251         (start_decl, start_function): Don't invert DECL_EXTERNAL
16252         for nested inline functions.
16254 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
16256         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
16257         splits that must be made for correctness.
16259 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
16261         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
16262         (AVAIL_NON_MIPS16): Likewise.
16263         (mips_builtin_description): Replace target_flags with a predicate.
16264         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
16265         (dspr2_32): New availability predicates.
16266         (MIPS_BUILTIN): New macro.
16267         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
16268         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
16269         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
16270         Replace the TARGET_FLAGS parameters with AVAIL parameters.
16271         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
16272         (mips_dsp_32only_bdesc): Merge into...
16273         (mips_builtins): ...this new array.
16274         (mips_bdesc_map, mips_bdesc_arrays): Delete.
16275         (mips_init_builtins): Update after above changes.
16276         (mips_expand_builtin_1): Merge into...
16277         (mips_expand_builtin): ...here and update after above changes.
16279 2008-06-12  Paul Brook  <paul@codesourcery.com>
16281         * longlong.h (__arm__): Define count_leading_zeros.
16282         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
16283         (clzsi2, clzdi2): New functions.
16284         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
16285         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
16286         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
16287         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
16288         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
16289         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
16290         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
16291         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
16292         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
16293         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
16295 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
16297         * config/m68k/m68k.c (m68k_tune_flags): New.
16298         (override_options): Compute m68k_tune_flags.
16299         (MULL_COST, MULW_COST): Update for various variants of CFV2.
16300         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
16302 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
16304         PR middle-end/36506
16305         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
16307 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16309         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
16310         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
16312 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16314         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
16315         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
16317 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
16319         PR middle-end/36506
16320         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
16321         reductions.
16323 2008-06-12  Richard Guenther  <rguenther@suse.de>
16325         PR tree-optimization/36345
16326         * tree-flow.h (struct ptr_info_def): Align escape_mask,
16327         add memory_tag_needed flag.
16328         (may_alias_p): Declare.
16329         * tree-ssa-alias.c (may_alias_p): Export.
16330         (set_initial_properties): Use memory_tag_needed flag.
16331         (update_reference_counts): Likewise.
16332         (reset_alias_info): Reset memory_tag_needed flag.
16333         (create_name_tags): Check memory_tag_needed flag.
16334         (dump_points_to_info_for): Dump it.
16335         * tree-ssa-structalias.c (struct variable_info): Remove
16336         directly_dereferenced flag.
16337         (new_var_info): Do not initialize it.
16338         (process_constraint_1): Do not set it.
16339         (update_alias_info): Set is_dereferenced flag.
16340         (set_uids_in_ptset): Use may_alias_p.
16341         (set_used_smts): Check memory_tag_needed flag.
16342         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
16343         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
16344         memory_tag_needed flag.
16345         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
16346         from broken design.
16348 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
16350         * config/i386/i386.c (ix86_compute_frame_layout): Disable
16351         red zone for w64 abi.
16352         (ix86_expand_prologue): Likewise.
16353         (ix86_force_to_memory): Likewise.
16354         (ix86_free_from_memory): Likewise.
16356 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
16358         PR target/36425
16359         * config/rs6000/rs6000.c (rs6000_override_options): Set
16360         rs6000_isel conditionally to the absence of comand line override.
16361         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
16362         Remove duplicate rs6000_isel setting.
16363         * config/rs6000/eabispe.h: Ditto.
16365 2008-06-11  Richard Guenther  <rguenther@suse.de>
16367         * alias.c (get_alias_set): Use the element alias-set for arrays.
16368         (record_component_aliases): For arrays and vectors do nothing.
16369         * c-common.c (strict_aliasing_warning): Handle the cases
16370         of alias set zero explicitly.
16371         * Makefile.in (dfp.o-warn): Add -Wno-error.
16373 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
16375         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
16376         tune_32 tune_64.
16377         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
16378         tune_32 tune_64 to supported_defaults.  Allow values not
16379         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
16380         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
16381         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
16382         with_cpu_64 to generic for 64-bit-supporting configurations, not
16383         with_cpu.  Remove FIXMEs.
16384         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
16385         --with-arch-64, --with-tune-32, --with-tune-64): Document.
16386         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
16387         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
16388         arch_32 and arch_64.
16390 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16391             Olivier Hainque  <hainque@adacore.com>
16393         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
16394         Use DECL_SIZE_UNIT to retrieve the size of the field.
16396 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
16398         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
16399         with function calls after declarations.  Lay out
16400         neon_float_type_node before further use.
16402 2008-06-11  Richard Guenther  <rguenther@suse.de>
16404         * tree-flow.h (may_point_to_global_var): Declare.
16405         * tree-ssa-alias.c (may_point_to_global_var): New function.
16406         * tree-ssa-sink.c (is_hidden_global_store): Use it.
16408 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
16410         * configure.ac: Teach that fido supports .debug_line.
16411         * configure: Regenerate.
16413 2008-06-10  Tom Tromey  <tromey@redhat.com>
16415         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
16416         debug hook.
16418 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
16420         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
16421         (encode_decimal64, decode_decimal64, encode_decimal128,
16422         decode_decimal128): Reverse order of 32-bit parts of value if host
16423         and target endianness differ.
16425 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
16427         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
16428         Avoid division by 0.
16429         (tree_mod_pow2_value_transform): Likewise.
16430         (tree_ic_transform): Likewise.
16431         (tree_stringops_transform): Likewise.
16432         (tree_mod_subtract_transform): Likewise.
16433         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
16434         (copy_edges_for_bb): Likewise.
16435         (initialize_cfun): Likewise.
16437 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
16439         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
16440         nonmemory_operand. Add "N" operand constraint.
16441         (*btsi): Ditto.
16442         (*jcc_btdi_mask_rex64): New instruction and split pattern.
16443         (*jcc_btsi_mask): Ditto.
16444         (*jcc_btsi_mask_1): Ditto.
16446 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
16448         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
16449         TYPE_CANONICAL for copied element type.
16451 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
16453         PR target/36473
16454         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
16455         Add m_CORE2 and m_GENERIC.
16456         * config/i386/predicates.md (bt_comparison_operator): New predicate.
16457         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
16458         (*btsi): Ditto.
16459         (*jcc_btdi_rex64): New instruction and split pattern.
16460         (*jcc_btsi): Ditto.
16461         (*jcc_btsi_1): Ditto.
16462         (*btsq): Fix Intel asm dialect operand order.
16463         (*btrq): Ditto.
16464         (*btcq): Ditto.
16466 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
16468         PR middle-end/36447
16469         * simplify-rtx.c (simplify_subreg): Add check for shift count
16470         greater than size.
16472 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
16474         * doc/md.texi: Synchronize with later constraints.md change.
16475         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
16476         with a C implementation.
16477         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
16478         MFLO handling.
16479         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
16480         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
16481         when moving to and from MD_REGNUM.
16482         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
16483         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
16484         Handle byte and halfword moves.
16485         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
16486         separately.
16487         * config/mips/constraints.md (h): Turn into NO_REGS.
16488         (l, x): Update documentation.
16489         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
16490         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
16491         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
16492         (HILO): New mode iterator.
16493         (MOVE128): Add TI.
16494         (any_div): New code iterator.
16495         (u): Extend code attribute to div and udiv.
16496         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
16497         d_operand in the splitters.  Remove redundant CONST_INT checks.
16498         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
16499         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
16500         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
16501         accordingly, using normal moves instead of unspecs to move LO into
16502         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
16503         (<u>mulsidi3): Handle expansion in C code.
16504         (<u>mulsidi3_32bit_internal): Rename to...
16505         (<u>mulsidi3_32bit): ...this.
16506         (<u>mulsidi3_32bit_r4000): Fix insn separator.
16507         (*<u>mulsidi3_64bit): Rename to...
16508         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
16509         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
16510         to set LO and HI to the multiplication result.  Use a normal move
16511         for MFLO and an unspec for MFHI.
16512         (*<u>mulsidi3_64bit_parts): Replace with...
16513         (<u>mulsidi3_64bit_hilo): ...this new instruction.
16514         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
16515         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
16516         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
16517         instead of HI.  Split the instruction into a separate multiplication
16518         and MFHI if !TARGET_FIX_R4000.
16519         (<su>muldi3_highpart): Likewise.
16520         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
16521         and the "=h" clobber.
16522         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
16523         (<u>mulditi3): New expander.
16524         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
16525         (madsi): Remove "=h" clobber.
16526         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
16527         Force the modulus result to be a GPR and split the instruction into
16528         a division followed by an MFHI after reload.
16529         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
16530         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
16531         the MIPS16 HIGH define_split.
16532         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
16533         of acc<->gpr moves to "multi".
16534         (*movdi_64bit): Replace the single "x" alternative with
16535         alternatives for moving into and out of "a".
16536         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
16537         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
16538         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
16539         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
16540         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
16541         (movti): New expander.
16542         (*movti, *movti_mips16): New insns.
16543         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
16544         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
16545         (mthi<GPR:mode>_<HILO:mode>): Likewise.
16546         * config/mips/predicates.md (fpr_operand): Delete.
16547         (d_operand): New predicate.
16549 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
16551         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
16552         failure on some Bourne shells.
16553         (x86_64-*-*): Ditto.
16555 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
16557         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
16559 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
16561         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
16562         (sparc-sun-solaris2*): Likewise.
16564 2008-06-09  Arnaud Charlet  <charlet@adacore.com
16566         * doc/install.texi: Update requirements to build the Ada compiler.
16568 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
16570         * df-scan.c (struct df_scan_problem_data): Remove the
16571         mw_link_pool alloc pool.
16572         (df_scan_free_internal): Don't free it.
16573         (df_scan_alloc): Don't allocate it.
16574         * df.h (struct df_link): Update comment.
16576 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
16578         * except.h: Correct checks for when SJLJ exceptions must be used.
16580 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16582         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
16583         default.
16585 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
16587         PR tree-optimization/36218
16588         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
16589         configure for the build system.
16590         (BUILD_LDFLAGS): Define.
16591         * configure: Regenerate.
16592         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
16594 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
16596         PR target/36424
16597         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
16598         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
16599         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
16601 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
16603         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
16605 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
16607         * config.gcc (Obsolete configurations): Remove list of
16608         configurations.
16609         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
16610         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
16611         targets matched by those patterns.
16612         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
16613         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
16614         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
16615         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
16616         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
16617         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
16618         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
16619         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
16620         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
16621         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
16622         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
16623         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
16624         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
16625         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
16626         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
16627         Make code for Solaris 7 and greater unconditional for Solaris.
16628         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
16629         Remove --with-* handling.
16630         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
16631         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
16632         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
16633         LINK_OS_WINDISS_SPEC): Remove.
16634         * config/rs6000/sysv4.opt (mwindiss): Remove.
16635         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
16636         * configure: Regenerate.
16637         * doc/cpp.texi: Don't mention BeOS.
16638         * doc/extend.texi (interrupt): Don't mention MS1.
16639         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
16640         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
16641         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
16642         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
16643         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
16644         Remove.
16645         * doc/invoke.texi (MT Options): Remove.
16646         (-mwindiss): Remove.
16647         (CRIS Options): Remove cris-axis-aout references.
16648         (HPPA Options): Don't mention hppa1.1-*-pro.
16649         * doc/md.texi: (MorphoTech family): Remove.
16650         * libgcc2.c: Don't handle UWIN.
16651         * config/alpha/t-unicosmk: Remove.
16652         * config/alpha/unicosmk.h: Remove.
16653         * config/arm/kaos-arm.h: Remove.
16654         * config/arm/kaos-strongarm.h: Remove.
16655         * config/arm/strongarm-coff.h: Remove.
16656         * config/arm/strongarm-elf.h: Remove.
16657         * config/arm/strongarm-pe.h: Remove.
16658         * config/arm/t-strongarm-pe: Remove.
16659         * config/arm/t-xscale-coff: Remove.
16660         * config/arm/t-xscale-elf: Remove.
16661         * config/arm/xscale-coff.h: Remove.
16662         * config/arm/xscale-elf.h: Remove.
16663         * config/chorus.h: Remove.
16664         * config/cris/aout.h: Remove.
16665         * config/cris/aout.opt: Remove.
16666         * config/cris/t-aout: Remove.
16667         * config/i386/beos-elf.h: Remove.
16668         * config/i386/kaos-i386.h: Remove.
16669         * config/i386/ptx4-i.h: Remove.
16670         * config/i386/sco5.h: Remove.
16671         * config/i386/sco5.opt: Remove.
16672         * config/i386/sysv4-cpp.h: Remove.
16673         * config/i386/sysv5.h: Remove.
16674         * config/i386/t-beos: Remove.
16675         * config/i386/t-sco5: Remove.
16676         * config/i386/t-uwin: Remove.
16677         * config/i386/uwin.asm: Remove.
16678         * config/i386/uwin.h: Remove.
16679         * config/kaos.h: Remove.
16680         * config/mips/windiss.h: Remove.
16681         * config/mt: Remove directory.
16682         * config/pa/pa-osf.h: Remove.
16683         * config/pa/pa-pro-end.h: Remove.
16684         * config/pa/t-pro: Remove.
16685         * config/ptx4.h: Remove.
16686         * config/rs6000/beos.h: Remove.
16687         * config/rs6000/kaos-ppc.h: Remove.
16688         * config/rs6000/t-beos: Remove.
16689         * config/rs6000/windiss.h: Remove.
16690         * config/sh/kaos-sh.h: Remove.
16691         * config/sol2-6.h: Remove.
16692         * config/sparc/sol26-sld.h: Remove.
16693         * config/sparc/sysv4-only.h: Remove.
16694         * config/vax/bsd.h: Remove.
16695         * config/vax/t-memfuncs: Remove.
16696         * config/vax/ultrix.h: Remove.
16697         * config/vax/vaxv.h: Remove.
16698         * config/windiss.h: Remove.
16700 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
16702         PR rtl-optimization/36438
16703         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
16704         for vector shifts with constant scalar shift operands.
16706 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
16708         * doc/invoke.texi: Document -march=xlr.
16709         * config/mips/xlr.md: New file.
16710         * config/mips/mips.md: Include it.
16711         (cpu): Add "xlr".
16712         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
16713         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
16714         (mips_rtx_cost_data): Likewise.
16716 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16718         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
16719         PRE_INC and PRE_DEC cases.
16721 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16723         PR rtl-optimization/36419
16724         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
16725         the emitting jump insn.
16727         PR target/36362
16728         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
16729         is not bool, boolify the whole *expr_p and convert to the desired type.
16731 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16733         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
16734         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
16735         Add omp_private_outer_ref hook, add another argument to
16736         omp_clause_default_ctor hook.
16737         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
16738         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
16739         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
16740         hook_tree_tree_tree_tree_null.
16741         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
16742         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
16743         * hooks.c (hook_tree_tree_tree_tree_null): New function.
16744         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
16745         * tree.def (OMP_TASK): New tree code.
16746         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
16747         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
16748         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
16749         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
16750         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
16751         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
16752         OMP_CLAUSE_COLLAPSE_EXPR): Define.
16753         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16754         (OMP_DIRECTIVE_P): Add OMP_TASK.
16755         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
16756         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
16757         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
16758         and OMP_CLAUSE_UNTIED entries.
16759         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
16760         num_ops to 2.
16761         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16762         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
16763         * tree-pretty-print.c (dump_omp_clause): Handle
16764         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
16765         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16766         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
16767         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
16768         warning about unsigned iterators.  Change decl/init/cond/incr
16769         arguments to TREE_VECs, check arguments for all collapsed loops.
16770         (c_finish_omp_taskwait): New function.
16771         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
16772         ws_clauses.
16773         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
16774         default_function_array_conversion on init.  Add par_clauses argument.
16775         If decl is present in parallel's lastprivate clause, change it to
16776         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
16777         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
16778         collapse count in clauses.
16779         (c_parser_omp_for, c_parser_omp_parallel): Adjust
16780         c_parser_omp_for_loop callers.
16781         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
16782         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
16783         (c_parser_omp_clause_name): Handle collapse and untied clauses.
16784         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
16785         functions.
16786         (c_parser_omp_clause_schedule): Handle schedule(auto).
16787         Include correct location in the error message.
16788         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
16789         and PRAGMA_OMP_CLAUSE_UNTIED.
16790         (OMP_TASK_CLAUSE_MASK): Define.
16791         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
16792         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
16793         * tree-nested.c (convert_nonlocal_omp_clauses,
16794         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
16795         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
16796         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16797         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
16798         OMP_CLAUSE_DECL.
16799         (conver_nonlocal_reference, convert_local_reference,
16800         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
16801         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
16802         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
16803         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
16804         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
16805         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
16806         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
16807         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
16808         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16809         OMP_CLAUSE_UNTIED.
16810         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
16811         * c-common.h (c_finish_omp_taskwait): New prototype.
16812         * gimple-low.c (lower_stmt): Handle OMP_TASK.
16813         * tree-parloops.c (create_parallel_loop): Create 1 entry
16814         vectors for OMP_FOR_{INIT,COND,INCR}.
16815         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
16816         (make_edges): Handle OMP_TASK.
16817         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
16818         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16819         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
16820         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
16821         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
16822         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16823         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16824         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
16825         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
16826         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
16827         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
16828         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
16829         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
16830         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
16831         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
16832         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
16833         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
16834         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
16835         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
16836         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
16837         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
16838         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
16839         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
16840         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
16841         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
16842         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
16843         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
16844         original iterator is present in lastprivate clause or if
16845         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
16846         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16847         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
16848         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
16849         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
16850         if it is set, lookup var in outer contexts too.  Handle
16851         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
16852         to be implicitly determined firstprivate for task regions.
16853         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
16854         if it is set, lookup var in outer contexts too.  Set
16855         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
16856         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
16857         OMP_CLAUSE_UNTIED.  Take region_type as last argument
16858         instead of in_parallel and in_combined_parallel.
16859         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
16860         Adjust callers.
16861         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
16862         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
16863         (new_omp_context): Set default_kind to
16864         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
16865         (omp_region_type): New enum.
16866         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
16867         fields, add region_type.
16868         (new_omp_context): Take region_type as argument instead of is_parallel
16869         and is_combined_parallel.
16870         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
16871         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
16872         ctx->is_combined_parallel checks.
16873         (gimplify_omp_task): New function.
16874         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16875         OMP_CLAUSE_UNTIED.
16876         * omp-low.c (extract_omp_for_data): Use schedule(static)
16877         for schedule(auto).  Handle pointer and unsigned iterators.
16878         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
16879         Add loops argument.  Extract data for collapsed OMP_FOR loops.
16880         (expand_parallel_call): Assert sched_kind isn't auto,
16881         map runtime schedule to index 3.
16882         (struct omp_for_data_loop): New type.
16883         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
16884         Add loop, loops, collapse and iter_type fields.
16885         (workshare_safe_to_combine_p): Disallow combined for if
16886         iter_type is unsigned long long.  Don't combine collapse > 1 loops
16887         unless all bounds and steps are constant.  Adjust extract_omp_for_data
16888         caller.
16889         (expand_omp_for_generic): Handle pointer, unsigned and long long
16890         iterators.  Handle collapsed OMP_FOR loops.  Adjust
16891         for struct omp_for_data changes.  If libgomp function doesn't return
16892         boolean_type_node, add comparison of the return value with 0.
16893         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
16894         pointer, unsigned and long long iterators.  Adjust for struct
16895         omp_for_data changes.
16896         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
16897         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
16898         unsigned long long.  Allocate loops array, pass it to
16899         extract_omp_for_data.  For collapse > 1 loops use always
16900         expand_omp_for_generic.
16901         (omp_context): Add sfield_map and srecord_type fields.
16902         (is_task_ctx, lookup_sfield): New functions.
16903         (use_pointer_for_field): Use is_task_ctx helper.  Change first
16904         argument's type from const_tree to tree.  Clarify comment.
16905         In OMP_TASK disallow copy-in/out sharing.
16906         (build_sender_ref): Call lookup_sfield instead of lookup_field.
16907         (install_var_field): Add mask argument.  Populate both record_type
16908         and srecord_type if needed.
16909         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
16910         in srecord_type.
16911         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
16912         and DECL_FIELD_OFFSET.
16913         (scan_sharing_clauses): Adjust install_var_field callers.  For
16914         firstprivate clauses on explicit tasks allocate the var by value in
16915         record_type unconditionally, rather than by reference.
16916         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
16917         Use is_taskreg_ctx instead of is_parallel_ctx.
16918         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16919         (create_omp_child_function_name): Add task_copy argument, use
16920         *_omp_cpyfn* names if it is true.
16921         (create_omp_child_function): Add task_copy argument, if true create
16922         *_omp_cpyfn* helper function.
16923         (scan_omp_parallel): Adjust create_omp_child_function callers.
16924         Rename parallel_nesting_level to taskreg_nesting_level.
16925         (scan_omp_task): New function.
16926         (lower_rec_input_clauses): Don't run constructors for firstprivate
16927         explicit task vars which are initialized by *_omp_cpyfn*.
16928         Pass outer var ref to omp_clause_default_ctor hook if
16929         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
16930         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
16931         OMP_CLAUSE_REDUCTION_INIT.
16932         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
16933         avoid duplicate setting of fields.  Handle
16934         OMP_CLAUSE_PRIVATE_OUTER_REF.
16935         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
16936         copy-out if TREE_READONLY, only copy-in.
16937         (expand_task_copyfn): New function.
16938         (expand_task_call): New function.
16939         (struct omp_taskcopy_context): New type.
16940         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
16941         New functions.
16942         (lower_omp_parallel): Rename to...
16943         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16944         Call create_task_copyfn if srecord_type is needed.  Adjust
16945         sender_decl type.
16946         (task_shared_vars): New variable.
16947         (check_omp_nesting_restrictions): Warn if work-sharing,
16948         barrier, master or ordered region is closely nested inside OMP_TASK.
16949         Add warnings for barrier if closely nested inside of work-sharing,
16950         ordered, or master region.
16951         (scan_omp_1): Call check_omp_nesting_restrictions even for
16952         GOMP_barrier calls.  Rename parallel_nesting_level to
16953         taskreg_nesting_level.  Handle OMP_TASK.
16954         (lower_lastprivate_clauses): Even if some lastprivate is found on a
16955         work-sharing construct, continue looking for them on parent parallel
16956         construct.
16957         (lower_omp_for_lastprivate): Add lastprivate clauses
16958         to the beginning of dlist rather than end.  Adjust for struct
16959         omp_for_data changes.
16960         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
16961         not after it.  Handle collapsed OMP_FOR loops, adjust for
16962         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
16963         (get_ws_args_for): Adjust extract_omp_for_data caller.
16964         (scan_omp_for): Handle collapsed OMP_FOR
16965         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16966         (lower_omp_single_simple): If libgomp function doesn't return
16967         boolean_type_node, add comparison of the return value with 0.
16968         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
16969         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
16970         (parallel_nesting_level): Rename to...
16971         (taskreg_nesting_level): ... this.
16972         (is_taskreg_ctx): New function.
16973         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
16974         of is_parallel_ctx.
16975         (execute_lower_omp): Rename parallel_nesting_level to
16976         taskreg_nesting_level.
16977         (expand_omp_parallel): Rename to...
16978         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16979         Call omp_task_call for OMP_TASK regions.
16980         (expand_omp): Adjust caller, handle OMP_TASK.
16981         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
16983         * bitmap.c (bitmap_default_obstack_depth): New variable.
16984         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
16985         if argument is NULL and bitmap_default_obstack is already initialized.
16986         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
16987         at the end.
16988         * matrix-reorg.c (matrix_reorg): Likewise.
16990 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
16992         * config/i386/i386.md (*indirect_jump): Macroize using P
16993         mode iterator.  Remove !TARGET_64BIT from insn constraints.
16994         (*tablejump_1): Ditto.
16995         (*indirect_jump_rex64): Remove insn pattern.
16996         (*tablejump_1_rex64): Ditto.
16997         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
16998         and eh_return_si insn patterns.
17000 2008-06-06  Richard Guenther  <rguenther@suse.de>
17002         * tree-ssa-structalias.c (merge_smts_into): Remove.
17003         (find_what_p_points_to): Do not bother to compute the
17004         points-to set for pt_anything pointers.
17005         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
17006         for pt_anything pointers is ok.
17008 2008-06-06  Jan Hubicka  <jh@suse.cz>
17010         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
17012 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17014         * cgraph.c: Fix typos in comments.
17015         (cgraph_availability_names): Fix string typo.
17016         * fold-const.c: Fix typos in comments.
17017         (fold_binary): Fix typo in warning.
17018         * genautomata.c: Fix typos in comments.
17019         (check_presence_pattern_sets): Fix typo in local variable.
17020         (output_description): Fix typo in output.
17021         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
17022         * hwint.h: Likewise.
17023         * matrix-reorg.c (check_allocation_function): Likewise.
17024         * omega.c (smooth_weird_equations): Likewise.
17025         * auto-inc-dec.c: Fix typos in comments.
17026         * bb-reorder.c: Likewise.
17027         * builtins.c: Likewise.
17028         * c-common.c: Likewise.
17029         * c-cppbuiltin.c: Likewise.
17030         * c-parser.c: Likewise.
17031         * c-pretty-print.c: Likewise.
17032         * cfgcleanup.c: Likewise.
17033         * cfgexpand.c: Likewise.
17034         * cfghooks.c: Likewise.
17035         * cfglayout.c: Likewise.
17036         * cfgloopmanip.c: Likewise.
17037         * cgraphunit.c: Likewise.
17038         * coverage.c: Likewise.
17039         * dbxout.c: Likewise.
17040         * df-byte-scan.c: Likewise.
17041         * df-core.c: Likewise.
17042         * df-problems.c: Likewise.
17043         * df-scan.c: Likewise.
17044         * dfp.c: Likewise.
17045         * dominance.c: Likewise.
17046         * domwalk.c: Likewise.
17047         * dse.c: Likewise.
17048         * dwarf2out.c: Likewise.
17049         * emit-rtl.c: Likewise.
17050         * et-forest.c: Likewise.
17051         * function.c: Likewise.
17052         * function.h: Likewise.
17053         * gcc.c: Likewise.
17054         * gcov-io.c: Likewise.
17055         * gcov.c: Likewise.
17056         * gcse.c: Likewise.
17057         * genattrtab.c: Likewise.
17058         * ggc-page.c: Likewise.
17059         * gimplify.c: Likewise.
17060         * gthr-lynx.h: Likewise.
17061         * haifa-sched.c: Likewise.
17062         * ipa-cp.c: Likewise.
17063         * ipa-inline.c: Likewise.
17064         * ipa-prop.h: Likewise.
17065         * ipa-pure-const.c: Likewise.
17066         * ipa-struct-reorg.c: Likewise.
17067         * ipa-struct-reorg.h: Likewise.
17068         * ipa-type-escape.c: Likewise.
17069         * ipa.c: Likewise.
17070         * loop-doloop.c: Likewise.
17071         * mips-tfile.c: Likewise.
17072         * mkmap-flat.awk: Likewise.
17073         * mkmap-symver.awk: Likewise.
17074         * modulo-sched.c: Likewise.
17075         * omp-low.c: Likewise.
17076         * optabs.c: Likewise.
17077         * optabs.h: Likewise.
17078         * opts.c: Likewise.
17079         * passes.c: Likewise.
17080         * postreload-gcse.c: Likewise.
17081         * postreload.c: Likewise.
17082         * predict.c: Likewise.
17083         * pretty-print.h: Likewise.
17084         * profile.c: Likewise.
17085         * protoize.c: Likewise.
17086         * ra-conflict.c: Likewise.
17087         * real.c: Likewise.
17088         * recog.c: Likewise.
17089         * regclass.c: Likewise.
17090         * regs.h: Likewise.
17091         * reload.c: Likewise.
17092         * rtl-error.c: Likewise.
17093         * rtlanal.c: Likewise.
17094         * scan.h: Likewise.
17095         * sched-rgn.c: Likewise.
17096         * see.c: Likewise.
17097         * stmt.c: Likewise.
17098         * target.h: Likewise.
17099         * tree-dfa.c: Likewise.
17100         * tree-eh.c: Likewise.
17101         * tree-flow-inline.h: Likewise.
17102         * tree-inline.c: Likewise.
17103         * tree-into-ssa.c: Likewise.
17104         * tree-loop-distribution.c: Likewise.
17105         * tree-nested.c: Likewise.
17106         * tree-parloops.c: Likewise.
17107         * tree-pass.h: Likewise.
17108         * tree-pretty-print.c: Likewise.
17109         * tree-profile.c: Likewise.
17110         * tree-scalar-evolution.c: Likewise.
17111         * tree-sra.c: Likewise.
17112         * tree-ssa-alias-warnings.c: Likewise.
17113         * tree-ssa-ccp.c: Likewise.
17114         * tree-ssa-coalesce.c: Likewise.
17115         * tree-ssa-dom.c: Likewise.
17116         * tree-ssa-dse.c: Likewise.
17117         * tree-ssa-forwprop.c: Likewise.
17118         * tree-ssa-live.c: Likewise.
17119         * tree-ssa-live.h: Likewise.
17120         * tree-ssa-loop-im.c: Likewise.
17121         * tree-ssa-loop-ivopts.c: Likewise.
17122         * tree-ssa-loop-niter.c: Likewise.
17123         * tree-ssa-loop-prefetch.c: Likewise.
17124         * tree-ssa-phiopt.c: Likewise.
17125         * tree-ssa-phiprop.c: Likewise.
17126         * tree-ssa-sccvn.c: Likewise.
17127         * tree-ssa-ter.c: Likewise.
17128         * tree-ssa-threadupdate.c: Likewise.
17129         * tree-ssa.c: Likewise.
17130         * tree-vect-analyze.c: Likewise.
17131         * tree-vect-transform.c: Likewise.
17132         * tree-vectorizer.c: Likewise.
17133         * tree-vn.c: Likewise.
17134         * tree-vrp.c: Likewise.
17135         * tree.c: Likewise.
17136         * tree.def: Likewise.
17137         * tree.h: Likewise.
17138         * unwind-dw2-fde.c: Likewise.
17139         * unwind.inc: Likewise.
17140         * value-prof.c: Likewise.
17141         * vmsdbgout.c: Likewise.
17143 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
17145         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
17146         always place FP constants in the TOC for TARGET_POWERPC64.
17147         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
17149 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
17151         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
17152         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
17153         enable for TARGET_E500_DOUBLE.
17154         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
17155         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
17156         floating-point modes like integer modes for E500 double.
17157         (rs6000_legitimate_offset_address_p): Likewise.
17158         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
17159         addressing for DDmode for E500 double.
17160         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
17161         modes as using 64-bits of registers for E500 double.
17162         (spe_build_register_parallel): Do not handle DDmode or TDmode.
17163         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
17164         specially for E500 double.
17165         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
17166         TDmode for E500 double.
17167         (rs6000_gimplify_va_arg): Only handle SDmode in registers
17168         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
17169         (rs6000_split_multireg_move): Do not handle TDmode specially for
17170         E500 double.
17171         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
17172         using 64-bit registers for E500 double.
17173         (emit_frame_save): Do not handle DDmode specially for E500 double.
17174         (gen_frame_mem_offset): Likewise.
17175         (rs6000_function_value): Do not call spe_build_register_parallel
17176         for DDmode or TDmode.
17177         (rs6000_libcall_value): Likewise.
17178         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
17179         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
17180         for E500 double.
17182 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
17184         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
17185         in comments.
17187 2008-06-04  Junjie Gu <jgu@tensilica.com>
17189         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
17190         comparison for frame pointers.
17192 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
17194         PR target/27386
17195         * config/avr/avr.h (PUSH_ROUNDING): Remove.
17197 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
17199         PR target/30243
17200         * builtins.c (expand_builtin_signbit): Don't take lowpart when
17201         register is already smaller or equal to required mode.
17203 2008-06-04  Xinliang David Li  <davidxl@google.com>
17205         * tree-call-cdce.c: New file.
17206         (cond_dead_built_in_calls): New static variable.
17207         (input_domain): New struct.
17208         (check_pow): New function.
17209         (check_builtin_call): Ditto.
17210         (check_target_format): Ditto.
17211         (is_call_dce_candidate): Ditto.
17212         (gen_one_condition): Ditto.
17213         (gen_conditions_for_domain): Ditto.
17214         (get_domain): Ditto.
17215         (gen_conditions_for_pow_cst_base): Ditto.
17216         (gen_conditions_for_pow_int_base): Ditto.
17217         (gen_conditions_for_pow): Ditto.
17218         (get_no_error_domain): Ditto.
17219         (gen_shrink_wrap_conditions): Ditto.
17220         (shrink_wrap_one_built_in_call): Ditto.
17221         (shink_wrap_conditional_dead_built_in_calls): Ditto.
17222         (tree_call_cdce): Ditto.
17223         (gate_call_cdce): Ditto.
17224         (pass_call_cdce): New gimple pass.
17225         * passes.c: (init_optimization_passes): New pass.
17226         * tree-pass.h: New pass declaration.
17227         * opts.c (decode_options): New flag setting.
17228         * common.opt: Add -ftree-builtin-call-dce flag.
17229         * Makefile.in: Add new source file.
17230         * tempvar.def: New tv_id.
17231         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
17233 2008-06-04  Richard Guenther  <rguenther@suse.de>
17235         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
17236         (is_call_clobbered): Always check var_ann->call_clobbered.
17237         (mark_call_clobbered): Always set var_ann->call_clobbered.
17238         (clear_call_clobbered): Always clear var_ann->call_clobbered.
17239         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
17240         (reset_alias_info): Clear call clobbering info on MTAGs and
17241         globals as well.
17242         (set_pt_anything): Set pt_global_mem.
17243         (create_tag_raw): Adjust comment.
17244         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
17246 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
17247             Maxim Kuvyrkov  <maxim@codesourcery.com>
17249         * config/m68k/m68k.opt (mxgot): New option.
17250         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
17251         (m68k_output_addr_const_extra): New.
17252         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
17253         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
17254         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
17255         * doc/invoke.texi (M680x0 Options): Document -mxgot.
17257 2008-06-04  Richard Guenther  <rguenther@suse.de>
17259         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
17260         negative or non-representable offsets.
17262 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
17264         * config/i386/i386.c (ix86_gen_leave): New.
17265         (ix86_gen_pop1): Likewise.
17266         (ix86_gen_add3): Likewise.
17267         (ix86_gen_sub3): Likewise.
17268         (ix86_gen_sub3_carry): Likewise.
17269         (ix86_gen_one_cmpl2): Likewise.
17270         (ix86_gen_monitor): Likewise.
17271         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
17272         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
17273         ix86_gen_one_cmpl2 and ix86_gen_monitor.
17274         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
17275         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
17276         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
17277         (ix86_expand_epilogue): Updated.
17278         (print_operand): Handle integer register operand for 'z'.
17279         (ix86_expand_strlensi_unroll_1): Likewise.
17280         (ix86_expand_strlen): Likewise.
17281         (ix86_expand_builtin): Likewise.
17282         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
17283         mov{q}/mov{l} and add{q}/add{l}.
17285 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
17287         * config/i386/i386.md (P): New mode iterator.
17288         (SFmode push_operand splitter): Macroize DImode and SImode pushes
17289         using P mode iterator.
17290         (DFmode push_operand splitter): Ditto.
17291         (XFmode push_operand splitter): Ditto.
17292         (DFmode float_extend SFmode push_operand splitter): Ditto.
17293         (XFmode float_extend SFmode push_operand splitter): Do not generate
17294         SImode pushes for 64bit target.  Macroize Dimode and SImode
17295         pushes using P mode iterator.
17296         (XFmode float_extend DFmode push_operand splitter): Ditto.
17298 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
17300         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
17301         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
17302         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
17303         return type to int.
17304         (ix86_call_abi_override): Remove check for call_used_regs.
17306 2008-06-03  Richard Guenther  <rguenther@suse.de>
17308         * tree-ssa-structalias.c (find_func_aliases): Add constraints
17309         for the lhs of calls if the return type contains pointers.
17311 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
17313         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
17314         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
17315         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
17316         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
17317         of cfun and DEFAULT_ABI to deceide abi mode.
17318         (DEFAULT_ABI): New.
17319         (REG_PARM_STACK_SPACE): Removed.
17320         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
17321         (STACK_BOUNDARY): Use default target to deceide stack boundary.
17322         * config/i386/i386-protos.h (ix86_cfun_abi): New.
17323         (ix86_function_abi): Likewise.
17324         (ix86_function_type_abi): Likewise.
17325         (ix86_call_abi_override): Likewise.
17326         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
17327         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
17328         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
17329         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
17330         specific defines.
17331         (X86_64_REGPARM_MAX): New.
17332         (X86_64_SSE_REGPARM_MAX): New.
17333         (X64_REGPARM_MAX): New.
17334         (X64_SSE_REGPARM_MAX): New.
17335         (X86_32_REGPARM_MAX): New.
17336         (X86_32_SSE_REGPARM_MAX): New.
17337         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
17338         (ix86_function_regparm): Handle user calling abi.
17339         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
17340         by DEFAULT_ABI versus SYSV_ABI check.
17341         (ix86_reg_parm_stack_space): New.
17342         (ix86_function_type_abi): New.
17343         (ix86_call_abi_override): New.
17344         (ix86_function_abi): New.
17345         (ix86_cfun_abi): New.
17346         (init_cumulative_args): Call abi specific initialization.
17347         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
17348         (function_arg_64): Extend SSE_REGPARM_MAX check.
17349         (function_arg (): Remove TARGET_64BIT_MS_ABI.
17350         (ix86_pass_by_reference): Likewise.
17351         (ix86_function_value_regno_p): Likewise.
17352         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
17353         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
17354         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
17355         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
17356         (setup_incoming_varargs_64): Adjust regparm for call abi.
17357         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
17358         (ix86_va_start): Likewise.
17359         (ix86_gimplify_va_arg): Likewise.
17360         (ix86_expand_prologue): Likewise.
17361         (output_pic_addr_const): Likewise.
17362         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
17363         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
17364         (x86_output_mi_thunk): Likewise.
17365         (x86_function_profiler): Likewise.
17366         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
17367         (SYSV_ABI, MS_ABI): New constants.
17368         (DEFAULT_ABI): New.
17369         (init_regs): Add prototype of function in regclass.c file.
17370         (OVERRIDE_ABI_FORMAT): New.
17371         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
17372         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
17373         (OUTGOING_REG_PARM_STACK_SPACE): New.
17374         (ix86_reg_parm_stack_space): New prototype.
17375         (CUMULATIVE_ARGS): Add call_abi member.
17376         (machine_function): Add call_abi member.
17377         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
17378         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
17380 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
17382         PR target/34879
17383         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
17384         (avr_builtin_setjmp_frame_value): New function.
17385         * config/avr/avr.md (nonlocal_goto_receiver): Define.
17386         (nonlocal_goto): Define.
17388 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
17390         * config/mips/mips.c (mips_emit_loadgp): Return early if
17391         there is nothing do to, otherwise emit a blockage if
17392         !TARGET_EXPLICIT_RELOCS || crtl->profile.
17393         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
17395 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17397         * configure.ac: Drop unneeded backslash ending up in config.in.
17398         * acinclude.m4: Likewise.
17399         * config.in: Regenerate.
17401 2008-05-26  Jan Hubicka  <jh@suse.cz>
17403         * predict.c (maybe_hot_frequency_p): Break out of...
17404         (maybe_hot_bb_p): ... here.
17405         (maybe_hot_edge_p): New.
17406         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
17407         * basic-block.h (maybe_hot_edge_p): Declare.
17409 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
17411         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
17412         (*cmpfp_<mode>_cc): Ditto.
17413         (*fp_jcc_8<mode>_387): Ditto.
17414         (*fop_<MODEF:mode>_2_i387): Ditto.
17415         (*fop_<MODEF:mode>_3_i387): Ditto.
17416         (*fop_xf_2_i387): Ditto.
17417         (*fop_xf_3_i387): Ditto.
17419 2008-06-02  Tomas Bily  <tbily@suse.cz>
17421         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
17423 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17425         * config/mips/mips.c (mips_valid_offset_p): New function.
17426         (mips_valid_lo_sum_p): Likewise.
17427         (mips_classify_address): Use them.
17428         (mips_force_address): New function.
17429         (mips_legitimize_address): Use it.
17430         * config/mips/mips.md (MOVE128): New mode iterator.
17431         (movtf): Require TARGET_64BIT.  Remove empty strings.
17432         (*movtf_internal): Rename to...
17433         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
17434         of "R" and use {,fp}{load,store} attributes instead of "multi".
17435         Use a separate define_split.
17436         (*movtf_mips16): New pattern.
17438 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17440         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
17441         * config/mips/mips.c (mips_expand_before_return): New function.
17442         (mips_expand_epilogue): Call it.
17443         * config/mips/mips.md (return): Turn into a define_expand.
17444         (*return): New insn.
17446 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17448         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
17449         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
17450         functions.  Do not emit uses and clobbers of CONCATs; individually
17451         use and clobber their operands.
17452         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
17453         gen_clobber, emit_use and gen_use.
17454         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
17455         (expand_builtin_return): Likewise.
17456         * cfgbuild.c (count_basic_blocks): Likewise.
17457         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
17458         * explow.c (emit_stack_restore): Likewise.
17459         * expmed.c (extract_bit_field_1): Likewise.
17460         * expr.c (convert_move, emit_move_complex_parts): Likewise.
17461         (emit_move_multi_word, store_constructor): Likewise.
17462         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
17463         (thread_prologue_and_epilogue_insns): Likewise.
17464         * lower-subreg.c (resolve_simple_move): Likewise.
17465         * optabs.c (widen_operand, expand_binop): Likewise.
17466         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
17467         * reload.c (find_reloads): Likewise.
17468         * reload1.c (eliminate_regs_in_insn): Likewise.
17469         * stmt.c (expand_nl_goto_receiver): Likewise.
17470         * config/alpha/alpha.md (builtin_longjmp): Likewise.
17471         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
17472         * config/arm/arm.c (arm_load_pic_register): Likewise.
17473         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
17474         * config/arm/arm.md (untyped_return): Likewise.
17475         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
17476         * config/avr/avr.c (expand_prologue): Likewise.
17477         * config/bfin/bfin.c (do_unlink): Likewise.
17478         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
17479         * config/cris/cris.c (cris_expand_prologue): Likewise.
17480         * config/darwin.c (machopic_indirect_data_reference): Likewise.
17481         (machopic_legitimize_pic_address): Likewise.
17482         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
17483         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
17484         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
17485         (ix86_expand_convert_uns_didf_sse): Likewise.
17486         (ix86_expand_vector_init_general): Likewise.
17487         * config/ia64/ia64.md (eh_epilogue): Likewise.
17488         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
17489         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
17490         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
17491         (config/iq2000/iq2000.c): Likewise.
17492         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
17493         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
17494         (builtin_longjmp): Likewise.
17495         * config/mn10300/mn10300.md (call, call_value): Likewise.
17496         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
17497         * config/pdp11/pdp11.md (abshi2): Likewise.
17498         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
17499         * config/s390/s390.c (s390_emit_prologue): Likewise.
17500         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
17501         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
17502         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
17503         * config/sh/sh.c (prepare_move_operands): Likewise.
17504         (output_stack_adjust, sh_expand_epilogue): Likewise.
17505         (sh_set_return_address, sh_expand_t_scc): Likewise.
17506         * config/sparc/sparc.c (load_pic_register): Likewise.
17507         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
17508         * config/spu/spu.c (spu_expand_epilogue): Likewise.
17509         * config/v850/v850.c (expand_epilogue): Likewise.
17511 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
17513         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
17514         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
17515         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
17516         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
17517         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
17518         stack pointer register.
17519         (output_movhi): Remove code for interrupt specific writing to the
17520         stack pointer register.
17522 2008-05-31  Richard Guenther  <rguenther@suse.de>
17524         PR tree-optimization/34244
17525         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
17526         (tree_expr_nonzero_warnv_p): Likewise.
17527         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
17528         ssa_name_nonnegative_p.
17529         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
17530         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
17531         not tree_expr_nonzero_warnv_p.
17533         PR tree-optimization/36262
17534         Revert
17535         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
17537         PR tree-optimization/34244
17538         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
17539         (record_numbers_of_iterations): New function.
17540         (execute_vrp): Cache the numbers of iterations of loops.
17541         * tree-scalar-evolution.c (scev_reset_except_niters):
17542         New function.
17543         (scev_reset): Use scev_reset_except_niters.
17544         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
17546 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
17548         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
17549         __WORKAROUND_RETS when appropriate.
17551 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
17553         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
17554         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
17555         mode iterator.
17556         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
17557         *fop_df_comm_sse insn patterns using MODEF mode iterator.
17558         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
17559         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
17560         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
17561         *fop_df_1_mixed insn patterns using MODEF mode iterator.
17562         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
17563         *fop_df_1_sse insn patterns using MODEF mode iterator.
17564         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
17565         *fop_df_1_i387 insn patterns using MODEF mode iterator.
17566         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
17567         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
17568         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
17569         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
17570         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
17571         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
17572         (*fop_xf_4_i387): Use <MODE> for mode attribute.
17573         (*fop_xf_5_i387): Ditto.
17574         (*fop_xf_6_i387): Ditto.
17576 2008-05-30  Richard Guenther  <rguenther@suse.de>
17578         * builtins.c (build_string_literal): Avoid generating
17579         a non-gimple_val result.
17581 2008-05-30  DJ Delorie  <dj@redhat.com>
17583         * exec-tool.in: Use an environment variable (private) instead of a
17584         file (shared) as a semaphore, so as to not break parallel builds.
17586 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17588         * optabs.c (maybe_encapsulate_block): Remove.
17589         (emit_libcall_block): Adjust accordingly.
17590         * optabs.h (maybe_encapsulate_block): Remove prototype.
17592         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
17593         Don't use maybe_encapsulate_block.
17595 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17597         * config/rs6000/rs6000.c (rs6000_legitimize_address,
17598         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
17599         rtx is a SYMBOL_REF before calling get_pool_constant.
17601 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
17603         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
17605 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
17607         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
17608         rather than OS names to choose INO_T_EQ definition.
17609         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
17610         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
17612 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
17614         PR target/36348
17615         * config/darwin-f.c: New.
17616         * config/t-darwin: Added rule to build darwin-f.o.
17617         * config.gcc: Defined new variable, fortran_target_objs.
17618         (*-*-darwin*): Set fortran_target_objs.
17619         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
17620         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
17621         * configure: Regenerated.
17623 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
17625         PR target/35771
17626         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
17627         canonical type if needed.
17629 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
17631         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
17633 2008-05-29  Richard Guenther  <rguenther@suse.de>
17635         PR tree-optimization/36343
17636         PR tree-optimization/36346
17637         PR tree-optimization/36347
17638         * tree-flow.h (clobber_what_p_points_to): Declare.
17639         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
17640         pointed-to variable is dereferenced is irrelevant to whether
17641         the pointer can access the pointed-to variable.
17642         (clobber_what_p_points_to): New function.
17643         * tree-ssa-alias.c (set_initial_properties): Use it.
17644         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
17645         call clobber check for NMTs.
17647 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17649         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
17650         for printing gcov_type.
17652 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17654         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
17655         and the eh region information.
17656         * value-prof.c (gimple_move_stmt_histograms): New function.
17657         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
17659 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
17661         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
17663 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
17665         * value-prof.c (tree_ic_transform): Print counts.
17666         * tree-profile.c (tree_gen_ic_func_profiler):
17667         Clear __gcov_indreict_call_callee variable to avoid misattribution
17668         of the profile.
17670 2008-05-28  Rafael Espíndola  <espindola@google.com>
17672         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
17673         invalid sharing.
17675 2008-05-28  Richard Guenther  <rguenther@suse.de>
17677         PR tree-optimization/36339
17678         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
17679         and clobbering code out of the loop.
17681 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17683         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
17684         letters defined.
17686         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
17687         s390_contiguous_bitmask_p, s390_symref_operand_p,
17688         s390_check_symref_alignment, s390_reload_larl_operand,
17689         s390_reload_symref_address): New functions.
17690         (s390_branch_condition_mnemonic): Support compare and branch
17691         instructions.
17692         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
17693         and 'W' constraints.
17694         (s390_secondary_reload): Add secondary reloads for unaligned
17695         symbol refs or symbol refs to floating point or QI/TI mode
17696         integer values.
17697         (legitimate_address_p): Accept symbol references as addresses.
17698         (s390_expand_insv): Use rotate and insert selected bits
17699         instruction for insv when building for z10.
17700         (print_operand_address): Handle symbol ref addresses.
17701         (print_operand): Output modifier 'c' added for signed byte values.
17702         (s390_encode_section_info): Mark symbol refs with
17703         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
17705         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
17706         (length attribute): RRF, RRR have 4 byte length.
17707         (FPALL, INTALL): New mode iterators added.
17708         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
17709         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
17710         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
17711         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
17712         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
17713         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
17714         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
17715         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
17716         instructions.
17717         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
17718         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
17719         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
17720         reload<INTALL:mode><P:mode>_toreg_z10,
17721         reload<FPALL:mode><P:mode>_tomem_z10,
17722         reload<FPALL:mode><P:mode>_toreg_z10,
17723         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
17724         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
17725         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
17726         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
17727         definition.
17728         (movmem, clrmem, cmpmem): New splitters added.
17730         * config/s390/predicates.md (larl_operand): Use
17731         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
17732         SYMBOL_REF_ALIGN1_P.
17733         (s390_signed_integer_comparison,
17734         s390_unsigned_integer_comparison): New predicates.
17736         * config/s390/s390-protos.h (s390_check_symref_alignment,
17737         s390_contiguous_bitmask_p, s390_reload_larl_operand,
17738         s390_reload_symref_address,
17739         s390_compare_and_branch_condition_mask): Prototypes added.
17741         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
17742         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
17743         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
17745 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17747         * config/s390/s390.c (z10_cost): New cost function for z10.
17748         (s390_handle_arch_option, override_options): Support -march=z10 switch.
17749         (s390_issue_rate): Adjust issue rate for z10.
17750         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
17751         (processor_flags): Add PF_Z10.
17752         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
17753         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
17754         * gcc/config.gcc: Add z10.
17756 2008-05-28  Richard Guenther  <rguenther@suse.de>
17758         PR tree-optimization/36291
17759         * tree-flow. h (struct gimple_df): Remove var_anns member.
17760         * tree-flow-inline.h (gimple_var_anns): Remove.
17761         (var_ann): Simplify.
17762         * tree-dfa.c (create_var_ann): Simplify.
17763         (remove_referenced_var): Clear alias info from var_anns of globals.
17764         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
17765         (delete_tree_ssa): Clear alias info from var_anns of globals.
17766         Do not free var_anns.
17767         (var_ann_eq): Remove.
17768         (var_ann_hash): Likewise.
17770 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
17772         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
17773         and loongson2f entries.
17774         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
17775         * config/mips/mips.h (processor_type): Add Loongson-2E
17776         and Loongson-2F entries.
17777         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
17778         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
17779         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
17780         * doc/invoke.texi (MIPS Options): Document loongson2e
17781         and loongson2f processor names.
17783 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17785         PR target/35767
17786         PR target/35771
17787         * config/i386/i386.c (ix86_function_arg_boundary): Use
17788         alignment of canonical type.
17789         (ix86_expand_vector_move): Check unaligned memory access for
17790         all SSE modes.
17792 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17794         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
17795         Moved to the front of file.
17797 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
17798             H.J. Lu  <hongjiu.lu@intel.com>
17800         * dwarf2out.c (current_fde): New.
17801         (add_cfi): Use it.
17802         (lookup_cfa:): Likewise.
17803         (dwarf2out_end_epilogue): Likewise.
17804         (dwarf2out_note_section_used): Likewise.
17806 2008-05-27  Michael Matz  <matz@suse.de>
17808         PR c++/27975
17809         * c.opt (Wenum-compare): New warning option.
17810         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
17812 2008-05-27  Michael Matz  <matz@suse.de>
17814         PR middle-end/36326
17815         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
17816         non-BLKmode types.
17817         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
17818         into memory as tail calls.
17820 2008-05-27  Richard Guenther  <rguenther@suse.de>
17822         PR tree-optimization/36339
17823         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
17824         pointers cause all addressable variables to be call clobbered.
17826 2008-05-27  Richard Guenther  <rguenther@suse.de>
17828         PR tree-optimization/36245
17829         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
17831 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17833         * config/s390/s390.md: Replace all occurences of the 'm'
17834         constraint with 'RT'.
17836 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17838         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
17839         definitions added.
17840         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
17841         "*movdi_64".
17842         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
17843         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
17844         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
17846 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17848         * reload.c: (find_reloads): Skip alternatives according to the
17849         "enabled" attribute. Constify the constraint variable.
17850         * recog.c (get_attr_enabled): Add default implementation.
17851         (extract_insn): Set the alternative_enabled_p array
17852         in the recog_data struct.
17853         (preprocess_constraints, constrain_operands): Skip
17854         alternatives according to the "enabled" attribute
17855         * recog.h (struct recog_data): New field alternative_enabled_p.
17856         (skip_alternative): New inline function.
17857         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
17858         (record_reg_classes): Skip alternative according to the
17859         "enabled" attribute.
17861         * doc/md.texi: Add documention for the "enabled" attribute.
17863 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17865         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
17866         * postreload.c (reload_cse_simplify_operands): Replace 'm'
17867         constraint with TARGET_MEM_CONSTRAINT.
17868         * recog.c (asm_operand_ok, preprocess_constraints,
17869         constrain_operands): Likewise.
17870         * regclass.c (record_reg_classes): Likewise.
17871         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
17872         * reload1.c (maybe_fix_stack_asms): Likewise.
17873         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
17874         * recog.h: Adjust comment.
17875         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
17876         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
17877         * doc/md.texi: Add a note to description of 'm' constraint.
17878         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
17880 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
17882         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
17883         that the bitfield is of integral type before testing its precision.
17885 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17886             Sa Liu  <saliu@de.ibm.com>
17888         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
17889         __modti3, __udivti3, __umodti3 and __udivmodti4.
17890         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
17891         that implement TImode mul and div functions.
17892         * config/spu/multi3.c: New. Implement __multi3.
17893         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
17894         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
17895         functions on SPU.
17897 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
17899         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
17900         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
17901         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
17902         tls_sysv_suffix): New mode and mode attribute iterators.
17903         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
17904         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
17905         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
17906         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
17907         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
17908         iterators.
17910 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
17912         PR tree-optimization/36329
17913         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
17914         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
17915         * cgraphbuild.c (initialize_inline_failed): Use the latter
17916         macro in lieu of the former.
17917         * ipa-inline.c (cgraph_mark_inline): Likewise.
17918         (cgraph_decide_inlining_of_small_function): Likewise.
17919         (cgraph_decide_inlining): Likewise.
17920         (cgraph_decide_inlining_incrementally): Likewise.
17922 2008-05-26  Tristan Gingold  <gingold@adacore.com>
17923             Anatoly Sokolov  <aesok@post.ru>
17925         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
17926         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
17927         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
17928         optimization for 'avr6' architecture.
17930 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
17932         PR target/34932
17933         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
17935 2008-05-26  Richard Guenther  <rguenther@suse.de>
17937         * tree-ssa-sccvn.c (expr_has_constants): Declare.
17938         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
17940 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
17942         PR middle-end/36253
17943         * caller-save.c (insert_restore): Verify alignment of spill space.
17944         (insert_save): Likewise.
17945         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
17946         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
17947         (STACK_SLOT_ALIGNMENT): Likewise.
17948         * function.c (LOCAL_ALIGNMENT): Removed.
17949         (get_stack_local_alignment): New.
17950         (assign_stack_local): Use it.  Set alignment on stack slot.
17951         (assign_stack_temp_for_type): Use get_stack_local_alignment.
17952         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
17953         (STACK_SLOT_ALIGNMENT): New.
17954         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
17955         stack slot in XFmode.
17957         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
17959 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
17961         PR/36321
17962         * config/i386/i386.md (allocate_stack_worker_64): Make sure
17963         argument operand in rax isn't removed.
17965 2008-05-26  Richard Guenther  <rguenther@suse.de>
17967         PR middle-end/36300
17968         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
17969         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
17971 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17973         PR bootstrap/36331
17974         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
17976 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
17978         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
17979         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
17981 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17983         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
17984         build a trampoline if we don't want one.
17985         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
17986         return zero for nested functions if we don't want a trampoline.
17988 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17990         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
17992 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17994         PR fortran/18428
17995         * c.opt: Removed undocumented option '-lang-fortran'.
17996         * c-common.h: Removed global variable 'lang_fortran'.
17997         * c-opts.c (c_common_handle_option): Removed code to handle
17998         option '-lang-fortran'. Updated includes.
17999         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
18000         definition of '__GFORTRAN__'.
18001         (define__GNUC__): Reimplemented to use BASEVER and
18002         cpp_define_formatted.
18003         (builtin_define_with_value_n): Removed.
18004         * c-incpath.h: Renamed to ...
18005         * incpath.h: ... this.
18006         * c-incpath.c: Renamed to ...
18007         * incpath.c: ... this. Updated includes.
18008         * fix-header.c: Updated includes.
18009         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
18010         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
18011         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
18013 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
18015         * tree.h: Update the table of flags used on tree nodes.
18016         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
18017         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
18018         (FORCED_LABEL): Add access check.
18019         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
18020         (ASM_INPUT_P): Likewise.
18021         (ASM_VOLATILE_P): Likewise.
18022         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
18023         (OMP_SECTION_LAST): Access private_flag directly.
18024         (OMP_RETURN_NOWAIT): Likewise.
18025         (OMP_PARALLEL_COMBINED): Likewise.
18026         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
18027         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
18028         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
18029         deprecated_flag directly.
18031 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18033         * final.c (frame_pointer_needed): Removed.
18034         * flags.h (frame_pointer_needed): Likewise.
18036         * function.h (rtl_data): Add frame_pointer_needed.
18037         (frame_pointer_needed): New.
18039 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
18041         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
18043 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
18045         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
18046         SRC is a REG.
18048 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
18050         * c-common.c (strip_array_types): Move function to..
18051         * tree.c: ..here.
18052         (get_inner_array_type): Delete.
18053         * c-common.h (strip_array_types): Move declaration to..
18054         * tree.h: ..here.
18055         (get_inner_array_type): Delete.
18056         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
18057         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
18058         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
18059         * config/pa/pa.c (emit_move_sequence): Likewise.
18061 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18063         * config/i386/i386.md (*sse_prologue_save_insn): Set length
18064         attribute to 34.
18066 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
18068         * function.c: Include target hook for nonlocal_goto frame value.
18070 2008-05-24  Richard Guenther  <rguenther@suse.de>
18072         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
18073         variable can be only accessed through a pointer or a union.
18075 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18077         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
18078         * doc/extend.texi: Likewise.
18080 2008-05-23  DJ Delorie  <dj@redhat.com>
18082         * config/m32c/jump.md (untyped_call): Add.
18084         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
18085         for A24 to PSImode.
18086         (m32c_address_cost): Detail costs for indirect offsets.
18088 2008-05-23  Rafael Espíndola  <espindola@google.com>
18090         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
18091         if a node is a SUBREG.
18092         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
18093         is a SUBREG.
18095 2008-05-23  Paul Brook  <paul@codesourcery.com>
18096             Carlos O'Donell  <carlos@codesourcery.com>
18098         * doc/extend.texi: Clarify use of __attribute__((naked)).
18099         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
18100         * target.h (gcc_target): Add allocate_stack_slots_for_args.
18101         * function.c (use_register_for_decl): Use
18102         targetm.calls.allocate_stack_slots_for_args.
18103         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
18104         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
18105         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
18107 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
18109         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
18111 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
18113         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
18114         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
18115         is only rounded once.
18117 2008-05-23  Richard Guenther  <rguenther@suse.de>
18119         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
18121 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
18122             Jakub Jelinek  <jakub@redhat.com>
18124         PR target/36079
18125         * configure.ac: Handle --enable-cld.
18126         * configure: Regenerated.
18127         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
18128         * config/i386/i386.h (struct machine_function): Add needs_cld field.
18129         (ix86_current_function_needs_cld): New define.
18130         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
18131         (cld): New isns pattern.
18132         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
18133         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
18134         * config/i386/i386.opt (mcld): New option.
18135         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
18136         TARGET_CLD and ix86_current_function_needs_cld.
18137         (override_options): Use -mcld by default for 32-bit code if
18138         USE_IX86_CLD.
18140         * doc/install.texi (Options specification): Document --enable-cld.
18141         * doc/invoke.texi (Machine Dependent Options)
18142         [i386 and x86-64 Options]: Add -mcld option.
18143         (Intel 386 and AMD x86-64 Options): Document -mcld option.
18145 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
18146         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
18147         (return_in_memory_64): Likewise.
18148         (return_in_memory_ms_64): Likewise.
18150 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18152         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
18153         * builtins.c (fold_builtin_fpclassify): New.
18154         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
18155         * builtins.def (BUILT_IN_FPCLASSIFY): New.
18156         * c-common.c (handle_type_generic_attribute): Adjust to accept
18157         fixed arguments before an elipsis.
18158         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
18159         * doc/extend.texi: Document __builtin_fpclassify.
18161 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
18163         * omp-low.c (gate_expand_omp_ssa): Remove.
18164         (pass_expand_omp_ssa): Remove.
18165         (gate_expand_omp): Do not check for flag_openmp_ssa.
18166         * common.opt (-fopenmp-ssa): Remove.
18167         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
18169 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
18171         * config/sh/sh.opt (mfixed-range): New option.
18172         * config/sh/sh-protos.h (sh_fix_range): Declare.
18173         * config/sh/sh.c (sh_fix_range): New function.
18174         * config/sh/sh.h (sh_fixed_range_str): Declare.
18175         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
18176         is not empty.
18177         * doc/invoke.texi (SH Options): Document -mfixed-range.
18179 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
18181         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
18182         it before the redeclaration.
18184 2008-05-22  Anatoly Sokolov <aesok@post.ru>
18186         * config/avr/avr.c (get_sequence_length): Add new function.
18187         (expand_prologue, expand_epilogue): Remove duplicate code.
18189 2008-05-22  Rafael Espíndola  <espindola@google.com>
18191         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
18192         sharing.
18194 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
18196         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
18197         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
18199         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
18200         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
18201         (vect_update_misalignment_for_peel): Likewise.
18202         (vector_alignment_reachable_p): Likewise.
18203         * tree-vect-transform.c (vectorizable_load): Likewise.
18204         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
18205         (get_vectype_for_scalar_type): Pass mode of scalar_type
18206         to UNITS_PER_SIMD_WORD.
18208         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
18209         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
18210         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
18211         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
18212         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
18214 2008-05-22  Ira Rosen  <irar@il.ibm.com>
18216         PR tree-optimization/36293
18217         * tree-vect-transform.c (vect_transform_strided_load): Don't check
18218         if the first load must be skipped because of a gap.
18220 2008-05-22  Richard Guenther  <rguenther@suse.de>
18222         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
18223         more cases of offset disambiguation that is possible if
18224         strict-aliasing rules apply.
18225         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
18226         for basic offset and type-based disambiguation.
18228 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18230         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
18231         ix86_expand_vector_set on V16QImode for SSE4.1.
18233 2008-05-21  Tom Tromey  <tromey@redhat.com>
18235         * c.opt (Wimport): Mark as undocumented.
18236         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
18237         -Wno-import.
18238         (Warning Options): Likewise.
18239         * doc/cppopts.texi: Don't mention -Wimport.
18241 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
18243         PR tree-optimization/36287
18244         PR tree-optimization/36286
18245         * lambda-code.c (build_access_matrix): Do not use the loop->num
18246         for computing the number of induction variables: use the loop depth
18247         instead.
18249 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
18251         PR/36280
18252         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
18253         option -f(no-)leading-underscore.
18255 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18257         * config/i386/i386.c (ix86_expand_vector_init_general): Use
18258         GET_MODE_NUNITS (mode).
18260 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
18262         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
18263         (-mmulhw): Add 464 to description.
18264         (-mdlmzb): Likewise.
18265         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
18266         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
18267         464fp entries.
18268         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
18269         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
18270         * config/rs6000/rs6000.md: Update comments for 464.
18272 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
18274         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
18276 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18278         * config/i386/sse.md (vec_extractv4sf): Removed.
18279         (vec_extractv2df): Likewise.
18280         (vec_extractv2di): Likewise.
18281         (vec_extractv4si): Likewise.
18282         (vec_extractv8hi): Likewise.
18283         (vec_extractv16qi): Likewise.
18284         (vec_extract<mode>): New.
18286 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18288         * config/i386/sse.md (vec_setv4sf): Removed.
18289         (vec_setv2df): Likewise.
18290         (vec_setv2di): Likewise.
18291         (vec_setv4si): Likewise.
18292         (vec_setv8hi): Likewise.
18293         (vec_setv16qi): Likewise.
18294         (vec_set<mode>): New.
18296 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18298         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
18299         goto for vec_concat and vec_interleave.
18301 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18303         * config/i386/sse.md (vec_initv4sf): Removed.
18304         (vec_initv2df): Likewise.
18305         (vec_initv2di): Likewise.
18306         (vec_initv4si): Likewise.
18307         (vec_initv8hi): Likewise.
18308         (vec_initv16qi): Likewise.
18309         (vec_init<mode>): New.
18311 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
18313         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
18315 2008-05-21  Tom Tromey  <tromey@redhat.com>
18317         * ggc-zone.c (lookup_page_table_if_allocated): New function.
18318         (zone_find_object_offset): Likewise.
18319         (gt_ggc_m_S): Likewise.
18320         (highest_bit): Likewise.
18321         * ggc-page.c (gt_ggc_m_S): New function.
18322         * stringpool.c (string_stack): Remove.
18323         (init_stringpool): Update.
18324         (ggc_alloc_string): Use ggc_alloc.
18325         (maybe_delete_ident): New function.
18326         (ggc_purge_stringpool): Likewise.
18327         (gt_ggc_m_S): Remove.
18328         * ggc-common.c (ggc_protect_identifiers): New global.
18329         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
18330         ggc_protect_identifiers.
18331         * ggc.h (ggc_protect_identifiers): Declare.
18332         (gt_ggc_m_S): Update.
18333         (ggc_purge_stringpool): Declare.
18334         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
18335         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
18336         special case.
18337         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
18339 2008-05-21  David S. Miller  <davem@davemloft.net>
18341         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
18342         tmake_file.
18344 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
18346         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
18347         once finished.
18349 2008-05-20  David Daney  <ddaney@avtrex.com>
18351         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
18352         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
18353         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
18354         UNSPEC_UPDATE_GOT_VERSION): Renumber.
18355         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
18356         (atomic_hiqi_op): New define_code_iterator.
18357         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
18358         mips_expand_compare_and_swap_12.
18359         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
18360         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
18361         (sync_<optab><mode>, sync_old_<optab><mode>,
18362         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
18363         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
18364         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
18365         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
18366         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
18367         (test_and_set_12): New insn.
18368         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
18369         sync_new_<optab><mode>, sync_old_nand<mode>,
18370         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
18371         clobber to operand 0 for SI and DI mode insns.
18372         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
18373         mips_gen_fn_4): New typedefs.
18374         (mips_gen_fn_ptrs): Define new union type.
18375         (mips_expand_compare_and_swap_12): Remove declaration.
18376         (mips_expand_atomic_qihi): Declare function.
18377         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
18378         (mips_expand_atomic_qihi): ... this.  Use new generator function
18379         parameter.
18380         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
18381         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
18382         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
18383         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
18384         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
18385         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
18386         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
18387         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
18388         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
18389         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
18390         New macros.
18392 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
18394         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
18395         the missing break.
18397 2008-05-20  Anatoly Sokolov <aesok@post.ru>
18399         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
18400         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
18401         (avr_attribute_table): Add 'OS_main' function attribute.
18402         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
18403         functions with 'OS_main' attribute.
18405 2008-05-20  Richard Guenther  <rguenther@suse.de>
18407         PR tree-optimization/35204
18408         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
18409         helper, split out from ...
18410         (DFS): ... here.  Make the DFS walk non-recursive.
18412 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
18413             Jan Sjodin  <jan.sjodin@amd.com>
18415         PR tree-optimization/36181
18416         * tree-parloops.c (loop_has_vector_phi_nodes): New.
18417         (parallelize_loops): Don't parallelize when the loop has vector
18418         phi nodes.
18420 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18421             Sebastian Pop  <sebastian.pop@amd.com>
18423         * tree-loop-linear.c (gather_interchange_stats): Look in the access
18424         matrix, and never look at the tree representation of the memory
18425         accesses.
18426         (linear_transform_loops): Computes parameters and access matrices.
18427         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
18428         when fails.
18429         (access_matrix_get_index_for_parameter): New.
18430         * tree-data-ref.h (struct access_matrix): New.
18431         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
18432         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
18433         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
18434         am_vector_index_for_loop): New.
18435         (struct data_reference): Add field access_matrix.
18436         (DR_ACCESS_MATRIX): New.
18437         (compute_data_dependences_for_loop): Update declaration.
18438         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
18439         * lambda.h (lambda_vector_vec_p): Declared.
18440         * lambda-code.c: Depend on pointer-set.h.
18441         (lambda_collect_parameters_from_af, lambda_collect_parameters,
18442         av_for_af_base, av_for_af, build_access_matrix,
18443         lambda_compute_access_matrices): New.
18444         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
18446 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
18448         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
18449         $SOURCEDIR/include.
18451 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18452             Sebastian Pop  <sebastian.pop@amd.com>
18454         PR tree-optimization/36206
18455         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
18456         FOLD_CONVERSIONS.
18457         (instantiate_scev_1): Rename flags to fold_conversions.
18458         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
18459         outeside instantiation_loop.
18460         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
18461         (evolution_function_is_affine_or_constant_p): Removed.
18462         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
18463         instantiate_scev.
18464         (analyze_siv_subscript): Pass in the loop nest number.
18465         Call evolution_function_is_affine_in_loop instead of
18466         evolution_function_is_affine_p.
18467         (analyze_overlapping_iterations): Pass in the loop nest number.
18469 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18470             Sebastian Pop  <sebastian.pop@amd.com>
18472         PR tree-optimization/36206
18473         * tree-chrec.h (chrec_fold_op): New.
18474         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
18475         and other trees.
18477 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
18479         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
18480         (DIRS_EQ): New.
18481         (remove_duplicates): Do not set inode on non-inode systems.
18482         Use DIRS_EQ.
18484 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
18486         * config.gcc (tm_file): Update comments about relative pathnames.
18488 2008-05-20  Richard Guenther  <rguenther@suse.de>
18490         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
18491         * tree-ssa-sccvn.c (process_scc): Likewise.
18492         * tree-ssa-sink.c (execute_sink_code): Likewise.
18493         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
18494         * tree-vrp.c (process_assert_insertions): Likewise.
18495         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
18496         (perform_tree_ssa_dce): Likewise.
18497         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
18498         (dump_dominator_optimization_stats): Likewise.
18499         * tree-vectorizer.c (vectorize_loops): Likewise.
18501 2008-05-20  Richard Guenther  <rguenther@suse.de>
18503         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
18505 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
18507         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
18508         (ix86_i386elf_return_in_memory): Likewise.
18509         (ix86_i386interix_return_in_memory): Likewise.
18510         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
18511         (SUBTARGET_RETURN_IN_MEMORY): New.
18512         * config/i386/i386elf.h: Likewise.
18513         * config/i386/ptx4-i.h: Likewise.
18514         * config/i386/sol2-10.h: Likewise.
18515         * config/i386/sysv4.h: Likewise.
18516         * config/i386/vx-common.h: Likewise.
18517         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
18518         * config/i386/i386.c (ix86_return_in_memory): Made static and
18519         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
18520         (ix86_i386elf_return_in_memory): Removed.
18521         (ix86_i386interix_return_in_memory): Removed.
18522         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
18523         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
18525 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
18527         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
18529 2008-05-19  Xinliang David Li  <davidxl@google.com>
18531         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
18532         * opts.c: Ditto.
18533         * common.opt: Ditto.
18534         * doc/invoke.texi: Ditto.
18536 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
18538         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
18539         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
18541 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
18543         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
18544         sizes of operand array from 8/4 to 4/2.
18545         (ix86_expand_vector_init_general): Change size of operand array
18546         from 32 to 16.  Remove op0, op1 and half_mode.
18548 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
18550         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
18551         (ix86_expand_vector_init_interleave): Likewise.
18552         (ix86_expand_vector_init_general): Use them.  Assert
18553         word_mode == SImode when n_words == 4.
18555 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
18557         * config/i386/i386.c (ix86_secondary_reload): New static function.
18558         (TARGET_SECONDARY_RELOAD): New define.
18559         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
18560         * config/i386/i386.md (reload_outqi): Remove.
18562 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18564         PR middle-end/35509
18565         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
18566         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
18567         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
18568         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
18569         (fold_builtin_1): Likewise.
18570         * builtins.def (BUILT_IN_ISINF_SIGN): New.
18571         c-common.c (check_builtin_function_arguments): Handle
18572         BUILT_IN_ISINF_SIGN.
18573         * doc/extend.texi: Document __builtin_isinf_sign.
18574         * fold-const.c (operand_equal_p): Handle COND_EXPR.
18576 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
18578         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
18579         EH cleanup at the end of the pass, search for those that have been
18580         turned into forwarder blocks and do the cleanup on their successor.
18582 2008-05-18  Richard Guenther  <rguenther@suse.de>
18584         * tree-cfg.c (verify_gimple_expr): Allow conversions from
18585         pointers to sizetype and vice versa.
18587 2008-05-18 Xinliang David Li   <davidxl@google.com>
18589         * gcc/tree-ssa-dce.c: Coding style fix.
18590         (check_pow): Documentation comment.
18591         (check_log): Documenation comment. Coding style fix.
18592         (is_unnecessary_except_errno_call): Ditto.
18593         (gen_conditions_for_pow): Ditto.
18594         (gen_conditions_for_log): Ditto.
18595         (gen_shrink_wrap_conditions): Ditto.
18596         (shrink_wrap_one_built_in_calls): Ditto.
18597         * gcc/doc/invoke.texi: Better documentation string.
18598         * ChangeLog: Fix wrong change log entries from
18599         May 17 checkin on function call DCE.
18601 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
18603         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
18605 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
18607         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
18608         * df-problems.c (simulation routines): Fixed block comment to
18609         properly say how to add forwards scanning functions.
18611 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18613         * tree-inline.c (setup_one_parameter): Remove dead code.
18615 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18617         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
18618         a BIT_AND_EXPR only for an INTEGER_TYPE.
18620 2008-05-17 Xinliang David Li   <davidxl@google.com>
18622         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
18623         (check_pow, check_log, is_unnecessary_except_errno_call): New
18624         functions to check for eliminating math functions that are pure
18625         except for setting errno.
18626         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
18627         general condition expressions for shrink-wrapping pow/log calls.
18628         (gen_shrink_wrap_conditions): Ditto.
18629         (shrink_wrap_one_built_in_call): Ditto.
18630         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
18631         (mark_operand_necessary): If debugging, output if OP is necessary.
18632         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
18633         unnecessary.
18634         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
18635         opt level >= 2.
18636         * gcc/common.opt: New user flag -ftree-builtin-dce.
18637         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
18639 2008-05-16  David S. Miller  <davem@davemloft.net>
18641         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
18642         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18644 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
18646         PR target/36246
18647         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
18649 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18651         * ifcvt.c (dead_or_predicable): Rename
18652         df_simulate_one_insn_backwards to df_simulate_one_insn.
18653         * recog.c (peephole2_optimize): Ditto.
18654         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
18655         Ditto.
18656         * df.h: Rename df_simulate_one_insn_backwards to
18657         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
18658         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
18659         scanning of defs and uses.
18660         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
18661         (df_simulate_one_insn_forwards): Removed.
18663 2008-05-16  Doug Kwan  <dougkwan@google.com>
18665         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
18666         QNaN & SNaN.
18667         (real_from_string): Handle NaNs and Inf as approriate.
18669 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18671         * doc/gty.texi (Source Files Containing Type Information): Note
18672         that headers should appear first in the gtfiles list.
18674 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18676         * tree.def (COND_EXEC): Properly documented this code.
18678 2008-05-16  Diego Novillo  <dnovillo@google.com>
18680         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
18681         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
18682         the new field.
18684 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18686         * tree-ssa-dse (max_stmt_uid): Removed.
18687         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
18688         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
18689         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
18690         * function.h (cfun.last_stmt_uid): New field.
18691         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
18692         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
18693         New functions.
18694         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
18695         (create_stmt_ann): Initialize the ann->uid field.
18696         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
18697         with new calls.
18698         * tree-flow.h (renumber_gimple_stmt_uids): New function.
18700 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18702         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
18703         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
18704         (init_empty_tree_cfg): Call it.
18706 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18708         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
18709         Update all users.
18711 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18713         * doc/invoke.text (-fdump-tree-*-verbose): New option.
18714         * tree-dump.c (dump_options): New verbose option.
18715         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
18716         Add verbose dump.
18717         * tree-pass.h (TDF_VERBOSE): New dump flag.
18718         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
18719         (tree-flow.h): Added include.
18720         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
18722 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
18724         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
18726         From Jie Zhang  <jie.zhang@analog.com>
18727         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18728         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
18729         mcpu=bf561-none and mcpu=bf561-0.2.
18730         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18731         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18732         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18733         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18734         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
18735         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
18736         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
18737         option.
18738         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
18739         (cputype_selected): Remove.
18740         (bfin_handle_option): Don't use cputype_selected.
18741         (override_options): When no mcpu option, enable all workarounds.
18742         Don't use bfin_workarounds.
18743         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
18744         processor type.
18745         (DEFAULT_CPU_TYPE): Don't define.
18747 2008-05-16  Richard Guenther  <rguenther@suse.de>
18749         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
18750         on deletion of the last stmt.
18752 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18754         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
18755         V8HImode for SSE2 and V16QImode for SSE4.1.
18757 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
18759         * cgraph.h (compute_inline_parameters): Made public.
18760         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
18761         variable_generate_summary, function_write_summary,
18762         variable_write_summary, variable_read_summary.  Added generate_summary,
18763         write_summary, read_summary.
18764         * cgraphunit.c (cgraph_process_new_functions): Changed call from
18765         pass_ipa_inline.function_generate_summary, to
18766         compute_inline_parameters.
18767         * ipa-inline.c (compute_inline_parameters): Made public and added
18768         node parameter.
18769         (compute_inline_parameters_for_current): New function.
18770         (pass_inline_param): Now calls compute_inline_parameters_for_current.
18771         (inline_generate_summary): Removed parameter and made to loop over
18772         all cgraph nodes.
18773         (pass_ipa_inline): Updated for new IPA_PASS structure.
18774         * passes.c (execute_ipa_summary_passes): Now is called once per
18775         pass rather than once per node*pass.
18777 2008-05-15  Anatoly Sokolov <aesok@post.ru>
18779         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
18780         avr_have_mul_p, avr_asm_only_p): Remove variables.
18781         (avr_override_options): Remove initialization of removed variables.
18782         (avr_file_start):  Convert removed variables to fields of
18783         'struct base_arch_s *avr_current_arch'.
18784         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
18785         (AVR_HAVE_MUL): (Ditto.).
18786         (AVR_HAVE_MOVW): (Ditto.).
18787         (AVR_HAVE_LPMX): (Ditto.).
18788         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
18789         avr_asm_only_p): Remove declaration.
18791 2008-05-15  Diego Novillo  <dnovillo@google.com>
18793         * config/arm/arm.c (arm_return_in_memory): Fix return type.
18794         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
18796 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
18798         PR middle-end/36194
18799         * combine.c (check_conversion): Rename back to check_promoted_subreg.
18800         Don't call record_truncated_value from here.
18801         (record_truncated_value): Turn it into a for_each_rtx callback.
18802         (record_truncated_values): New function.
18803         (combine_instructions): Call note_uses with record_truncated_values.
18804         Change name of check_conversion to check_promoted_subreg.
18806 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
18808         * doc/sourcebuild.texi: Document support for torture tests.
18810 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18812         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
18813         to alternative 4 of operand 2.
18815 2008-05-15  Richard Guenther  <rguenther@suse.de>
18817         * tree-pass.h (current_pass): Declare.
18818         (get_pass_for_id): Likewise.
18819         * passes.c (passes_by_id, passes_by_id_size): New globals.
18820         (set_pass_for_id): New function.
18821         (get_pass_for_id): Likewise.
18822         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
18823         (execute_function_todo): Flush per function statistics.
18824         * toplev.c (compile_file): Init statistics.
18825         (general_init): Do early statistics initialization.
18826         (finalize): Finish statistics.
18827         * statistics.h (statistics_early_init): Declare.
18828         (statistics_init): Likewise.
18829         (statistics_fini): Likewise.
18830         (statistics_fini_pass): Likewise.
18831         (statistics_counter_event): Likewise.
18832         (statistics_histogram_event): Likewise.
18833         * statistics.c: New file.
18834         * Makefile.in (OBJS-common): Add statistics.o.
18835         (statistics.o): Add dependencies.
18836         * doc/invoke.texi (-fdump-statistics): Document.
18838         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
18839         (insert): Likewise.
18840         (execute_pre): Use statistics_counter_event.
18841         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
18842         (substitute_and_fold): Increment it.  Use statistics_counter_event.
18844 2008-05-15  Diego Novillo  <dnovillo@google.com>
18846         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
18848         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
18849         * tree-ssa-alias.c (new_type_alias): Remove references to
18850         sub-variables from comment.
18851         * tree-ssa-operands.c (swap_tree_operands): Likewise.
18853 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18855         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
18856         attribute to 1 only for insertps alternative.
18858 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18860         * config/bfin/bfin.md (loadbytes): New pattern.
18861         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
18862         (bfin_init_builtins): Initialize it.
18863         (bdesc_1arg): Add it.
18865 2008-05-15  Sa Liu  <saliu@de.ibm.com>
18867         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
18868         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
18869         * testsuite/lib/target-supports.exp: Add
18870         check_effective_target_fortran_integer_16.
18872 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18874         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
18875         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
18876         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
18877         (TARGET_RETURN_IN_MEMORY): Define.
18879 2008-05-15  Richard Guenther  <rguenther@suse.de>
18881         PR middle-end/36244
18882         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
18883         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
18884         represent unmodifiable vars.
18886 2008-05-15  Richard Guenther  <rguenther@suse.de>
18888         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
18889         INDIRECT_REF and TARGET_MEM_REF.
18890         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
18891         TARGET_MEM_REF.
18893 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18894             H.J. Lu  <hongjiu.lu@intel.com>
18896         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
18897         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
18898         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
18899         insn alternatives.  Add missing alternatives.
18900         (*vec_concatv2di_rex64_sse4_1): Likewise.
18901         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
18902         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
18903         Require TARGET_SSE.
18905 2008-05-15  Richard Guenther  <rguenther@suse.de>
18907         PR tree-optimization/36009
18908         PR tree-optimization/36204
18909         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
18910         (determine_invariantness_stmt): Record the loop a store is
18911         always executed in.
18912         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
18913         dependency.
18915 2008-05-15  Richard Guenther  <rguenther@suse.de>
18917         PR tree-optimization/34330
18918         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
18919         through the pointer will alias the SMT.
18921 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
18923         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
18925 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
18927         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
18929 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18930             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18932         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
18933         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
18934         (vashl_optab): New optab for vector/vector shifts.
18935         (vashr_optab): Ditto.
18936         (vlshr_optab): Ditto.
18937         (vrotl_optab): Ditto.
18938         (vrotr_optab): Ditto.
18939         (optab_subtype): New enum for optab_for_tree_code call.
18940         (optab_for_tree_code): Add enum optab_subtype argument.
18942         * optabs.c (optab_for_tree_code): Take an additional argument to
18943         distinguish between a vector shift by a scalar and vector shift by
18944         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
18945         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
18946         vector shift by a vector.
18947         (expand_widen_pattern_expr): Pass additional argument to
18948         optab_for_tree_code.
18950         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
18951         vrotl_optab, vrotr_optab.
18953         * expr.c (expand_expr_real_1): Update calls to
18954         optab_for_tree_code to distinguish between vector shifted by a
18955         scalar and vector shifted by a vector.
18956         * tree-vectorizer.c (supportable_widening_operation): Ditto.
18957         (supportable_narrowing_operation): Ditto.
18958         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
18959         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
18960         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
18961         (vect_create_epilog_for_reduction): Ditto.
18962         (vectorizable_reduction): Ditto.
18963         (vectorizable_operation): Ditto.
18964         (vect_strided_store_supported): Ditto.
18965         (vect_strided_load_supported): Ditto.
18966         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18967         * expmed.c (expand_shift): Ditto.
18969         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
18970         scalar type.
18971         (ashr@var{m}3): Ditto.
18972         (vashl@var{m}3): Document new vector/vector shift standard name.
18973         (vashr@var{m}3): Ditto.
18974         (vlshr@var{m}3): Ditto.
18975         (vrotl@var{m}3): Ditto.
18976         (vrotr@var{m}3): Ditto.
18978         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
18979         (PPERM_INVERT): Ditto.
18980         (PPERM_REVERSE): Ditto.
18981         (PPERM_REV_INV): Ditto.
18982         (PPERM_ZERO): Ditto.
18983         (PPERM_ONES): Ditto.
18984         (PPERM_SIGN): Ditto.
18985         (PPERM_INV_SIGN): Ditto.
18986         (PPERM_SRC1): Ditto.
18987         (PPERM_SRC2): Ditto.
18989         * config/i386/sse.md (mulv2di3): Add SSE5 support.
18990         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
18991         allows a memory operand to be the value being added, and split it
18992         to improve vectorization.
18993         (sse5_pmacsdqh_mem): Ditto.
18994         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
18995         (sse5_mulv2div2di3_high): Ditto.
18996         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
18997         (vec_pack_trunc_v4si): Ditto.
18998         (vec_pack_trunc_v2di): Ditto.
18999         (sse5_pcmov_<mode>): Remove code that tried to use use
19000         andps/andnps instead of pcmov.
19001         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
19002         pmacsdqh instructions.
19003         (vec_widen_smult_lo_v4si): Ditto.
19005         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
19006         (PPERM_INVERT): Ditto.
19007         (PPERM_REVERSE): Ditto.
19008         (PPERM_REV_INV): Ditto.
19009         (PPERM_ZERO): Ditto.
19010         (PPERM_ONES): Ditto.
19011         (PPERM_SIGN): Ditto.
19012         (PPERM_INV_SIGN): Ditto.
19013         (PPERM_SRC1): Ditto.
19014         (PPERM_SRC2): Ditto.
19015         (ix86_expand_sse_movcc): Move the SSE5 test after the if
19016         true/false tests.
19017         (ix86_expand_int_vcond): If SSE5 generate all possible integer
19018         comparisons.
19019         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
19020         says ignore whether the last reference is a memory operand.
19022 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
19023             Paolo Bonzini <bonzini at gnu dot org>
19025         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
19026         shift patterns.
19028         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
19029         (vlshr<mode>3): Rename from vlshr<mode>3.
19030         (vashr<mode>3): Rename from vashr<mode>3.
19031         (mulv4sf3): Change the names of vector shift patterns.
19032         (mulv4si3): Ditto.
19033         (negv4sf2): Ditt.
19035         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
19036         shift insns.
19038         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
19039         (SI_SHLHI): Ditto.
19040         (SI_SHL): Ditto.
19041         (SI_SHLI): Ditto.
19042         (SI_ROTH): Ditto.
19043         (SI_ROTHI): Ditto.
19044         (SI_ROT): Ditto.
19045         (SI_ROTI): Ditto.
19046         (SPU_RL_0): Ditto.
19047         (SPU_RL_1): Ditto.
19048         (SPU_RL_2): Ditto.
19049         (SPU_RL_3): Ditto.
19050         (SPU_RL_4): Ditto.
19051         (SPU_RL_5): Ditto.
19052         (SPU_RL_6): Ditto.
19053         (SPU_RL_7): Ditto.
19054         (SPU_SL_0): Ditto.
19055         (SPU_SL_1): Ditto.
19056         (SPU_SL_2): Ditto.
19057         (SPU_SL_3): Ditto.
19058         (SPU_SL_4): Ditto.
19059         (SPU_SL_5): Ditto.
19060         (SPU_SL_6): Ditto.
19061         (SPU_SL_7): Ditto.
19063         * config/spu/spu.md (v): New iterator macro to add v for vector types.
19064         (floatunssidf2_internal): Change vector/vector shift names.
19065         (floatunsdidf2_internal): Ditto.
19066         (mulv8hi3): Ditto.
19067         (ashrdi3): Ditto.
19068         (ashrti3): Ditto.
19069         (cgt_df): Ditto.
19070         (cgt_v2df): Ditto.
19071         (dftsv): Ditto.
19072         (vashl<mode>3): Rename from ashl<mode>3.
19073         (vashr<mode>3): Rename from ashr<mode>3.
19074         (vlshr<mode>3): Rename from lshr<mode>3.
19075         (vrotl<mode>3): Rename from rotl<mode>3.
19077 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
19079         PR target/36224
19080         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
19081         multiply gives the wrong value when doing widening multiplies.
19082         (vec_widen_smult_lo_v4si): Ditto.
19084 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
19086         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
19087         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
19088         emit_library_call_value.
19089         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
19090         * tree.h (ECF_LIBCALL_BLOCK): Removed.
19091         * calls.c (initialize_argument_information, precompute_arguments,
19092         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
19093         (precompute_arguments): Removed flags parameter.
19094         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
19096 2008-05-14  Richard Guenther  <rguenther@suse.de>
19098         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
19099         Make sure to register the store if the use is a PHI_NODE.
19101 2008-05-14  Olivier Hainque  <hainque@adacore.com>
19103         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
19104         memory if the component is to be referenced in BLKmode according
19105         to get_inner_reference.
19107 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
19109         * calls.c (emit_library_call_value_1): Restore code clearing
19110         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
19112 2008-05-14  Olivier Hainque  <hainque@adacore.com>
19113             Nicolas Roche  <roche@adacore.com>
19115         * configure.ac: Add support for a "gcc_subdir" variable in
19116         config-lang.in, to denote a subdirectory where the language/GCC
19117         integration files are to be found.
19118         * configure: Regenerate.
19120 2008-05-14  Ira Rosen  <irar@il.ibm.com>
19122         PR tree-optimization/36098
19123         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
19124         value for the first load in the group in case of a gap.
19125         (vect_build_slp_tree): Check that there are no gaps in loads.
19127 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
19129         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
19130         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
19131         expand_copysign_bit): Change call to emit_no_conflict_block to
19132         emit_insn and remove unneeded code to construct extra args.
19133         (emit_no_conflict_block): Removed.
19134         * optabls.h: (emit_no_conflict_block): Removed.
19135         * cse.c (cse_extended_basic_block): Remove search for
19136         REG_NO_CONFLICT note.
19137         * global.c: Removed incorrect comment added in revision 117.
19138         * expr.c (convert_move): Change call to emit_no_conflict_block to
19139         emit_insn.
19140         * recog.c: Change comments so that they do not mention
19141         REG_NO_CONFLICT.
19142         * local_alloc.c (combine_regs): Removed last parameter.
19143         (no_conflict_p): Removed.
19144         (block_alloc): Removed note, no_conflict_combined_regno and set
19145         local vars. Removed all code to process REG_NO_CONFLICT blocks.
19146         (combine_regs): Removed already_dead and code to look for
19147         REG_NO_CONFLICT notes.
19148         * lower_subreg (remove_retval_note): Removed code to look for
19149         REG_NO_CONFLICT block.
19150         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
19151         (resolve_clobber): Remove code to process libcalls that have
19152         REG_NO_CONFLICT notes.
19153         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
19154         case.
19155         * combine.c (can_combine_p, distribute_notes):  Removed
19156         REG_NO_CONFLICT case.
19157         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
19158         to emit_insns.
19159         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
19160         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
19161         Ditto.
19162         * reg-notes.def (NO_CONFLICT): Removed.
19164 2008-05-14  David S. Miller  <davem@davemloft.net>
19166         * config/sparc/sparc.c (sparc_profile_hook): If
19167         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
19168         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
19169         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
19171 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
19173         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
19175 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
19177         PR target/36222
19178         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
19179         and op1 expansion before vector concat to have less live pseudos.
19181 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
19183         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
19184         ix86_expand_vector_set if supported.
19186 2008-05-13  Diego Novillo  <dnovillo@google.com>
19187             Kenneth Zadeck  <zadeck@naturalbridge.com>
19189         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
19191         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
19192         phinodes_print_statistics, init_ssanames, fini_ssanames,
19193         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
19194         release_ssa_name, release_defs, replace_ssa_name_symbol,
19195         ssanames_print_statistics): Move ...
19196         * tree-flow.h: ... here.
19197         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
19198         Use FN instead of cfun.
19199         (make_ssa_name_fn): Rename from make_ssa_name.
19200         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
19201         * tree-flow-inline.h (make_ssa_name): Move from
19202         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
19203         * omp-low.c (expand_omp_parallel):
19204         * tree-flow-inline.h (redirect_edge_var_map_result):
19205         * tree-ssa.c (init_tree_ssa): Add argument FN.
19206         Use it instead of cfun.  Update all users.
19208 2008-05-13  Tom Tromey  <tromey@redhat.com>
19210         PR preprocessor/22168:
19211         * doc/cpp.texi (Top): Update menu.
19212         (Alternatives to Wrapper #ifndef): New node.
19213         (Other Directives): Document deprecation.
19214         (Obsolete Features): Remove menu.
19215         (Assertions): Merge node into Obsolete Features.
19216         (Obsolete once-only headers): Move earlier; rename to Alternatives
19217         to Wrapper #ifndef.
19218         * doc/cppopts.texi: Update.
19219         * c.opt (Wdeprecated): Enable for C and ObjC.
19220         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
19221         (C++ Dialect Options): Move -Wno-deprecated from here to...
19222         (Warning Options): ... here.
19224 2008-05-13  Richard Guenther  <rguenther@suse.de>
19226         PR middle-end/36227
19227         * fold-const.c (fold_sign_changed_comparison): Do not allow
19228         changes in pointer-ness.
19230 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
19232         PR target/24713
19233         * config/sh/sh.c (sh_expand_prologue): Don't clear
19234         RTX_FRAME_RELATED_P for push insns.
19236 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
19238         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
19240 2008-05-12  Anatoly Sokolov <aesok@post.ru>
19242         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
19243         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
19244         Use 'machine->is_leaf' instead of 'leaf_func_p'.
19246 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
19248         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
19249         (*vec_concatv4sf_sse): This.
19250         (*sse2_concatv2si): Renamed to ...
19251         (*vec_concatv2si_sse2): This.
19252         (*sse1_concatv2si): Renamed to ...
19253         (*vec_concatv2si_sse): This.
19254         (*vec_concatv2di_rex): Renamed to ...
19255         (*vec_concatv2di_rex64): This.
19256         (*vec_concatv2si_sse4_1): New.
19257         (*vec_concatv2di_rex64_sse4_1): Likewise.
19259 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
19261         PR rtl-optimization/36111
19262         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
19263         that was created for swappable operands.
19265 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
19267         PR ada/36001
19268         * Makefile.in: Substitute GNATMAKE and GNATBIND.
19269         * configure.ac: Add call to ACX_PROG_GNAT.
19271 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
19273         * optc-gen.awk: Fix comment typo.
19275 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
19277         * pretty-print.c (pp_integer_with_precision): Use
19278         HOST_LONG_LONG_FORMAT.
19280 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
19282         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
19284 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
19286         * config/i386/i386.c (bdesc_ptest): Removed.
19287         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
19288         (bdesc_args): Add __builtin_ia32_ptestz128,
19289         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
19290         (ix86_init_mmx_sse_builtins): Updated.
19291         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
19292         (ix86_expand_builtin): Updated.
19294 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
19296         * tree-cfg.c (valid_fixed_convert_types_p): New function.
19297         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
19299 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
19301         * value-prof.c (interesting_stringop_to_profile): Do not
19302         return early for BUILT_IN_MEMPCPY.
19304 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
19306         * calls.c (expand_call): Don't use callgraph to increase
19307         preferred_stack_boundary.
19309         * cgraph.h (cgraph_rtl_info): Use unsigned on
19310         preferred_incoming_stack_boundary.
19312         * final.c (rest_of_clean_state): Use unsigned on
19313         preferred_stack_boundary.
19315 2008-05-09  Tom Tromey  <tromey@redhat.com>
19317         PR preprocessor/22231:
19318         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
19319         proceeding.
19321 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
19323         PR tree-optimization/36129
19324         * tree-ssa-ccp.c: Include value-prof.h.
19325         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
19326         built-in function was folded to a constant.
19327         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
19329 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
19330             Sebastian Pop  <sebastian.pop@amd.com>
19332         * tree-scalar-evolution.c: Document instantiate_scev.
19333         (instantiate_parameters_1): Renamed instantiate_scev_1.
19334         Don't use the same loop for instantiation_loop and evolution_loop.
19335         (instantiate_scev): New.
19336         (instantiate_parameters): Moved...
19337         (resolve_mixers): Update call to instantiate_scev_1 to pass the
19338         same loop twice.  Maintains the semantics for this function.
19339         * tree-scalar-evolution.h (instantiate_scev): Declare.
19340         (instantiate_parameters): ...here.  Now static inline.
19341         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
19342         instead of resolve_mixers.
19344 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
19346         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
19348 2008-05-09  Tomas Bily  <tbily@suse.cz>
19350         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
19351         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
19352         * tree-ssa-structalias.c (get_constraint_for): Likewise.
19353         * c-common.c (c_common_truthvalue_conversion): Likewise.
19354         * tree-object-size.c (compute_object_offset): Likewise.
19355         * tree-inline.c (estimate_num_insns_1): Likewise.
19356         * varasm.c (const_hash_1, compare_constant, copy_constant)
19357         (compute_reloc_for_constant, output_addressed_constants)
19358         (initializer_constant_valid_p): Likewise.
19359         * c-omp.c (check_omp_for_incr_expr): Likewise.
19360         * gimplify.c (gimplify_expr): Likewise.
19361         * c-typeck.c (c_finish_return): Likewise.
19362         * tree-vectorizer.c (supportable_widening_operation)
19363         (supportable_narrowing_operation): Likewise.
19364         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
19365         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
19366         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
19367         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
19368         (descr_info_loc): Likewise.
19369         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
19370         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
19371         (fold_unary): Likewise.
19372         * builtins.c (get_pointer_alignment): Likewise.
19373         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
19374         (instantiate_parameters_1): Likewise.
19375         * tree.c (expr_align, stabilize_reference): Likewise.
19376         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
19377         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
19378         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
19379         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
19380         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
19381         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
19382         Likewise.
19383         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
19384         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
19385         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
19386         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
19387         (forward_propagate_comparison)
19388         (tree_ssa_forward_propagate_single_use_vars): Likewise.
19389         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
19390         * emit-rtl.c (component_ref_for_mem_expr)
19391         (set_mem_attributes_minus_bitpos): Likewise.
19392         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
19393         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
19394         Likewise.
19395         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
19396         (build_function_call, pointer_diff, build_compound_expr)
19397         (c_finish_return): Likewise.
19398         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
19399         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
19400         Likewise.
19401         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
19402         * expr.c (is_aligning_offset): Likewise.
19403         * tree-ssa-alias.c (is_escape_site): Likewise.
19404         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
19405         (check_all_va_list_escapes): Likewise.
19406         * tree-ssa-loop-ivopts.c (determine_base_object)
19407         (determine_common_wider_type): Likewise.
19408         * dojump.c (do_jump): Likewise.
19409         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
19410         * tree-gimple.c (is_gimple_cast): Likewise.
19411         * fold-const.c (decode_field_reference)
19412         (fold_sign_changed_comparison, fold_unary, fold_comparison)
19413         (fold_binary): Likewise.
19414         * tree-ssa-alias-warnings.c (find_alias_site_helper)
19415         (already_warned_in_frontend_p): Likewise.
19416         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
19417         * tree.c (really_constant_p, get_unwidened): Likewise.
19418         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
19419         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
19420         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
19421         Likewise.
19422         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
19423         CONVERT_EXPR_P.
19424         (CONVERT_EXPR_P): Define.
19425         (CASE_CONVERT): Define.
19427 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
19429         PR middle-end/36117
19430         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
19431         (delete_unmarked_insns): When deleting a call, call
19432         delete_unreachable_blocks.
19433         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19434         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
19436 2008-05-08  Richard Guenther  <rguenther@suse.de>
19438         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
19439         (-ftree-salias): Likewise.
19440         (salias-max-implicit-fields): Remove param documentation.
19441         (salias-max-array-elements): Likewise.
19442         * tree-pass.h (pass_create_structure_vars): Remove.
19443         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
19444         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
19445         * tree-ssa-alias.c (create_structure_vars): Remove.
19446         (gate_structure_vars): Likewise.
19447         (pass_create_structure_vars): Likewise.
19448         (gate_build_alias): Likewise.
19449         (pass_build_alias): Adjust to run always and dump the function.
19450         * common.opt (ftree-salias): Hide.
19451         * passes.c (init_optimization_passes): Remove
19452         pass_create_structure_vars, adjust comment.
19453         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
19454         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
19455         * opts.c (decode_options): Do not set flag_tree_salias.
19456         (common_handle_option): Add OPT_ftree_salias to the backward
19457         compatibility section.
19459 2008-05-08  Richard Guenther  <rguenther@suse.de>
19461         * tree-flow-inline.h (var_can_have_subvars): Move ...
19462         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
19463         * tree-flow.h (var_can_have_subvars): Remove.
19464         (push_fields_onto_fieldstack): Remove.
19465         (sort_fieldstack): Likewise.
19466         (struct fieldoff): Move ...
19467         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
19468         alias_set and base_for_components fields.
19469         (sort_fieldstack): Make static.
19470         (push_fields_onto_fieldstack): Likewise.  Remove code that
19471         handles anything but RECORD_TYPEs.  Remove alias_set and
19472         base_for_components handling.
19473         (create_variable_info_for): Adjust.
19475 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
19477         * common.opt (Wframe-larger-than=): Shorten the help message
19478         to one line.
19479         * doc/invoke.texi (Wframe-larger-than=): Add more description.
19481 2008-05-08  Rafael Espíndola  <espindola@google.com>
19483         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
19484         trap.
19485         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
19486         trap and that both operands are gimple values.
19487         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
19488         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
19489         is a fp operation.
19491 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19493         * read-rtl.c (join_c_conditions): Return the first string if the
19494         two strings are equal.
19496 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19498         * gensupport.h (pred_data): Add a "num_codes" field.
19499         (add_predicate_code): Declare.
19500         * gensupport.c (add_predicate_code): New function.
19501         (std_pred_table): Add an "allows_const_p" field.
19502         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
19503         Remove the (incomplete) list of such codes from the codes field.
19504         (init_predicate_table): Use add_predicate_code.  Add all
19505         RTX_CONST_OBJs if allows_const_p is true.
19506         * genrecog.c (process_define_predicate): Use add_predicate_code.
19508 2008-05-08  David Daney  <ddaney@avtrex.com>
19509             Richard Sandiford  <rsandifo@nildram.co.uk>
19511         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
19512         special case of constant zero operands.
19513         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
19514         old and new values.  Special case constant zero values.
19515         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
19516         fails.
19517         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
19518         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
19520 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
19522         PR target/36090
19523         * simplify-rtx.c (simplify_plus_minus): Create CONST of
19524         similar RTX_CONST_OBJ before CONST_INT.
19526 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
19528         * stmt.c (expand_stack_restore): Change sa mode if needed.
19530 2008-05-08  Richard Guenther  <rguenther@suse.de>
19532         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
19533         return type to bool.
19534         (ix86_sol10_return_in_memory): Likewise.
19535         (ix86_i386elf_return_in_memory): Likewise.
19536         (ix86_i386interix_return_in_memory): Likewise.
19537         * config/i386/i386.c (ix86_return_in_memory): Likewise.
19538         (ix86_sol10_return_in_memory): Likewise.
19539         (ix86_i386elf_return_in_memory): Likewise.
19540         (ix86_i386interix_return_in_memory): Likewise.
19542 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19544         PR bootstrap/36180
19545         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
19546         fndecl argument.
19547         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
19548         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
19549         declared in front.
19551 2008-05-08  Richard Guenther  <rguenther@suse.de>
19553         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
19554         * tree-data-ref.h (struct dr_alias): Remove subvars field.
19555         (DR_SUBVARS): Remove.
19556         * tree-dfa.c (dump_subvars_for): Remove.
19557         (debug_subvars_for): Likewise.
19558         (dump_variable): Do not dump subvars.
19559         (remove_referenced_var): Do not remove subvars.
19560         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
19561         (lookup_subvars_for_var): Remove.
19562         (get_subvars_for_var): Likewise.
19563         (get_subvars_at): Likewise.
19564         (get_first_overlapping_subvar): Likewise.
19565         (overlap_subvar): Likewise.
19566         * tree-flow.h (subvar_t): Remove.
19567         (struct var_ann_d): Remove subvars field.
19568         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
19569         argument.  Remove special handling of SFTs.
19570         (compute_tag_properties): Likewise.
19571         (set_initial_properties): Likewise.
19572         (compute_call_clobbered): Likewise.
19573         (count_mem_refs): Likewise.
19574         (compute_memory_partitions): Likewise.
19575         (compute_flow_insensitive_aliasing): Likewise.
19576         (setup_pointers_and_addressables): Likewise.
19577         (new_type_alias): Likewise.
19578         (struct used_part): Remove.
19579         (used_portions): Likewise.
19580         (struct used_part_map): Likewise.
19581         (used_part_map_eq): Likewise.
19582         (used_part_map_hash): Likewise.
19583         (free_used_part_map): Likewise.
19584         (up_lookup): Likewise.
19585         (up_insert): Likewise.
19586         (get_or_create_used_part_for): Likewise.
19587         (create_sft): Likewise.
19588         (create_overlap_variables_for): Likewise.
19589         (find_used_portions): Likewise.
19590         (create_structure_vars): Likewise.
19591         * tree.def (STRUCT_FIELD_TAG): Remove.
19592         * tree.h (MTAG_P): Adjust.
19593         (struct tree_memory_tag): Remove base_for_components and
19594         unpartitionable flags.
19595         (struct tree_struct_field_tag): Remove.
19596         (SFT_PARENT_VAR): Likewise.
19597         (SFT_OFFSET): Likewise.
19598         (SFT_SIZE): Likewise.
19599         (SFT_NONADDRESSABLE_P): Likewise.
19600         (SFT_ALIAS_SET): Likewise.
19601         (SFT_UNPARTITIONABLE_P): Likewise.
19602         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
19603         (union tree_node): Remove sft field.
19604         * alias.c (get_alias_set): Remove special handling of SFTs.
19605         * print-tree.c (print_node): Remove handling of SFTs.
19606         * tree-dump.c (dequeue_and_dump): Likewise.
19607         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
19608         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
19609         * tree-predcom.c (set_alias_info): Do not set subvars.
19610         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
19611         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
19612         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
19613         (add_vars_for_offset): Remove.
19614         (add_virtual_operand): Remove special handling of SFTs.
19615         (add_call_clobber_ops): Likewise.
19616         (add_call_read_ops): Likewise.
19617         (get_asm_expr_operands): Likewise.
19618         (get_modify_stmt_operands): Likewise.
19619         (get_expr_operands): Likewise.
19620         (add_to_addressable_set): Likewise.
19621         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
19622         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
19623         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
19624         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
19625         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
19626         (tree_node_structure): Likewise.
19627         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
19628         handling of SFTs.
19629         (find_what_p_points_to): Likewise.
19631 2008-05-08  Sa Liu  <saliu@de.ibm.com>
19633         * config/spu/spu.md: Fixed subti3 pattern.
19635 2008-05-08  Richard Guenther  <rguenther@suse.de>
19637         PR middle-end/36154
19638         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
19639         sure to create a representative for trailing arrays for PTA.
19641 2008-05-08  Richard Guenther  <rguenther@suse.de>
19643         PR middle-end/36172
19644         * fold-const.c (operand_equal_p): Two objects which types
19645         differ in pointerness are not equal.
19647 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19649         * calls.c (compute_argument_block_size): Add argument tree fndecl.
19650         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
19651         (emit_library_call_value_1): Add new variable fndecl initialized by
19652         NULL_TREE. It should be the decl type of orgfun, but this information
19653         seems not to be available here, so it uses the default calling abi.
19654         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
19655         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
19656         by TARGET_RETURN_IN_MEMORY.
19657         * config/i386/i386-interix.h: Likewise.
19658         * config/i386/i386.h: Likewise.
19659         * config/i386/i386elf.h: Likewise.
19660         * config/i386/ptx4-i.h: Likewise.
19661         * config/i386/sol2-10.h: Likewise.
19662         * config/i386/sysv4.h: Likewise.
19663         * config/i386/vx-common.h: Likewise.
19664         * config/cris/cris.h: Removed #if 0 clause.
19665         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
19666         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
19667         argument.
19668         (ix86_sol10_return_in_memory): Likewise.
19669         (ix86_i386elf_return_in_memory): New.
19670         (ix86_i386interix_return_in_memory): New.
19671         * config/mt/mt-protos.h (mt_return_in_memory): New.
19672         * config/mt/mt.c: Likewise.
19673         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19674         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
19675         * config/bfin/bfin.h: Likewise.
19676         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
19677         argument.
19678         * config/bfin/bfin.c: Likewise.
19679         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19680         * config/alpha/unicosmk.h: Likewise.
19681         * config/i386/cygming.h: Likewise.
19682         * config/iq2000/iq2000.h: Likewise.
19683         * config/mips/mips.h: Likewise.
19684         * config/mn10300/mn10300.h: Likewise.
19685         * config/rs6000/rs6000.h: Likewise.
19686         * config/score/score.h: Likewise.
19687         * config/spu/spu.h: Likewise.
19688         * config/v850/v850.h: Likewise.
19689         * defaults.h: Likewise.
19690         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
19691         * expr.c (emit_block_move): Adjust use of
19692         OUTGOING_REG_PARM_STACK_SPACE.
19693         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
19694         OUTGOING_REG_PARM_STACK_SPACE.
19695         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
19697 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
19699         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
19700         on OMP_RETURN for OMP_FOR.
19702         PR debug/35896
19703         * dwarf2out.c (dw_expand_expr, common_check): Removed.
19704         (fortran_common): New function.
19705         (gen_variable_die): Call fortran_common instead of common_check,
19706         adjust for it returning tree instead of rtx.  Formatting.
19708 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19710         PR rtl/7335
19711         PR rtl/33826
19712         * see.c (see_copy_insn): Copy new pure const attributes for new call.
19713         * c-decl.c (merge_decls): Ditto.
19714         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
19715         to RTL_CONST_OR_PURE_CALL_P.
19716         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
19717         Initialized DECL_LOOPING_CONST_PURE.
19718         (process_call_operands): Set tree_side_effects properly.
19719         * tree.h (TREE_READONLY_DECL_P): Removed.
19720         (DECL_IS_PURE): Renamed to DECL_PURE_P.
19721         (DECL_LOOPING_OR_CONST_P): New macro.
19722         (struct tree_function_decl): Added looping_const_or_pure_p.
19723         (ECF_*) Renumbered.
19724         (ECF_LOOPING_OR_CONST_P): New macro.
19725         * rtlanal.c (pure_const_p): Removed.
19726         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
19727         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
19728         to RTL_CONST_CALL_P.
19729         * ipa-pure-const.c (pure_const_state_e): Added looping field.
19730         (check_decl, check_tree, check_call, scan_function): Initialize
19731         looping.
19732         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
19733         (static_execute): Set looping true for recursive functions.
19734         Undo setting state to IPA_NEITHER for recursive functions.
19735         * cse.c (cse_insn):
19736         * ifcvt.c (noce_can_store_speculate_p): Changed
19737         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
19738         RTL_CONST_OR_PURE_CALL_P.
19739         * dse.c (scan_insn): Ditto.
19740         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
19741         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
19742         RTL_CONST_OR_PURE_CALL_P.
19743         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
19744         pure_call_p to RTL_CONST_CALL_P.
19745         * gimplify.c (gimplify_call_expr): Clear side effects for
19746         non-looping pure and constant calls.
19747         * calls.c (emit_call_1): Set rtl flags from ecf flags.
19748         (flags_from_decl_or_type): Set ecf flags from decl flags.
19749         (initialize_argument_information): Turn off
19750         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
19751         Change const to pure if callee_copies is true rather than just
19752         turning off const.
19753         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
19754         way of marking pure calls.
19755         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
19756         Remove hack that was supposed to fix pr7335 and remove old
19757         way of marking pure calls.
19758         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
19759         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
19760         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
19761         RTL_CONST_OR_PURE_CALL_P.
19762         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
19763         * loop-invariant.c (find_exits, find_invariant_bb): Changed
19764         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
19765         * sched-deps.c (schedule_analyze): Ditto.
19766         * rtl.h (struct rtx_def): Use call field, unchanging field, and
19767         return_val field of calls to represent pure and const function info.
19768         (CONST_OR_PURE_CALL_P): Deleted macro.
19769         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19770         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
19771         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
19772         TREE_READONLY.
19773         * tree-optimize.c (execute_fixup_cfg): Added test for
19774         ECF_LOOPING_CONST_OR_PURE.
19775         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
19776         DECL_PURE_P.
19777         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
19778         effects for looping pure or const calls.
19779         (verify_gimple_expr): Added verification code.
19780         * config/alpha/alpha.c (alpha_legitimize_address,
19781         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
19782         RTL_CONST_CALL_P.
19783         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
19784         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
19785         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
19786         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
19787         RTL_CONST_OR_PURE_CALL_P.
19788         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
19789         and const calls to be deleted.
19791 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19793         PR target/35714
19794         * config/i386/mmx.md (mmx_subv2sf3): New expander.
19795         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
19796         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
19797         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19798         to handle nonimmediate operands.
19799         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
19800         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
19801         to handle nonimmediate operands.
19802         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
19803         (mmx_pmulhrwv4hi3): New expander.  Use
19804         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19805         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
19806         (sse2_umulv1siv1di3): New expander.  Use
19807         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19808         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
19809         (mmx_eq<mode>3): New expander.  Use
19810         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19811         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
19812         (mmx_uavgv8qi3): New expander.  Use
19813         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19814         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
19815         (mmx_uavgv4hi3): New expander.  Use
19816         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19818         * config/i386/sse.md
19819         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
19820         to handle nonimmediate operands.
19821         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
19822         to handle nonimmediate operands.
19823         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
19824         to handle nonimmediate operands.
19825         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
19826         to handle nonimmediate operands.
19827         (sse2_unpckhpd_exp): New expander.  Use
19828         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19829         (sse2_unpcklpd_exp): New expander.  Use
19830         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19831         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
19832         to handle nonimmediate operands.
19833         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
19834         to handle nonimmediate operands.
19835         (*sse2_<plusminus_insn><mode>3): Rename from
19836         sse2_<plusminus_insn><mode>3 insn pattern.
19837         (sse2_<plusminus_insn><mode>3): New expander.  Use
19838         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19839         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
19840         (sse2_umulv2siv2di3): New expander.  Use
19841         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19842         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
19843         (sse4_1_mulv2siv2di3): New expander.  Use
19844         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19845         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
19846         (sse2_pmaddwd): New expander.  Use
19847         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19848         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
19849         (sse2_eq<mode>3): New expander.  Use
19850         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19851         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
19852         (sse4_1_eqv2di3): New expander.  Use
19853         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19854         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19855         (sse2_uavgv16qi3): New expander.  Use
19856         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19857         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19858         (sse2_uavgv16qi3): New expander.  Use
19859         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19860         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
19861         (sse2_uavgv8hi3): New expander.  Use
19862         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19863         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
19864         (ssse3_pmulhrswv8hi3): New expander.  Use
19865         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19866         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
19867         (ssse3_pmulhrswv4hi3): New expander.  Use
19868         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19870         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
19871         (<sse>_vmmul<mode>3): Ditto.
19872         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
19873         (divv2df3): Ditto.
19874         (ssse3_pmaddubsw128): Use register_operand for operand 1.
19875         (ssse3_pmaddubsw): Ditto.
19877         * config/i386/i386.c (struct_builtin_description)
19878         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
19879         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
19880         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
19881         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
19882         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
19883         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
19884         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
19885         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
19886         (ix86_fixup_binary_operands): Assert that src1
19887         and src2 must have the same mode when swapped.
19888         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
19889         and ix86_binary_operator_ok.  Do not force operands in registers
19890         when optimizing.
19892 2008-05-07  Jan Hubicka  <jh@suse.cz>
19894         * cgraph.c (dump_cgraph_node): Update.
19895         * cgraph.h (cgraph_local_info): Break out inline summary.
19896         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
19897         hook.
19898         * ipa-inline (inline_summary): New accestor function.
19899         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
19900         cgraph_decide_inlining, compute_inline_parameters): Update.
19901         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
19903 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
19905         Cleanup ColdFire scheduling support and add V4 pipeline model.
19907         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
19908         (define_attr cpu): Add cfv4 value.
19909         (define_attr type, define_attr type1): Merge into a single 'type'
19910         attribute.  Update all uses.
19911         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
19912         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
19913         Update all uses.
19914         (define_attr opx_mem, define_attr opy_mem): Remove.
19915         (define_attr op_mem): Clean up, update comment.
19916         (define_attr size): Use specific values instead of general int.
19917         (define_attr guess, define_attr split): Remove.  Update all uses.
19918         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
19919         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
19920         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
19921         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
19922         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
19923         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
19924         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
19925         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
19926         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
19927         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
19928         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
19929         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
19930         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
19931         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
19932         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
19933         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
19934         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
19935         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
19936         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
19937         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
19938         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
19939         Update or set attributes.
19940         (stack_tie): New fake instruction.
19942         * config/m68k/m68k.h (TUNE_CFV4): New macro.
19943         (m68k_sched_attr_size): Update declaration.
19944         (m68k_sched_attr_type2): Remove.
19945         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
19946         Declare new bypass predicates.
19948         * config/m68k/m68k.c (m68k_sched_issue_rate,
19949         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
19950         implementations.
19951         (TARGET_SCHED_ISSUE_RATE,
19952         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
19953         (override_options): Handle scheduling for ColdFire V4 core.
19954         (m68k_expand_prologue): Emit stack_tie.
19955         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
19956         'OP_TYPE_FPN'.  Update all uses.
19957         (sched_guess_p): Remove.
19958         (sched_address_type): Handle symbolic addresses.
19959         (sched_get_operand): New static function.
19960         (sched_operand_type): Merge into sched_attr_op_type.
19961         (sched_attr_op_type): Handle FP registers, handle quick constants,
19962         update.
19963         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
19964         (m68k_sched_attr_size): Update.  Move logic to ...
19965         (sched_get_attr_size_int): New static function.
19966         (sched_get_opxy_mem_type): New static function.
19967         (m68k_sched_attr_op_mem): Update.
19968         (m68k_sched_attr_type2): Remove.
19969         (sched_cfv4_bypass_data): New static variable.
19970         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
19971         (m68k_sched_issue_rate): Implement scheduler hook.
19972         (struct _sched_ib: enabled_p): New field.
19973         (m68k_sched_variable_issue): Update.  Handle V4.
19974         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
19975         sched_dump_class_func_t, sched_dump_split_class,
19976         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
19977         sched_dump_dfa_class, m68k_sched_dump): Remove.
19978         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
19979         hook.
19980         (m68k_sched_init_global): Remove statisctics dumping, introduce
19981         sanity check that all instructions have pipeline reservations.  Handle
19982         ColdFire V4 core.
19983         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
19984         Handle ColdFire V4 core.
19985         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
19986         New static functions.
19987         (m68k_sched_address_bypass_p): New bypass predicate.
19988         (sched_get_indexed_address_scale): New static function.
19989         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
19991         * cf.md: Update comments.
19992         (define_attr type2): Remove.  Use 'type' attribute instead.
19993         Update all uses.
19994         (cf_ib): Rename to cfv123_ib.  Update all uses.
19995         (cf_oep): Rename to cfv123_oep.  Update all uses.
19996         (cf_chr): Rename to cfv123_chr.  Update all uses.
19997         (cf_mem): Rename to cfv123_mem.  Update all uses.
19998         (cf_mac): Move to more appropriate place.
19999         (cfv123_guess): New automaton and cpu_unit.
20000         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
20001         Update uses of 'size' attribute.  Handle before reload scheduling.
20002         (cfv123_guess): New dummy reservation for unhandled instructions.
20003         (cfv4_*): Pipeline description of ColdFire V4 core.
20004         (ignore): New reservation to handle 'ignore' type.
20006 2008-05-07  Ian Lance Taylor  <iant@google.com>
20008         PR middle-end/36013
20009         * gimplify.c (find_single_pointer_decl_1): Don't look through
20010         indirections.
20011         (find_single_pointer_decl): Adjust comments.
20013 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
20015         PR middle-end/36137
20016         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
20017         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
20019         PR middle-end/36106
20020         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
20021         integral type rather than floating point, then VIEW_CONVERT_EXPR
20022         to the floating point type.
20024 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
20026         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
20027         TFmode op0 to register.
20029 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
20031         * c-decl.c (grokdeclarator): Comment typo.
20033 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
20035         * tree-flow.h: Remove prototype for computed_goto_p.
20036         * tree-cfg.c (computed_goto_p): Make static.
20038 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
20040         PR target/35657
20041         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
20042         (contains_aligned_value_p): This.  Handle _Decimal128.
20043         (ix86_function_arg_boundary): Only align _Decimal128 to its
20044         natural boundary and handle it properly.
20046 2008-05-06  Martin Jambor  <mjambor@suse.cz>
20048         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
20049         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
20050         (ipcp_method_set_orig_node): Removed.
20051         (ipcp_cval_get_cvalue_type): Removed.
20052         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
20053         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
20054         (ipcp_cval_set_cvalue_type): Removed.
20055         (ipcp_cval_get_cvalue): Removed.
20056         (ipcp_cval_set_cvalue): Removed.
20057         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
20058         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
20059         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
20060         (ipcp_cval_meet): Renamed to ipa_lattice_meet
20061         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
20062         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
20063         (ipcp_get_ith_lattice): Changed parameters.
20064         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
20065         (ipcp_lattice_from_jfunc): Changed parameters.
20066         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
20067         (ipcp_method_cval_print): Added temporary variable info.
20068         (ipcp_redirect): Removed already unused local variable caller.
20069         (ipcp_redirect): New temporary variable orig_callee_info
20070         (ipcp_redirect): Removed newly unused local variable callee.
20071         (ipcp_redirect): Removed (a bit confusing) local variable type.
20072         (ipcp_insert_stage): Added local variable info.
20073         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
20074         renamed too
20075         (ipcp_formal_create): Removed.
20076         (ipcp_method_cval_set): Removed.
20077         (ipcp_propagate_stage): Renamed lattice variables.
20078         (ipcp_method_cval_set_cvalue_type): Removed.
20079         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
20080         (ipcp_print_all_lattices): Changed printed strings to refer to
20081         lattices rather than cvals.
20082         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
20083         (ipcp_propagate_const): Changed formal parameters.
20084         (build_const_val): Changed formal parameters.
20085         (ipcp_insert_stage): Removed useless variable cvalue
20086         (build_const_val): Changed formal parameters.
20087         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
20088         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
20089         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
20090         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
20091         (ipcp_print_func_profile_counts): Changed string from "method" to
20092         "function"
20093         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
20094         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
20095         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
20096         (ipcp_structures_print): Renamed to ipcp_print_all_structures
20097         (ipcp_profile_print): Renamed to ipcp_print_profile_data
20098         (ipcp_lat_is_const): Changed parameters and made inline.
20099         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
20100         (ipcp_redirect): Renamed to ipcp_need_redirect_p
20101         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
20102         the predicate condition directly
20103         (ipcp_propagate_stage): Added local variable args. Removed local
20104         variable callee.  (Both are mere code simplifications.)
20105         (ipcp_method_dont_insert_const): Renamed to
20106         ipcp_node_not_modifiable_p.
20107         (ipcp_node_not_modifiable_p): Made inline.
20108         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
20109         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
20110         (ipcp_print_all_lattices): Removed variable cvalue
20111         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
20112         Updated comments.
20114 2008-05-06  Olivier Hainque  <hainque@adacore.com>
20116         * tree-sra.c (try_instantiate_multiple_fields): Early return
20117         if field has POINTER_TYPE.
20119 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
20121         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
20122         by using 'q' specifier for instruction.
20123         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
20125 2008-05-06  Anatoly Sokolov <aesok@post.ru>
20127         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20128         Change mode of zero_extract from QImode to HImode.
20129         (sign bit tests peepholes): (Ditto.).
20131 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
20133         * config/i386/mmx.md: Remove double backslashes from asm templates.
20134         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
20135         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
20136         to handle nonimmediate operands.
20137         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
20138         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
20139         to handle nonimmediate operands.
20140         (*mmx_<code>v2sf3_finite): New insn pattern.
20141         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
20142         (mmx_<code>v2sf3): New expander.  Use
20143         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20144         (mmx_<plusminus_insn><mode>3): New expander.  Use
20145         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20146         (*mmx_<plusminus_insn><mode>3): New insn pattern.
20147         (mmx_add<mode>3): Removed.
20148         (mmx_ssadd<mode>3): Ditto.
20149         (mmx_usadd<mode>3): Ditto.
20150         (mmx_sub<mode>3): Ditto.
20151         (mmx_sssub<mode>3): Ditto.
20152         (mmx_ussub<mode>3): Ditto.
20153         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
20154         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
20155         to handle nonimmediate operands.
20156         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
20157         insn pattern.
20158         (mmx_smulv4hi3_highpart): New expander.  Use
20159         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20160         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
20161         insn pattern.
20162         (mmx_umulv4hi3_highpart): New expander.  Use
20163         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20164         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
20165         (mmx_<code>v4hi3): New expander.  Use
20166         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20167         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
20168         (mmx_<code>v8qi3): New expander.  Use
20169         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20170         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
20171         (mmx_<code><mode>3): New expander.  Use
20172         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20174 2008-05-05  Jan Hubicka  <jh@suse.cz>
20176         PR tree-optimization/36118
20177         * passes.c (pass_init_dump_file): Fix dump header.
20179 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20181         PR middle-end/36141
20182         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
20183         VCE for function decls.
20185 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
20187         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
20189 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
20191         * config/i386/i386.md (sat_plusminus): New.
20192         (plusminus_insn): Likewise.
20193         (plusminus_mnemonic): Likewise.
20194         (addsub): Removed.
20195         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
20196         (*<addsub><mode>3_cc_overflow): Renamed to ...
20197         (*<plusminus_insn><mode>3_cc_overflow): This.
20198         (*<addsub>si3_zext_cc_overflow): Renamed to ...
20199         (*<plusminus_insn>si3_zext_cc_overflow): This.
20201         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
20202         (<plusminus_insn><mode>3): This.
20203         (*<addsub><mode>3): Renamed to ...
20204         (*<plusminus_insn><mode>3): This.
20205         (<sse>_vm<addsub><mode>3): Renamed to ...
20206         (<sse>_vm<plusminus_insn><mode>3): This.
20207         (sse3_h<addsub>v4sf3): Renamed to ...
20208         (sse3_h<plusminus_insn>v4sf3): This.
20209         (sse3_h<addsub>v2df3): Renamed to ...
20210         (sse3_h<plusminus_insn>v2df3): This.
20211         (<plusminus_insn><mode>3): New.
20212         (*<plusminus_insn><mode>3): Likewise.
20213         (sse2_<plusminus_insn><mode>3): Likewise.
20214         (add<mode>): Removed.
20215         (*add<mode>3): Likewise.
20216         (sse2_ssadd<mode>3): Likewise.
20217         (sse2_usadd<mode>3): Likewise.
20218         (sub<mode>3): Likewise.
20219         (*sub<mode>3): Likewise.
20220         (sse2_sssub<mode>3): Likewise.
20221         (sse2_ussub<mode>3): Likewise.
20223 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
20225         * gthr-single.h: Add in required interface elements as per gthr.h.
20226         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
20227         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
20228         Generalize UNUSED macro.
20229         (__gthread_once): Add.
20230         (__gthread_key_create): Add.
20231         (__gthread_key_delete): Add.
20232         (__gthread_getspecific): Add.
20233         (__gthread_setspecific): Add.
20235 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
20237         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
20238         the same size types for the indirect reference on the rhs, then
20239         create a VCE.
20241 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
20243         * config/i386/i386.md
20244         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
20245         one insn template instead of template series.
20246         (*xordi_1_rex64): Ditto.
20247         (*xordi_2_rex64): Ditto.
20249 2008-05-05  Ira Rosen  <irar@il.ibm.com>
20251         PR tree-optimization/36119
20252         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
20253         in case of SLP.
20255 2008-06-04  Jan Hubicka  <jh@suse.cz>
20257         tree-optimization/36100
20258         * tree-pass.h (pass_O0_always_inline): Declare.
20259         * ipa-inline.c (inline_transform): Remove dead code.
20260         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
20261         pass_O0_always_inline): New.
20262         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
20264 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
20266         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
20267         mnemonic in this_param move for TARGET_64BIT.
20269 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
20271         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
20272         (*strmovsi_rex_1): Ditto.
20273         (*strsetsi_1): Ditto.
20274         (*strsetsi_rex_1): Ditto.
20276         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
20277         adddicc expanders using SWI mode iterator.
20279 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
20281         PR target/36121
20282         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
20283         argument handling.
20285 2008-05-04  David S. Miller  <davem@davemloft.net>
20287         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
20288         (sparc*-*-linux*): Use linux.h in tm_file.
20289         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
20290         compiler defaulting to 32-bit.
20291         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
20292         no longer needed.
20293         * config/sparc/linux.h: Remove definitions now obtained
20294         properly from linux.h
20295         * config/sparc/linux64.h: Likewise.
20296         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
20297         don't want this setting for 32-bit builds in a biarch compiler.
20298         * doc/install.texi: Add sparc-linux to list of targets
20299         supporting --enable-targets=all.
20301 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
20303         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
20305 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
20307         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
20308         after V4SI_FTYPE_V8HI.
20309         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
20310         case V4SI_FTYPE_V2DF.
20312 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
20314         * doc/invoke.texi (max-flow-memory-locations): Removed.
20315         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
20317 2008-05-03  Richard Guenther  <rguenther@suse.de>
20319         PR middle-end/34973
20320         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
20322 2008-05-02  David S. Miller  <davem@davemloft.net>
20324         * config.gcc (need_64bit_hwint): Document libcpp dependency.
20326 2008-05-02  Simon Baldwin <simonb@google.com>
20328         PR bootstrap/36108
20329         * c-common.h (warn_array_subscript_range): Removed.
20330         * c-common.c (warn_array_subscript_range): Ditto.
20331         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
20332         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
20334 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
20336         * config/i386/i386.c (ix86_special_builtin_type): New.
20337         (bdesc_special_args): Likewise.
20338         (ix86_expand_special_args_builtin): Likewise.
20339         (ix86_init_mmx_sse_builtins): Updated.
20340         (ix86_expand_builtin): Updated.
20341         (ix86_expand_store_builtin): Removed.
20342         (ix86_expand_unop_builtin): Likewise.
20344         * config/i386/mm3dnow.h (__v2sf): Moved to ...
20345         * config/i386/mmintrin.h (__v2sf): Here.
20347         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
20348         const __v2sf.
20349         (_mm_loadl_pi): Likewise.
20350         (_mm_storeh_pi): Replace __v2si with __v2sf.
20351         (_mm_storel_pi): Likewise.
20353         * doc/extend.texi: Correct __builtin_ia32_loadhps,
20354         __builtin_ia32_loadlps, __builtin_ia32_storehps,
20355         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
20356         __builtin_ia32_loadlpd.
20358 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
20360         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
20361         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
20362         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
20363         (ix86_init_mmx_sse_builtins): Updated.
20364         (ix86_expand_args_builtin): Likewise.
20365         (ix86_expand_builtin): Likewise.
20366         (ix86_expand_unop1_builtin): Renamed to ...
20367         (ix86_expand_unop_vec_merge_builtin): This.
20369 2008-05-01  Jan Hubicka  <jh@suse.cz>
20371         PR bootstrap/36100
20372         * ipa-inline.c (inline_generate_summary): Make static.
20373         (inline_transform): Do not call inlining at -O0; make static.
20374         * passes.c (execute_todo): Add sanity check.
20375         (execute_one_ipa_transform_pass): Execute proper flags.
20377 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
20379         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
20380         (DECL_NONADDRESSABLE_P): Likewise.
20381         * alias.c (record_component_aliases): Fix comment.
20383 2008-05-01  Simon Baldwin <simonb@google.com>
20385         * c-common.h (warn_array_subscript_range): New function.
20386         * c-common.c (warn_array_subscript_range): Ditto.
20387         * tree-vrp.c (check_array_ref): Corrected code to agree with
20388         comment, ignoring only arrays of size 0 or size 1.
20389         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
20391 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20393         * config/i386/i386.c (ix86_builtin_type): Replace
20394         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
20395         (bdesc_args): Updated.
20396         (ix86_init_mmx_sse_builtins): Likewise.
20397         (ix86_expand_args_builtin): Likewise.
20399         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
20400         with __v1di.
20402         * doc/extend.texi: Correct __builtin_ia32_palignr.
20404 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20406         PR target/36095
20407         * config/i386/i386.c (bdesc_crc32): Removed.
20408         (ix86_expand_crc32): Likewise.
20409         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
20410         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
20411         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
20412         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
20413         UINT_FTYPE_UINT_UCHAR.
20414         (bdesc_args): Updated. Add crc32 builtins.
20415         (ix86_init_mmx_sse_builtins): Updated.
20416         (ix86_expand_args_builtin): Updated to support subreg.
20418         * doc/extend.texi: Correct __builtin_ia32_crc32di.
20420 2008-05-01  Jan Hubicka  <jh@suse.cz>
20422         * tree-pass.h (opt_pass): Add IPA_PASS.
20423         (varpool_node, cgraph_node): Forward declare.
20424         (ipa_opt_pass): Define.
20425         (pass_ipa_inline): Turn into ipa_opt_pass.
20426         (pass_apply_inline): Remove.
20427         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
20428         (apply_inline): Turn into ....
20429         (inline_transform): ... this one.
20430         (inline_generate_summary): New function.
20431         (pass_apply_inline): Remove.
20432         * function.h (ipa_opt_pass): Forward declare structure; typedef;
20433         vector.
20434         (struct function): Add ipa_transforms_to_apply.
20435         * passes.c (register_one_dump_file): Work on IPA_PASS.
20436         (init_optimization_passes): Remove pass_inline_parameters and
20437         pass_apply_inline.
20438         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
20439         (execute_one_pass) ... here; apply transforms when possible.
20440         (add_ipa_transform_pass, execute_ipa_summary_asses,
20441         execute_one_ipa_transform_pass): New.
20442         (execute_ipa_pass_list): Update for IPA_PASS type.
20444 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20446         * config/i386/i386.c (ix86_builtin_type): Add
20447         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
20448         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
20449         (bdesc_args): Add SSE4a builtins.
20450         (ix86_init_mmx_sse_builtins): Updated.
20451         (ix86_expand_args_builtin): Likewise.
20452         (ix86_expand_builtin): Likewise.
20454 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20456         * config/i386/i386.c (ix86_builtin_type): Add
20457         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
20458         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
20459         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
20460         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
20461         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
20462         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
20463         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
20464         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
20465         and DI_FTYPE_DI_DI_INT.
20466         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
20467         (ix86_init_mmx_sse_builtins): Updated.
20468         (ix86_expand_args_builtin): Likewise.
20469         (ix86_expand_builtin): Likewise.
20470         (ix86_expand_binop_imm_builtin): Removed.
20472         * doc/extend.texi: Correct __builtin_ia32_palignr128.
20474 2008-04-30  Richard Guenther  <rguenther@suse.de>
20476         PR tree-optimization/32921
20477         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
20479 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
20481         * config/arm/arm.c (arm_unwind_emit): Use
20482         crtl->all_throwers_are_sibcalls instead of
20483         cfun->all_throwers_are_sibcalls.
20484         (arm_output_fn_unwind): Likewise.
20485         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
20486         instead of cfun->uses_pic_offset_table.
20487         (frv_expand_prologue): Likewise.
20488         (frv_frame_pointer_required): Likewise.
20489         (frv_expand_fdpic_call): Likewise.
20490         (frv_emit_movsi): Likewise.
20491         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
20492         cfun->returns_pcc_struct instead of
20493         current_function_returns_pcc_struct.
20494         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
20495         instead of cfun->calls_eh_return.
20496         (m32c_pushm_popm): Likewise.
20497         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
20498         "extern" declaration.
20500 2008-04-30  Richard Guenther  <rguenther@suse.de>
20502         PR tree-optimization/21636
20503         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
20504         constant address.
20505         (evaluate_stmt): Print the likely value.
20506         (ccp_visit_stmt): Avoid excessive vertical spacing.
20508 2008-04-30  Rafael Espíndola  <espindola@google.com>
20510         * builtins.c (fold_call_expr): Return realret.
20511         * tree-ssa-threadedge.c
20512         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
20513         __builtin_object_size.
20515 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
20517         * gcc.c (wrapper_string): New variable.
20518         (insert_wrapper): New function.
20519         (execute): New option -wrapper.
20520         * doc/invoke.texi (Overall Options): New driver option -wrapper.
20522 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
20524         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
20525         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
20526         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
20527         from...
20528         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
20529         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
20530         config/rs6000/e500crtres64gprctr.asm,
20531         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
20532         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
20533         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
20534         config/rs6000/e500crtsav64gprctr.asm,
20535         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
20536         config/rs6000/e500crtsavg64gprctr.asm: New files.
20537         * config/rs6000/t-ppccomm: Add build rules for new files.
20538         (LIB2FUNCS_STATIC_EXTRA): Add new files.
20539         * config/rs6000/t-netbsd: Add build rules for new files.
20540         (LIB2FUNCS_STATIC_EXTRA): New variable.
20541         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
20542         (CRTSAVRES_DEFAULT_SPEC): Likewise.
20543         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
20545 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
20547         * config/i386/i386.c (ix86_builtin_type): Add
20548         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
20549         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
20550         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
20551         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
20552         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
20553         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
20554         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
20555         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
20556         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
20557         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
20558         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
20559         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
20560         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
20561         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
20562         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
20563         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
20564         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
20565         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
20566         V1DI_FTYPE_V2SI_V2SI.
20567         (bdesc_2arg): Moved to ...
20568         (bdesc_args): Here.
20569         (ix86_init_mmx_sse_builtins): Updated.
20570         (ix86_expand_args_builtin): Updated.  Take a pointer
20571         to const struct builtin_description.  Handle comparison
20572         builtin functions.
20573         (ix86_expand_sse_compare): Take a new argument for swapping operands.
20574         (ix86_expand_builtin): Updated.
20576         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
20577         (ssse3_pmaddubsw128): This.
20578         (ssse3_pmaddubswv4hi3): Renamed to ...
20579         (ssse3_pmaddubsw): This.
20581         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
20582         (__builtin_ia32_packssdw128): Likewise.
20583         (__builtin_ia32_packuswb128): Likewise.
20584         (__builtin_ia32_pmaddubsw): Likewise.
20585         (__builtin_ia32_pmaddubsw128): Likewise.
20587 2008-04-30  Richard Guenther  <rguenther@suse.de>
20589         PR tree-optimization/14847
20590         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
20591         (recognize_bits_test): Use it.
20592         (recognize_single_bit_test): Likewise.
20594 2008-04-30  Martin Jambor  <mjambor@suse.cz>
20596         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
20597         instead of setting number of formal parameters to zero.
20598         (ipcp_init_stage): Do not set the number of actual parameters to zero
20599         either.
20600         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
20601         which are called with variable number of arguments.
20602         (ipcp_insert_stage): Explicitely skipping all nodes which are
20603         called with variable number of arguments.
20604         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
20605         number of parameters.
20607         * ipa-prop.h (struct ipa_node_params): Added flag
20608         called_with_var_arguments
20609         (ipa_set_param_count): Added.  Changed sole setter to use it.
20610         (ipa_get_param_count): Added.  All readers of param_count
20611         converted to use it instead.
20612         (ipa_set_called_with_variable_arg): Added.
20613         (ipa_is_called_with_var_arguments): Added.
20614         (ipa_get_ith_param): Added.  All readers of param_decls converted
20615         to use it instead.
20616         (ipa_set_cs_argument_count): Added, sole writer to argument_count
20617         changed to use it.
20618         (ipa_get_cs_argument_count): Added, all readers of argument_count
20619         changed to cal it.
20620         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
20621         to use it.
20623         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
20624         (struct ipcp_lattice): Renamed cval_type to type
20625         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
20627         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
20628         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
20629         (ipcp_insert_stage): Changed the type of variable cvalue to tree
20630         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
20631         (build_const_val): Changed the type of parameter cvalue to tree
20632         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
20633         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
20635         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
20636         constant
20638         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
20639         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
20640         (ipa_add_method): Renamed to ipa_push_func_to_list
20641         (ipa_remove_method): Renamed to ipa_pop_func_from_list
20642         (ipa_callsite_param_count): Removed.
20643         (ipa_callsite_param_count_set): Removed.
20644         (ipa_callsite_param): Removed.
20645         (ipa_callsite_callee): Removed.
20646         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
20647         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
20648         (ipa_method_formal_count): Removed.
20649         (ipa_method_formal_count_set): Removed.
20650         (ipa_method_get_tree): Removed.
20651         (ipa_method_tree_map_create): Removed.
20652         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
20653         (ipa_create_param_decls_array): Creates the array itself
20654         (ipa_create_param_decls_array): Temporary variable info instead of
20655         a few dereferences.
20656         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
20657         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
20658         (get_type): Removed.
20659         (ipa_jf_get_info_type): Removed.
20660         (ipa_node_create): Renamed to ipa_create_node_params
20661         (ipa_free): Renamed to ipa_free_all_node_params
20662         (ipa_nodes_create): Renamed to ipa_create_all_node_params
20663         (ipa_edges_create): Renamed to ipa_create_all_edge_args
20664         (ipa_edges_free): Renamed to ipa_free_all_edge_args
20665         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
20666         (ipa_free_all_node_params): Deallocation to jump_functions moved to
20667         ipa_free_all_edge_args
20668         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
20669         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
20670         (ipa_create_methodlist_node): Removed.
20671         (ipa_methodlist_method): Removed.
20672         (ipa_methodlist_method_set): Removed.
20673         (ipa_methodlist_next_method): Removed.
20674         (ipa_methodlist_next_method_set): Removed.
20675         (ipa_method_is_modified): Removed.
20676         (ipa_method_modify_create): Removed.
20677         (ipa_method_modify_init): Temporary variable info instead of a few
20678         dereferences.
20679         (ipa_detect_param_modifications): Temporary variable info instead of
20680         a few dereferences.
20681         (ipa_compute_jump_functions): Temporary variable info instead of
20682         a few dereferences.
20683         (ipa_method_modify_set): Removed.
20684         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
20685         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
20686         than craph_node as the first parameter.
20687         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
20688         (ipa_method_modify_init): Removed.
20689         (ipa_compute_jump_functions): Added a temp variable instead of
20690         repeatadly dereferencing the cgraph_edge.aux pointer
20691         (ipa_callsite_param_set_type): Removed.
20692         (ipa_compute_jump_functions): i renamed to index and moved to
20693         an inner block
20694         (ipa_callsite_param_set_info_type_formal): Removed.
20695         (ipa_callsite_param_set_info_type): Removed.
20696         (ipa_callsite_param_map_create): Removed.
20697         (ipa_callsite_tree): Removed.
20698         (ipa_callsite_caller): Removed.
20699         (ipa_pop_func_from_list): return_method removed to return_func
20701         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
20702         prefixed all values with IPA_. Changed all users.
20703         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
20704         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
20705         and FORMAL_IPATYPE IPA_PASS_THROUGH.
20706         (union parameter_info): Renamed to jump_func_value.
20707         (union jump_func_value): Renamed value to constant
20708         (struct ipa_jump_func): Renamed info_type to value
20709         (struct ipa_node): Renamed to ipa_node_params
20710         (struct ipa_node_params): Renamed ipa_arg_num to param_count
20711         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
20712         (struct ipa_node_params): Renamed ipa_mod to modified_flags
20713         (struct ipa_edge): Renamed to ipa_edge_args
20714         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
20715         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
20716         (struct ipa_methodlist): Renamed to ipa_func_list
20717         (struct ipa_func_list): method_p renamed to node, next_method
20718         renamed to next
20719         (ipa_methodlist_p): Removed, switched all users to struct pointer
20720         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
20722 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
20724         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
20725         (rs6000_emit_epilogue): Use backchain to restore only when we
20726         have a large frame.  Make use of frame pointer to restore if we
20727         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
20729 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
20731         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20732         Add mode to zero_extract.
20733         (sign bit tests peepholes): (Ditto.).
20735 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
20737         * config/i386/i386.c (ix86_builtins): Replace Prescott New
20738         Instructions in comments with SSE3.
20739         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
20740         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
20741         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
20742         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
20743         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
20744         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
20745         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
20746         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
20747         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
20748         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
20749         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
20750         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
20751         (bdesc_sse_args): Renamed to ...
20752         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
20753         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
20754         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
20755         IX86_BUILTIN_FABSQ.
20756         (bdesc_1arg): Moved to ...
20757         (bdesc_args): Here.
20758         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
20759         Instructions in comments with SSE3.
20760         (ix86_expand_sse_operands_builtin): Renamed to ...
20761         (ix86_expand_args_builtin): This.  Updated.
20762         (ix86_expand_unop1_builtin): Update comments.
20763         (ix86_expand_builtin): Updated.
20765 2008-04-29  Richard Guenther  <rguenther@suse.de>
20767         PR tree-optimization/36078
20768         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
20769         Update virtual SSA form after cleaning up the CFG.
20771 2008-04-29  Richard Guenther  <rguenther@suse.de>
20773         PR middle-end/15255
20774         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
20776 2008-04-29  Richard Guenther  <rguenther@suse.de>
20778         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
20779         (compute_may_aliases): Do not call finalize_ref_all_pointers.
20780         (compute_flow_insensitive_aliasing): Do not treat
20781         PTR_IS_REF_ALL pointers special.
20782         (get_smt_for): Likewise.
20783         (may_alias_p): Re-structure.
20784         (is_escape_site): A ref-all pointer conversion is not an escape site.
20785         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
20786         PTR_IS_REF_ALL pointers special.
20787         * tree-ssa-structalias.h (struct alias_info): Remove
20788         ref_all_symbol_mem_tag field.
20789         (PTR_IS_REF_ALL): Remove.
20791 2008-04-29  Richard Guenther  <rguenther@suse.de>
20793         PR middle-end/36077
20794         * fold-const.c (extract_muldiv_1): In combining division constants
20795         make sure to never overflow.
20797 2008-04-29  Nick Clifton  <nickc@redhat.com>
20799         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
20801 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20803         PR bootstrap/35169
20804         * optc-gen.awk: Work around HP-UX/IA awk bug.
20806 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
20808         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
20809         2008-04-25 commit.
20811 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20813         PR target/36073
20814         * config/i386/i386.md
20815         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
20816         Change operand 1 predicate to nonimmediate_operand.
20818 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
20820         PR debug/36060
20821         * dwarf2out.c (struct die_struct): Mark as chain_circular through
20822         die_sub field.
20823         * gengtype.c (walk_type, write_func_for_structure): Handle
20824         chain_circular.
20825         * doc/gty.texi: Document chain_circular.
20827 2008-04-28  Richard Guenther  <rguenther@suse.de>
20829         PR tree-optimization/36066
20830         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
20831         SCEV and loop.
20833 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20835         PR target/36064
20836         * config/i386/i386.md
20837         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
20838         Use match_scratch instead of match_operand for operands 3 and 4.
20840 2008-04-27  Richard Guenther  <rguenther@suse.de>
20842         PR tree-optimization/18754
20843         PR tree-optimization/34223
20844         * tree-pass.h (pass_complete_unrolli): Declare.
20845         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
20846         loop size before and after unconditionally of UL_NO_GROWTH in effect.
20847         Rewrite loop into loop closed SSA form if it is not already.
20848         (tree_unroll_loops_completely): Re-structure to iterate over
20849         innermost loops with intermediate CFG cleanups.
20850         Unroll outermost loops only if requested or the code does not grow
20851         doing so.
20852         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
20853         loops are available.
20854         (tree_vectorize): Instead do so here.
20855         (tree_complete_unroll): Also unroll outermost loops.
20856         (tree_complete_unroll_inner): New function.
20857         (gate_tree_complete_unroll_inner): Likewise.
20858         (pass_complete_unrolli): New pass.
20859         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
20860         uses outside of the loop.
20861         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
20862         form if it is available.
20863         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
20864         * passes.c (init_optimization_passes): Schedule complete inner
20865         loop unrolling pass before the first CCP pass after final inlining.
20867 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
20869         * targhooks.h (default_emutls_var_fields,
20870         default_emutls_var_init): Declare.
20871         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
20872         * target.h (struct gcc_target): Add struct emutls member.
20873         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
20874         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
20875         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
20876         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
20877         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
20878         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
20879         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
20880         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
20881         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
20882         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
20883         emit debug information.
20884         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
20885         * varasm.c: Include targhooks.h.
20886         (emutls_object_section, emutls_tmpl_section): New.
20887         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
20888         (EMUTLS_SEPARATOR): New.
20889         (prefix_name): New.
20890         (get_emutls_object_name): New.
20891         (default_emutls_var_fields): New, broken out of ...
20892         (get_emutls_object_type): ... here.  Adjust to use target hooks.
20893         (get_emutls_init_templ_addr): Adjust to use target hooks.
20894         (emutls_decl): Adjust to use target hooks.
20895         (emutls_finish): Likewise.
20896         (default_emutls_var_init): New, broken out of ...
20897         (assemble_variable): ... here.  Adjust to use target hooks.
20898         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
20899         SECCAT_EMUTLS_TMPL.
20900         * c-common.c (handle_section_attribute): Prevent overriding
20901         sections for emulated tls with special sections.
20902         * config/i386/i386.c (x86_64_elf_select_section): Add
20903         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
20904         (x86_64_elf_unique_section): Likewise.
20905         * config/vxworks.c: Include tree.h.
20906         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
20907         (vxworks_override_options): Set TLS scheme.
20908         * doc/tm.texi (Emulated TLS): New node.
20910 2008-04-26  Simon Baldwin <simonb@google.com>
20912         PR c/35652
20913         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
20914         with propagated string constants.
20916 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
20918         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
20919         constraint for operand 2 when operand 0 is memory operand.
20920         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
20921         operand 0 is memory operand.
20922         (fix_trunc<mode>_i387_with_temp): Ditto.
20923         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
20924         operand 2 when operand 1 is memory operand.
20925         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
20926         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
20927         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
20928         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20929         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
20930         operands 2,3 and 4 when operand 1 is memory operand.
20931         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
20932         is memory operand.
20933         (fistdi2_floor_with_temp): Ditto.
20934         (fist<mode>2_floor_with_temp): Ditto.
20935         (fistdi2_ceil_with_temp): Ditto.
20936         (fist<mode>2_ceil_with_temp): Ditto.
20937         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
20939 2008-04-26  David Daney  <ddaney@avtrex.com>
20941         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
20942         unspec_volitile.
20943         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
20944         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
20945         UNSPEC_UPDATE_GOT_VERSION): Renumber.
20946         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
20947         (compare_and_swap_12): New insn.
20948         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
20949         * config/mips/mips.c (mips_force_binary): New function.
20950         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
20951         (mips_expand_compare_and_swap_12): New function.
20952         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
20954 2008-04-25  Jan Hubicka  <jh@suse.cz>
20956         PR testsuite/35843
20957         * cfgexpand.c (pass_expand): Turn into RTL pass.
20958         * passes.c (execute_one_pass): Do pass typechecking after execution.
20959         * tree-pass.h (pass_expand): Turn into RTL pass.
20961         * function.h (struct rtl_data): Move here fields
20962         accesses_prior_frames, calls_eh_return, saves_all_registers,
20963         has_nonlocal_goto, has_asm_statement, is_thunk,
20964         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
20965         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
20966         arg_pointer_save_area_init from struct function; turn into bool.
20967         (struct function): Move
20968         calls_eh_return, saves_all_registers, has_nonlocal_goto,
20969         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
20970         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
20971         tail_call_emit, arg_pointer_save_area_init
20972         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
20973         (current_function_returns_struct, current_function_returns_pcc_struct,
20974         current_function_calls_setjmp, current_function_calls_alloca,
20975         current_function_accesses_prior_frames,
20976         current_function_calls_eh_return, current_function_is_thunk,
20977         current_function_stdarg, current_function_profile,
20978         current_function_limit_stack, current_function_uses_pic_offset_table,
20979         current_function_uses_const_pool, current_function_has_nonlocal_label,
20980         current_function_saves_all_registers,
20981         current_function_has_nonlocal_goto,
20982         current_function_has_asm_statement): Remove accesor macros.
20983         * ra-conflict.c (global_conflicts): Update.
20984         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
20985         (suitable_for_tail_call_opt_p): Update.
20986         * builtins.c (expand_builtin_return_addr): Update.
20987         (expand_builtin_setjmp_setup): Update.
20988         (expand_builtin_nonlocal_goto): Update.
20989         * final.c (final_start_function): Update.
20990         (profile_function): Update.
20991         (leaf_function_p): Update.
20992         (only_leaf_regs_used): Update.
20993         * df-scan.c (df_get_exit_block_use_set): Update.
20994         * dojump.c (clear_pending_stack_adjust): Update.
20995         * tree-stdarg.c (gate_optimize_stdarg): Update.
20996         * gimple-low.c (lower_function_body): Update.
20997         * global.c (compute_regsets): Update.
20998         (global_alloc): Update.
20999         * dwarf2out.c (dwarf2out_begin_prologue): Update.
21000         * expr.c (expand_assignment): Update.
21001         * dse.c (dse_step0): Update.
21002         (dse_step1): Update.
21003         * c-decl.c (store_parm_decls): Update.
21004         * local-alloc.c (combine_regs): Update.
21005         (find_free_reg): Update.
21006         * function.c (assign_parms_augmented_arg_list): Update.
21007         (assign_parm_find_data_types): Update.
21008         (assign_parms): Update.
21009         (allocate_struct_function): Update.
21010         (expand_function_start): Update.
21011         (expand_function_end): Update.
21012         (get_arg_pointer_save_area): Update.
21013         (thread_prologue_and_epilogue_insns): Update.
21014         (rest_of_match_asm_constraints): Update.
21015         * stor-layout.c (variable_size): Update.
21016         * gcse.c (gcse_main): Update.
21017         (bypass_jumps): Update.
21018         * gimplify.c (gimplify_function_tree): Update.
21019         * calls.c (emit_call_1): Update.
21020         (expand_call): Update.
21021         * bt-load.c (compute_defs_uses_and_gen): Update.
21022         * except.c (sjlj_assign_call_site_values): Update.
21023         (sjlj_emit_function_enter): Update.
21024         (can_throw_external): Update.
21025         (set_nothrow_function_flags): Update.
21026         (expand_builtin_unwind_init): Update.
21027         (expand_eh_return): Update.
21028         (convert_to_eh_region_ranges): Update.
21029         (output_function_exception_table): Update.
21030         * emit-rtl.c (gen_tmp_stack_mem): Update.
21031         * cfgexpand.c (expand_used_vars): Update.
21032         (tree_expand_cfg): Update.
21033         * cfgcleanup.c (rest_of_handle_jump): Update.
21034         * explow.c (allocate_dynamic_stack_space): Update.
21035         * varasm.c (assemble_start_function): Update.
21036         (force_const_mem): Update.
21037         (mark_constant_pool): Update.
21038         * tree-optimize.c (tree_rest_of_compilation): Update.
21039         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
21040         * tree-cfg.c (notice_special_calls): Update.
21041         (is_ctrl_altering_stmt): Update.
21042         (tree_can_make_abnormal_goto): Update.
21043         (tree_purge_dead_abnormal_call_edges): Update.
21044         * config/alpha/predicates.md: Update.
21045         * config/alpha/alpha.c (alpha_sa_mask): Update.
21046         (alpha_sa_size): Update.
21047         (alpha_does_function_need_gp): Update.
21048         (alpha_expand_prologue): Update.
21049         (alpha_start_function): Update.
21050         (alpha_output_function_end_prologue): Update.
21051         (alpha_expand_epilogue): Update.
21052         * config/frv/frv.c (frv_stack_info): Update.
21053         (frv_expand_epilogue): Update.
21054         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
21055         (s390_register_info): Update.
21056         (s390_frame_info): Update.
21057         (s390_init_frame_layout): Update.
21058         (s390_can_eliminate): Update.
21059         (save_gprs): Update.
21060         * config/spu/spu.c (spu_split_immediate): Update.
21061         (need_to_save_reg): Update.
21062         (spu_expand_prologue): Update.
21063         (spu_expand_epilogue): Update.
21064         * config/sparc/sparc.md: Update.
21065         * config/sparc/sparc.c (eligible_for_return_delay): Update.
21066         (sparc_tls_got): Update.
21067         (legitimize_pic_address): Update.
21068         (sparc_emit_call_insn): Update.
21069         (sparc_expand_prologue): Update.
21070         (output_return): Update.
21071         (print_operand): Update.
21072         (sparc_function_ok_for_sibcall): Update.
21073         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
21074         * config/m32r/m32r.md: Update.
21075         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
21076         (m32r_compute_frame_size): Update.
21077         (m32r_expand_prologue): Update.
21078         (m32r_expand_epilogue): Update.
21079         (m32r_legitimize_pic_address): Update.
21080         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
21081         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
21082         * config/i386/i386.c (ix86_frame_pointer_required): Update.
21083         (gen_push): Update.
21084         (ix86_save_reg): Update.
21085         (ix86_compute_frame_layout): Update.
21086         (ix86_expand_prologue): Update.
21087         (ix86_expand_epilogue): Update.
21088         * config/sh/sh.c (output_stack_adjust): Update.
21089         (calc_live_regs): Update.
21090         (sh5_schedule_saves): Update.
21091         (sh_expand_prologue): Update.
21092         (sh_expand_epilogue): Update.
21093         (sh_setup_incoming_varargs): Update.
21094         (sh_allocate_initial_value): Update.
21095         (sh_get_pr_initial_val): Update.
21096         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
21097         * config/sh/sh.md (label:): Update.
21098         * config/avr/avr.c (out_movhi_mr_r): Update.
21099         * config/crx/crx.h (enum): Update.
21100         * config/xtensa/xtensa.h (along): Update.
21101         * config/stormy16/stormy16.c Update.
21102         (xstormy16_compute_stack_layout): Update.
21103         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
21104         (fr30_expand_prologue): Update.
21105         * config/cris/cris.c (cris_conditional_register_usage): Update.
21106         (cris_reg_saved_in_regsave_area): Update.
21107         (cris_initial_frame_pointer_offset): Update.
21108         (cris_simple_epilogue): Update.
21109         (cris_expand_prologue): Update.
21110         (cris_expand_epilogue): Update.
21111         (cris_expand_pic_call_address): Update.
21112         (cris_asm_output_symbol_ref): Update.
21113         (cris_asm_output_label_ref): Update.
21114         * config/cris/cris.md Update.
21115         * config/iq2000/iq2000.c (compute_frame_size): Update.
21116         (iq2000_expand_epilogue): Update.
21117         * config/mt/mt.h (save_direction): Update.
21118         * config/mn10300/mn10300.c (mn10300_function_value): Update.
21119         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
21120         (ia64_secondary_reload_class): Update.
21121         * config/m68k/m68k.c (m68k_save_reg): Update.
21122         (m68k_expand_prologue): Update.
21123         (m68k_expand_epilogue): Update.
21124         (legitimize_pic_address): Update.
21125         * config/rs6000/rs6000.c (rs6000_got_register): Update.
21126         (first_reg_to_save): Update.
21127         (first_altivec_reg_to_save): Update.
21128         (compute_vrsave_mask): Update.
21129         (compute_save_world_info): Update.
21130         (rs6000_stack_info): Update.
21131         (spe_func_has_64bit_regs_p): Update.
21132         (rs6000_ra_ever_killed): Update.
21133         (rs6000_emit_eh_reg_restore): Update.
21134         (rs6000_emit_allocate_stack): Update.
21135         (rs6000_emit_prologue): Update.
21136         (rs6000_emit_epilogue): Update.
21137         (rs6000_output_function_epilogue): Update.
21138         (output_profile_hook): Update.
21139         (rs6000_elf_declare_function_name): Update.
21140         * config/rs6000/rs6000.h (rs6000_args): Update.
21141         * config/rs6000/rs6000.md: Update.
21142         * config/mcore/mcore.c (mcore_expand_prolog): Update.
21143         * config/arc/arc.c (arc_output_function_epilogue): Update.
21144         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
21145         * config/darwin.c (machopic_function_base_name): Update.
21146         * config/score/score3.c (score3_compute_frame_size): Update.
21147         (rpush): Update.
21148         (rpop): Update.
21149         (score3_epilogue): Update.
21150         * config/score/score7.c (score7_compute_frame_size): Update.
21151         (score7_prologue): Update.
21152         (score7_epilogue): Update.
21153         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
21154         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
21155         * config/arm/arm.c (use_return_insn): Update.
21156         (require_pic_register): Update.
21157         (arm_load_pic_register): Update.
21158         (arm_compute_save_reg0_reg12_mask): Update.
21159         (arm_compute_save_reg_mask): Update.
21160         (thumb1_compute_save_reg_mask): Update.
21161         (output_return_instruction): Update.
21162         (arm_output_function_prologue): Update.
21163         (arm_output_epilogue): Update.
21164         (arm_get_frame_offsets): Update.
21165         (arm_expand_prologue): Update.
21166         (thumb_pushpop): Update.
21167         (thumb_exit): Update.
21168         (thumb1_expand_prologue): Update.
21169         (thumb1_expand_epilogue): Update.
21170         (arm_unwind_emit): Update.
21171         (arm_output_fn_unwind): Update.
21172         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
21173         * config/arm/arm.md: Update.
21174         * config/pa/pa.md: Update.
21175         * config/pa/pa.c (legitimize_pic_address): Update.
21176         (compute_frame_size): Update.
21177         (hppa_expand_prologue): Update.
21178         (hppa_expand_epilogue): Update.
21179         (borx_reg_operand): Update.
21180         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
21181         (HARD_REGNO_RENAME_OK): Update.
21182         * config/mips/mips.c (mips_global_pointer): Update.
21183         (mips_save_reg_p): Update.
21184         (mips_compute_frame_info): Update.
21185         (mips_frame_pointer_required): Update.
21186         (mips_expand_prologue): Update.
21187         (mips_expand_epilogue): Update.
21188         (mips_can_use_return_insn): Update.
21189         (mips_reorg_process_insns): Update.
21190         * config/v850/v850.c (compute_register_save_size): Update.
21191         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
21192         * config/mmix/mmix.c (along): Update.
21193         (mmix_expand_epilogue): Update.
21194         * config/bfin/bfin.c (legitimize_pic_address): Update.
21195         (must_save_p): Update.
21196         (stack_frame_needed_p): Update.
21197         (add_to_reg): Update.
21198         (bfin_expand_prologue): Update.
21199         * stmt.c (expand_asm_operands): Update.
21200         * reload1.c (reload): Update.
21201         (init_elim_table): Update.
21203 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
21205         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
21207 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
21209         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
21210         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
21211         (mov<mode>): Removed.
21212         (*movv4sf_internal): Likewise.
21213         (*movv2df_internal): Likewise.
21215 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
21217         * config.gcc (crx-*-elf): Remove deprecation.
21219 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
21221         * config/i386/cygming-crtend.c (register_frame_ctor): Register
21222         __gcc_deregister_frame with atexit.
21223         (deregister_frame_dtor): Remove.
21225 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
21226             Nathan Sidwell  <nathan@codesourcery.com>
21228         * config/rs6000/rs6000.opt (mspe): Remove Var property.
21229         (misel): Likewise.
21230         * config/rs6000/rs6000.h (rs6000_spe): Declare.
21231         (rs6000_isel): Likewise.
21232         * config/rs6000/rs6000.c (rs6000_spe): New variable.
21233         (rs6000_isel): New variable.
21234         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
21236 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
21238         PR c++/35758
21239         * c-common.c (handle_vector_size_attribute): Call
21240         lang_hooks.types.reconstruct_complex_type instead of
21241         reconstruct_complex_type.
21242         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
21243         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
21244         * langhooks.h (struct lang_hooks_for_types): Add
21245         reconstruct_complex_type hook.
21246         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
21247         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
21249 2008-04-24  Richard Guenther  <rguenther@suse.de>
21251         * c-common.h (check_builtin_function_arguments): Declare.
21252         * c-common.c (validate_nargs): New function.
21253         (check_builtin_function_arguments): Likewise.
21254         * c-typeck.c (build_function_call): Call
21255         check_builtin_function_arguments.
21256         * builtins.c (fold_builtin_classify): Remove error reporting code.
21257         (fold_builtin_unordered_cmp): Likewise.
21258         (fold_builtin_1): Likewise.
21259         (fold_builtin_n): Likewise.
21261 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
21263         PR tree-optimization/36008
21264         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
21265         the original op1, rather than delta by step.
21267 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
21268             Sebastian Pop  <sebastian.pop@amd.com>
21270         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
21271         eliminate_local_variables_stmt, eliminate_local_variables,
21272         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
21273         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
21274         of code delimited by two edges in the CFG.
21275         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
21276         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
21277         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
21278         the case of parallelisation of reductions.
21279         (expr_invariant_in_region_p): New.
21281         * tree-flow.h (gather_blocks_in_sese_region): Declared.
21282         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
21284 2008-04-24  Ira Rosen  <irar@il.ibm.com>
21285             Richard Guenther  <rguenther@suse.de>
21287         PR tree-optimization/36034
21288         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
21289         incapable of dealing with loads with gaps.
21291 2008-04-24  Rafael Espíndola  <espindola@google.com>
21293         * tree-flow.h (vrp_evaluate_conditional): Change signature.
21294         * tree-ssa-propagate.c (fold_predicate_in): Update call to
21295         vrp_evaluate_conditional.
21296         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
21297         (vrp_evaluate_conditional): Split the cond argument.
21298         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
21299         (simplify_stmt_for_jump_threading): Update call to
21300         vrp_evaluate_conditional.
21302 2008-04-24  Ira Rosen  <irar@il.ibm.com>
21304         PR tree-optimization/35982
21305         * tree-vect-analyze.c (vect_check_interleaving): Check that the
21306         interleaved data-refs are of the same type.
21308 2008-04-24  Danny Smith  <dannysmith@users.net>
21310         * c-format.c (check_format_info_main): Use strncmp rather than a
21311         magic prefix to handle multichar length specs.
21312         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
21313         Don't prefix "I64" and "I32" with '\0'.
21315 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
21317         PR target/36015
21318         * config/i386/i386.c (init_cumulative_args): Don't pass anything
21319         in registers for -m32 only if stdarg_p (fntype).
21321 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
21323         PR rtl-optimization/36006
21324         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
21325         temp to op0 in order to avoid invalid rtx sharing.
21327 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
21329         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
21330         check TREE_INVARIANT.
21331         * tree-gimple.c (is_gimple_address): New.
21332         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
21333         * tree-gimple.h (is_gimple_address): New.
21334         * tree.h (decl_address_invariant_p): New.
21335         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
21336         (build_string): Likewise.
21337         (decl_address_invariant_p): New, from is_gimple_invariant_address.
21338         (tree_invariant_p_1): Likewise.
21339         (save_expr): Use it.
21340         (tree_invariant_p): New.
21341         (skip_simple_arithmetic): Use it.
21342         (stabilize_reference_1): Use it.
21343         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
21344         simplify.
21345         (build1_stat): Drop code to compute TREE_INVARIANT.
21346         (build2_stat): Drop code to compute TREE_INVARIANT.
21347         (build3_stat): Drop code to compute TREE_INVARIANT.
21348         (build4_stat): Drop code to compute TREE_INVARIANT.
21349         (build5_stat): Drop code to compute TREE_INVARIANT.
21350         (build7_stat): Drop code to compute TREE_INVARIANT.
21351         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
21352         * tree.h (struct tree_base): Remove invariant_flag.
21353         (TREE_INVARIANT): Remove.
21354         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
21355         (fold_builtin_expect): Check TREE_CONSTANT.
21356         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
21357         * c-tree.h (c_expr_to_decl): Drop third parameter.
21358         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
21359         (build_c_cast): Don't set TREE_INVARIANT.
21360         (pop_init_level): Don't set TREE_INVARIANT.
21361         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
21362         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
21363         TREE_CONSTANT.
21364         (gimplify_init_constructor): Don't set TREE_INVARIANT.
21365         (gimplify_addr_expr): Adjust comment.
21366         * tree-mudflap.c (mf_build_string):
21367         * print-tree.c (print_node): Don't print TREE_INVARIANT.
21368         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
21369         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
21370         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
21371         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
21372         * langhooks.h (struct lang_hooks): Drop third parameter from
21373         expr_to_decl.
21375 2008-04-23  Richard Guenther  <rguenther@suse.de>
21377         PR tree-optimization/27799
21378         PR tree-optimization/32921
21379         PR tree-optimization/32624
21380         * tree-ssa-structalias.c (merge_smts_into): Only merge the
21381         SMTs aliases and the tag itself into the solution.
21382         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
21383         merge the points-to solution back into the SMT aliases.
21384         (may_alias_p): Use alias_set_subset_of instead of
21385         aliases_conflict_p.  A pointer which points to
21386         memory with alias set zero may access any variable.
21388 2008-04-23  Richard Guenther  <rguenther@suse.de>
21390         * alias.c (alias_set_subset_of): Correctly handle asking
21391         if zero is a subset of an alias set with zero child.
21392         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
21393         (compute_flow_insensitive_aliasing): Correctly walk all
21394         pointers.  Do not unnecessarily union sets.
21396 2008-04-23  Richard Guenther  <rguenther@suse.de>
21398         PR middle-end/36021
21399         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
21401 2008-04-22  Tomas Bily  <tbily@suse.cz>
21403         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
21404         unreachable case.
21405         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
21406         NON_LVALUE_EXPR.
21407         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
21408         * tree-ssa-structalias.c (get_constraint_for): Likewise.
21409         * tree-inline.c (estimate_num_insns_1): Likewise.
21410         * varasm.c (const_hash_1, compare_constant, copy_constant)
21411         (compute_reloc_for_constant, output_addressed_constants): Likewise.
21412         * emit-rtl.c (component_ref_for_mem_expr)
21413         (set_mem_attributes_minus_bitpos): Likewise.
21414         * expr.c (highest_pow2_factor, expand_expr_real_1)
21415         (is_aligning_offset): Likewise.
21416         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
21417         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
21418         * dojump.c (do_jump): Likewise.
21419         * builtins.c (get_pointer_alignment, get_memory_rtx)
21420         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
21421         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
21423 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
21425         PR rtl-optimization/36017
21426         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
21427         expanding the library call.
21429 2008-04-22  Ian Lance Taylor  <iant@google.com>
21431         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
21432         than size_in_bytes.
21434 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
21436         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
21437         of LR/CTR moves for Power6.
21439 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
21441         PR middle-end/36003
21442         * passes.c (init_optimization_passes): Remove
21443         pass_fast_rtl_byte_dce.
21445 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
21447         PR target/29096
21448         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
21449         builtin functions to generate faster code.
21450         (_mm_cvtpu16_ps): Ditto.
21451         (_mm_cvtpi32x2_ps): Ditto.
21453 2008-04-22  Nick Clifton  <nickc@redhat.com>
21455         * common.opt (ftree-loop-distribution): Add Optimization
21456         attribute.
21458         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
21459         (frv_expand_builtin_va_start): Likewise.
21461         * config/arm/arm.c (thumb_find_work_register): Fix location of
21462         argument register count.
21464 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
21466         Support scheduling for ColdFire V1 and V3 microarchitecture.
21467         Improve scheduling of multiplication instructions.
21469         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
21470         (mac): New instruction attribute.
21471         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
21472         (m68k_sched_mac): New variable.
21473         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
21474         Handle cfv1 and cfv3.
21475         (max_insn_size): New static variable.
21476         (struct _sched_ib): New type.
21477         (sched_ib): New static variable.
21478         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
21479         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
21480         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
21481         Update.
21482         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
21483         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
21484         new variables.  Update.
21485         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
21486         Add modeling of cfv3 instruction buffer.  Update.
21487         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
21488         * config/m68k/m68k.h (TUNE_CFV3): New macro.
21489         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
21490         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
21491         a particular reservation applies to.
21492         (type2): Reorganize attribute values.  Rename alu to alu_reg,
21493         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
21494         to mul_l and mul_w.
21495         (cf_ib_*): Simplify description of instruction buffer.
21496         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
21497         (cf_mem): Split into cf_mem1 and cf_mem2.
21498         (cf_v2_move_??): Rename to cfv12_alu_??.
21499         (cf_v2_move_l_??): Rename to cfv12_omove_??.
21500         (cf_v2_mul_??): Remove reservations.
21501         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
21502         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
21503         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
21504         appropriate place.
21505         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
21506         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
21507         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
21508         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
21509         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
21510         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
21511         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
21512         expansions of the above reservations for instructions of sizes
21513         1, 2 and 3 words.
21515 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
21517         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
21519 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
21521         * coverage.c: Include tree-pass.h.
21522         (coverage_counter_alloc): Print da_file_name to the dump file.
21524 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
21526         * sbitmap.c (sbitmap_range_empty_p): New function.
21527         * sbitmap.h (sbitmap_range_empty_p): New function.
21528         * bitmap.h: Now includes obstack.h.
21530 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
21531             Kenneth Zadeck  <zadeck@naturalbridge.com>
21533         * dbgcnt.def (ra_byte_scan): Added.
21534         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
21535         when the last hit happens for a counter.
21536         * timevar.def (TV_DF_BYTE_LR): New variable.
21537         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
21538         * passes.c (pass_fast_rtl_byte_dce): New pass.
21539         * fwprop.c (update_df): Added mode to call df_ref_create.
21540         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
21541         DF_REF_EXTRACT_OFFSET.
21542         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
21543         DF_BYTE_LR_OUT, df_byte_lr): New macro.
21544         (df_mm): New enum.
21545         (df_ref_extract): Added mode field.
21546         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
21547         DF_REF_EXTRACT_OFFSET.
21548         (DF_REF_EXTRACT_MODE): New macro.
21549         (df_byte_lr_bb_info): New structure.
21550         (df_print_byte_regset, df_compute_accessed_bytes,
21551         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
21552         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
21553         df_byte_lr_simulate_uses,
21554         df_byte_lr_simulate_artificial_refs_at_top,
21555         df_byte_lr_simulate_artificial_refs_at_end,
21556         df_compute_accessed_bytes): New function.
21557         (df_ref_create): Add parameter.
21558         (df_byte_lr_get_bb_info): New inline function.
21559         * df-scan.c (df_ref_record, df_uses_record,
21560         df_ref_create_structure): Added mode parameter.
21561         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
21562         df_defs_record, df_uses_record, df_get_conditional_uses,
21563         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
21564         df_entry_block_defs_collect, df_exit_block_uses_collect):
21565         Added mode parameter to calls to df_ref_record, df_uses_record,
21566         df_ref_create_structure.
21567         (df_ref_equal_p, df_ref_compare): Added test for modes.
21568         (df_ref_create_structure): Added code to set mode.  Renamed
21569         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
21570         DF_REF_EXTRACT_OFFSET.
21571         * df-core.c (df_print_byte_regset): New function.
21572         * df-byte-scan.c: New file.
21573         * df-problems.c (df_rd_transfer_function): Removed unnecessary
21574         calls to BITMAP_FREE.
21575         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
21576         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
21577         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
21578         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
21579         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
21580         df_byte_lr_local_compute, df_byte_lr_init,
21581         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
21582         df_byte_lr_transfer_function, df_byte_lr_free,
21583         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
21584         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
21585         df_byte_lr_simulate_uses,
21586         df_byte_lr_simulate_artificial_refs_at_top,
21587         df_byte_lr_simulate_artificial_refs_at_end): New function.
21588         * dce.c (byte_dce_process_block): New function.
21589         (dce_process_block): au is now passed in rather than computed
21590         locally.  Changed loops that look at artificial defs to not look
21591         for conditional or partial ones, because there never are any.
21592         (fast_dce): Now is able to drive byte_dce_process_block or
21593         dce_process_block depending on the kind of dce being done.
21594         (rest_of_handle_fast_dce): Add parameter to fast_dce.
21595         (rest_of_handle_fast_byte_dce): New function.
21596         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
21597         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
21599 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
21601         PR fortran/35019
21602         * gcc.h: Added fortran options that take arguments to
21603         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
21604         macros.
21606 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
21608         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
21609         scalarization if on the LHS and not a full access.
21611 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21613         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
21615 2008-04-18  Rafael Espíndola  <espindola@google.com>
21617         * tree-vrp.c (find_case_label_index): Fix the binary search.
21618         (find_case_label_range): New.
21619         (vrp_visit_switch_stmt): Use find_case_label_range.
21620         (simplify_switch_using_ranges): Use find_case_label_range.
21622 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
21624         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
21625         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
21627 2008-04-18  Tom Tromey  <tromey@redhat.com>
21629         PR libcpp/15500:
21630         * doc/cpp.texi (Implementation-defined behavior): Mention
21631         -finput-charset.
21633 2008-04-18  Ian Lance Taylor  <iant@google.com>
21635         * fold-const.c (pointer_may_wrap_p): New static function.
21636         (fold_comparison): Add another test for pointer overflow.  Use
21637         pointer_may_wrap_p to disable some false positives.
21639 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
21641         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
21642         (fname_as_string): Match updated cpp_interpret_string prototype.
21643         (fix_string_type): Support char16_t* and char32_t*.
21644         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
21645         derivative) nodes.  Register as builtin if C++0x.
21646         (c_parse_error): Support CPP_CHAR{16,32}.
21647         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
21648         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
21649         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
21650         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
21651         CTI_CHAR32_ARRAY_TYPE>: New elements.
21652         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
21653         char32_type_node, signed_char32_type_node, char16_array_type_node,
21654         char32_array_type_node): New defines.
21655         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
21656         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
21657         (lex_string): Support CPP_STRING{16,32}, match updated
21658         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
21659         (lex_charconst): Support CPP_CHAR{16,32}.
21660         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
21661         and CPP_STRING{16,32}.
21663 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
21665         PR bootstrap/35457
21666         * aclocal.m4: Regenerate.
21667         * configure: Regenerate.
21669 2008-04-18  Jan Hubicka  <jh@suse.cz>
21671         * except.c (dw2_size_of_call_site_table,
21672         sjlj_size_of_call_site_table): Use vector API for call_site_record.
21674         * cgraphbuild.c (build_cgraph_edges): Update.
21675         * tree-pass.h: Update comment.
21676         * final.c (leaf_function_p): Update.
21677         (leaf_renumber_regs): Update.
21678         (rest_of_clean_state): Update.
21679         * omp-low.c (expand_omp_parallel): Update.
21680         * ipa-reference.c (analyze_function): Update.
21681         * reorg.c (find_end_label): Update.
21682         (optimize_skip): Update.
21683         (fill_simple_delay_slots): Update.
21684         (fill_simple_delay_slots): Update.
21685         (make_return_insns): Update.
21686         (dbr_schedule): Update.
21687         * gimple-low.c (record_vars_into): Update.
21688         * cfgbuild.c (make_edges): Update.
21689         * function.c (assign_stack_local): Update.
21690         (assign_parm_adjust_stack_rtl): Update.
21691         (locate_and_pad_parm): Update.
21692         (allocate_struct_function): Do not initialize stack_alignment_needed
21693         and preferred_stack_boundary here.
21694         (stack_protect_prologue): Update.
21695         (stack_protect_epilogue): Update.
21696         (expand_function_start): Initialize stack_alignment_needed,
21697         preferred_stack_boundary and max_jumptable_ents.
21698         (expand_function_end): Update.
21699         (free_after_compilation): Do not NULLify epilogue_delay_list.
21700         * function.h (struct rtl_data): Add stack_protect_guard,
21701         stack_alignment_needed,
21702         preferred_stack_boundary, epilogue_delay_list.
21703         (struct function): Remove value_histograms, stack_alignment_needed,
21704         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
21705         last_label_uid,
21706         unexpanded_var_list, stack_protect_guard.
21707         (current_function_epilogue_delay_list): Remove.
21708         * ipa-type-escape.c (analyze_function): Update.
21709         * gimplify.c (pop_gimplify_context): Update comment.
21710         * calls.c (expand_call): Update.
21711         (emit_library_call_value_1): Update.
21712         * except.c (set_nothrow_function_flags): Update.
21713         * cfgexpand.c (get_decl_align_unit): Update.
21714         (create_stack_guard): Update.
21715         (estimated_stack_frame_size): Update.
21716         (expand_used_vars): Update.
21717         (tree_expand_cfg): Free histogram earliers, init expansion variables.
21718         * explow.c (allocate_dynamic_stack_space): Update.
21719         * tree-ssa-live.c (remove_unused_locals): Update.
21720         * varasm.c (mark_constant_pool): Update.
21721         * tree-inline.c (remap_decls): Update.
21722         (initialize_cfun): Update.
21723         (declare_return_variable): Update.
21724         (inline_forbidden_p): Update.
21725         (expand_call_inline): Update.
21726         (declare_inline_vars): Update.
21727         (tree_function_versioning): Update.
21728         * tree-flow.h (value_histograms): New.
21729         (VALUE_HISTOGRAMS): New macro.
21730         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
21731         last_label_uid.
21732         * tree-cfg.c (set_bb_for_stmt): Update.
21733         (replace_by_duplicate_decl): Update.
21734         (move_block_to_fn): Update.
21735         (new_label_mapper): Update.
21736         (dump_function_to_file): Update.
21737         * ipa-struct-reorg.c (build_data_structure): Update.
21738         * cfgrtl.c (print_rtl_with_bb): Update.
21739         * reload1.c (reload): Update.
21740         (reload): Update.
21741         * config/i386/i386.c (setup_incoming_varargs_64,
21742         ix86_compute_frame_layout): Update.
21743         * config/arc/arc.c (arc_output_function_epilogue): Update.
21745 2008-04-18  Marius Strobl <marius@FreeBSD.org>
21747         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
21748         for FreeBSD as well.
21749         * gthr-posix95.h: Likewise.
21751 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
21753         PR rtl-optimization/35838
21754         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
21755         out the byte offset of the first subreg.
21757 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
21759         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
21760         to split_ti instead of three separate calls with single member arrays.
21761         (subti3 splitter): Ditto.
21762         (adddi3 splitter): Ditto with split_di.
21763         (subdi3 splitter): Ditto.
21764         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
21765         two separate calls with single member arrays.  Swap match_dup
21766         operands 1 and 2 to better fit into the array.
21767         (negdi2 splitter): Ditto with split_di.
21768         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
21769         two separate calls with single member arrays.  Swap match_dup operands
21770         6 and 7 to better fit into the array.
21772 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21774         * config/i386/i386.c (sse_builtin_type): New.
21775         (bdesc_sse_args): Likewise.
21776         (bdesc_sse_3arg): Removed.
21777         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21778         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
21779         IX86_BUILTIN_ROUNDPS.
21780         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
21781         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
21782         IX86_BUILTIN_ROUNDPS.
21783         (ix86_expand_sse_4_operands_builtin): Removed.
21784         (ix86_expand_sse_operands_builtin): New.
21785         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
21786         and CODE_FOR_sse4_1_roundps.
21787         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21788         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
21790 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
21792         PR target/35907
21793         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
21794         regs before frame pop when needed.  If use_backchain_to_restore_sp
21795         then load backchain into a temp reg to restore vr and vrsave.  Add
21796         code to restore vr after frame pop if possible.
21798 2008-04-17  Richard Guenther  <rguenther@suse.de>
21800         * tree-vn.c (expressions_equal_p): Do not check type
21801         equality or compatibility before calling operand_equal_p.
21802         * fold-const.c (operand_equal_p): Check equivalence of
21803         integer constants before bailing out due to signedness or
21804         precision differences.
21805         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
21806         spurious differences in type qualification.  Ignore types
21807         for COMPONENT_REFs at all.
21809 2008-04-17  Christian Bruel  <christian.bruel@st.com>
21811         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
21812         msw_skip comparison.
21814 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
21816         PR c/35739
21817         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
21818         reg type.
21820         PR tree-optimization/35899
21821         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
21822         rather than TREE_OPERAND.
21824 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
21826         PR target/35944
21827         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
21828         temporary registers.  Change operand predicate to general_operand.
21829         (remainderxf3): Ditto.
21831 2008-04-16  Richard Guenther  <rguenther@suse.de>
21833         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
21834         * tree-affine.c (aff_combination_expand): Look through some
21835         conversions.
21837 2008-04-15  Doug Kwan  <dougkwan@google.com>
21839         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
21840         for hex printing.
21841         * tree-pretty-print.c (dump_generic_node): Ditto.
21842         * final.c (output_addr_const): Ditto.
21843         * dwarf2out.c (output_cfi): Ditto.
21844         * c-pretty-print.c (pp_c_integer_constant): Ditto.
21845         * print-rtl.c (print_rtx): Ditto.
21846         * print-tree.c (print_node_brief, print_node): Ditto.
21847         * c-common.c (match_case_to_enum_1): Ditto.
21848         * sched-vis.c (print_value): Ditto.
21849         * config/i386/i386.c (print_operand): Cast to long unsigned int
21850         for hex printing.
21852 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
21853         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
21854         MS Windows VirtualProtect function.
21856 2008-04-15  Jan Hubicka  <jh@suse.cz>
21858         * gengtype.c (write_root): Param_is argument is OK.
21859         * expr.c (expand_expr_real_1): Update call of get_exception_*.
21860         * function.h: Include varray.h
21861         (rtl_eh): New stucture based on except.c one.
21862         (call_site_record): New forward declaration and vector type.
21863         * calls.c (emit_call_1): Do not call
21864         note_current_region_may_contain_throw.
21865         * except.c (eh_status): Remove cur_region, try_region since they are
21866         unused.
21867         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
21868         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
21869         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
21870         Remove call_site_data_used, call_site_data_size.
21871         Turn call_site_record into vector in function.h.
21872         (note_current_region_may_contain_throw): Remove.
21873         (get_exception_pointer, get_exception_filter): Do not take struct
21874         function argument; update.
21875         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
21876         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
21877         build_post_landing_pads, dw2_build_landing_pads,
21878         sjlj_assign_call_site_values, sjlj_mark_call_sites,
21879         sjlj_emit_function_enter, sjlj_emit_function_enter,
21880         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
21881         sjlj_build_landing_pads, finish_eh_generation,
21882         remove_exception_handler_label, remove_eh_handler,
21883         maybe_remove_eh_handler, add_reachable_handler,
21884         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
21885         add_action_record, collect_one_action_chain, add_call_site,
21886         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
21887         sjlj_output_call_site_table, output_function_exception_table,
21888         * except.h (note_current_region_may_contain_throw): Remove
21889         (get_exception_pointer, get_exception_filter): Do not take struct
21890         function argument.
21891         * Makefile.in (GTFILES): Put varargs before struct function.
21893 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21895         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
21896         punt for STRING_CST.
21897         (get_constraint_for): Deal with STRING_CST here instead.
21899 2008-04-15  Richard Guenther  <rguenther@suse.de>
21901         * tree-ssa-propagate.c (substitute_and_fold): Substitute
21902         statements in a basic-block with a backward walk.  Do not
21903         substitute into dead statements but instead remove those.
21905 2008-04-15  Richard Guenther  <rguenther@suse.de>
21907         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
21908         to zero, thus disable creation of SFTs.
21910 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21912         * tree-predcom.c (suitable_reference_p): Return false if the
21913         reference can throw.
21915 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
21917         PR c/35751
21918         * c-decl.c (finish_decl): If extern or static var has variable
21919         size, set TREE_TYPE (decl) to error_mark_node.
21921 2008-04-15  Rafael Espíndola  <espindola@google.com>
21923         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
21924         variable arg1.
21926 2008-04-15  Richard Guenther  <rguenther@suse.de>
21928         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
21929         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
21930         (visit_reference_op_load): Do walk vuse-vdef chains on
21931         vn_reference_lookup.
21932         (visit_reference_op_store): But do not here.
21933         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
21934         vn_reference_lookup.
21935         (vn_lookup_with_vuses): But do so here.
21937 2008-04-14  Ian Lance Taylor  <iant@google.com>
21939         * fold-const.c (fold_overflow_warning): Remove assertion.
21941 2008-04-15  Ben Elliston  <bje@au.ibm.com>
21943         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
21944         temp1 local variables.
21946 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
21948         PR target/35661
21949         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
21950         ".text.unlikely" section as executable.
21952 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
21954         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21955         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
21956         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
21957         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
21958         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
21959         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
21960         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
21962 2008-04-14  Ian Lance Taylor  <iant@google.com>
21964         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
21965         * fold-const.c (fold_comparison): If appropriate, test
21966         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
21967         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
21968         reassociating a pointer type.
21969         * doc/invoke.texi (Optimize Options): Document that
21970         -fstrict-overflow applies to pointer wraparound.
21972 2008-04-13  Jan Hubicka  <jh@suse.cz>
21974         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
21976 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
21978         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
21979         we are going to "save the world".
21981 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
21983         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
21984         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
21985         operand 0 constraint, not "=".
21987 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
21989         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
21991 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21993         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
21994         of size of positions_needed * CHAR_BIT.
21996 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21998         PR middle-end/35897
21999         * dse.c (store_info): Change positions_needed to unsigned
22000         HOST_WIDE_INT.
22001         (lowpart_bitmask): New.
22002         (record_store): Cast to unsigned HOST_WIDE_INT for
22003         positions_needed.  Assert width <= size of positions_needed *
22004         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
22005         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
22006         lowpart_bitmask to set mask.
22008 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22010         * config/bfin/constraints.md: New file.
22011         * config/bfin/bfin.md: Include it.
22012         (adddi3): Use satisfies_constraint functions instead of the old macros.
22013         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
22014         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
22015         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
22016         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
22017         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
22018         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
22019         EXTRA_CONSTRAINT): Delete.
22020         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
22021         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
22022         of the old macros.
22023         * config/bfin/bfin.c: Include "tm-constrs.h".
22024         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
22025         Use satisfies_constraint functions instead of the old macros.
22026         * doc/md.texi (Blackfin Constraints): Update file name reference.
22028 2008-04-11  Richard Guenther  <rguenther@suse.de>
22030         PR tree-optimization/35869
22031         * tree-vrp.c (execute_vrp): Move switch statement update after
22032         jump threading.  Schedule another cfg cleanup run.
22034 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
22036         PR c/35744
22037         * attribs.c (decl_attributes): Return early on errorneous node.
22039 2008-04-10  Oleg Ryjkov  <olegr@google.com>
22041         * tree.h (struct tree_base): Added a new flag default_def_flag.
22042         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
22044 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
22046         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
22048 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22050         PR target/35768
22051         * pa.md: Define mode iterator P.  Define mode attribute dwc.
22052         (dcacheflush): Update pattern to use iterator P and attribute dwc.
22053         (icacheflush): Likewise.
22054         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
22055         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
22057 2008-04-11  Ben Elliston  <bje@au.ibm.com>
22059         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
22061 2008-04-10  Rafael Espíndola  <espindola@google.com>
22063         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
22064         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
22065         (extract_range_from_expr): The same.
22067 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
22069         * config/mips/mips.md (GPR2): New mode iterator.
22070         (seq): Add comment.
22071         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
22072         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
22073         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
22074         Rewrite these to take two modes, the mode of comparison and the
22075         mode of the destination.
22076         * config/mips/mips.c (mips_expand_scc): Instead of having
22077         paradoxical subreg as destination, expand "narrowing" scc if mode
22078         of comparison is SI and target is requested in DI mode.
22079         (mips_emit_int_order_test): Update comment.  Make mode of
22080         comparison match CMP0 rather than TARGET.  When creating inverse
22081         target use mode of TARGET.
22083 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
22085         * gcov-dump.c (tag_summary): Only print summaries for the first
22086         GCOV_COUNTERS_SUMMABLE counters.
22088 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
22090         * config/i386/i386.md (absneg): New code iterator.
22091         (absnegprefix): New code attribute.
22092         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
22093         patterns using absneg code iterator.
22094         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
22095         using absneg code iterator.
22096         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
22097         *neg<mode>2 patterns using absneg code iterator.
22098         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
22099         *negextendsfdf2 patterns using absneg code iterator.
22100         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
22101         *negextendsfxf2 patterns using absneg code iterator.
22102         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
22103         *negextendsfdf2 patterns using absneg code iterator.
22104         * config/i386/sse.md (<code><mode>2): Macroize expander from
22105         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
22107 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
22109         * config/s390/s390.h: Remove the remains of the recent search
22110         & replace action of current_function_outgoing_args_size.
22112 2008-04-10  Ira Rosen  <irar@il.ibm.com>
22114         PR tree-optimization/35821
22115         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
22116         NEW_STMT_LIST is not NULL.
22118 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
22120         PR libstdc++/35597
22121         * toplev.c (process_options): Remove -ffunction-sections debugging
22122         warning.
22124 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
22126         PR middle-end/PR28690
22127         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
22128         than gen_rtx_fmt_ee to perform more canonicalizations.
22130 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22132         PR driver/35665
22133         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
22135 2008-04-09  Richard Guenther  <rguenther@suse.de>
22137         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
22138         (dump_function_to_file): Dump function arguments with types.
22140 2008-04-08  Richard Guenther  <rguenther@suse.de>
22142         * fold-const.c (fold_widened_comparison): Do not allow
22143         sign-changes that change the result.
22145 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
22147         PR target/35839
22148         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
22149         kinds of indirect references.
22151 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
22153         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
22154         GNU Fortran language string.
22156 2008-04-08  Rafael Espíndola  <espindola@google.com>
22158         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
22159         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
22160         * tree.h (tree_call_nonnegative_warnv_p): New.
22162 2008-04-08  Jan Hubicka  <jh@suse.cz>
22164         * function.c (free_after_compilation): Clear out regno_reg_rtx
22165         pointer.
22167 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
22169         Revert
22170         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
22172         PR middle-end/PR28690
22173         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
22174         same precedence as REG_POINTER and MEM_POINTER operands.
22176 2008-04-08  Richard Guenther  <rguenther@suse.de>
22178         PR middle-end/35834
22179         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
22180         for adding index to base.
22182 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
22184         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
22185         (MINGW_ENABLE_EXECUTE_STACK): New.
22186         (IN_LIBGCC2): For libgcc include windows.h file for
22187         function declarations.
22189 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
22191         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
22192         and tem2 if tem1 is not a REG or MULT.
22194 2008-04-08  Jan Hubicka  <jh@suse.cz>
22196         * function.h (incomming_args): Break out of struct function.
22197         (function_subsections): Break out of struct function.
22198         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
22199         return_rtx and hard_reg_initial_vals from struct function.
22200         Kill inl_max_label_num.
22201         (current_function_pops_args, current_function_args_info,
22202         current_function_args_size, current_function_args_size,
22203         current_function_pretend_args_size,
22204         current_function_outgoing_args_size,
22205         current_function_internal_arg_pointer, current_function_return_rtx):
22206         Kill compatibility accestor macros.
22207         * builtins.c (expand_builtin_apply_args_1): Update.
22208         (expand_builtin_next_arg): Update.
22209         * df-scan.c (df_get_call_refs): Update.
22210         * dbxout.c (dbxout_function_end): Update.
22211         * dwarf2out.c (dwarf2out_switch_text_section): Update.
22212         (output_line_info): Update.
22213         (secname_for_decl): Update.
22214         (dwarf2out_var_location): Update.
22215         * function.c (free_after_compilation): Update.
22216         (assign_parm_find_stack_rtl): Update.
22217         (assign_parms): Update.
22218         (expand_dummy_function_end): Update.
22219         (expand_function_end): Update.
22220         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
22221         (expand_call): Update.
22222         (emit_library_call_value_1): Update.
22223         (store_one_arg): Update.
22224         * varasm.c (initialize_cold_section_name): Update.
22225         (unlikely_text_section): Update.
22226         (unlikely_text_section_p): Update.
22227         (assemble_start_function): Update.
22228         (assemble_end_function): Update.
22229         (default_section_type_flags): Update.
22230         (switch_to_section): Update.
22231         * integrate.c (set_decl_abstract_flags): Update.
22232         (get_hard_reg_initial_val): Update.
22233         (has_hard_reg_initial_val): Update.
22234         (allocate_initial_values): Update.
22235         * resource.c (init_resource_info): Update.
22236         * config/alpha/alpha.c (NUM_ARGS): Update.
22237         (direct_return): Update.
22238         (alpha_va_start): Update.
22239         (alpha_sa_size): Update.
22240         (alpha_initial_elimination_offset): Update.
22241         (alpha_expand_prologue): Update.
22242         (alpha_start_function): Update.
22243         (alpha_expand_epilogue): Update.
22244         (unicosmk_initial_elimination_offset):
22245         * config/alpha/alpha.md (call expander): Update.
22246         * config/s390/s390.c (s390_register_info): Update.
22247         (s390_register_info): Update.
22248         (s390_frame_info): Update.
22249         (s390_initial_elimination_offset): Update.
22250         (s390_build_builtin_va_list): Update.
22251         (s390_va_start): Update.
22252         * config/spu/spu.c (direct_return): Update.
22253         (spu_expand_prologue): Update.
22254         (spu_initial_elimination_offset): Update.
22255         (spu_build_builtin_va_list): Update.
22256         (spu_va_start): Update.
22257         * config/sparc/sparc.c (sparc_init_modes): Update.
22258         (sparc_compute_frame_size): Update.
22259         (function_value): Update.
22260         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
22261         * config/i386/i386.md (return expander): Update.
22262         * config/i386/i386.c (ix86_va_start): Update.
22263         (ix86_can_use_return_insn_p): Update.
22264         (ix86_compute_frame_layout): Update.
22265         (ix86_expand_epilogue): Update.
22266         * config/sh/sh.c (output_stack_adjust): Update.
22267         (calc_live_regs): Update.
22268         (sh_expand_prologue): Update.
22269         (sh_builtin_saveregs): Update.
22270         (sh_va_start): Update.
22271         (initial_elimination_offset): Update.
22272         (sh_allocate_initial_value): Update.
22273         (sh_function_ok_for_sibcall): Update.
22274         (sh_get_pr_initial_val): Update.
22275         * config/sh/sh.md (return expander): Update.
22276         * config/avr/avr.c (frame_pointer_required_p): UPdate.
22277         * config/crx/crx.c (crx_compute_frame): UPdate.
22278         (crx_initial_elimination_offset): UPdate.
22279         * config/xtensa/xtensa.c (compute_frame_size): Update
22280         (xtensa_builtin_saveregs): Update.
22281         (xtensa_va_start): Update.
22282         (order_regs_for_local_alloc): Update.
22283         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
22284         (xstormy16_expand_builtin_va_start): Update.
22285         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
22286         * config/m68hc11/m68hc11.md (return expanders): Update.
22287         * config/m68hc11/m68hc11.c (expand_prologue): Update.
22288         (expand_epilogue): Update.
22289         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
22290         (cris_simple_epilogue): Update.
22291         (cris_expand_prologue): Update.
22292         (cris_expand_epilogue): Update.
22293         * config/iq2000/iq2000.c (iq2000_va_start): Update.
22294         (compute_frame_size): Update.
22295         * config/mt/mt.c (mt_compute_frame_size): Update.
22296         * config/mn10300/mn10300.c (expand_prologue): Update.
22297         (expand_epilogue): Update.
22298         (initial_offset): Update.
22299         (mn10300_builtin_saveregs):
22300         * config/mn10300/mn10300.md (return expander): Update.
22301         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
22302         (ia64_initial_elimination_offset): Update.
22303         (ia64_initial_elimination_offset): Update.
22304         (ia64_expand_prologue): Update.
22305         * config/m68k/m68k.md (return expander): Update.
22306         * config/rs6000/rs6000.c (rs6000_va_start): Update.
22307         (rs6000_stack_info): Update.
22308         * config/mcore/mcore.c (layout_mcore_frame): Update.
22309         (mcore_expand_prolog): Update.
22310         * config/arc/arc.c (arc_compute_frame_size): Update.
22311         * config/score/score3.c (score3_compute_frame_size): Update.
22312         * config/score/score7.c (score7_compute_frame_size): Update.
22313         * config/arm/arm.c (use_return_insn): Update.
22314         (thumb_find_work_register): Update.
22315         (arm_compute_save_reg_mask): Update.
22316         (arm_output_function_prologue): Update.
22317         (arm_output_epilogue): Update.
22318         (arm_size_return_regs): Update.
22319         (arm_get_frame_offsets): Update.
22320         (arm_expand_prologue): Update.
22321         (thumb_exit): Update.
22322         (thumb_unexpanded_epilogue): Update.
22323         (thumb1_output_function_prologue): Update.
22324         * config/pa/pa.md (return expander): Update.
22325         * config/pa/pa.c (compute_frame_size): Update.
22326         (hppa_builtin_saveregs): Update.
22327         * config/mips/mips.c (mips_va_start): Update.
22328         (mips16_build_function_stub): Update.
22329         (mips_compute_frame_info): Update.
22330         (mips_restore_gp): Update.
22331         (mips_output_function_prologue): Update.
22332         (mips_expand_prologue): Update.
22333         * config/v850/v850.c (compute_frame_size): Update.
22334         (expand_prologue): * config/mmix/mmix.c (along): update.
22335         (mmix_initial_elimination_offset): update.
22336         (mmix_reorg): update.
22337         (mmix_use_simple_return): update.
22338         (mmix_expand_prologue): update.
22339         (mmix_expand_epilogue): Update.
22340         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
22341         (emit_link_insn): Update.
22343 2008-04-08  Anatoly Sokolov <aesok@post.ru>
22345         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
22346         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
22347         instructions.
22348         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
22349         atmega103 device.
22351 2008-04-07  Jan Hubicka  <jh@suse.cz>
22353         * function.h (rtl): Rename to x_rtl.
22354         (crtl): New define.
22355         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22356         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22357         used_temp_slots avail_temp_slots, temp_slot_level,
22358         nonlocal_goto_handler_labels): Update accesstors.
22359         (rtl): New global variable.
22360         (struct function): Move some fileds to rtl_data.
22361         (get_arg_pointer_save_area): Update prototype.
22362         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22363         get_arg_pointer_save_area.
22364         * expr.c (init_expr): Update
22365         * function.c (get_frame_size): Update
22366         (assign_stack_local): Update
22367         (expand_function_end): Update.
22368         (get_art_pointer_save_area): Update
22369         * function.h
22370         * emit-rtl.c (rtl): Declare.
22371         (regno_reg_rtx): Declare.
22372         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22373         Update.
22374         (gen_reg_rtx): Update.
22375         * varasm.c (n_deferred_constatns): Update accestor.
22376         (init_varasm_status): Do not allocate varasm_status.
22377         (force_const_mem, get_pool_size, output_constant_pool): Update.
22378         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22379         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22380         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
22381         * sparc/sparc.h (INIT_EXPANDERS): Update.
22382         * ia64/ia64.h (INIT_EXPANDERS): Update.
22384 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
22386         * reload.c (push_secondary_reload): Add missing break to for loop.
22388 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
22390         PR middle-end/PR28690
22391         * rtlanal.c: Update copyright years.
22392         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
22393         as REG_POINTER and MEM_POINTER operands.
22394         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
22395         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
22396         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
22397         * gcse.c: Update copyright years.
22398         (pre_delete): Call gen_reg_rtx_and_attrs.
22399         (hoist_code): Likewise.
22400         (build_store_vectors): Likewise.
22401         (delete_store): Likewise.
22402         * loop-invariant.c (move_invariant_reg): Likewise.
22403         Update copyright years.
22405 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
22407         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
22408         control string instead of quoted.
22410 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
22412         * doc/rtl.texi: Rewrite of subreg section.
22414 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
22416         PR/35842
22417         * config/i386/i386.c (legitimize_pic_address): Add treating
22418         of dllimport SYM_REF's.
22419         (legitimize_dllimport_symbol): Add prototype.
22421 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
22423         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
22424         reference in constructor with non self-referential type.
22426 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
22428         Removal of Return with Depressed Stack Pointer support
22429         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
22430         (ECF_SP_DEPRESSED): Likewise.
22431         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
22432         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
22433         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22434         (expand_call): Do not test ECF_SP_DEPRESSED.
22435         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22436         * function.c (keep_stack_depressed): Delete.
22437         (handle_epilogue_set): Likewise.
22438         (update_epilogue_consts): Likewise.
22439         (emit_equiv_load): Likewise.
22440         (thread_prologue_and_epilogue_insns): Remove support for Return with
22441         Depressed Stack Pointer.
22442         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22444 2008-04-06  Richard Guenther  <rguenther@suse.de>
22446         PR tree-optimization/35400
22447         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
22448         information from SSA_NAMEs.
22450 2008-04-06  Anatoly Sokolov <aesok@post.ru>
22452         * config/avr/avr.h (avr_mega_p): Remove declaration.
22453         (AVR_MEGA): Remove macro.
22454         * config/avr/avr.c (avr_mega_p): Remove variable.
22455         (avr_override_options): Remove inicializion of avr_mega_p.
22456         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
22457         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
22458         (avr_jump_mode): (Ditto.).
22459         (avr_output_progmem_section_asm_op): (Ditto.).
22460         (avr_asm_init_sections): (Ditto.).
22461         (avr_asm_init_sections): (Ditto.).
22462         (avr_rtx_costs): (Ditto.).
22463         * config/avr/avr.md: (Ditto.).
22464         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
22465         '__AVR_MEGA__'.
22467 2008-04-06  Richard Guenther  <rguenther@suse.de>
22469         PR tree-optimization/35842
22470         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
22471         is_gimple_invariant_address.
22473 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
22475         * gcc.c (default_compilers): Sync Fortran extensions list with
22476         that in fortran/lang-specs.h.
22477         * doc/invoke.texi: Likewise.
22478         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
22479         * dwarf2out.c (gen_compile_unit_die): Likewise.
22481 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
22483         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
22485 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
22487         PR target/12329
22488         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
22489         attribute is used for nested functions.
22491 2008-04-05  Jan Hubicka  <jh@suse.cz>
22493         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
22495         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
22496         letter argument.
22497         (dump_files): Update.
22498         (enable_rtl_dump_file): Do not accept letter argument.
22499         * tree-pass.h (dump_file_info): Remove letter argument.
22500         * toplev.c (decode_d_option): Update -da handling.
22501         * toplev.h (enable_rtl_dump_file): Update prototype.
22502         * passes.c (register_one_dump_file): Do not accept IPA argument; work
22503         it out based on pass type.
22504         (register_dump_files_1): Likewise.
22505         (init_optimization_passes): Update register_one_dump_file calls.
22506         (execute_one_pass): Sanity check that IPA passes are called at IPA
22507         level and RTL passes at RTL level.
22508         (execute_pass_list): IPA pass can not be after or subpass of
22509         GIMPLE/RTL pass.
22510         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
22511         disallov RTL subpasses of IPA subpasses.
22513 2008-04-05  Ben Elliston  <bje@au.ibm.com>
22515         * tree-cfg.c (need_fake_edge_p): Return false for calls to
22516         builtins that return exactly once and do not throw. Cache call to
22517         call_expr_flags.
22519 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
22521         PR rtl-optimization/34916
22522         PR middle-end/35519
22523         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
22524         between instruction pairs.
22526 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
22528         * doc/invoke.texi: Document -mbitops for SH.
22529         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
22530         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
22531         * config/sh/sh.c (print_operand): Add %t operand code.
22532         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
22533         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
22534         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
22535         (extendqihi2): Likewise.
22536         (movqi_i): Likewise.
22537         (insv): Use bset, bclr and bst instructions for SH2A if possible.
22538         (extv): Use bld instruction for SH2A if possible.
22539         (extzv): Likewise.
22540         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
22541         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
22542         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
22543         (bset.b, bclr.b): Define peepholes.
22544         * config/sh/sh.opt (mbitops): New option.
22546 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
22548         PR target/35620
22549         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
22550         and view convert expression.
22552 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22554         PR target/35364
22555         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
22557 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
22559         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
22561         * config/i386/cpuid.h (bit_AES): New.
22562         (bit_PCLMUL): Likewise.
22564         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
22565         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
22566         SSE2 if AES or PCLMUL is enabled.
22567         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
22568         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
22569         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
22570         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
22571         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
22572         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
22573         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
22574         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
22575         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
22576         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
22577         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
22578         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
22579         __builtin_ia32_aeskeygenassist128 and
22580         __builtin_ia32_pclmulqdq128.
22581         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
22582         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
22583         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
22585         * config/i386/i386.h (TARGET_AES): New.
22586         (TARGET_PCLMUL): Likewise.
22587         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
22589         * config/i386/i386.md (UNSPEC_AESENC): New.
22590         (UNSPEC_AESENCLAST): Likewise.
22591         (UNSPEC_AESDEC): Likewise.
22592         (UNSPEC_AESDECLAST): Likewise.
22593         (UNSPEC_AESIMC): Likewise.
22594         (UNSPEC_AESKEYGENASSIST): Likewise.
22595         (UNSPEC_PCLMUL): Likewise.
22597         * config/i386/i386.opt (maes): New.
22598         (mpclmul): Likewise.
22600         * config/i386/sse.md (aesenc): New pattern.
22601         (aesenclast): Likewise.
22602         (aesdec): Likewise.
22603         (aesdeclast): Likewise.
22604         (aesimc): Likewise.
22605         (aeskeygenassist): Likewise.
22606         (pclmulqdq): Likewise.
22608         * config/i386/wmmintrin.h: New.
22610         * doc/extend.texi: Document AES and PCLMUL built-in function.
22612         * doc/invoke.texi: Document -maes and -mpclmul.
22614 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
22616         * function.c (free_after_parsing): Replace with
22617         cxx_push_function_context from C++ front-end.
22618         (allocate_struct_function): Don't call langhook.
22619         * langhooks.h (struct lang_hooks_for_functions): Delete.
22620         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
22621         member "function".
22622         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
22623         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
22624         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
22625         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
22626         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
22627         remove LANG_HOOKS_FUNCTION_INITIALIZER.
22628         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
22630         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
22631         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
22633 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22635         PR c/35440
22636         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
22637         for all types.
22639 2008-04-04  Richard Guenther  <rguenther@suse.de>
22641         PR middle-end/35823
22642         * fold-const.c (optimize_minmax_comparison): Use the correct
22643         type for the constant in the simplified comparison.
22645 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
22647         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
22648         Pass L2 size as "--param l2-cache-size" to the compiler.
22649         (decode_l2_cache): New function to decode L2 cache parameters using
22650         0x8000006 extended cpuid function.
22651         (detect_caches_amd): Determine parameters of L2 cache using
22652         decode_l2_caches function.
22653         (decode_caches_intel): Decode L2 cache parameters.
22654         (detect_caches_intel): Determine L2 cache parameters using
22655         decode_caches_intel and decode_l2_caches functions.
22657 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
22659         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
22660         secondary input reload for subword loads from the constant pool.
22662 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
22664         PR target/35713
22665         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
22666           constants of the appropriate size for runtime calculations.
22668         PR c/35712
22669         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
22670           decimal-float literal constant zero.
22672 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
22674         PR c/35738
22675         * c-parser.c (c_parser_omp_atomic): Call
22676         default_function_array_conversion on the RHS.
22678         PR middle-end/35818
22679         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
22680         call is_variable_sized if decl has incomplete type.
22682 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
22684         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
22686 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
22688         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
22689         iterators.
22690         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
22691         (sgt<u>): Merge sgt and sgtu into new expander.
22692         (sgt, sgtu): Remove expanders.
22693         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
22694         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
22695         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
22696         *sgtu_<mode>_mips16 into new pattern.
22697         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
22698         (sge<u>): Merge sge and sgeu into new expander.
22699         (sge, sgeu): Remove expanders.
22700         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
22701         new pattern.
22702         (*sge_<mode>, second *sge_<mode>): Remove patterns.
22703         (slt<u>): Merge slt and sltu into new expander.
22704         (slt, sltu): Remove expanders.
22705         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
22706         (*slt_<mode>, *sltu_<mode>): Remove patterns.
22707         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
22708         *sltu_<mode>_mips16 into new pattern.
22709         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
22710         (sle<u>): Merge sle and sleu into new expander.
22711         (sle, sleu): Remove expanders.
22712         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
22713         (*sle_<mode>, *sleu_<mode>): Remove patterns.
22714         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
22715         *sleu_<mode>_mips16 into new pattern.
22716         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
22718 2008-04-03  Jan Hubicka  <jh@suse.cz>
22720         PR tree-optimization/35795
22721         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
22722         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
22723         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
22724         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
22725         * score/score3.c (score3_output_mi_thunk): Likewise.
22726         * score/score7.c (score7_output_mi_thunk): Likewise.
22727         * mips/mips.c (mips_output_mi_thunk): Likewise.
22729 2008-04-03  Richard Guenther  <rguenther@suse.de>
22731         * tree-vrp.c (extract_range_from_unary_expr): Handle all
22732         conversions.  Simplify code.
22734 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
22736         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
22738 2008-04-03  Tom Tromey  <tromey@redhat.com>
22739             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22741         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22742         * config/bfin/t-bfin-linux (generated_files): Add
22743         linux-sysroot-suffix.h.
22744         * doc/install.texi (Prerequisites): Require make 3.80.
22745         * doc/sourcebuild.texi (Front End Directory): Document new
22746         variable.
22747         * Makefile.in (generated_files): New variable.
22748         (ALL_HOST_OBJS): New variable.
22749         ($(ALL_HOST_OBJS)): New target.
22751 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22753         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
22754         (remap_block): Call id->transform_lang_insert_block instead
22755         of langhook.
22756         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
22757         Set id.transform_lang_insert_block to NULL.
22758         (clone_body): Move to cp/optimize.c
22759         * tree-inline.h (struct copy_body_data): Change
22760         transform_lang_insert_block to function pointer.
22761         (copy_generic_body, copy_decl_no_change): Export.
22762         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
22763         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
22764         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
22766         * c-tree.h (insert_block): Kill.
22767         * c-decl.c (insert_block): Kill.
22769 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22771         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22772         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22773         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
22774         argument.
22775         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
22776         argument, call {push,pop}_function_context from here.
22777         * c-parser.c: Use c_{push,pop}_function_context.
22779         * function.c (push_function_context_to): Move meat ...
22780         (push_function_context): ... here.  Simplify.
22781         * function.c (pop_function_context_from): Move meat ...
22782         (pop_function_context): ... here.  Simplify.
22783         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
22784         leave_nested).
22785         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22786         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22787         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
22788         * tree.h (push_function_context_to, pop_function_context_from): Remove.
22790 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22792         * expmed.c (extract_force_align_mem_bit_field): Remove.
22794 2008-04-03  Richard Guenther  <rguenther@suse.de>
22796         PR middle-end/35800
22797         * expr.h (try_casesi): Adjust prototype.
22798         * expr.c (try_casesi): Take fallback label as extra parameter.
22799         Use that for gen_casesi if default_label is NULL.
22800         * stmt.c (expand_case): Pass fallback label to try_casesi,
22801         make sure to fill gaps with a fallback label if default_label
22802         is not present.
22804 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
22806         PR target/35801
22807         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
22809 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22811         * expmed.c (extract_split_bit_field): Remove if (0) code.
22812         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
22813         (do_ds_constraint): Likewise.
22815 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
22817         * doc/cppopts.texi (-dU): Document.
22818         * c-common.h (flag_dump_macros): Update comment.
22819         * c-opts.c (handle_OPT_d): Handle -dU.
22820         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
22821         dump_queued_macros, cb_used_define, cb_used_undef): New.
22822         (init_pp_output): Handle -dU.
22823         (cb_line_change): Call dump_queued_macros.
22824         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
22826 2008-04-02  Anatoly Sokolov <aesok@post.ru>
22828         * config/avr/predicates.md (io_address_operand): New predicate.
22829         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
22830         * config/avr/avr.c (avr_io_address_p): Remove function.
22831         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
22832         'avr_io_address_p' function.
22833         (out_movhi_r_mr): (Ditto.).
22834         (out_movqi_mr_r): (Ditto.).
22835         (out_movhi_mr_r): (Ditto.).
22836         (avr_address_cost): (Ditto.).
22838 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
22840         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
22841         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
22842         in 32bit mode when XMM registers are available to avoid store
22843         forwarding stalls.
22844         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
22845         corresponding post-reload splitters.
22847 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22849         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
22850         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
22851         __builtin_ia32_roundss.
22852         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
22853         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
22854         __builtin_ia32_roundss.
22855         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
22856         IX86_BUILTIN_SHUFPD here.
22858 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22860         * config/i386/i386.md (plogic): New.
22861         (plogicprefix): Likewise.
22863         * config/i386/mmx.md (mmx_<code><mode>3): New.
22864         (mmx_and<mode>3): Removed.
22865         (mmx_ior<mode>3): Likewise.
22866         (mmx_xor<mode>3): Likewise.
22868         * config/i386/sse.md (<code><mode>3): New.
22869         (*<code><mode>3): Likewise.
22870         (*<code><mode>3): Likewise.
22871         (<code><mode>3): Likewise.
22872         (*sse_<code><mode>3): Likewise.
22873         (*sse2_<code><mode>3): Likewise.
22874         (<code>tf3): Likewise.
22875         (*<code>tf3): Likewise.
22876         (and<mode>3): Likewise.
22877         (*and<mode>3): Likewise.
22878         (ior<mode>3): Removed.
22879         (*ior<mode>3): Likewise.
22880         (xor<mode>3): Likewise.
22881         (*xor<mode>3): Likewise.
22882         (*and<mode>3): Likewise.
22883         (*ior<mode>3): Likewise.
22884         (*xor<mode>3): Likewise.
22885         (and<mode>3): Likewise.
22886         (*sse_and<mode>3): Likewise.
22887         (*sse2_and<mode>3): Likewise.
22888         (andtf3): Likewise.
22889         (*andtf3): Likewise.
22890         (ior<mode>3): Likewise.
22891         (*sse_ior<mode>3): Likewise.
22892         (*sse2_ior<mode>3): Likewise.
22893         (iortf3): Likewise.
22894         (*iortf3): Likewise.
22895         (xor<mode>3): Likewise.
22896         (*sse_xor<mode>3): Likewise.
22897         (*sse2_xor<mode>3): Likewise.
22898         (xortf3): Likewise.
22899         (*xortf3): Likewise.
22901 2008-04-02  Richard Guenther  <rguenther@suse.de>
22903         PR tree-optimization/14495
22904         PR tree-optimization/34793
22905         * tree-vrp.c (struct switch_update): New structure.
22906         (to_remove_edges, to_update_switch_stmts): New VECs.
22907         (simplify_switch_using_ranges): New function.  Remove not taken
22908         case labels and edges.
22909         (simplify_stmt_using_ranges): Call it.
22910         (identify_jump_threads): Mark edges we have queued for removal
22911         so we don't thread them.
22912         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
22913         case label vector.
22914         * tree-cfg.c (group_case_labels): Deal with missing default label.
22915         (tree_verify_flow_info): Allow missing default label.
22916         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
22917         (emit_case_nodes): Likewise.
22918         (expand_case): Do not rely on the default label to be present.
22919         * expr.c (try_casesi): Deal with NULL default_label.
22920         (do_tablejump): Likewise.
22922 2008-04-02  Richard Guenther  <rguenther@suse.de>
22924         PR tree-optimization/14495
22925         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
22926         SWITCH_EXPR here ...
22927         (vrp_visit_switch_stmt): ... but here (new function).
22928         (find_case_label_index): New helper function.
22929         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
22931 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22933         * fwprop.c: Fix ISO-C99ism.
22935 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22937         PR bootstrap/35752
22938         * Makefile.in (objdir): Set it here.
22939         * configure.ac: Not here.  Find dynamic linker characteristics.
22940         * exec-tool.in: Use them.
22941         * aclocal.m4: Regenerate.
22942         * configure: Regenerate.
22944 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22946         * expr.c (expand_var): Delete it.
22947         * expr.h (expand_var): Delete prototype.
22948         * function.c (expand_function_start): Use expand_decl instead.
22949         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
22950         langhook.
22952 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
22954         PR rtl-optimization/35542
22955         * fwprop.c (forward_propagate_and_simplify): Replace
22956         loc_reg_mentioned_in_p with reg_mentioned_p.
22958 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22960         PR rtl-optimization/35281
22961         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
22962         (propagate_rtx_1): Handle PR_HANDLE_MEM.
22963         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
22964         (varying_mem_p): Move above propagate_rtx.
22965         (all_uses_available_at): Do not check MEMs.
22967 2008-04-02  Rafael Espíndola  <espindola@google.com>
22969         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
22970         (register_edge_assert_for_2): Split the cond argument.
22971         (register_edge_assert_for_1): Adjust for the change in
22972         register_edge_assert_for_2.
22973         (register_edge_assert_for): Split the cond argument.
22974         (find_switch_asserts): Adjust for the change in
22975         register_edge_assert_for.
22977 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
22979         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
22980         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
22981         offsets for 64-bit mingw.
22982         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
22983         abi for x86_64-pc-mingw.
22985 2008-04-02  Richard Guenther  <rguenther@suse.de>
22987         * tree-vrp.c (extract_range_from_assert): Make sure to not
22988         produce range min/max with TREE_OVERFOW set.
22989         If merging a anti-range and a range keep the anti-range if
22990         the range covers all values of the type.
22991         (register_edge_assert_for_2): Only allow sign-changing
22992         conversions in detecting canonical range checks.  Also
22993         register an assert for the unsigned name if useful.
22995         PR tree-optimization/35787
22996         * tree-vrp.c (vrp_val_max): New function.
22997         (vrp_val_min): Likewise.
22998         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
22999         (vrp_val_is_min): Likewise.
23000         (supports_overflow_infinity): Use vrp_val_{min,max}.
23001         (negative_overflow_infinity): Likewise.
23002         (positive_overflow_infinity): Likewise.
23003         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
23004         (is_positive_overflow_infinity): Likewise.
23005         (is_overflow_infinity): Likewise.
23006         (avoid_overflow_infinity): Use vrp_val_{min,max} and
23007         vrp_val_is_{min,max}.
23008         (set_and_canonicalize_value_range): Canonicalize anti-ranges
23009         to ranges if possible.  Avoid empty ranges.
23011 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23013         PR middle-end/35705
23014         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
23015         the expression is a function address.
23017 2008-04-01  George Helffrich  <george@gcc.gnu.org>
23019         PR fortran/35154, fortran/23057
23020         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
23021         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
23022         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
23023         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
23024         in common.
23025         (dbxout_syms): Check for COMMON-based symbol and wrap in
23026         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
23027         in bracket for efficiency.
23029         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
23030         using DW_TAG_common_block + member offset.
23031         (add_pubname_string): New function.
23032         (dw_expand_expr): New function to find block name and offset for
23033         COMMON var.
23034         (common_check): New function to check whether symbol in Fortran COMMON.
23035         (gen_variable_die): If COMMON, use DW_TAG_common_block.
23037 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
23039         PR c/35436
23040         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
23042 2008-04-02  Ben Elliston  <bje@au.ibm.com>
23044         * config/v850/v850.md (casesi): Remove if (0) code.
23045         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
23046         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
23048 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
23050         * config/i386/i386.md (rex64suffix): New mode attribute.
23051         (floathi<mode>2): Disable expander for SSE math.
23052         (*floathi<mode>2_1): New insn insn_and_split pattern.
23053         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
23054         corresponding post-reload splitters.
23055         (*floathi<mode>2_i387): New macroized insn pattern.
23056         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
23057         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
23058         insn_and_split pattern.
23059         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
23060         New macroized instruction patterns and corresponding post-reload
23061         splitters.
23062         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
23063         and corresponding post-reload splitters.
23064         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
23065         New macroized instruction patterns.
23066         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
23067         macroized instruction patterns and corresponding post-reload splitters.
23068         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
23069         corresponding post-reload splitters.
23070         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
23071         New macroized instruction patterns.
23072         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
23073         corresponding post-reload splitters.
23074         (*floatsi<mode>2_i387): New macroized instruction patterns.
23076 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
23078         * config/i386/i386.md (smaxmin): New.
23079         (umaxmin): Likewise.
23080         (maxminiprefix): Likewise.
23081         (maxminfprefix): Likewise.
23082         (<code><mode>3): Likewise.
23083         (smin<mode>3): Removed.
23084         (smax<mode>3): Likewise.
23086         * config/i386/mmx.md (mmx_<code>v2sf3): New.
23087         (mmx_<code>v4hi3): Likewise.
23088         (mmx_<code>v8qi3): Likewise.
23089         (mmx_smaxv2sf3): Removed.
23090         (mmx_sminv2sf3): Likewise.
23091         (mmx_umaxv8qi3): Likewise.
23092         (mmx_smaxv4hi3): Likewise.
23093         (mmx_uminv8qi3): Likewise.
23094         (mmx_sminv4hi3): Likewise.
23096         * config/i386/sse.md (<addsub><mode>3): New.
23097         (*<addsub><mode>3): Likewise.
23098         (<sse>_vm<addsub><mode>3): Likewise.
23099         (<maxmin><mode>3): Likewise.
23100         (*<maxmin><mode>3_finite): Likewise.
23101         (*<maxmin><mode>3): Likewise.
23102         (<sse>_vm<maxmin><mode>3): Likewise.
23103         (sse3_h<addsub>v4sf3): Likewise.
23104         (sse3_h<addsub>v2df3): Likewise.
23105         (<maxmin>v16qi3): Likewise.
23106         (*<maxmin>v16qi3): Likewise.
23107         (<maxmin>v8hi3): Likewise.
23108         (*<maxmin>v8hi3): Likewise.
23109         (*sse4_1_<maxmin><mode>3): Likewise.
23110         (*sse4_1_<maxmin><mode>3): Likewise.
23111         (add<mode>3): Removed.
23112         (*add<mode>3): Likewise.
23113         (<sse>_vmadd<mode>3): Likewise.
23114         (sub<mode>3): Likewise.
23115         (*sub<mode>3): Likewise.
23116         (<sse>_vmsub<mode>3): Likewise.
23117         (smin<mode>3): Likewise.
23118         (*smin<mode>3_finite): Likewise.
23119         (*smin<mode>3): Likewise.
23120         (<sse>_vmsmin<mode>3): Likewise.
23121         (smax<mode>3): Likewise.
23122         (*smax<mode>3_finite): Likewise.
23123         (*smax<mode>3): Likewise.
23124         (<sse>_vmsmax<mode>3): Likewise.
23125         (sse3_haddv4sf3): Likewise.
23126         (sse3_haddv2df3): Likewise.
23127         (sse3_hsubv4sf3): Likewise.
23128         (sse3_hsubv2df3): Likewise.
23129         (umaxv16qi3): Likewise.
23130         (*umaxv16qi3): Likewise.
23131         (smaxv8hi3): Likewise.
23132         (*smaxv8hi3): Likewise.
23133         (*sse4_1_smax<mode>3): Likewise.
23134         (*sse4_1_umax<mode>3): Likewise.
23135         (uminv16qi3): Likewise.
23136         (*uminv16qi3): Likewise.
23137         (sminv8hi3): Likewise.
23138         (*sminv8hi3): Likewise.
23139         (*sse4_1_smin<mode>3): Likewise.
23140         (*sse4_1_umin<mode>3): Likewise.
23142 2008-04-01  Rafael Espíndola  <espindola@google.com>
23144         * tree-cfg.c (verify_expr): remove in_phi.
23145         (verify_stmt): Don't call walk_tree with verify_expr. Use
23146         is_gimple_min_invariant instead of is_gimple_val.
23148 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
23150         * doc/include/gpl_v3.texi: Update for manpage generation.
23151         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
23152         gpl.texi.
23153         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
23154         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
23155         gpl_v3.texi instead of gpl.texi.
23156         (gpl.pod): New.
23158 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
23160         PR pch/13675
23161         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
23163 2008-04-01  Rafael Espíndola  <espindola@google.com>
23165         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
23166         (extract_code_and_val_from_cond): Use
23167         extract_code_and_val_from_cond_with_ops.
23169 2008-04-01  Jan Hubicka  <jh@suse.cz>
23171         * function.c (free_after_compilation): Free epilogue_delay_list.
23172         (prepare_function_start): Assert that previous compilation was freed.
23174 2008-04-01  Jan Hubicka  <jh@suse.cz>
23175             Jim Wilson  <wilson@tuliptree.org>
23176             Andreas Tobler <andreast@gcc.gnu.org>
23178         PR middle-end/35781
23179         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
23180         rtl.emit instead cfun->emit.
23181         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
23182         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
23184 2008-04-01  Ben Elliston  <bje@au.ibm.com>
23186         * doc/c-tree.texi (Function Basics): Fix grammatical error.
23188 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
23190         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
23191         New options
23192         (fprofile-use): Add var flag_profile_use
23193         * coverage.c (coverage_begin_output): Do not open a gcno file for
23194         output only if -ftest-coverage is set.
23195         Do not add getpwd() to gcda file path.
23196         (build_gcov_info): Check the new flag
23197         flag_profile_datafile_relative_path.
23198         (coverage_init): Use profile_data_prefix.
23199         Read profile counter only if flag_profile_use is set.
23200         * opts.c (common_handle_option): New option fprofile-use=,
23201         fprofile-dir=, fprofile-generate=.
23202         * toplev.c (profile_data_prefix): New variable definition.
23203         * toplev.h (profile_data_prefix): New declaration.
23204         * doc/invoke.tex (Option Summary, Optimization Options):
23205         Add new options.
23207 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
23209         * varasm.c (output_constant_pool_1): In LABEL_REF check,
23210         use tmp consistently.
23212         PR target/35695
23213         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
23214         * config/ia64/ia64.c (rtx_needs_barrier): Handle
23215         UNSPEC_FR_RECIP_APPROX_RES.
23216         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
23218 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
23220         PR c/35750
23221         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
23223 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23225         PR middle-end/30186
23226         * fold-const.c (fold_indirect_ref_1): Support accessing non first
23227         element of the vector via a pointer.
23229 2008-03-31  Ian Lance Taylor  <iant@google.com>
23231         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
23233 2008-03-31  Jan Hubicka  <jh@suse.cz>
23235         * builtins.c (expand_builtin_setjmp_receiver): Update call of
23236         get_arg_pointer_save_area.
23237         * expr.c (init_expr): Just clear out rtl.expr.
23238         * function.c (free_after_compilation): Clear out whole RTL structure.
23239         (get_func_frame_size): Merge into ...
23240         (get_frame_size): ... this one.
23241         (assign_stack_local_1): Merge into ...
23242         (assign_stack_local): ... this one.
23243         (expand_function_end): Update call of get_arg_pointer_save_area.
23244         (get_art_pointer_save_area): Remove cfun argument.
23245         * function.h (emit_status): regno_pointer_align does not need length
23246         attribute. Move x_regno_reg_rtx to ...
23247         (regno_reg_rtx): ... new global array.
23248         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
23249         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
23250         apply_args_value, forced_labels, stack_pointer_delta):
23251         Update accestors.
23252         (struct varasm_status): Move here from varasm.c
23253         (struct rtl_data): New. Move here some fields from struct function.
23254         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
23255         frame_offset, stack_check_probe_note, arg_pointer_save_area,
23256         used_temp_slots avail_temp_slots, temp_slot_level,
23257         nonlocal_goto_handler_labels): Update accesstors.
23258         (rtl): New global variable.
23259         (struct function): Move some fileds to rtl_data.
23260         (get_arg_pointer_save_area): Update prototype.
23261         * emit-rtl.c (rtl): Declare.
23262         (regno_reg_rtx): Declare.
23263         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
23264         Update.
23265         (gen_reg_rtx): Update.
23266         (init_virtual_regs): Do not tate emit_status argument.
23267         (init_emit): Do not allocate emit.
23268         * varasm.c (varasm_statuc): Move to function.h.
23269         (n_deferred_constatns): Update accestor.
23270         (init_varasm_status): Do not allocate varasm_status.
23271         (force_const_mem, get_pool_size, output_constant_pool): Update.
23272         * stmt.c (force_label_rtx): Do not use x_ prefixes.
23273         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
23275 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
23277         PR rtl-optimization/35729
23278         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
23279         references.
23281 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
23283         PR target/32000
23284         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
23285         load/store if memory is unaligned.
23286         (*movti_rex64): Likewise.
23288         * config/i386/predicates.md (misaligned_operand): New.
23290 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
23292         PR tree-opt/35431
23293         * tree-ssa-phiopt.c (conditional_replacement): Return early for
23294         complex types.
23296 2008-03-31  Jan Beulich  <jbeulich@novell.com>
23298         * config/ia64/constraints.md: Add 'j' constraint.
23299         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
23300         (movdi_internal): Likewise.
23302 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
23304         PR c/35748
23305         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
23307 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
23309         PR target/35757
23310         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
23311         proper error message for the third argument on blendpd and
23312         blendps.
23314         * config/i386/sse.md (blendbits): New.
23315         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
23317 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
23319         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
23321 2008-03-30  Richard Guenther  <rguenther@suse.de>
23323         PR middle-end/31023
23324         * fold-const.c (fold_sign_changed_comparison): Do leave
23325         conversions to base-types alone.
23327 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23329         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
23330         the link register if one altivec register is be saved.
23332 2008-03-30  Ben Elliston  <bje@au.ibm.com>
23334         * final.c (final_scan_insn): Remove if (0) code.
23336 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
23338         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
23340 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
23342         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
23343         of V4SFmode to ix86_binary_operator_ok.
23345 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
23347         * config/i386/i386.c (override_options): Initialize
23348         ix86_veclib_handler to ix86_veclibabi_svml when
23349         -mveclibabi=svml is used.
23350         (ix86_veclibabi_svml): New function for SVML ABI style
23351         vectorization support.
23352         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
23354 2008-03-28  Rafael Espíndola  <espindola@google.com>
23356         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
23357         (tree_binary_nonnegative_warnv_p): Make it public.
23358         (tree_single_nonnegative_warnv_p): Make it public.
23359         (tree_invalid_nonnegative_warnv_p): Make it public.
23360         (tree_unary_nonzero_warnv_p): Make it public.
23361         (tree_binary_nonzero_warnv_p): Make it public
23362         (tree_single_nonzero_warnv_p): Make it public.
23363         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
23364         (extract_range_from_binary_expr): Split the expr argument.
23365         (extract_range_from_unary_expr): Split the expr argument.
23366         (extract_range_from_comparison): Split the expr argument.
23367         (extract_range_from_expr): Use the new aux functions.
23368         (vrp_evaluate_conditional_warnv): Use
23369         vrp_evaluate_conditional_warnv_with_ops.
23370         * tree.h (tree_unary_nonzero_warnv_p): Declare.
23371         (tree_binary_nonzero_warnv_p): Declare.
23372         (tree_single_nonzero_warnv_p): Declare.
23373         (tree_expr_nonzero_warnv_p): Declare.
23374         (tree_unary_nonnegative_warnv_p): Declare.
23375         (tree_binary_nonnegative_warnv_p): Declare.
23376         (tree_single_nonnegative_warnv_p): Declare.
23377         (tree_invalid_nonnegative_warnv_p): Declare.
23379 2008-03-28  Richard Guenther  <rguenther@suse.de>
23381         PR tree-optimization/30317
23382         PR tree-optimization/30911
23383         PR tree-optimization/34793
23384         * tree-vrp.c (set_and_canonicalize_value_range): New function.
23385         (struct assert_locus_d): New member EXPR.
23386         (register_new_assert_for): Add EXPR parameter to support
23387         ASSERT_EXPR <name, expr OP limit>.
23388         (register_edge_assert_for_1): Adjust callers.
23389         (find_assert_locations): Likewise.
23390         (process_assert_insertions_for): Build condition from expression.
23391         (extract_range_from_assert): Handle ASSERT_EXPRs
23392         of the form ASSERT_EXPR <name, expr OP limit>.
23393         (register_edge_assert_for_2): New helper registering
23394         asserts for comparisons.  Recognize range tests of the form
23395         (unsigned)i - CST1 OP CST2.
23396         (register_edge_assert_for_1): Use it.
23397         (register_edge_assert_for): Likewise.
23398         (needs_overflow_infinity): Integer sub-types
23399         do not need overflow infinities.
23400         (vrp_val_is_max): The extreme values of integer sub-types
23401         are those of the base type.
23402         (vrp_val_is_min): Likewise.
23403         * tree.def (ASSERT_EXPR): Document extra allowed conditional
23404         expressions.
23406 2008-03-28  Nick Clifton  <nickc@redhat.com>
23408         PR target/31110
23409         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
23410         Return GENERAL_REGS for stack adjustment reloads.
23412 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23414         PR target/31334
23415         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
23416         const_vector when all the vectors are constant.
23418 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
23420         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
23421         comparisons.
23422         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
23423         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
23424         (scc_sf): New.
23425         (s<code>_sf): Use new scc_sf attribute for opcode names.
23427 2008-03-27  Tom Tromey  <tromey@redhat.com>
23429         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
23430         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
23431         config/spu/t-spu-elf, config/i386/t-interix,
23432         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
23433         config/i386/x-darwin, config/i386/x-mingw32,
23434         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
23435         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
23436         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
23437         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
23438         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
23439         config/rs6000/x-darwin, config/rs6000/t-rs6000,
23440         config/score/t-score-elf, config/arm/t-strongarm-pe,
23441         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
23442         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
23443         Revert automatic dependency patch.
23445 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23447         PR target/35657
23448         * config/i386/i386.c (ix86_function_arg_boundary): Align
23449         decimal floating point to its natural boundary.
23451 2008-03-27  Richard Guenther  <rguenther@suse.de>
23453         PR middle-end/35716
23454         * fold-const.c (fold_comparison): Restrict distinct decl
23455         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
23456         solely rely on operand_equal_p.
23458 2008-03-27  Richard Guenther  <rguenther@suse.de>
23460         PR c/32511
23461         * c-common.c (handle_weak_attribute): Reject combination of
23462         weak and inline.
23464 2008-03-27  Richard Guenther  <rguenther@suse.de>
23466         PR tree-optimization/32810
23467         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
23468         conversions from DECL_INITIAL.
23469         (fold_const_aggregate_ref): Likewise from constructor elements.
23471 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
23473         * tree-affine.h (aff_combination_expand): Declare.
23474         (get_inner_reference_aff): Likewise.
23475         * tree-affine.c (aff_combination_expand): Split out from
23476         tree_to_aff_combination_expand.
23477         (get_inner_reference_aff): New function.
23478         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
23479         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
23480         (struct lim_aux_data): sm_done field removed.
23481         (mem_ref_loc_p, mem_ref_locs_p): New types.
23482         (struct mem_ref): Added id, stored, accesses_in_loop,
23483         indep_loop, dep_loop, indep_ref, dep_ref fields.
23484         Removed is_stored, locs and next fields.
23485         (memory_accesses): New variable.
23486         (movement_possibility): Do not allow moving statements
23487         that store to memory.
23488         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
23489         New functions.
23490         (determine_max_movement): For statements with memory references,
23491         find the outermost loop in that the reference is independent.
23492         (move_computations_stmt): Mark the virtual operands for renaming.
23493         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
23494         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
23495         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
23496         add_vop_ref_mapping, create_vop_ref_mapping_loop,
23497         create_vop_ref_mapping, analyze_memory_references,
23498         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
23499         get_all_locs_in_loop, ref_always_accessed_p,
23500         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
23501         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
23502         store_motion_loop, store_motion): New functions.
23503         (struct vop_to_refs_elt): New type.
23504         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
23505         memref_hash, memref_eq, hoist_memory_references): Rewritten.
23506         (schedule_sm): Replaced by...
23507         (execute_sm): ... this.
23508         (determine_lsm_ref, hoist_memory_references,
23509         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
23510         find_more_ref_vops, free_mem_ref, free_mem_refs,
23511         determine_lsm_loop, determine_lsm): Removed.
23512         (tree_ssa_lim_finalize): Free data structures used by store motion.
23513         (tree_ssa_lim): Call analyze_memory_references.  Use
23514         store_motion instead of determine_lsm.
23516 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
23518         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
23519         rename tmake_file to m68hc11/t-m68hc11.
23520         (mcore): Set inhibit_libc to true.
23521         * config.host (alpha*-dec-*vms*): Set extra_programs.
23522         (interix3*): Don't use host_xmake_file.
23523         * configure.ac: Let config.gcc override inhibit_libc.
23524         * configure: Regenerate.
23526         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
23527         * config/t-openbsd-thread: Remove commented out lines.
23529         * config/x-interix: Remove.
23531         * config/m68hc11/t-m68hc11-gas: Rename to...
23532         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
23534         * config/mcore/t-mcore: Remove T_CFLAGS.
23535         * config/mcore/t-mcore-pe: Likewise.
23537 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
23539         * configure.ac: Replace custom __GNU_SOURCE test with
23540         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
23541         * aclocal.m4: Regenerate.
23542         * configure: Regenerate.
23543         * config.in: Regenerate.
23545 2008-03-27  Richard Guenther  <rguenther@suse.de>
23547         * fold-const.c (target.h): Include.
23548         (fold_comparison): Fold comparison of addresses of decls
23549         that bind locally or of constants.  Consolidate address folding code.
23550         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
23551         results from fold_binary_to_constant.
23552         (compare_values_warnv): Likewise.
23554 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
23556         PR middle-end/35429
23557         * fold-const.c (fold_truthop): Check for integeral types when folding
23558         a == 0 && b == 0 and a != 0 || b != 0 .
23560 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
23562         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
23564 2008-03-26  Andreas Schwab  <schwab@suse.de>
23566         * doc/invoke.texi: Fix use of @item vs. @itemx.
23568 2008-03-26  Tom Tromey  <tromey@redhat.com>
23570         * Makefile.in (build/gensupport.o, build/print-rtl.o,
23571         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
23572         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
23573         build/gencodes.o, build/genconditions.o, build/genconfig.o,
23574         build/genconstants.o, build/genemit.o, build/genextract.o,
23575         build/genflags.o, build/genmddeps.o, build/genopinit.o,
23576         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
23577         options.h.
23579 2008-03-26  Richard Guenther  <rguenther@suse.de>
23581         Revert
23582         2008-03-26  Richard Guenther  <rguenther@suse.de>
23584         * fold-const.c (target.h): Include.
23585         (fold_comparison): Fold comparison of addresses of two decls
23586         that bind locally.  Consolidate address folding code.
23588 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23590         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
23591         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
23592         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
23593         dconstsqrt2, dconstthird, dconste and/or dconst10.
23594         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
23595         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
23596         dconstsqrt2, dconste): Delete.
23597         (init_emit_once): Likewise.  Simplify initializing dconstm1.
23598         Constify variable.
23599         * real.c (get_real_const): New.
23600         * real.h (dconst3, dconst10, dconstm2, dconstthird,
23601         dconstsqrt2, dconste): Delete.
23602         (real_value_const, get_real_const): New.
23604 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
23606         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
23608         * config/i386/i386.c (ix86_function_arg_boundary): Check
23609         BIGGEST_ALIGNMENT instead of 128.
23610         (setup_incoming_varargs_64): Likewise.
23612 2008-03-26  Tom Tromey  <tromey@redhat.com>
23614         * Makefile.in (DEPFILES): Add missing '/'.
23616 2008-03-26  Richard Guenther  <rguenther@suse.de>
23618         * fold-const.c (target.h): Include.
23619         (fold_comparison): Fold comparison of addresses of two decls
23620         that bind locally.  Consolidate address folding code.
23622 2008-03-26  Nick Clifton  <nickc@redhat.com>
23624         PR target/31232
23625         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
23626         not allow INT+INT as a legitimate addressing mode.
23628 2008-03-26  Richard Guenther  <rguenther@suse.de>
23630         * tree-flow.h (widen_bitfield): Remove declaration.
23631         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
23632         (widen_bitfield): Remove function.
23633         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
23634         code.
23636 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23638         PR target/31558
23639         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
23640         error_mark_node's.
23642 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23644         PR rtl-optimization/35232
23645         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
23646         (forget_old_reloads_1, forget_marked_reloads): Don't clear
23647         reg_reloaded_call_part_clobbered here.
23648         (reload_regs_reach_end_p): New function.
23649         (reload_reg_rtx_for_input): New variable.
23650         (reload_reg_rtx_for_output): Likewise.
23651         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
23652         when reassigning a pseudo register.  Load reloadreg from
23653         reload_reg_rtx_for_input, moving the mode and register
23654         calculation to...
23655         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
23656         instead of the original when deciding whether an input reload
23657         would be a no-op or whether an output reload can be deleted.
23658         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
23659         when setting up new_spill_reg_store.  Load it from
23660         reload_reg_rtx_for_output, moving the mode and register
23661         calculation to...
23662         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
23663         instead of the original when deciding whether an output reload
23664         would be a no-op.  Do the same when modifying insn notes.
23665         Use rtx_equal_p instead of == to compare the registers.
23666         (inherit_piecemeal_p): Take a mode and two register numbers
23667         as argument.
23668         (emit_reload_insns): Clear new_spill_reg_store for every hard
23669         register in the reload register.  Remove spill registers
23670         from reg_reloaded_valid before considering whether to record
23671         inheritance information for them.  Use reload_reg_rtx_for_output
23672         instead of reg_rtx when recording output reloads.  Use
23673         reload_reg_rtx_for_input instead of reg_rtx when recording
23674         input reloads.  Set or clear reg_reloaded_call_part_clobbered
23675         at the same time as setting reg_reloaded_valid.
23676         (delete_output_reload): Add a new_reload_reg parameter and use it
23677         instead of rld[j].reg_rtx.
23678         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
23679         calls accordingly.
23681 2008-03-25  Tom Tromey  <tromey@redhat.com>
23683         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
23684         (build/genattr.o): Likewise.
23685         (build/genattrtab.o): Likewise.
23686         (build/gencodes.o): Likewise.
23687         (build/genconfig.o): Likewise.
23688         (build/genconstants.o): Likewise.
23689         (build/genemit.o): Likewise.
23690         (build/genextract.o): Likewise.
23691         (build/genflags.o): Likewise.
23693 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
23695         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
23696         instead of size_int for integer types.
23697         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
23698         to match type of MINUS_EXPR.
23700 2008-03-25  Tom Tromey  <tromey@redhat.com>
23702         * configure: Rebuilt.
23703         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
23704         Makefile.
23706 2008-03-25  Tom Tromey  <tromey@redhat.com>
23708         * config/x-solaris (host-solaris.o): Update.
23709         * config/x-linux (host-linux.o): Update.
23710         * config/x-hpux (host-hpux.o): Update.
23711         * config/x-darwin (host-darwin.o): Update.
23712         * config/v850/t-v850e (v850-c.o): Update.
23713         * config/v850/t-v850 (v850-c.o): Update.
23714         * config/t-vxworks (vxworks.o): Update.
23715         * config/t-sol2 (sol2-c.o, sol2.o): Update.
23716         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
23717         * config/spu/t-spu-elf (spu-c.o): Update.
23718         (spu.o): Remove.
23719         * config/sh/t-symbian (sh-c.o): Update.
23720         (symbian.o): Update.
23721         * config/sh/t-sh (sh-c.o): Update.
23722         * config/score/t-score-elf (score7.o, score3.o): Update.
23723         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
23724         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
23725         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
23726         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
23727         (rs6000.o): Remove.
23728         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
23729         * config/m32c/t-m32c (m32c-pragma.o): Update.
23730         * config/ia64/t-ia64 (ia64-c.o): Update.
23731         * config/i386/x-mingw32 (host-mingw32.o): Update.
23732         * config/i386/x-i386 (driver-i386.o): Update.
23733         * config/i386/x-darwin (host-i386-darwin.o): Update.
23734         * config/i386/x-cygwin (host-cygwin.o): Update.
23735         * config/i386/t-nwld (nwld.o): Update.
23736         * config/i386/t-netware (netware.o): Update.
23737         * config/i386/t-interix (winnt.o): Update.
23738         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
23739         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
23740         msformat-c.o): Update.
23741         * config/bfin/t-bfin-linux (generated_files): Add
23742         linux-sysroot-suffix.h.
23743         * config/arm/t-wince-pe (pe.o): Update.
23744         * config/arm/t-strongarm-pe (pe.o): Update.
23745         * config/arm/t-pe (pe.o): Update.
23746         * config/arm/t-arm (arm-c.o): Update.
23747         * doc/install.texi (Prerequisites): Require make 3.80.
23748         * Makefile.in: Remove .o targets.
23749         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
23750         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
23751         (simple_generated_h, simple_generated_c): Move earlier.
23752         (generated_files): New variable.
23753         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
23754         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
23755         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
23756         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
23757         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
23758         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
23759         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
23760         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
23761         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
23762         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
23763         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
23764         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
23765         (.c.o): Remove.
23766         (COMPILE.base, COMPILE): New variables.
23767         (%.o): New pattern rule.
23768         (ALL_HOST_OBJS): New variable.
23769         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
23770         (dummy-checksum.o, cc1-checksum.o): Remove.
23771         (DRIVER_SHLIB): New variable.
23772         (DRIVER_DEFINES): Use it.
23773         (gencondmd.c): Move out of build/.
23774         (s-conditions): Update.
23775         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
23776         (ALL_BUILD_OBJS): Likewise.
23777         (build/%.o): Use BUILDCOMPILE.
23778         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
23779         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
23780         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
23781         build/gencheck.o, build/gencodes.o, build/genconditions.o,
23782         build/genconfig.o, build/genconstants.o, build/genemit.o,
23783         build/genextract.o, build/genflags.o, build/genmddeps.o,
23784         build/genopinit.o, build/genoutput.o, build/genpeep.o,
23785         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
23786         build/gen-protos.o, build/scan.o, build/fix-header.o,
23787         build/scan-decls.o): Simplify.
23788         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
23789         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
23790         prefix.o, toplev.o): Reduce to variable setting.
23791         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
23792         ($(out_object_file), gcc-options.o): New targets.
23793         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
23794         * configure: Rebuilt.
23795         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
23796         * doc/sourcebuild.texi (Front End Directory): Document new variable.
23798 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
23800         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
23801         complain when we hit an error, return ERROR_MARK_NODE.
23803 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23805         * config/sh/constraints.md (Pso, Psz): New constraints.
23806         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
23807         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
23809 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23811         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
23812         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
23814 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23816         * config/sh/sh.md (prefetch): Add condition for SH2A target.
23817         (prefetch_sh2a): New.
23819 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23820             Naveen.H.S  <naveen.hs@kpitcummins.com>
23822         * config/sh/constraints.md (I28): New constraint.
23823         * config/sh/sh.c (broken_move): Add support for movi20s.
23824         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
23826 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
23827             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23828             Naveen.H.S  <naveen.hs@kpitcummins.com>
23830         * config/sh/sh.c (SH_ATTRIBUTES): Define.
23831         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
23832         (print_operand): Handle resbank in %@ operand code.
23833         (sh_encode_section_info): New.
23834         (push_regs): Add conditions for resbank.
23835         (sh_expand_epilogue): Likewise.
23836         (sh_insert_attributes): Likewise.
23837         (sh_attribute_table): Likewise.
23838         (sh_handle_resbank_handler_attribute): New.
23839         (sh2a_handle_function_vector_handler_attribute): New.
23840         (sh2a_is_function_vector_call): New.
23841         (sh2a_get_function_vector_number): New.
23842         (sh2a_function_vector_p): New.
23843         (sh_cfun_resbank_handler_p): New.
23844         * config/sh/sh.md (calli): Emit jsr/n if possible.
23845         (calli_tbr_rel): New.
23846         (calli_pcrel): Emit jsr/n if possible.
23847         (return_i): Emit rts/n if possible.
23848         (call_valuei_tbr_rel): New.
23849         (call_valuei_pcrel): Add condition for SH2A target.
23850         (call_value): Likewise.
23851         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
23852         (sh2a_get_function_vector_number): Likewise.
23853         (sh2a_is_function_vector_call): Likewise.
23854         * doc/extend.texi: Document TBR relative addressing of SH2A.
23855         (resbank): Add description for SH2A.
23857 2008-03-24  Richard Guenther  <rguenther@suse.de>
23859         PR c/22371
23860         * gimplify.c (gimplify_modify_expr): For frontend type-correct
23861         pointer assignments change conversions according to middle-end rules.
23862         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
23863         * configure.ac: Include type checking in yes.
23864         * configure: Regenerate.
23866 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23868         * diagnostic.c (diagnostic_count_diagnostic): Delete.
23869         (diagnostic_report_diagnostic): Update. Handle ICEs here.
23871 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
23873         * gthr-vxworks.h (UNUSED): Define.
23875 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
23877         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
23879 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
23881         * doc/extend.texi (Function Attributes): Add missing comma in the
23882         example of the "alloc_size" attribute.
23884 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
23886         Revert:
23887         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23889         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23890         32bit host.
23892         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23894         PR target/35496
23895         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23896         of the underlying type of a MS bitfield layout to the natural
23897         alignment of the type.
23899         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23901         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23902         to their natural alignment to avoid store forwarding stalls.
23904 2008-03-22  Richard Guenther  <rguenther@suse.de>
23906         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
23907         For PHI nodes verify the address is invariant.
23908         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
23909         (get_symbol_constant_value): Use is_gimple_min_invariant.
23910         (maybe_fold_stmt_indirect): Likewise.
23912 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
23914         PR rtl-optimization/33927
23915         * Makefile.in (dse.o): Depend on $(TM_P_H).
23916         * expr.h (extract_low_bits): Declare.
23917         * expmed.c (extract_low_bits): New function.
23918         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
23919         * dse.c: Include tm_p.h.
23920         (find_shift_sequence): Remove the read_reg argument and return the
23921         read value.  Emit the instructions instead of returning them.
23922         Iterate on new_mode rather than calculating it each time.
23923         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
23924         source to NEW_MODE and extract_low_bits to convert the shifted
23925         value to READ_MODE.
23926         (replace_read): Allow the load and store to have different mode
23927         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
23928         or extraction instructions before trying the replacement.  Update
23929         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
23931 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23933         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23934         to their natural alignment to avoid store forwarding stalls.
23936 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23938         PR target/27946
23939         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
23940         encouraging but not allowing gprs for input;
23941         change the input constraint to !f#r.
23942         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
23943         gprs for output;
23944         change the output constraint to !f#r.
23946 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
23948         PR target/13958
23949         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
23950         corresponding post-reload splitters.
23951         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
23952         when x87 FP math is selected.
23953         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
23954         New function prototype.
23955         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
23956         unreachable function to ease macroization of insn patterns.
23958 2008-03-21  Martin Jambor  <mjambor@suse.cz>
23960         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
23961         reference dumps if ddr is NULL or dependence is unknown.
23963 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23965         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
23966         unsigned extension into account.
23967         (ATOMIC_COMPARE_AND_SWAP): Likewise.
23968         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
23969         Do computations on a scratch register.
23971 2008-03-21  Richard Guenther  <rguenther@suse.de>
23973         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
23974         Use is_gimple_min_invariant instead of TREE_INVARIANT.
23975         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
23976         * tree-ssa-dom.c (record_equality): Likewise.
23977         * tree-inline.c (copy_body_r): Likewise.
23978         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
23979         TREE_INVARIANT.
23981 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23983         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
23984         as 'delete_unused' argument.
23986 2008-03-20  Richard Guenther  <rguenther@suse.de>
23988         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
23989         special casing of constant qualifiers.
23990         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
23991         care about them in general.
23992         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
23993         regardless of their type.
23994         (fold_stmt_r): Forcefully fold *& if we end up with that.
23996 2008-03-20  Paul Brook  <paul@codesourcery.com>
23998         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
23999         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
24000         linker flags.
24001         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
24002         definition.
24003         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
24004         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
24006 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
24008         * common.opt (Wmudflap): New option.
24009         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
24010         (mx_register_decls): Likewise.
24011         (mudflap_finish_file): Likewise.
24012         * doc/invoke.texi: Document -Wno-mudflap.
24014 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
24016         * c-format.c (replace_format_name_to_system_name): New.
24017         (cmp_attribs): New.
24018         (convert_format_name_to_system_name): New.
24019         (decode_format_attr): Add use of convert_format_name_to_system_name.
24020         (format_types_orig): Add gnu_ prefix to names.
24021         (check_format_info_main): Special treating of \0 escaped names for
24022         supporting multi-character format specifiers as I32, I64.
24023         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
24024         (gnu_target_overrides_format_attributes): New.
24025         * c-format.h: Add structure target_ovr_attr to hold
24026         system specific formatter names.
24027         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
24028         msformat-c.o file to c_target_objs and cxx_target_objs.
24029         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
24030         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
24031         (TARGET_N_FORMAT_TYPES): New.
24032         * config/i386/msformat-c.c: New.
24033         * config/i386/t-cygming: Add build rule for msformat-c.o.
24034         * doc/extend.texi: Add new format names gnu_* and ms_* and
24035         further details.
24036         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
24038 2008-03-20  Ira Rosen  <irar@il.ibm.com>
24040         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
24041         optimizations turned on under -O3.
24042         (ftree-vectorize): Add that the flag is turned on with -O3.
24044 2008-03-20  Ben Elliston  <bje@au.ibm.com>
24046         * regmove.c (try_auto_increment): Fix spelling error in comment.
24047         * final.c (final_scan_insn): Likewise.
24049 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
24051         PR target/14552
24052         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
24053         allocator preferences for "y" and "r" class registers.
24054         ("*mov<mode>_internal"): Ditto.
24055         ("*movv2sf_internal_rex64"): Ditto.
24056         ("*movv2sf_internal"): Ditto.
24058 2008-03-19  Michael Matz  <matz@suse.de>
24060         PR middle-end/35616
24061         * calls.c (expand_call): Check overlap of arguments with call
24062         address for sibcalls.
24064 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
24066         PR target/35496
24067         * stor-layout.c (update_alignment_for_field): Set minimum alignment
24068         of the underlying type of a MS bitfield layout to the natural
24069         alignment of the type.
24071 2008-03-19  Jan Hubicka  <jh@suse.cz>
24073         PR other/35094
24074         * toplev.c (decode_d_option): Handle all CPP flags.
24075         * tree-vrp.c: Update tree_pass descriptors.
24076         * regrename.c: Update tree_pass descriptors.
24077         * fwprop.c: Update tree_pass descriptors.
24078         * doc/invoke.texi: Remove documentation of dropped -d? flags.
24079         * tree-into-ssa.c: Update tree_pass descriptors.
24080         * tree-dump.c: Update tree_pass descriptors.
24081         * tree-complex.c: Update tree_pass descriptors.
24082         * tree-dump.h: Update tree_pass descriptors.
24083         * see.c: Update tree_pass descriptors.
24084         * cgraphbuild.c: Update tree_pass descriptors.
24085         * tracer.c: Update tree_pass descriptors.
24086         * tree-loop-distribution.c: Update tree_pass descriptors.
24087         * cgraph.c: Update tree_pass descriptors.
24088         * postreload-gcse.c: Update tree_pass descriptors.
24089         * postreload.c: Update tree_pass descriptors.
24090         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
24091         * tree-tailcall.c: Update tree_pass descriptors.
24092         * tree-pass.h (tree_opt_pass): Rename to ...
24093         (opt_pass) ... this one; add "type" field and remove letter field.
24094         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
24095         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
24096         all_lowering_passes): Update declaration.
24097         * ipa-cp.c: Update tree_pass descriptors.
24098         * final.c: Update tree_pass descriptors.
24099         * omp-low.c: Update tree_pass descriptors.
24100         * tree-ssa-dse.c: Update tree_pass descriptors.
24101         * ipa-reference.c: Update tree_pass descriptors.
24102         * tree-ssa-uncprop.c: Update tree_pass descriptors.
24103         * auto-inc-dec.c: Update tree_pass descriptors.
24104         * reorg.c: Update tree_pass descriptors.
24105         * cgraphunit.c: Update tree_pass descriptors.
24106         * tree-ssa-copyrename.c: Update tree_pass descriptors.
24107         * tree-ssa-ccp.c: Update tree_pass descriptors.
24108         * df-core.c: Update tree_pass descriptors.
24109         * mode-switching.c: Update tree_pass descriptors.
24110         * tree-nomudflap.c: Update tree_pass descriptors.
24111         * modulo-sched.c: Update tree_pass descriptors.
24112         * ipa-pure-const.c: Update tree_pass descriptors.
24113         * cse.c: Update tree_pass descriptors.
24114         * web.c: Update tree_pass descriptors.
24115         * tree-stdarg.c: Update tree_pass descriptors.
24116         * tree-ssa-math-opts.c: Update tree_pass descriptors.
24117         * tree-ssa-dom.c: Update tree_pass descriptors.
24118         * tree-nrv.c: Update tree_pass descriptors.
24119         * tree-ssa-alias.c: Update tree_pass descriptors.
24120         * loop-init.c: Update tree_pass descriptors.
24121         * gimple-low.c: Update tree_pass descriptors.
24122         * ipa-inline.c: Update tree_pass descriptors.
24123         * tree-ssa-sink.c: Update tree_pass descriptors.
24124         * global.c: Update tree_pass descriptors.
24125         * ifcvt.c: Update tree_pass descriptors.
24126         * jump.c: Update tree_pass descriptors.
24127         * predict.c: Update tree_pass descriptors.
24128         * tree-ssa-loop.c: Update tree_pass descriptors.
24129         * recog.c: Update tree_pass descriptors.
24130         * dse.c: Update tree_pass descriptors.
24131         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
24132         * tree-eh.c: Update tree_pass descriptors.
24133         * regmove.c: Update tree_pass descriptors.
24134         * local-alloc.c
24135         * function.c: Update tree_pass descriptors.
24136         * tree-vectorizer.c: Update tree_pass descriptors.
24137         * gcse.c: Update tree_pass descriptors.
24138         * ipa-type-escape.c: Update tree_pass descriptors.
24139         * tree-if-conv.c: Update tree_pass descriptors.
24140         * init-regs.c: Update tree_pass descriptors.
24141         * ipa.c: Update tree_pass descriptors.
24142         * tree-ssa-phiopt.c: Update tree_pass descriptors.
24143         * rtl-factoring.c: Update tree_pass descriptors.
24144         * lower-subreg.c: Update tree_pass descriptors.
24145         * bt-load.c: Update tree_pass descriptors.
24146         * tree-dfa.c: Update tree_pass descriptors.
24147         * except.c: Update tree_pass descriptors.
24148         * emit-rtl.c: Update tree_pass descriptors.
24149         * cfgexpand.c: Update tree_pass descriptors.
24150         * tree-cfgcleanup.c: Update tree_pass descriptors.
24151         * cfgcleanup.c: Update tree_pass descriptors.
24152         * tree-ssa-pre.c: Update tree_pass descriptors.
24153         * tree-sra.c: Update tree_pass descriptors.
24154         * tree-mudflap.c: Update tree_pass descriptors.
24155         * tree-ssa-copy.c: Update tree_pass descriptors.
24156         * cfglayout.c: Update tree_pass descriptors.
24157         * tree-ssa-forwprop.c: Update tree_pass descriptors.
24158         * tree-ssa-dce.c: Update tree_pass descriptors.
24159         * tree-ssa.c: Update tree_pass descriptors.
24160         * regclass.c: Update tree_pass descriptors.
24161         * integrate.c: Update tree_pass descriptors.
24162         * tree-optimize.c: Update tree_pass descriptors.
24163         * tree-ssa-phiprop.c: Update tree_pass descriptors.
24164         * tree-object-size.c: Update tree_pass descriptors.
24165         * combine.c: Update tree_pass descriptors.
24166         * tree-outof-ssa.c: Update tree_pass descriptors.
24167         * bb-reorder.c: Update tree_pass descriptors.
24168         * stack-ptr-mod.c: Update tree_pass descriptors.
24169         * var-tracking.c: Update tree_pass descriptors.
24170         * tree-profile.c: Update tree_pass descriptors.
24171         * tree-vect-generic.c: Update tree_pass descriptors.
24172         * reg-stack.c: Update tree_pass descriptors.
24173         * sched-rgn.c: Update tree_pass descriptors.
24174         * tree-ssa-structalias.c: Update tree_pass descriptors.
24175         * tree-cfg.c: Update tree_pass descriptors.
24176         * passes.c (current_pass): Update declaration.
24177         (finish_optimization_passes): Update.
24178         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
24179         (register_one_dump_file, register_dump_files_1, next_pass_1):
24180         Update arguments.
24181         (init_optimization_passes): Update handling of new types.
24182         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
24183         * ipa-struct-reorg.c: Update tree_pass descriptors.
24184         * tree-ssa-reassoc.c: Update tree_pass descriptors.
24185         * combine-stack-adj.c: Update tree_pass descriptors.
24186         * cfgrtl.c: Update tree_pass descriptors.
24187         * dce.c: Update tree_pass descriptors.
24188         * tree-ssanames.c: Update tree_pass descriptors.
24190 2008-03-19  Richard Guenther  <rguenther@suse.de>
24192         PR middle-end/35609
24193         * tree-ssa.c (walk_data): New structure.
24194         (warn_uninitialized_var): If not always_executed warn with "maybe"
24195         instead of "is".
24196         (execute_early_warn_uninitialized): Compute post-dominators.
24197         Initialize always_executed before processing each basic block.
24199 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
24201         PR target/35504
24202         * config/i386/i386.c (x86_this_parameter): Calculate correct location
24203         of "this" pointer when "regparm = N" or "fastcall" is in effect.
24205 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24207         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
24209 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
24211         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
24212         is true.
24213         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
24214         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
24215         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
24216         target after ignore has been set, and move there also the commputation
24217         of subtarget and original_target.
24218         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
24219         (LANG_HOOKS_INITIALIZER): Remove it.
24220         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
24222 2008-03-18  Richard Guenther  <rguenther@suse.de>
24224         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
24225         found an expression with constants, note that in the VN for the lhs.
24226         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
24227         fold them to constants if possible.  Run cleanup_cfg if done so.
24228         (execute_pre): Return todo.
24229         (do_pre): Likewise.
24230         (execute_fre): Likewise.
24231         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
24232         of constants.
24233         (get_prop_source_stmt): Look through pointer conversions.
24235 2008-03-18  Jan Hubicka  <jh@suse.cz>
24237         * tree-pretty-print.c: Include predict.h.
24238         (dump_generic_node): Dump predictor.
24239         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
24240         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
24241         * gimple-low.c (lower_stmt): Likewise.
24242         * expr.c (expand_expr_real): Likewise.
24243         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
24244         them.
24245         (build_predict_expr, build_predict_expr): New.
24246         * predict.h (predictor_name, build_predict_expr): Update.
24247         * c-typeck.c (c_finish_bc_stmt): Add prediction.
24248         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
24249         * predict.def (PRED_CONTINUE): Update hitrate.
24250         * tree.def (PREDICT_EXPR): Define.
24251         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
24252         do not handle BIND_EXPR.
24253         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
24254         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
24255         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
24256         operands.
24258 2008-03-18  Michael Matz  <matz@suse.de>
24260         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
24262 2008-03-18  Richard Guenther  <rguenther@suse.de>
24264         * tree-gimple.h (is_gimple_invariant_address): Declare.
24265         (is_gimple_constant): Likewise.
24266         * tree-gimple.c (is_gimple_constant): New function.
24267         (is_gimple_invariant_address): Likewise.
24268         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
24269         and is_gimple_invariant_address.
24270         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
24271         previous change.
24272         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
24273         an addressable base.
24275 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
24277         PR middle-end/35611
24278         * gimplify.c (gimplify_expr): Gimplify second operand of
24279         OMP_ATOMIC_LOAD.
24281 2008-03-17  Richard Guenther  <rguenther@suse.de>
24283         PR tree-optimization/19637
24284         * fold-const.c (fold_unary): Remove restrictions of removing
24285         intermediate pointer-conversions (P2)(P1)P0.
24286         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
24287         conversion to void pointer.
24288         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
24290 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
24292         PR debug/31510
24293         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
24294         emulated thread local variables.
24296 2008-03-16  Richard Guenther  <rguenther@suse.de>
24298         PR middle-end/35607
24299         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
24300         expand TREE_INVARIANT operations that are not gimple invariant.
24302 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
24304         * doc/extend.texi (Alignment): Say that the ABI controls
24305         the __alignof__ for non-strict-alignment targets rather
24306         than being a recommendation.
24308 2008-03-15  Paul Brook  <paul@codesourcery.com>
24310         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
24311         annotations.
24312         (arm_output_fn_unwind): Mark functions that can not be unwound.
24314 2008-03-15  Paul Brook  <paul@codesourcery.com>
24316         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
24317         extension instructions.
24319 2008-03-15  Richard Guenther  <rguenther@suse.de>
24321         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
24322         and fold constant aggregate refs.
24323         (fold_const_aggregate_ref): Handle string constants
24324         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
24325         (evaluate_stmt): Simplify now that ccp_fold folds constant
24326         aggregate refs.
24328 2008-03-15  Paul Brook  <paul@codesourcery.com>
24330         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
24331         (extzv): Use gen_extzv_t2.
24332         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
24334 2008-03-15  Richard Guenther  <rguenther@suse.de>
24336         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
24337         (fold_const_aggregate_ref): Likewise.
24338         (get_value): Return NULL if we don't have any values.
24339         (ccp_finalize): Set const_val to NULL after freeing it.
24340         * tree-flow.h (get_symbol_constant_value): Declare.
24341         (fold_const_aggregate_ref): Likewise.
24342         * tree-ssa-sccvn.c (try_to_simplify): Use them.
24344 2008-03-15  Richard Guenther  <rguenther@suse.de>
24346         PR middle-end/35593
24347         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
24348         to not produce negative array indices if not allowed.  Add
24349         parameter to indicate that.
24350         (maybe_fold_offset_to_component_ref): Allow negative array
24351         indices only for the first member of a structure.
24352         (maybe_fold_offset_to_reference): Allow negative array indices.
24353         (maybe_fold_stmt_addition): Likewise.
24355 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
24356             Anatoly Sokolov <aesok@post.ru>
24358         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
24359         (avr_arch): Add ARCH_AVR6.
24360         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
24361         (initial_elimination_offset): Initialize and use 'avr_pc_size'
24362         instead of fixed value 2.
24363         (print_operand_address): Use gs() asm specifier instead of pm().
24364         (avr_assemble_integer): (Ditto.).
24365         (avr_output_addr_vec_elt): (Ditto.).
24366         (print_operand): Handle "!" code.
24367         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
24368         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
24369         (AVR_HAVE_EIJMP_EICALL): Define.
24370         (AVR_3_BYTE_PC): Redefine.
24371         (AVR_2_BYTE_PC): (Ditto.).
24372         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
24373         (LINK_SPEC): Add atmega2560 and atmega2561.
24374         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
24375         (crtm2561.o).
24376         * config/avr/avr.md (call_insn): Use eicall instead of icall
24377         for 3 byte PC devices.
24378         (call_value_insn): (Ditto.).
24379         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
24380         (indirect_jump): Use only for for 2 byte PC devices.
24381         (*tablejump): (Ditto.).
24382         (*indirect_jump_avr6): Add insn.
24383         (*tablejump_rjmp): Don't use for 3 byte PC devices.
24384         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
24385         instead of ijmp for 3 byte PC devices.
24386         (__tablejump2__): (Ditto.).
24387         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
24388         (MULITLIB_DIRNAMES): (Ditto.).
24389         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
24391 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
24393         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
24394         "sse2_umulsidi3".  Use V1DI mode for operand 0.
24395         ("mmx_psadbw"): Use V1DI mode for operand 0.
24396         * config/i386/i386-modes.def (V1SI): New vector mode.
24397         * config/i386/i386.c (struct builtin_description)
24398         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
24399         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
24400         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
24401         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
24402         v1di_ftype_v8qi_v8qi type.
24403         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
24405         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
24406         __builtin_ia32_pmuludq]: Fix the mode of return value.
24408 2008-03-15  Richard Guenther  <rguenther@suse.de>
24410         PR middle-end/35595
24411         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
24412         being a PHI_NODE.
24414 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
24416         * doc/invoke.texi (Option Summary, Xtensa Options): Document
24417         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
24418         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
24419         unless TARGET_SERIALIZE_VOLATILE is enabled.
24420         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
24421         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
24422         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
24424 2008-03-14  Richard Guenther  <rguenther@suse.de>
24426         PR tree-optimization/34172
24427         * tree-flow.h (refs_may_alias_p): Declare.
24428         (get_single_def_stmt): Likewise.
24429         (get_single_def_stmt_from_phi): Likewise.
24430         (get_single_def_stmt_with_phi): Likewise.
24431         * tree-dfa.c (refs_may_alias_p): New function.
24432         (get_single_def_stmt): Likewise.
24433         (get_single_def_stmt_from_phi): Likewise.
24434         (get_single_def_stmt_with_phi): Likewise.
24435         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
24436         (vn_reference_lookup_1): New helper function.
24437         (vn_reference_lookup): Walk the virtual use-def chain to
24438         continue searching for a match if the def does not alias the
24439         reference we are looking for.
24441 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
24443         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
24444         archive and Perzl.  Update The Written Word listing.
24446 2008-03-14  Richard Guenther  <rguenther@suse.de>
24448         PR tree-optimization/34043
24449         PR tree-optimization/33989
24450         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
24451         when doing FRE.
24452         (bitmap_find_leader): Use extra argument to verify dominance
24453         relationship inside a basic-block.
24454         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
24455         (find_leader_in_sets): Adjust.
24456         (create_component_ref_by_pieces): Take extra argument for
24457         dominance check, handle lookup failures.
24458         (find_or_generate_expression): Likewise.
24459         (create_expression_by_pieces): Likewise.
24460         (insert_into_preds_of_block): Adjust.
24461         (create_value_expr_from): If asked for, verify all operands
24462         are in the blocks AVAIL_OUT set.
24463         (make_values_for_stmt): Check for SSA_NAMEs that are life
24464         over an abnormal edge.
24465         (compute_avail): Remove such check.
24466         (do_SCCVN_insertion): New function.
24467         (eliminate): If we do not find a leader suitable for replacement
24468         insert a replacement expression from SCCVN if available.
24469         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
24470         (struct vn_ssa_aux): Add needs_insertion flag.
24471         * tree-ssa-sccvn.c (may_insert): New global flag.
24472         (copy_reference_ops_from_ref): Value-number union member access
24473         based on its size, not type and member if insertion is allowed.
24474         (visit_reference_op_load): For a weak match from union type
24475         punning lookup a view-converted value and insert a SSA_NAME
24476         for that value if that is not found.
24477         (visit_use): Make dumps shorter.  Do not disallow value numbering
24478         SSA_NAMEs that are life over an abnormal edge to constants.
24479         (free_scc_vn): Release inserted SSA_NAMEs.
24480         (run_scc_vn): New flag to specify whether insertion is allowed.
24481         Process SSA_NAMEs in forward order.
24482         * tree-ssa-loop-im.c (for_each_index): Handle invariant
24483         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
24484         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
24485         pointer type to/from integral types that do not change the
24486         precision to regular conversions.
24488 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
24490         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24491         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24492         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
24493         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
24494         input arguments and the mode of return value.  Built-in functions
24495         that operate on whole 64-bit MMX register now use V1DI mode.
24497 2008-03-13  Alon Dayan  <alond@il.ibm.com>
24498             Olga Golovanevsky  <olga@il.ibm.com>
24500         PR tree-optimization/35041
24501         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
24502         to locate the right position in a statement.
24504 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
24506         PR target/34000
24507         PR target/35553
24508         * config/i386/xmmintrin.h:  Change all static inline functions to
24509         extern inline and add __gnu_inline__ attribute.
24510         * config/i386/bmintrin.h: Ditto.
24511         * config/i386/smmintrin.h: Ditto.
24512         * config/i386/tmmintrin.h: Ditto.
24513         * config/i386/mmintrin-common.h: Ditto.
24514         * config/i386/ammintrin.h: Ditto.
24515         * config/i386/emmintrin.h: Ditto.
24516         * config/i386/pmmintrin.h: Ditto.
24517         * config/i386/mmintrin.h: Ditto.
24518         * config/i386/mm3dnow.h: Ditto.
24520 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
24522         PR middle-end/35185
24523         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
24524         (lower_omp_2): New function.
24525         (lower_omp_1, lower_omp): Rewritten.
24527 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
24529         PR 35054
24530         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
24531         with the phrase "Microsoft Windows compilers".
24532         (Push/Pop Macro Pragmas): New subsection. Document
24533         #pragma push_macro and pragma pop_macro.
24535 2008-03-12  Paul Brook  <paul@codesourcery.com>
24537         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
24539 2008-03-12  Paul Brook  <paul@codesourcery.com>
24541         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
24542         (thumb2_alusi3_short): Exclude PLUS and MINUS.
24543         (thumb2_addsi_shortim): Rename ...
24544         (thumb2_addsi_short): ... to this.  Allow register operands.
24545         (thumb2_subsi_short): New pattern.
24546         (thumb2_one_cmplsi2_short,
24547         thumb2_negsi2_short): New patterns and peepholes.
24549 2008-03-12  Paul Brook  <paul@codesourcery.com>
24551         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
24553 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
24555         * config/i386/i386.md (int_cond): New code iterator.
24556         (fp_cond): Ditto.
24557         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
24558         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
24559         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
24560         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
24561         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
24562         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
24563         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
24564         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
24566 2008-03-12  Paul Brook  <paul@codesourcery.com>
24568         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
24569         instead of {arm,thumb}_compute_save_reg_mask.
24570         (output_return_instruction): Ditto.
24571         (thumb_unexpanded_epilogue): Ditto.
24572         (thumb1_expand_prologue): Ditto.
24573         (thumb1_output_function_prologue): Ditto.
24574         (arm_set_return_address): Ditto.
24575         (thumb_set_return_address): Ditto.
24576         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
24577         regs to achieve stack alignment.
24578         (thumb1_compute_save_reg_mask): Fix compiler warning.
24579         (arm_output_epilogue): Use offsets->saved_regs_mask.
24580         Adjust stack pointer by poping call clobered registers.
24581         (arm_expand_prologue): Use offsets->saved_regs_mask.
24582         Adjust stack pointer by pushing extra registers.
24583         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
24585 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
24587         PR tree-opt/35422
24588         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
24589         conversion to the operands of a multiplication.
24591 2008-03-12  Richard Guenther  <rguenther@suse.de>
24593         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
24594         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
24595         * timevar.def (TV_TREE_PHIPROP): Add.
24596         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
24597         pass description.  Use TV_TREE_PHIPROP.
24598         * tree-ssa-forwprop.c: Remove phiprop code.
24600 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
24602         PR middle-end/35549
24603         * omp-low.c (maybe_lookup_decl): Constify first argument.
24604         (use_pointer_for_field): Change last argument from bool to
24605         omp_context *.  Disallow shared copy-in/out in nested
24606         parallel if decl is shared in outer parallel too.
24607         (build_outer_var_ref, scan_sharing_clauses,
24608         lower_rec_input_clauses, lower_copyprivate_clauses,
24609         lower_send_clauses, lower_send_shared_vars): Adjust callers.
24611 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
24612             Ira Rosen  <irar@il.ibm.com>
24614         * tree-vectorizer.c (free_stmt_vec_info): New function.
24615         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
24616         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
24617         * tree-vectorizer.h (free_stmt_vec_info): Declare.
24618         * tree-vect-transform.c (vectorizable_conversion): Free
24619         vec_oprnds0 if it was allocated.
24620         (vect_permute_store_chain): Remove unused VECs.
24621         (vectorizable_store): Free VECs that are allocated in the..
24622         function.
24623         (vect_transform_strided_load, vectorizable_load): Likewise.
24624         (vect_remove_stores): Simplify the code.
24625         (vect_transform_loop): Move code to vect_remove_stores().
24626         Call vect_remove_stores() and free_stmt_vec_info().
24628 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24630         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
24631         TARGET_HPUX.  Revise comment.
24632         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
24633         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
24634         Use sr4 variant of `be' instruction when not generating PIC code.
24635         (attr_length_call): Adjust for above change.
24637 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24639         * ipa-reference.c (static_execute): Remove module_statics_const and
24640         associated setting code.
24642 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24644         PR target/35540
24645         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
24646         predicate for operand 1.
24647         (paritysi2_cmp): Use register_operand predicate for operand 2.
24648         Use earlyclobber modifier for operand 1.  Remove support for
24649         memory operands.
24650         (paritydi2_cmp): Use register_operand predicate for operand 3.
24651         Use earlyclobber modifier for operand 1.  Remove support for
24652         memory operands.
24654 2008-03-11  Paul Brook  <paul@codesourcery.com>
24655             Vladimir Prus  <vladimir@codesourcery.com>
24657         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
24658         (arm_compute_save_reg0_reg12_mask): Always
24659         check if register 11 must be saved.  Always safe hard frame pointer
24660         when frame_pointer_needeed.
24661         (arm_compute_save_reg_mask): Save IP and PC
24662         only with apcs frames.
24663         (arm_output_epilogue): Adjust Thumb2 codepath to
24664         be also invoked and work for ARM non-apcs frames.
24665         (arm_expand_prologue): Don't bother saving IP
24666         for non-apcs frame, since it's not clobbered by
24667         prologue code.  Implement non-apcs frame
24668         layout.
24670 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24672         PR rtl-optimization/35281
24673         * expr.c (convert_move): Use a new pseudo for the intermediate
24674         from_mode->word_mode result.
24676 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24678         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
24679         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
24680         * toplev.c (compile_file): Don't call it.
24682 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24684         PR middle-end/35526
24685         * expr.c (store_expr): Call emit_block_move if the mode
24686         of "temp" RTX is BLKmode.
24688 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24689             Richard Guenther  <rguenther@suse.de>
24691         PR tree-optimization/31358
24692         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
24693         the step with a NULL_TREE.
24694         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
24695         to sizetype if type is a pointer type.
24696         (add_candidate_1): Don't convert the base and step to
24697         the generic type if the orginal type is a pointer type.
24698         (add_iv_value_candidates): Use sizetype for the step
24699         if type is a pointer type.
24700         (cand_value_at): Likewise.
24701         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
24702         for pointer types.
24703         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
24704         Don't convert the tem affine to the type.
24705         (add_elt_to_tree): Use sizetype for the step if a pointer.
24706         Use POINTER_PLUS_EXPR for pointers.
24707         (aff_combination_to_tree): Use sizetype for the step if a
24708         pointer.
24710 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
24712         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
24713         Remove commutativity hint.
24715 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
24717         PR c/35438
24718         PR c/35439
24719         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
24720         errorneous type.  Check that v is a VAR_DECL.
24722         PR middle-end/35099
24723         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
24725 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
24727         PR tree-optimization/35494
24728         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
24729         may be overriden at link and run time.
24731 2008-03-10  Richard Guenther  <rguenther@suse.de>
24733         PR tree-optimization/34677
24734         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
24735         (poolify_tree): Likewise.
24736         (modify_expr_template): Likewise.
24737         (poolify_modify_stmt): Likewise.
24738         (insert_fake_stores): Handle all component-ref style stores
24739         in addition to INDIRECT_REF.  Also handle complex types.
24740         Do not poolify the inserted load.
24741         (realify_fake_stores): Do not rebuild the tree but only
24742         make it a SSA_NAME copy.
24743         (init_pre): Remove initialzation of modify_expr_template.
24744         Do not allocate modify_expr_node_pool.
24745         (fini_pre): Do not free modify_expr_node_pool.
24747 2008-03-10  Paul Brook  <paul@codesourcery.com>
24749         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
24750         to avoid conflicts.
24752 2008-03-10  Paul Brook  <paul@codesourcery.com>
24753             Mark Shinwell  <shinwell@codesourcery.com>
24755         * config/arm/cortex-r4.md: New.
24756         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
24757         insn attributes.
24758         * config/arm/arm.md: Include cortex-r4.md.
24759         (insn): Add smmls, sdiv and udiv values.
24760         (generic_sched): Don't use generic scheduling for Cortex-R4.
24761         (arm_issue_rate): New function.
24762         (TARGET_SCHED_ISSUE_RATE): Define.
24764 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
24766         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
24768 2008-03-10  Richard Guenther  <rguenther@suse.de>
24770         * tree-ssa-pre.c (get_sccvn_value): Simplify.
24771         (compute_avail): Do not add stmt uses to AVAIL_OUT.
24773 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
24775         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
24776         Set default to true.
24778 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24780         * c.opt (Wsynth): Deprecate.
24781         * doc/invoke.texi (Option Summary, Warning Options): Document
24782         -Wno-format-contains-nul.
24784 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
24786         PR target/35496
24787         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
24788         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
24790 2008-03-09  Ira Rosen  <irar@il.ibm.com>
24792         * config/rs6000/rs6000.c (builtin_description): Rename vector
24793         left shift operations.
24794         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
24795         (altivec_vsl<VI_char>): Rename to ...
24796         (ashl<mode>3): ... new name.
24797         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
24798         gen_ashlv4si3.
24799         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
24801 2008-03-08  Richard Guenther  <rguenther@suse.de>
24803         * coverage.h (tree_coverage_counter_addr): Declare.
24804         * coverage.c (tree_coverage_counter_addr): New function.
24805         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
24806         before using again.
24807         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
24808         (tree_gen_one_value_profiler): Likewise.
24809         (tree_gen_ic_profiler): Likewise.
24810         (tree_gen_average_profiler): Likewise.
24811         (tree_gen_ior_profiler): Likewise.
24813 2008-03-08  Richard Guenther  <rguenther@suse.de>
24815         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
24816         (vn_binary_op_insert): Likewise.
24817         (vn_unary_op_lookup): Likewise.
24818         (vn_unary_op_insert): Likewise.
24819         (vn_nary_op_lookup): Declare.
24820         (vn_nary_op_insert): Likewise.
24821         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
24822         and binary hashes, use a single obstack for unary_op_pool
24823         and binary_op_pool.
24824         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
24825         a single struct vn_nary_op_s.  Store tree code length and
24826         a variable number of operands.
24827         (struct vn_reference_op_struct): Remove unused op2.
24828         (vn_reference_op_eq): Do not compare op2.
24829         (vn_reference_op_compute_hash): Do not compute hash of op2.
24830         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
24831         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
24832         with vn_nary_op_compute_hash.
24833         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
24834         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
24835         vn_nary_op_lookup.
24836         (vn_unary_op_insert, vn_binary_op_insert): Replace with
24837         vn_nary_op_insert.
24838         (visit_unary_op): Call nary functions.
24839         (visit_binary_op): Likewise.
24840         (process_scc): Adjust for struct vn_tables_s changes.
24841         (allocate_vn_table): Likewise.
24842         (free_vn_table): Likewise.
24843         * tree-vn.c (vn_add): Call nary functions.
24844         (vn_lookup): Likewise.
24846 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
24848         PR target/35498
24849         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
24850         wdst back after sync_compare_and_swapqhi_internal.
24852 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
24854         PR target/22152
24855         * config/i386/i386-modes.def (V1DI): New vector mode.
24856         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
24857         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
24858         (MMXMODE248): Ditto.
24859         (MMXMODE): Add V1DI mode.
24860         (mmxvecsize): Change DI mode to V1DI mode.
24861         ("mov<mode>): Use MMXMODEI8 mode iterator.
24862         ("*mov<mode>_internal_rex64"): Ditto.
24863         ("*mov<mode>_internal"): Ditto.
24864         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
24865         ("mmx_sub<mode>3"): Ditto.
24866         ("mmx_adddi3"): Remove insn pattern.
24867         ("mmx_subdi3"): Ditto.
24868         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
24869         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
24870         ("mmx_ashl<mode>3"): Ditto.
24871         ("mmx_lshrdi3"): Remove insn pattern.
24872         ("mmx_ashldi3"): Ditto.
24873         * config/i386/i386.c (classify_argument): Handle V1DImode.
24874         (function_arg_advance_32): Ditto.
24875         (function_arg_32): Ditto.
24876         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
24877         mmx_addv1di3 insn pattern.
24878         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
24879         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
24880         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
24881         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
24882         Remove definitions of built-in functions.
24883         (V1DI_type_node): New node.
24884         (v1di_ftype_v1di_int): Ditto.
24885         (v1di_ftype_v1di_v1di): Ditto.
24886         (v2si_ftype_v2si_si): Ditto.
24887         (v4hi_ftype_v4hi_di): Remove node.
24888         (v2si_ftype_v2si_di): Ditto.
24889         (ix86_init_mmx_sse_builtins): Handle V1DImode.
24890         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
24891         Redefine builtins using def_builtin_const with *_ftype_*_int node.
24892         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
24893         Add new builtins using def_builtin_const.
24894         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
24895         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
24896         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
24897         * config/i386/mmintrin.h (__v1di): New typedef.
24898         (_mm_add_si64): Cast arguments to __v1di type.
24899         (_mm_sub_si64): Ditto.
24900         (_mm_sll_pi16): Cast __count to __v4hi type.
24901         (_mm_sll_pi32): Cast __count to __v2si type.
24902         (_mm_sll_si64): Cast arguments to __v1di type.
24903         (_mm_srl_pi16): Cast __count to __v4hi type.
24904         (_mm_srl_pi32): Cast __count to __v2si type.
24905         (_mm_srl_si64): Cast arguments to __v1di type.
24906         (_mm_sra_pi16): Cast __count to __v4hi type.
24907         (_mm_sra_pi32): Cast __count to __v2si type.
24908         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
24909         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
24910         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
24911         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
24912         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
24913         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
24914         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
24915         (_mm_srai_pi32): Use __builtin_ia32_psradi.
24916         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
24917         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24918         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24919         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
24921 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
24923         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
24925 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
24927         PR target/35373
24928         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
24929         reg+const addressing for Altivec modes.  Don't generate reg+reg
24930         addressing for TFmode or TDmode quantities.
24932 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
24934         * c-common.c (vector_types_convertible_p): Call langhook
24935         instead of comptypes.
24937 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24939         PR tree-opt/35402
24940         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
24941         integral and scalar float variables which have a
24942         NULL DECL_INITIAL.
24944 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
24946         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
24947         dwarf_register_span hook when emitting unwind information for
24948         register-to-memory saves.
24949         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
24950         (rs6000_frame_related): Remove call to spe_synthesize_frame.
24952 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
24954         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
24955         for the same VAR_DECL.
24957 2008-03-06  Tom Tromey  <tromey@redhat.com>
24959         * treelang: Delete.
24960         * doc/standards.texi (Standards): Don't mention treelang.
24961         * doc/invoke.texi (Overall Options): Don't mention treelang.
24962         * doc/install.texi (Prerequisites): Don't mention bison or
24963         treelang.
24964         (Configuration): Don't mention treelang.
24965         (Building): Likewise.
24966         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
24968 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
24970         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
24971         word-extractions out of a multi-word object.
24973 2008-03-06  Richard Guenther  <rguenther@suse.de>
24975         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
24976         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
24977         result type and precision.
24978         * expr.c (get_inner_reference): Set unsignedp based on the result
24979         type of BIT_FIELD_REF.
24980         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
24981         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
24982         (try_instantiate_multiple_fields): Likewise.  Use the correct type
24983         for BIT_FIELD_REF.
24984         (sra_build_assignment): Likewise.
24985         (sra_build_elt_assignment): Likewise.
24986         (sra_explode_bitfield_assignment): Likewise.
24987         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
24988         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
24989         set BIT_FIELD_REF_UNSIGNED.
24990         (vectorizable_load): Likewise.
24992 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
24994         * cse.c (cse_extended_basic_block): Invalidate artificial defs
24995         at bb start.
24997 2008-03-06  Richard Guenther  <rguenther@suse.de>
24999         * alias.c (struct alias_set_entry): Move has_zero_child field
25000         to pack with alias_set.
25002 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
25004         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
25005         32bit host.
25007 2008-03-05  Ian Lance Taylor  <iant@google.com>
25009         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
25011 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
25013         * fwprop.c (update_df): Support width and offset parameters of
25014         df_ref_create.
25015         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
25016         global_conflicts): Change DF_REF_EXTRACT to either
25017         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
25018         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
25019         * df-scan.c (df_ref_record, df_defs_record,
25020         df_ref_create_structure, df_def_record_1, df_uses_record,
25021         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
25022         df_bb_refs_collect, df_entry_block_defs_collect,
25023         df_exit_block_uses_collect): Support new width and offset fields.
25024         (ref_extract_pool): New storage pool.
25025         (df_free_ref): New function.
25026         (df_reg_chain_unlink, df_free_collection_rec,
25027         df_sort_and_compress_refs): Call df_free_ref.
25028         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
25029         of df_ref_extract.
25030         (df_ref_create_structure): Allocate df_ref_extract if offset and
25031         width fields are used.
25032         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
25033         (df_uses_record): Get offset and width from ZERO_EXTRACT
25034         and SIGN_EXTRACT.
25035         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
25036         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
25037         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
25038         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
25039         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
25040         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
25041         (df_ref_extract): New structure.
25042         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
25043         (df_ref_create): Add width and offset parameters.
25045 2008-03-05  Richard Guenther  <rguenther@suse.de>
25047         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25048         Use ranges_overlap_p.
25049         (offset_overlaps_with_access): Rename
25050         to ranges_overlap_p and move ...
25051         * tree-flow-inline.h (ranges_overlap_p): ... here.
25053         * tree.h (get_inner_reference, handled_component_p): Update
25054         comments.
25056         * tree.h (record_component_aliases, get_alias_set,
25057         alias_sets_conflict_p, alias_sets_must_conflict_p,
25058         objects_must_conflict_p): Move declarations ...
25059         * alias.h (record_component_aliases, get_alias_set,
25060         alias_sets_conflict_p, alias_sets_must_conflict_p,
25061         objects_must_conflict_p): ... here.
25062         Include coretypes.h.
25063         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
25065 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
25067         * cfg.c: Include tree-flow.h.
25068         (remove_edge_raw): Call redirect_edge_var_map_clear.
25069         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
25070         * tree-flow-inline.h (redirect_edge_var_map_def): New.
25071         (redirect_edge_var_map_result): New.
25072         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
25073         PENDING_STMT use with redirect_edge_var_map_*.
25074         * tree-ssa.c (edge_var_maps): New definition.
25075         (redirect_edge_var_map_add): New.
25076         (redirect_edge_var_map_clear): New.
25077         (redirect_edge_var_map_dup): New.
25078         (redirect_edge_var_map_vector): New.
25079         (redirect_edge_var_map_destroy): New.
25080         (ssa_redirect_edge): Replace PENDING_STMT use with
25081         redirect_edge_var_map_*.
25082         (flush_pending_stmts): Same.
25083         (delete_tree_ssa): Destroy edge var map.
25084         * tree-flow.h (struct _edge_var_map): New.
25085         Define edge_var_map vector type.
25086         Declare redirect_edge_var_map_* prototypes.
25087         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
25088         * tree-cfg.c (reinstall_phi_args): Replace
25089         PENDING_STMT use with redirect_edge_var_map_*.
25091 2008-03-05  Richard Guenther  <rguenther@suse.de>
25093         PR tree-optimization/35472
25094         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
25095         whose single use_stmt has a overlapping set of loaded and
25096         stored symbols as that use_stmt might be a noop assignment then.
25098 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
25100         * gthr-rtems.h: Implement __gthread_mutex_destroy.
25102 2008-03-05  Richard Guenther  <rguenther@suse.de>
25104         PR c++/35336
25105         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
25106         should be constants.
25107         * tree-cfg.c (verify_expr): Verify it.
25108         * fold-const.c (fold_truthop): Remove code generating
25109         BIT_FIELD_REFs of structure bases.
25110         (fold_binary): Likewise.
25111         (fold_ternary): Position and size of BIT_FIELD_REFs are
25112         always host integers.
25113         (make_bit_field_ref): Remove.
25114         (optimize_bit_field_compare): Remove.
25115         (all_ones_mask_p): Remove.
25117 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
25119         PR gcc/33009
25120         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
25121         (split_block_and_df_analyze): New. Split basic block and rebuild
25122         dataflow.
25123         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
25124         SPLIT_BLOCK.
25125         (split_pattern_seq): Likewise.
25126         (erase_matching_seqs): Likewise.
25127         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
25129 2008-03-04  Geoff Keating  <geoffk@apple.com>
25131         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
25132         declaration and code.
25133         (tree_invalid_nonnegative_warnv_p): Likewise.
25135 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
25137         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
25138         examples.  Truncate option-names then causing overfull hbox.
25140 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25142         PR target/35222
25143         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
25144         on hpux10.
25145         * configure: Rebuilt.
25147 2008-03-04  Rafael Espíndola  <espindola@google.com>
25149         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
25150         (tree_unary_nonnegative_warnv_p): New.
25151         (tree_binary_nonnegative_warnv_p): New.
25152         (tree_single_nonnegative_warnv_p): New.
25153         (tree_invalid_nonnegative_warnv_p): New.
25154         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
25156 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25158         PR 28322
25159         * opts.c (handle_option): Postpone 'unknown option' errors only for
25160         warning options.
25162 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
25164         PR target/35453
25165         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
25166         (_SIDD_XXX): This.
25168 2008-03-04  Rafael Espíndola  <espindola@google.com>
25170         * fold-const.c (tree_unary_nonzero_warnv_p): New.
25171         (tree_binary_nonzero_warnv_p): New.
25172         (tree_single_nonzero_warnv_p): New.
25173         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
25175 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
25177         PR middle-end/35456
25178         * fold-const.c (fold_cond_expr_with_comparison): Prevent
25179         transformations for modes that have signed zeros.
25180         * ifcvt.c (noce_try_abs): Ditto.
25182 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
25184         * config/i386/i386.c (override_options): Force
25185         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
25187 2008-03-04  Jan Hubicka  <jh@suse.cz>
25189         PR c++/35262
25190         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
25191         in last commit.
25193 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
25195         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
25196         label to probe the stack.
25198 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
25200         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
25201         (__gthr_win32_mutex_destroy): Declare.
25202         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
25203         __gthr_win32_mutex_destroy.
25204         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
25206 2008-03-03  Jan Hubicka  <jh@suse.cz>
25208         PR c++/35262
25209         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
25210         aggressive on inlining cold calls.
25212 2008-03-03  Richard Guenther  <rguenther@suse.de>
25214         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
25215         struct copies into the expression table.
25216         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
25217         (try_to_simplify): Likewise.
25218         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
25219         integral and pointer arguments which do not change the
25220         precision to NOP_EXPRs.
25221         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
25222         VIEW_CONVERT_EXPR case.
25224 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
25226         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
25227         defined in a loop at depth 0 is invariant.
25228         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
25229         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
25230         be called at loop depth 0.
25232 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
25234         PR driver/35420
25235         * gcc.c (process_command): Update copyright notice dates.
25236         * gcov.c (print_version): Likewise.
25237         * gcov-dump.c (print_version): Likewise.
25238         * mips-tfile.c (main): Likewise.
25239         * mips-tdump.c (main): Likewise.
25241 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25243         PR 24924
25244         * c-common.c (flag_permissive): Delete.
25245         (constant_expression_warnings): Check flags first.
25246         (constant_expression_error): New.
25247         * c-common.h (flag_permissive): Delete.
25248         (constant_expression_error): Declare.
25249         * flags.h (flag_permissive): Declare. Update description.
25250         * diagnostic.c (pedwarn): Update.
25251         (permerror): New.
25252         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
25253         (permissive_error_kind): New.
25254         * toplev.c (flag_permissive): Define. Update description.
25255         * toplev.h (permissive_error_kind): Declare.
25256         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
25257         (pedwarn_c90): Use pedantic_warning_kind.
25258         * c-opts.c (c_common_post_options): flag_permissive does not affect
25259         flag_pedantic_errors.
25261 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
25263         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
25264         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
25265         __absvsi2, __absvDI2): Use unsigned arithmetic.
25267 2008-03-02  Andi Kleen  <ak@suse.de>
25268             Richard Guenther  <rguenther@suse.de>
25270         * struct-equiv.c: Remove file.
25271         * cfg_cleanup.c (condjump_equiv_p): Remove.
25272         * Makefile.in (OBJS-common): Remove struct-equiv.o.
25273         (struct-equiv.o): Remove rule.
25274         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
25275         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
25276         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
25278 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25280         * ifcvt.c (noce_process_if_block): Try to handle only the then
25281         block if the else block exists but isn't suitable.
25283 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
25285         PR gcc/35063
25286         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
25287         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
25288         regression from previous patch.
25290 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
25292         PR gcc/35063
25293         * gthr.h: Add __gthread_mutex_destroy as a function that must be
25294         implemented.
25295         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
25296         * gthr-single.h (__gthread_mutex_destroy): Likewise.
25297         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
25298         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
25299         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
25300         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
25301         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
25302         (__gthread_mutex_destroy_function): Rename to
25303         __gthread_mutex_destroy.
25304         * gthr-dce.h (__gthread_mutex_destroy): Call
25305         pthread_mutex_destroy.
25306         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
25307         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
25308         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
25310 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25312         * df-scan.c (df_ref_chain_change_bb): Simplify.
25313         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
25314         set_block_for_insn if there's any change.
25315         * df.h ((df_insn_change_bb): Fix prototype.
25316         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
25317         df_insn_change_bb, don't call set_block_for_insn.
25318         * emit-rtl.c (reorder_insns): Likewise.
25319         * haifa-sched.c (move_insn): Likewise.
25321 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25323         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
25325 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25327         * tree-flow-inline.h (next_readonly_imm_use): Return
25328         NULL_USE_OPERAND_P after the end.
25330 2008-03-01  Richard Guenther  <rguenther@suse.de>
25332         PR tree-optimization/35411
25333         * tree-sra.c (sra_build_assignment): Split conversion to
25334         final type to a separate statement if we are not assigning
25335         to a register.
25337 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
25339         * fold-const.c (fold_convertible_p): Correct the logic to follow
25340         that in fold_convert().
25342 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
25344         PR c++/35315
25345         * tree-inline.c (build_duplicate_type): When we make a
25346         duplicate type, make it unique in the canonical types system.
25348 2008-02-29  Tom Tromey  <tromey@redhat.com>
25350         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
25351         input_file_stack_history, input_file_stack_restored): Remove.
25352         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
25353         * input.h (struct file_stack): Remove.
25354         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
25355         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
25356         Likewise.
25357         * diagnostic.h (struct diagnostic_context) <last_module>: Change
25358         type.
25359         (diagnostic_last_module_changed): Add 'map' argument.
25360         (diagnostic_set_last_function): Likewise.
25361         * diagnostic.c (undiagnostic_report_current_module): Iterate using
25362         line map, not input_file_stack.
25363         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
25365 2008-02-29  Paul Brook  <paul@codesourcery.com>
25367         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
25369 2008-02-29  Paul Brook  <paul@codesourcery.com>
25371         * config/arm/ieee754-df.S (muldf3): Use RET macros.
25373 2008-02-29  Richard Guenther  <rguenther@suse.de>
25375         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
25376         vn_lookup_or_add.
25377         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
25378         value for comparing for a store match.
25379         (simplify_unary_expression): Do nothing for SSA_NAMEs.
25380         (try_to_simplify): Do not do a full-blown reference lookup.
25382 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
25384         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
25385         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
25387         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
25389 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
25391         * tree-loop-linear.c (try_interchange_loops): Compare memory access
25392         strides against cache sizes.
25394 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
25396         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
25397         constant to fpul.
25399 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
25401         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
25402         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
25403         is smaller than the original promoted value.
25404         (simplify_subreg): If OP is a SUBREG, try to preserve its
25405         SUBREG_PROMOTED_VAR_P information.
25407 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
25409         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
25410         (VN_INFO_GET): Allocate new objects on the obstack.
25411         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
25412         for rpo_numbers_temp, for consistency.
25413         (free_scc_vn): Free the obstack.
25415 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
25417         * doc/invoke.texi: Document -ftree-loop-distribution.
25418         * tree-loop-distribution.c: New.
25419         * tree-pass.h (pass_loop_distribution): New.
25420         * graphds.h (struct graph): Add htab_t indices.
25421         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
25422         * tree-vectorizer.c (rename_variables_in_loop): Extern.
25423         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
25424         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
25425         * tree-data-ref.c (debug_data_dependence_relations): New.
25426         (dump_data_dependence_relation): Also print data references.
25427         (free_data_ref): Extern.
25428         (same_access_functions): Moved...
25429         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
25430         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
25431         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
25432         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
25433         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
25434         (stmts_from_loop): Skip LABEL_EXPR.
25435         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
25436         New.
25437         (build_rdg): Initialize rdg->indices htab.
25438         (free_rdg, stores_from_loop, ref_base_address,
25439         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
25440         have_similar_memory_accesses_1, ref_base_address_1,
25441         remove_similar_memory_refs): New.
25442         * tree-data-ref.h: Depend on tree-chrec.h.
25443         (debug_data_dependence_relations, free_data_ref): Declared.
25444         (same_access_functions): ... here.
25445         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
25446         New.
25447         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
25448         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
25449         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
25450         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
25451         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
25452         rdg_vertex_for_stmt): Declared.
25453         (struct rdg_edge): Add level.
25454         (RDGE_LEVEL): New.
25455         (free_rdg, stores_from_loop, remove_similar_memory_refs,
25456         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
25457         Declared.
25458         (rdg_has_similar_memory_accesses): New.
25459         * tree-vect-analyze.c: Remove unused static decls.
25460         * lambda.h (dependence_level): New.
25461         * common.opt (ftree-loop-distribution): New.
25462         * tree-flow.h (mark_virtual_ops_in_bb,
25463         slpeel_tree_duplicate_loop_to_edge_cfg,
25464         rename_variables_in_loop): Declared.
25465         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
25466         (OBJS-common): Add tree-loop-distribution.o.
25467         (tree-loop-distribution.o): New rule.
25468         * tree-cfg.c (mark_virtual_ops_in_bb): New.
25469         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
25470         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
25472 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
25474         PR target/33963
25475         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
25476         other than structures and unions.
25478 2008-02-28  Richard Guenther  <rguenther@suse.de>
25480         Revert:
25481         2008-02-26  Richard Guenther  <rguenther@suse.de>
25483         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25484         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25485         (lookup_decl_from_uid): Declare.
25486         (remove_decl_from_map): Likewise.
25487         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25488         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25489         (decl_for_uid_map): New global hashtable mapping DECL_UID
25490         to the decl tree.
25491         (init_ttree): Allocate it.
25492         (insert_decl_to_uid_decl_map): New helper function.
25493         (make_node_stat): Insert new decls into the map.
25494         (copy_node_stat): Likewise.
25495         (lookup_decl_from_uid): New function.
25496         (remove_decl_from_map): Likewise.
25497         (print_decl_for_uid_map_statistics): New helper.
25498         (dump_tree_statistics): Call it.
25500         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25501         (referenced_var_iterator): Adjust.
25502         (FOR_EACH_REFERENCED_VAR): Adjust.
25503         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25504         (num_referenced_vars): Adjust.
25505         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25506         (first_referenced_var): Remove.
25507         (end_referenced_vars_p): Likewise.
25508         (next_referenced_var): Likewise.
25509         (referenced_var_iterator_set): New helper function.
25510         * tree-dfa.c (referenced_var_lookup): Adjust.
25511         (referenced_var_check_and_insert): Likewise.
25512         (remove_referenced_var): Likewise.
25513         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25514         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25515         (verify_call_clobbering): Likewise.
25516         (verify_memory_partitions): Likewise.
25517         (init_tree_ssa): Allocate bitmap instead of hashtable for
25518         referenced_vars.
25519         (delete_tree_ssa): Adjust.
25520         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25521         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25522         (compute_tag_properties): Likewise.
25523         (set_initial_properties): Likewise.
25524         (find_partition_for): Likewise.
25525         (update_reference_counts): Likewise.
25526         (dump_may_aliases_for): Likewise.
25527         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25528         (add_call_clobber_ops): Likewise.
25529         (add_call_read_ops): Likewise.
25530         (get_asm_expr_operands): Likewise.
25531         * tree-into-ssa.c (dump_decl_set): Likewise.
25532         (update_ssa): Likewise.
25533         * tree-sra.c (scan_function): Likewise.
25534         (decide_instantiations): Likewise.
25535         (scalarize_parms): Likewise.
25536         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25537         (dsa_named_for): Likewise.
25538         * tree-ssa-structalias.c (update_alias_info): Likewise.
25539         (merge_smts_into): Likewise.
25541 2008-02-27  David Daney  <ddaney@avtrex.com>
25543         PR target/34409
25544         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
25545         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
25546         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
25547         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
25548         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
25550 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
25552         PR target/25477
25553         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
25554         (BUILT_IN_NEXTTOWARD): Remove.
25555         (BUILT_IN_NEXTTOWARDF): Ditto.
25556         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
25557         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
25559 2008-02-27  Tom Tromey  <tromey@redhat.com>
25561         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
25562         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
25564 2008-02-27  Jan Beulich  <jbeulich@novell.com>
25566         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
25567         update the respective field on newdecl.
25569 2008-02-27  Revital Eres  <eres@il.ibm.com>
25571         PR rtl-optimization/34999
25572         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
25573         crossing edges that ends with a call insn.
25574         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
25575         call insn and clear the EDGE_CROSSING flag of the crossing edge
25576         when fixing fallthru edges.
25578 2008-02-27  Richard Guenther  <rguenther@suse.de>
25580         PR middle-end/35390
25581         * fold-const.c (fold_unary): Return the correct argument,
25582         converted to the result type.
25584 2008-02-27  Richard Guenther  <rguenther@suse.de>
25586         PR middle-end/34971
25587         * expr.c (expand_expr_real_1): Assert on rotates that operate
25588         on partial modes.
25589         * fold-const.c (fold_binary): Use the types precision, not the
25590         bitsize of the mode if folding rotate expressions.  Build rotates
25591         only for full modes.
25593 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
25595         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
25596         and CPP_PRAGMA_EOL.
25597         * c-pragma.c (pragma_ns_name): New typedef.
25598         (registered_pp_pragmas): New variable.
25599         (c_pp_lookup_pragma): New function.
25600         (c_register_pragma_1): If flag_preprocess_only, do nothing
25601         for non-expanded pragmas, for expanded ones push pragma's
25602         namespace and name into registered_pp_pragmas vector.
25603         (c_invoke_pragma_handler): Register OpenMP pragmas even when
25604         flag_preprocess_only, don't register GCC pch_preprocess
25605         pragma if flag_preprocess_only.
25606         * c-opts.c (c_common_init): Call init_pragma even if
25607         flag_preprocess_only.
25608         * c-pragma.c (c_pp_lookup_pragma): New prototype.
25609         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
25610         cpp_register_pragma if flag_preprocess_only.
25612 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25614         PR c/28800
25615         * c-parser.c (c_parser_translation_unit): Warn for empty
25616         translation unit, not empty source file.
25618 2008-02-26  Paul Brook  <paul@codesourcery.com>
25620         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
25621         operand for Thumb-2.
25622         * config/arm/arm.h (reg_class): Add CORE_REGS.
25623         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
25624         (BASE_REG_CLASS): Use CORE_REGS.
25625         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
25626         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
25627         (REGNO_OK_FOR_INDEX_P): Exclude SP.
25628         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
25629         ARM_REGNO_OK_FOR_INDEX_P.
25630         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
25631         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
25632         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
25633         (ldm/stm peepholes): Ditto.
25634         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
25635         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
25636         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
25637         * config/arm/constraints.md: Enable "k" constraint on ARM.
25639 2008-02-27  Ben Elliston  <bje@au.ibm.com>
25641         * config/rs6000/rs6000.c: Annotate cache line size field in all
25642         instances of struct processor_costs.
25644 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
25646         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
25647         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
25648         jump_bypass): New counters.
25649         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
25650         * dce.c (gate_ud_dce): Same.
25651         (gate_fast_dce): Same.
25652         * dse.c (gate_dse1): New function.
25653         (gate_dse2): New function.
25654         (gate_dse): Merge results of new gate functions.
25655         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
25656         (gate_handle_jump_bypass): Add dbg_cnt.
25657         (gate_handle_gcse): Add dbg_cnt.
25658         * ifcvt.c (gate_handle_if_conversion): Same.
25659         (gate_handle_if_after_combine): Same.
25660         (gate_handle_if_after_reload): Same.
25661         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
25663 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
25665         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
25666         line sizes.
25667         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
25669 2008-02-26  Jason Merrill  <jason@redhat.com>
25671         PR c++/35315
25672         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
25673         alone if it's the naming decl for the type's main variant.
25675 2008-02-26  Tom Tromey  <tromey@redhat.com>
25677         * system.h (USE_MAPPED_LOCATION): Poison.
25678         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
25679         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
25680         (make_goto_expr_edges): Likewise.
25681         (remove_bb): Likewise.
25682         (execute_warn_function_return): Likewise.
25683         * basic-block.h (struct edge_def) <goto_locus>: Change type to
25684         location_t.
25685         * c-common.c (fname_decl): Remove old location code.
25686         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
25687         location code.
25688         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
25689         variant.
25690         (ASM_INPUT_SOURCE_LOCATION): Likewise.
25691         (gen_rtx_ASM_INPUT): Likewise.
25692         (gen_rtx_ASM_INPUT_loc): Likewise.
25693         (get_rtx_asm_OPERANDS): Remove.
25694         * cfglayout.c (insn_locators_alloc): Remove old location code.
25695         (set_curr_insn_source_location): Likewise.
25696         (curr_insn_locator): Likewise.
25697         * print-tree.c (print_node): Remove old location code.
25698         * tree-mudflap.c (mf_varname_tree): Remove old location code.
25699         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
25700         * cfgexpand.c (expand_gimple_cond_expr): Don't use
25701         location_from_locus.
25702         (construct_exit_block): Remove old location code.
25703         * emit-rtl.c (force_next_line_note): Remove old location code.
25704         * profile.c (branch_prob): Remove old location code.
25705         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
25706         LOC_LINE): Remove old-location variants.
25707         * langhooks.c (lhd_print_error_function): Remove old location
25708         code.
25709         * configure, config.in: Rebuilt.
25710         * configure.ac (--enable-mapped-location): Remove.
25711         * c-decl.c (c_init_decl_processing): Remove old location code.
25712         (finish_function): Likewise.
25713         * recog.c (decode_asm_operands): Remove old location code.
25714         * c-pch.c (c_common_read_pch): Remove old location code.
25715         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
25716         variants.
25717         * gimple-low.c (lower_function_body): Remove old location code.
25718         * toplev.c (unknown_location): Remove.
25719         (push_srcloc): Remove old-location variant.
25720         (process_options): Remove old location code.
25721         (lang_dependent_init): Likewise.
25722         * input.h (UNKNOWN_LOCATION): Move definition.
25723         (location_t): Undeprecate.
25724         (source_locus): Remove.
25725         (location_from_locus): Remove.
25726         (struct location_s): Remove.
25727         Remove all old-location code.
25728         (input_line, input_filename): Remove.
25729         * final.c (final_scan_insn): Remove old location code.
25730         * diagnostic.c (diagnostic_build_prefix): Remove
25731         USE_MAPPED_LOCATION test.
25732         * tree.h (gimple_stmt) <locus>: Now a location_t.
25733         (tree_exp) <locus>: Likewise.
25734         (DECL_IS_BUILTIN): Remove old-location variant.
25735         (annotate_with_file_line, annotate_with_locus): Likewise.
25736         (expr_locus, set_expr_locus): Update.
25737         * tree.c (build1_stat): Remove old location code.
25738         (last_annotated_node): Remove.
25739         (annotate_with_file_line): Remove old-location variant.
25740         (annotate_with_locus): Likewise.
25741         (expr_location): Remove old location code.
25742         (set_expr_location): Likewise.
25743         (expr_has_location): Likewise.
25744         (expr_locus): Likewise.
25745         (set_expr_locus): Likewise.
25746         (expr_filename): Don't use location_from_locus.
25747         (expr_lineno): Likewise.
25748         * rtl-error.c (location_for_asm): Remove old location code.
25749         * c-lex.c (cb_line_change): Remove old location code.
25750         (fe_file_change): Likewise.
25751         (cb_def_pragma): Likewise.
25752         (c_lex_with_flags): Likewise.
25753         * gengtype.c (do_typedef): Don't special-case location types.
25754         (define_location_structures): Remove.
25755         (main): Don't call define_location_structures.
25756         * tree-pretty-print.c (dump_implicit_edges): Remove old location
25757         code.
25759 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25761         PR 26264
25762         * builtins.def (BUILT_IN_STDARG_START): Remove.
25763         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
25764         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
25765         * tree-inline.c (inline_forbidden_p_1): Likewise.
25767 2008-02-26  Richard Guenther  <rguenther@suse.de>
25769         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25770         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25771         (lookup_decl_from_uid): Declare.
25772         (remove_decl_from_map): Likewise.
25773         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25774         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25775         (decl_for_uid_map): New global hashtable mapping DECL_UID
25776         to the decl tree.
25777         (init_ttree): Allocate it.
25778         (insert_decl_to_uid_decl_map): New helper function.
25779         (make_node_stat): Insert new decls into the map.
25780         (copy_node_stat): Likewise.
25781         (lookup_decl_from_uid): New function.
25782         (remove_decl_from_map): Likewise.
25783         (print_decl_for_uid_map_statistics): New helper.
25784         (dump_tree_statistics): Call it.
25786         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25787         (referenced_var_iterator): Adjust.
25788         (FOR_EACH_REFERENCED_VAR): Adjust.
25789         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25790         (num_referenced_vars): Adjust.
25791         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25792         (first_referenced_var): Remove.
25793         (end_referenced_vars_p): Likewise.
25794         (next_referenced_var): Likewise.
25795         (referenced_var_iterator_set): New helper function.
25796         * tree-dfa.c (referenced_var_lookup): Adjust.
25797         (referenced_var_check_and_insert): Likewise.
25798         (remove_referenced_var): Likewise.
25799         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25800         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25801         (verify_call_clobbering): Likewise.
25802         (verify_memory_partitions): Likewise.
25803         (init_tree_ssa): Allocate bitmap instead of hashtable for
25804         referenced_vars.
25805         (delete_tree_ssa): Adjust.
25806         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25807         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25808         (compute_tag_properties): Likewise.
25809         (set_initial_properties): Likewise.
25810         (find_partition_for): Likewise.
25811         (update_reference_counts): Likewise.
25812         (dump_may_aliases_for): Likewise.
25813         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25814         (add_call_clobber_ops): Likewise.
25815         (add_call_read_ops): Likewise.
25816         (get_asm_expr_operands): Likewise.
25817         * tree-into-ssa.c (dump_decl_set): Likewise.
25818         (update_ssa): Likewise.
25819         * tree-sra.c (scan_function): Likewise.
25820         (decide_instantiations): Likewise.
25821         (scalarize_parms): Likewise.
25822         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25823         (dsa_named_for): Likewise.
25824         * tree-ssa-structalias.c (update_alias_info): Likewise.
25825         (merge_smts_into): Likewise.
25827 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25829         PR 34351
25830         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
25831         * c-opts.c (c_common_handle_option): Wall enables
25832         Wvolatile-register-var.
25833         * common.opt: Move Wvolatile-register-var to...
25834         * c.opt: ...here.
25836 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25838         * common.opt (Wlarger-than=): New.
25839         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
25840         -Wlarger-than=.
25841         * opts.c (common_handle_option): Handle -Wlarger-than=.
25842         * optc-gen.awk: Likewise.
25843         * opth-gen.awk: Likewise.
25844         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
25845         * tree-optimize.c (tree_rest_of_compilation): Likewise.
25847 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25849         * c-common.c (match_case_to_enum_1): Add appropriate
25850         OPT_W* parameter to warning.
25851         (c_do_switch_warnings): Likewise.
25852         * c-typeck.c (warning_init): Add one more parameter following
25853         'warning' function.
25854         (push_init_level): Update call to warning_init.
25855         (pop_init_level): Likewise.
25856         (add_pending_init): Likewise.
25857         (output_init_element: Likewise.
25859 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25861         PR 28322
25862         * toplev.c (toplev_main): If there are warnings or error, print
25863         errors for ignored options.
25864         * opts.c (ignored_options): New static variable.
25865         (postpone_unknown_option_error): New.
25866         (print_ignored_options): New.
25867         (handle_option): Postpone errors for unknown -Wno-* options.
25868         * opts.h (print_ignored_options): Declare.
25870 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
25872         * config/mips/mips.md (loadgp_blockage, blockage): Change type
25873         to "ghost".
25875 2008-02-25  Richard Guenther  <rguenther@suse.de>
25877         Revert:
25878         2008-02-25  Richard Guenther  <rguenther@suse.de>
25880         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25881         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25882         (lookup_decl_from_uid): Declare.
25883         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25884         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25885         (decl_for_uid_map): New global hashtable mapping DECL_UID
25886         to the decl tree.
25887         (init_ttree): Allocate it.
25888         (insert_decl_to_uid_decl_map): New helper function.
25889         (make_node_stat): Insert new decls into the map.
25890         (copy_node_stat): Likewise.
25891         (lookup_decl_from_uid): New function.
25892         (print_decl_for_uid_map_statistics): New helper.
25893         (dump_tree_statistics): Call it.
25895         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25896         (referenced_var_iterator): Adjust.
25897         (FOR_EACH_REFERENCED_VAR): Adjust.
25898         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25899         (num_referenced_vars): Adjust.
25900         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25901         (first_referenced_var): Remove.
25902         (end_referenced_vars_p): Likewise.
25903         (next_referenced_var): Likewise.
25904         (referenced_var_iterator_set): New helper function.
25905         * tree-dfa.c (referenced_var_lookup): Adjust.
25906         (referenced_var_check_and_insert): Likewise.
25907         (remove_referenced_var): Likewise.
25908         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25909         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25910         (verify_call_clobbering): Likewise.
25911         (verify_memory_partitions): Likewise.
25912         (init_tree_ssa): Allocate bitmap instead of hashtable for
25913         referenced_vars.
25914         (delete_tree_ssa): Adjust.
25915         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25916         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25917         (compute_tag_properties): Likewise.
25918         (set_initial_properties): Likewise.
25919         (find_partition_for): Likewise.
25920         (update_reference_counts): Likewise.
25921         (dump_may_aliases_for): Likewise.
25922         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25923         (add_call_clobber_ops): Likewise.
25924         (add_call_read_ops): Likewise.
25925         (get_asm_expr_operands): Likewise.
25926         * tree-into-ssa.c (dump_decl_set): Likewise.
25927         (update_ssa): Likewise.
25928         * tree-sra.c (scan_function): Likewise.
25929         (decide_instantiations): Likewise.
25930         (scalarize_parms): Likewise.
25931         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25932         (dsa_named_for): Likewise.
25933         * tree-ssa-structalias.c (update_alias_info): Likewise.
25934         (merge_smts_into): Likewise.
25936 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25938         PR fortran/29549
25939         * doc/invoke.texi (-fcx-limited-range): Document new option.
25940         * toplev.c (process_options): Handle -fcx-fortran-rules.
25941         * common.opt: Add documentation for -fcx-fortran-rules.
25943 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25945         PR c/35162
25946         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
25947         actual behaviour and C99.
25949 2008-02-26  Ben Elliston  <bje@au.ibm.com>
25951         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
25952         (ASM_CPU_POWER6_SPEC): Likewise.
25953         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
25954         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
25955         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
25957 2008-02-25  Richard Guenther  <rguenther@suse.de>
25959         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25960         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25961         (lookup_decl_from_uid): Declare.
25962         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25963         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25964         (decl_for_uid_map): New global hashtable mapping DECL_UID
25965         to the decl tree.
25966         (init_ttree): Allocate it.
25967         (insert_decl_to_uid_decl_map): New helper function.
25968         (make_node_stat): Insert new decls into the map.
25969         (copy_node_stat): Likewise.
25970         (lookup_decl_from_uid): New function.
25971         (print_decl_for_uid_map_statistics): New helper.
25972         (dump_tree_statistics): Call it.
25974         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25975         (referenced_var_iterator): Adjust.
25976         (FOR_EACH_REFERENCED_VAR): Adjust.
25977         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25978         (num_referenced_vars): Adjust.
25979         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25980         (first_referenced_var): Remove.
25981         (end_referenced_vars_p): Likewise.
25982         (next_referenced_var): Likewise.
25983         (referenced_var_iterator_set): New helper function.
25984         * tree-dfa.c (referenced_var_lookup): Adjust.
25985         (referenced_var_check_and_insert): Likewise.
25986         (remove_referenced_var): Likewise.
25987         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25988         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25989         (verify_call_clobbering): Likewise.
25990         (verify_memory_partitions): Likewise.
25991         (init_tree_ssa): Allocate bitmap instead of hashtable for
25992         referenced_vars.
25993         (delete_tree_ssa): Adjust.
25994         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25995         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25996         (compute_tag_properties): Likewise.
25997         (set_initial_properties): Likewise.
25998         (find_partition_for): Likewise.
25999         (update_reference_counts): Likewise.
26000         (dump_may_aliases_for): Likewise.
26001         * tree-ssa-operands.c (add_virtual_operand): Likewise.
26002         (add_call_clobber_ops): Likewise.
26003         (add_call_read_ops): Likewise.
26004         (get_asm_expr_operands): Likewise.
26005         * tree-into-ssa.c (dump_decl_set): Likewise.
26006         (update_ssa): Likewise.
26007         * tree-sra.c (scan_function): Likewise.
26008         (decide_instantiations): Likewise.
26009         (scalarize_parms): Likewise.
26010         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
26011         (dsa_named_for): Likewise.
26012         * tree-ssa-structalias.c (update_alias_info): Likewise.
26013         (merge_smts_into): Likewise.
26015 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
26017         PR target/35258
26018         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
26019         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
26020         * alias.h (nonoverlapping_memrefs_p): Likewise.
26022 2008-02-25  Jan Beulich  <jbeulich@novell.com>
26024         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
26025         * config/i386/netware-libgcc.exp: Add __bswap?i2,
26026         __emultls_get_address, __emultls_register_common,
26027         __floatundi?f, and _Unwind_GetIPInfo.
26028         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
26029         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
26030         (gen_regparm_prefix): Likewise.
26031         (i386_nlm_encode_section_info): Sync with
26032         config/i386/winnt.c:i386_pe_encode_section_info().
26033         (i386_nlm_maybe_mangle_decl_assembler_name): New.
26034         i386_nlm_mangle_decl_assembler_name): New.
26035         (netware_override_options): New.
26036         * config/i386/netware.h (netware_override_options): Declare.
26037         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
26038         (i386_nlm_mangle_decl_assembler_name): Declare.
26039         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
26041 2008-02-25  Ben Elliston  <bje@au.ibm.com>
26043         PR other/32948
26044         * c-decl.c (grokdeclarator): Remove unused local variables
26045         `typedef_type' and `type_as_written'.
26046         * bb-reorder.c
26047         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
26048         unused local variable `has_hot_blocks'.
26049         (fix_crossing_conditional_branches): Remove unused local variable
26050         `prev_bb'.
26052 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
26054         PR middle-end/19984
26055         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
26056         using DEF_C99_BUILTIN.
26057         (BUILT_IN_NANF): Ditto.
26058         (BUILT_IN_NANL): Ditto.
26060 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
26061             Revital Eres  <eres@il.ibm.com>
26063         * modulo-sched.c (calculate_must_precede_follow): Address TODO
26064         regarding the order of two dependent insns in the same row.
26066 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
26068         * stor-layout.c (layout_decl): Do not bump the alignment of a
26069         bit-field to more than byte alignment if it is packed.
26071 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
26073         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
26074         e300c2 and e300c3.
26076 2008-02-24  Diego Novillo  <dnovillo@google.com>
26078         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
26080         PR 33738
26081         * tree-vrp.c (vrp_evaluate_conditional): With
26082         -Wtype-limits, emit a warning when comparing against a
26083         constant outside the natural range of OP0's type.
26084         * c.opt (Wtype-limits): Move ...
26085         * common.opt (Wtype-limits): ... here.
26087 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
26089         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
26090         * config/rs6000/e300c2c3.md: New file.
26091         * config/rs6000/rs6000.c (processor_costs): Add new costs for
26092         e300c2 and e300c3.
26093         (rs6000_override_options): Add e300c2 and e300c3 cases to
26094         processor_target_table. Do not allow usage of Altivec or Spe
26095         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
26096         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
26097         * config/rs6000/rs6000.h (processor_type): Add
26098         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
26099         (ASM_CPU_SPEC): Add e300c2 and e300c3.
26100         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
26101         and ppce300c3. Include e300c2c3.md.
26103 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
26105         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
26106         instead of TARGET_STRICT_ALIGN.
26108 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
26110         * explow.c (memory_address): Assert that the generated address is
26111         valid.
26113 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
26115         PR target/25477
26116         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
26117         * config/darwin-ppc-ldouble-patch.def: New file.
26118         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
26119         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
26120         SUBTARGET_INIT_BUILTINS if defined.
26121         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
26122         New functions.
26124 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26126         PR rtl-opt/33512
26127         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
26128         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
26130 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26132         PR pch/35027
26133         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
26134         file" warning condtional on -Winvalid-PCH.
26136 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
26138         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
26140 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
26142         PR target/22076
26143         PR target/34256
26144         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
26145         prevent reload from using MMX registers.
26146         (*mov<mode>_internal): Ditto.
26147         (*movv2sf_internal_rex64): Ditto.
26148         (*movv2sf_internal): Ditto.
26150 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26152         PR documentation/31569
26153         * doc/install.texi2html: Use makeinfo --no-number-sections.
26155 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
26157         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
26158         ensure that we can address an entire entity > 8 bytes.  Don't
26159         generate reg+reg addressing for such data.
26161 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
26163         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
26164         strings when optimizing for size, unless the target cares about
26165         alignment.
26167 2008-02-22  Tom Tromey  <tromey@redhat.com>
26169         * regclass.c (current_pass): Remove declaration.
26171 2008-02-22  Anatoly Sokolov <aesok@post.ru>
26173         * config/avr/libgcc.S (__RAMPZ__): Define.
26174         (__do_copy_data): Add for devices with 128KB code memory.
26176 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
26178         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
26179         Use spe_abi.
26180         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
26182 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
26184         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
26185         GENNONACR_REGS.
26187 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26189         PR c/19999
26190         * c-typeck.c (build_binary_op): Warn about floating point
26191         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
26193 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
26195         PR target/34526
26196         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
26197         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
26198         add vrsave.
26199         (rs6000_override_options): Set altivec_abi as default, not override,
26200         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
26201         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
26202         is used; use new member spe_abi.
26203         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
26204         spe_abi and altivec_abi.
26206 2008-02-22  Tomas Bily  <tbily@suse.cz>
26208         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
26210 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26212         PR bootstrap/35273
26213         * config.build (build_file_translate): Set to `CMD //c' only if
26214         it works.
26215         * Makefile.in (build_file_translate): Improve comment.
26217 2008-02-21  Jan Hubicka  <jh@suse.cz>
26219         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
26220         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
26221         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
26223 2008-02-21  Michael Matz  <matz@suse.de>
26225         PR target/35264
26226         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
26228 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
26230         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
26231         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
26232         as insn constraint.
26233         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
26234         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
26235         SSE_VEC_FLOAT_MODE_P as insn constraint.
26236         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
26237         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
26238         sse4a_movntdf using MODEF mode iterator.
26239         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
26240         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
26241         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
26242         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
26243         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
26244         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
26245         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
26247 2008-02-21  Richard Guenther  <rguenther@suse.de>
26249         * tree.def (PAREN_EXPR): New tree code.
26250         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
26251         and PAREN_EXPR.
26252         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
26253         * expr.c (expand_expr_real_1): Likewise.
26254         * tree-inline.c (estimate_num_insns_1): Likewise.
26255         * tree-complex.c (expand_complex_move): Likewise.
26256         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
26257         as plain x.
26259 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26261         PR target/35225
26262         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
26264 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26266         PR target/35190
26267         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
26269         * config/sh/sh.c (find_barrier): Don't go past
26270         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
26272 2008-02-20  DJ Delorie  <dj@redhat.com>
26274         * config/h8300/h8300.md (insv): Force source operand to be a register.
26276         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
26277         as a jump, not as a plain insn.
26279 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
26281         * doc/invoke.texi (Warning Options): Add new option
26282         -Wframe-larger-than=.
26283         (-Wframe-larger-than): Document.
26285         * flags.h (warn_frame_larger_than, frame_larger_than_size):
26286         Add declarations for new option variables.
26288         * final.c (final_start_function): Check the frame size
26289         before emission and issue a Wframe-larger-than warning.
26291         * opts.c (warn_frame_larger_than, frame_larger_than_size):
26292         Add definitions for new option variables.
26293         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
26295         * common.opt (Wframe-larger-than=): New option.
26297 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
26299         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
26300         (<sse>_div<mode>3): Ditto.
26301         (<sse>_vmdiv<mode>3): Ditto.
26302         (<sse>_vmsqrt<mode>2): Ditto.
26303         (*smax<mode>3): Ditto.
26304         (sse5_frcz<mode>2): Ditto.
26305         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
26306         as insn constraint.
26308 2008-02-20  Richard Guenther  <rguenther@suse.de>
26310         PR middle-end/35265
26311         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
26312         be happy with INTEGRAL_TYPE_P.
26314 2008-02-20  Richard Guenther  <rguenther@suse.de>
26316         * fold-const.c (split_tree): Associate floatig-point expressions
26317         if flag_associative_math is set.
26319 2008-02-20  Richard Guenther  <rguenther@suse.de>
26321         * tree.h (fold_real_zero_addition_p): Declare.
26322         * fold-const.c (fold_real_zero_addition_p): Export.
26323         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
26324         floating-point operations with zero and one.
26326 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
26328         * doc/install.texi: Correct references to CFLAGS, replacing them
26329         with BOOT_CFLAGS.  Document flags used during bootstrap for
26330         target libraries.
26332 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
26334         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
26335         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
26336         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
26337         insn constraint.
26338         (smin<mode>3): Ditto from similar patterns.
26339         (smax<mode>3): Ditto.
26340         (*ieee_smin<mode>3): Ditto.
26341         (*ieee_smax<mode>3): Ditto.
26342         * config/i386/sse.md (sse): New mode attribute.
26343         (mov<mode>): Macroize expander from movv4sf and movv2df using
26344         SSEMODEF2P mode iterator.
26345         (<sse>_movnt<mode>): Ditto from similar patterns. Use
26346         SSE_VEC_FLOAT_MODE_P as insn constraint.
26347         (storent<mode>): Ditto.
26348         (storent<mode>): Macroize expander from storentsf and storentdf using
26349         MODEF mode iterator.
26350         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
26351         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
26352         (abs<mode>2): Ditto from similar patterns.
26353         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
26354         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
26355         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
26356         (<sse>_vmsqrt<mode>2): Ditto.
26357         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
26358         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
26359         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
26360         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
26361         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
26362         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
26363         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
26364         insn constraint.
26365         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
26366         iterator and SSE_FLOAT_MODE_P as insn constraint.
26367         (<sse>_ucomi): Ditto from similar patterns.
26368         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
26369         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
26370         SSE_VEC_FLOAT_MODE_P as insn constraint.
26371         (vcond<mode>): Ditto from similar patterns.
26372         (and<mode>3, *and<mode>3): Ditto.
26373         (<sse>_nand<mode>3): Ditto.
26374         (ior<mode>3, *ior<mode>3): Ditto.
26375         (xor<mode>3, *xor<mode>3): Ditto.
26376         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
26377         iterator and SSE_FLOAT_MODE_P as insn constraint.
26378         (*nand<mode>3): Ditto from similar patterns.
26379         (*ior<mode>3): Ditto.
26380         (*xor<mode>3): Ditto.
26382 2008-02-20  Ira Rosen  <irar@il.ibm.com>
26384         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
26385         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
26386         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
26388 2008-02-19  Jan Hubicka  <jh@suse.cz>
26390         * predict.c (tree_bb_level_predictions): Remove variable next
26391         mistakely introduced by previous commit.
26393 2008-02-19  Jan Hubicka  <jh@suse.cz>
26395         * predict.c (predict_paths_leading_to): Rewrite.
26396         (predict_paths_for_bb): New.
26397         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
26399 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26401         PR bootstrap/35218
26402         * Makefile.in (build_file_translate): New.
26403         (gcc-vers.texi): Use it for translating $(abs_srcdir).
26404         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
26405         * configure.ac (build_file_translate): Substitute it.
26406         * configure: Regenerate.
26408 2008-02-19  Jan Hubicka  <jh@suse.cz>
26410         PR rtl-optimization/34408
26411         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
26412         invalid sharing.
26414 2008-02-19  Jan Hubicka  <jh@suse.cz>
26416         PR middle-end/28779
26417         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
26418         call_expr.
26420 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
26422         PR Ada/35186
26423         * config/i386/i386-modes.def: Revert the last DI alignment
26424         change until Ada people can look into it.
26426 2008-02-19  Nick Clifton  <nickc@redhat.com>
26428         * opts.c (print_specific_help): Fix typo in --help text.
26430 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
26432         PR target/35239
26433         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
26434         32-bit inline asm without asm alternatives for host GCC < 3.0.
26436 2008-02-19  Richard Guenther  <rguenther@suse.de>
26438         PR tree-optimization/34989
26439         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
26440         Allow propagation to INDIRECT_REF if we can simplify only.
26442 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26444         * c-common.c (warn_for_collisions_1): Use appropriate option when
26445         warning.
26447 2008-02-19  Nick Clifton  <nickc@redhat.com>
26449         PR other/31349
26450         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
26451         (handle_options): Fix indentation.
26452         (print_filtered_help): If no language-specific options were
26453         displayed tell the user how to list all the options supported by
26454         the language's front-end.
26455         (print_specific_help): Fix indentation and remove duplicate line.
26456         (common_handle_option): Handle the -v option.
26457         For --help enable the display of undocumented options if the -v
26458         switch has been included on the command line.
26459         For --help= check for overlaps in the arguments between the option
26460         classes and the language names and issue a warning when they
26461         cannot be disambiguated.
26462         * c.opt (v): Pass on to the common option handler.
26464 2008-02-19  Revital Eres  <eres@il.ibm.com>
26466         * modulo-sched.c (sms_schedule): Change dump message when
26467         create_ddg function fails.
26468         (try_scheduling_node_in_cycle): Rename row to cycle.
26469         (print_partial_schedule): Rename CYCLE to ROW.
26471 2008-02-19  Christian Bruel  <christian.bruel@st.com>
26472             Zdenek Dvorak  <ook@ucw.cz>
26474         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
26476 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
26478         PR target/33555
26479         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
26480         (*x86_movdicc_0_m1_se): Ditto.
26482 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
26484         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
26485         (CMPtype): Define as __gcc_CMPtype.
26486         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
26487         (CMPtype): Define as __gcc_CMPtype.
26489 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
26491         Support valgrind 3.3 for --enable-checking=valgrind.
26492         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
26493         here.
26494         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
26495         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
26496         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
26497         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
26498         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
26499         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
26500         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
26501         respectively.
26502         * ggc-zone.c: Similar.
26503         * ggc-page.c: Similar.
26505 2008-02-19  Paul Brook  <paul@codesourcery.com>
26507         PR target/35071
26508         * config/arm/ieee754-df.S: Fix do_it typo.
26509         * config/arm/ieee754-sf.S: Fix do_it typo.
26511 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26513         PR target/35189
26514         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
26515         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
26516         (OPTION_MASK_ISA_SSE_SET): Likewise.
26517         (OPTION_MASK_ISA_SSE2_SET): Likewise.
26518         (OPTION_MASK_ISA_SSE3_SET): Likewise.
26519         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
26520         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
26521         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
26522         (OPTION_MASK_ISA_SSE4_SET): Likewise.
26523         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
26524         (OPTION_MASK_ISA_SSE5_SET): Likewise.
26525         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
26526         (OPTION_MASK_ISA_MMX_UNSET): Updated.
26527         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
26528         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
26529         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
26530         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
26531         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
26532         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
26533         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
26534         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
26535         (OPTION_MASK_ISA_SSE4): Removed.
26536         (ix86_handle_option): Turn on bits in ix86_isa_flags and
26537         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
26538         (override_options): Don't turn on implied SSE/MMX bits in
26539         ix86_isa_flags.
26541 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26543         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
26544         32bit host.
26546 2008-02-18  Joey Ye  <joey.ye@intel.com>
26548         PR middle-end/34921
26549         * tree-nested.c (insert_field_into_struct): Set type alignment
26550         to field alignment if the former is less than the latter.
26552 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
26554         * BASE-VER: Set to 4.4.0.
26556 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26558         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
26559         * doc/cfg.texi: Likewise.
26560         * doc/extend.texi: Likewise.
26561         * doc/gty.texi: Likewise.
26562         * doc/invoke.texi: Likewise.
26563         * doc/loop.texi: Likewise.
26564         * doc/md.texi: Likewise.
26565         * doc/passes.texi: Likewise.
26566         * doc/rtl.texi: Likewise.
26567         * doc/sourcebuild.texi: Likewise.
26568         * doc/tm.texi: Likewise.
26569         * doc/tree-ssa.texi: Likewise.
26571 2008-02-17  Richard Guenther  <rguenther@suse.de>
26573         PR middle-end/35227
26574         * tree-complex.c (init_parameter_lattice_values): Handle parameters
26575         without default definition.
26577 2008-02-17  Richard Guenther  <rguenther@suse.de>
26579         PR tree-optimization/35231
26580         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
26581         if A | B != 1.
26583 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
26585         Revert:
26586         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26587         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26588         libgcc_cmp_return mode.
26590 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26592         PR c/28368
26593         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
26595 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
26597         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
26598         multilibs.
26600 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26602         * doc/c-tree.texi: Use `@.' where appropriate.
26603         * doc/extend.texi: Likewise.
26604         * doc/install.texi: Likewise.
26605         * doc/invoke.texi: Likewise.
26606         * doc/loop.texi: Likewise.
26607         * doc/makefile.texi: Likewise.
26608         * doc/md.texi: Likewise.
26609         * doc/passes.texi: Likewise.
26610         * doc/standards.texi: Likewise.
26611         * doc/tm.texi: Likewise.
26613 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26615         PR middle-end/35196
26616         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
26617         in entry_bb.
26618         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
26619         rather than in entry_bb.
26621 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26623         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26624         libgcc_cmp_return mode.
26626 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26628         PR middle-end/35130
26629         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
26630         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
26632 2008-02-15  Richard Guenther  <rguenther@suse.de>
26633             Zdenek Dvorak  <ook@ucw.cz>
26635         PR tree-optimization/35164
26636         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
26637         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
26638         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26639         Only propagate addresses which do not have abnormal SSA_NAMEs
26640         in their operands.
26642 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
26644         PR target/35088
26645         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
26647 2008-02-15  Jan Hubicka  <jh@suse.cz>
26649         PR middle-end/35149
26650         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
26652 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26654         PR middle-end/34621
26655         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
26656         when calculating alignment_pad.
26658 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26660         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
26661         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
26662         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
26663         and STACK_BOUNDARY define.
26665 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
26667         PR preprocessor/35061
26668         * c-pragma.c (handle_pragma_pop_macro): Check that
26669         pushed_macro_table has been allocated.
26671 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
26673         PR middle-end/35136
26674         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
26675         (force_gimple_operand): Likewise.
26676         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
26677         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
26678         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
26679         (find_interesting_uses_address): Check addressability and alignment
26680         of the base expression only after substituting bases of IVs into it.
26682 2008-02-14  Michael Matz  <matz@suse.de>
26684         PR target/34930
26685         * function.c (instantiate_virtual_regs_in_insn): Reload address
26686         before falling back to reloading the whole operand.
26688 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
26690         * config/s390/s390.c (s390_mainpool_start): Emit the pool
26691         before the first section switch note.
26693 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26695         * doc/bugreport.texi: Update copyright years.
26696         * doc/c-tree.texi: Likewise.
26697         * doc/cfg.texi: Likewise.
26698         * doc/cpp.texi: Likewise.
26699         * doc/cppinternals.texi: Likewise.
26700         * doc/fragments.texi: Likewise.
26701         * doc/frontends.texi: Likewise.
26702         * doc/gcc.texi: Likewise.
26703         * doc/gty.texi: Likewise.
26704         * doc/hostconfig.texi: Likewise.
26705         * doc/implement-c.texi: Likewise.
26706         * doc/libgcc.texi: Likewise.
26707         * doc/loop.texi: Likewise.
26708         * doc/makefile.texi: Likewise.
26709         * doc/options.texi: Likewise.
26710         * doc/passes.texi: Likewise.
26711         * doc/rtl.texi: Likewise.
26712         * doc/sourcebuild.texi: Likewise.
26713         * doc/standards.texi: Likewise.
26714         * doc/tree-ssa.texi: Likewise.
26715         * doc/trouble.texi: Likewise.
26717         * doc/extend.texi: Use @: or add comma where appropriate.
26718         * doc/invoke.texi: Likewise.
26719         * doc/tm.texi: Likewise.
26721 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
26723         PR target/34393
26724         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
26725         to a reg.
26727 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
26729         * doc/md.texi (clz, ctz): Add reference.
26730         * doc/rtl.texi (clz, ctz): Likewise.
26732 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26734         PR other/35148
26735         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
26736         srcdir.
26738 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
26740         * config/s390/s390.c (struct constant_pool): New field
26741         emit_pool_after added.
26742         (s390_mainpool_start): Set the emit_pool_after flag according
26743         to the section switch notes.
26744         (s390_mainpool_finish): Consider emit_pool_after when emitting
26745         the literal pool at the end of the function.
26746         (s390_chunkify_start): Force literal pool splits at section
26747         switch notes.
26749 2008-02-13  Michael Matz  <matz@suse.de>
26751         PR debug/35065
26752         * var-tracking.c (clobber_variable_part): Correctly traverse the
26753         list.
26755 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26757         PR 29673
26758         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
26759         Add -fdump-ipa-inline.
26760         * tree-dump.c (dump_files): Remove tree-inlined dump.
26761         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
26763 2008-02-12  Richard Guenther  <rguenther@suse.de>
26765         PR tree-optimization/35171
26766         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
26767         default defs.
26769 2008-02-12  Richard Guenther  <rguenther@suse.de>
26771         PR middle-end/35163
26772         * fold-const.c (fold_widened_comparison): Use get_unwidened in
26773         value-preserving mode.  Disallow final truncation.
26775 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26777         PR middle-end/35136
26778         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
26779         code from here to...
26780         (force_gimple_operand): ...here.
26782 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
26784         PR c++/35144
26785         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
26786         non-compatible pointers.
26787         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
26788         different FIELD_DECLs, try harder by comparing field offsets, sizes
26789         and types.
26791         PR inline-asm/35160
26792         * function.c (match_asm_constraints_1): Don't replace the same input
26793         multiple times.
26795 2008-02-12  Anatoly Sokolov <aesok@post.ru>
26797         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
26798         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
26799         (expand_epilogue): Restore RAMPZ register.
26800         * config/avr/avr.md (RAMPZ_ADDR): New constant.
26802 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
26804         * config/i386/cygwin.asm: (__alloca): Correct calling
26805         convention and alignment.
26806         (__chkstk): Force 8 byte stack alignment.
26808 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
26809             Richard Guenther  <rguenther@suse.de>
26811         PR tree-optimization/33992
26812         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
26813         the zero we compare against.
26815 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
26817         PR libfortran/35063
26818         * gthr-win32.h (__gthread_mutex_destroy_function): New function
26819         to CloseHandle after unlocking to prevent accumulation of handle
26820         count.
26822 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26824         PR middle_end/34150
26825         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
26826         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
26827         and update LABEL_NUSES during and after reload.
26829 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
26831         PR middle-end/34627
26832         * combine.c (simplify_if_then_else): Make sure the comparison is
26833         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
26835 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
26837         PR bootstrap/35051
26838         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
26839         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
26840         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
26841         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
26842         * tree.h (get_type_static_bounds): Likewise.
26844 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26846         * doc/invoke.texi (Option Summary, C++ Dialect Options)
26847         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26848         Make -Wfoo language annotations match what the compiler outputs.
26850 2008-02-08  Sa Liu  <saliu@de.ibm.com>
26852         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
26853         intrinsics spu_convts, spu_convtu, spu_convtf.
26855 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
26857         * doc/extend.texi (Function Attributes) <noinline>: Mention
26858         asm ("") as method to keep calls.
26860 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26862         PR other/32754
26863         * doc/options.texi (Options): Replace references to opts.sh with
26864         optc-gen.awk.
26865         * opts-common.c: Likewise.
26866         * optc-gen.awk: Likewise.
26868 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
26870         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
26872 2008-02-07  Richard Henderson  <rth@redhat.com>
26874         PR rtl-opt/33410
26875         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
26876         EXPR_LIST for the REG_EQUAL instead of a comparison with a
26877         funny mode.
26879 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
26881         PR tree-optimization/35085
26882         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
26883         for operand entry oe2 in addition to operand entry oe3 in order to
26884         expose more opportunities for vectorizer sum reduction.
26886 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26888         PR other/35107
26889         * Makefile.in (LIBS): Remove $(GMPLIBS).
26890         (cc1-dummy, cc1): Add $(GMPLIBS).
26892 2008-02-06  Jan Hubicka  <jh@suse.cz>
26894         PR target/23322
26895         * i386.md (moddf_integer): Do not produce partial memory stalls for
26896         targets where it hurts.
26898 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
26900         PR target/35083
26901         * optabs.c (expand_float): Do not check for decimal modes when
26902         expanding unsigned integer through signed conversion.
26904 2008-02-06  Nick Clifton  <nickc@redhat.com>
26906         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
26907         inside the clobber with a match_operand and duplicated operand
26908         number in the constraint.
26909         (ineqbranchsi): Delete redundant comment.
26911 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
26913         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
26914         builtin_define ("__USE_INIT_FINI__").
26915         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
26916         -msx multilibs.
26917         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
26919 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26921         PR documentation/30330
26922         * doc/invoke.texi (C++ Dialect Options)
26923         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26924         For each warning option -Wfoo that allows -Wno-foo, ensure both
26925         -Wfoo and -Wno-foo are listed in the option index.  Fix index
26926         entry of -Wswitch-default, index -Wnormalized= including the
26927         `=', and -Wlarger-than-@var{len} including @var{len}.
26929 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26931         * config/i386/i386.md (floatunssisf2): Use
26932         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
26933         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
26934         Macroize expander using MODEF mode iterator.
26936 2008-02-05  Diego Novillo  <dnovillo@google.com>
26938         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
26940         PR 33738
26941         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
26943 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26945         PR other/35070
26946         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
26948 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
26950         PR target/35084
26951         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
26952         to indicate if a message should be generated.
26953         (init_cumulative_args): Updated.
26954         (function_value_32): Likewise.
26956 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
26958         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
26960 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26962         PR target/35083
26963         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
26964         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
26966 2008-02-04  Diego Novillo  <dnovillo@google.com>
26968         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
26970         PR 33738
26971         * tree-vrp.c (vrp_evaluate_conditional): With
26972         -Wtype-limits, emit a warning when comparing against a
26973         constant outside the natural range of OP0's type.
26975 2008-02-04  Richard Guenther  <rguenther@suse.de>
26977         PR middle-end/33631
26978         * expr.c (count_type_elements): Give for unions instead of
26979         guessing.
26981 2008-02-04  Richard Guenther  <rguenther@suse.de>
26983         PR middle-end/35043
26984         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
26985         to TYPE_DOMAINs base type instead of using bitsizetype here.
26987 2008-02-03  Jason Merrill  <jason@redhat.com>
26989         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
26991 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26993         PR other/29972
26994         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
26995         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
26996         (RS/6000 and PowerPC Options): Fix typos and markup.
26997         * doc/passes.texi (Tree-SSA passes): Likewise.
26999 2008-02-02  Michael Matz  <matz@suse.de>
27001         PR target/35045
27002         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
27003         from record_last_reg_set_info.
27004         (record_last_reg_set_info): Take an RTX argument, iterate over all
27005         constituent hardregs.
27006         (record_last_set_info, record_opr_changes): Change calls to
27007         new signature or to record_last_reg_set_info_regno.
27009 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
27011         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
27013 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
27015         PR rtl-optimization/34773
27016         * reg-notes.def (EQUAL): Mention significance of combination of
27017         REG_EQUAL and REG_RETVAL.
27018         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
27019         insn that has a REG_RETVAL.
27021 2008-02-01  Roger Sayle  <roger@eyesopen.com>
27023         PR bootstrap/33781
27024         * configure.ac (--enable-fixed-point): Disable unless explicitly
27025         requested on IRIX.
27026         * configure: Regenerate.
27028 2008-02-01  Richard Guenther  <rguenther@suse.de>
27030         PR other/35042
27031         * invoke.texi (-finline-limit): Remove no longer true parts
27032         of the documentation.  Note that there is no default value.
27034 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
27035             Mark Mitchell  <mark@codesourcery.com>
27036             Ben Elliston  <bje@au.ibm.com>
27038         PR c/29326
27039         * doc/extend.texi (Other Builtins): Document.
27041 2008-01-31  Tom Browder <tom.browder@gmail.com>
27043         * doc/c-tree.texi (Types): Fix grammar.
27044         (Expression trees): Ditto.
27045         * doc/passes.texi (Tree-SSA passes): Ditto.
27047         * doc/configterms.texi (Configure Terms): Fix typo.
27048         * doc/cpp.texi (Common Predefined Macros): Ditto.
27049         * doc/md.texi (Machine Constraints): Ditto.
27051         * doc/makefile.texi (Makefile): Add comma.
27053 2008-01-31  Tom Browder  <tom.browder@gmail.com>
27054             Gerald Pfeifer  <gerald@pfeifer.com>
27056         * doc/sourcebuild.texi (Front End): Remove references to CVS
27057         and CVSROOT/modules.
27058         (Texinfo Manuals): Replace reference to CVS by one to SVN.
27059         (Back End): Remove reference to CVS.
27061 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
27063         PR target/34900
27064         * config/mips/mips.c (gen_load_const_gp): New function, taking a
27065         comment from...
27066         (mips16_gp_pseudo_reg): ...here.
27067         * config/mips/mips.md (load_const_gp): Replace with...
27068         (load_const_gp_<mode>): ...this :P-based insn.
27070 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27072         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
27073         options. Minor fixes.
27074         (-std): Move reference to standards closer to where language
27075         standards are first mentioned.
27077 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
27079         PR rtl-optimization/34995
27080         * reload.c (alternative_allows_const_pool_ref): Take an rtx
27081         parameter and return a bool.  If the rtx parameter is nonnull,
27082         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
27083         (find_reloads): Update call accordingly.  Pass the new operand
27084         if it needed no address reloads, otherwise pass null.
27086 2008-01-30  Richard Henderson  <rth@redhat.com>
27088         PR c/34993
27089         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
27090         for unbounded arrays.
27092 2008-01-30  Silvius Rus  <rus@google.com>
27094         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
27096 2008-01-30  Jan Hubicka  <jh@suse.cz>
27098         PR target/34982
27099         * i386.c (init_cumulative_args): Use real function declaration when
27100         calling locally.
27102 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
27104         PR rtl-optimization/34998
27105         * global.c (build_insn_chain): Treat non-subreg_lowpart
27106         SUBREGs of pseudos as clobbering all the words covered by the
27107         SUBREG, not just all the bytes.
27108         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
27109         original df_ref rather than an extract parameter.
27110         (global_conflicts): Update call accordingly.
27112 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
27114         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
27115         the overflow check to make it easier to read.
27116         (__fixtfdi): Change the type of the ll member in union
27117         long_double to UDItype_x.
27119 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
27121         PR middle-end/34969
27122         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
27123         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
27124         * tree-inline.c (fold_marked_statements): Call
27125         cgraph_update_edges_for_call_stmt if folding a call statement.
27126         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
27127         debug_generic_stmt calls, reset it back afterwards.
27129         PR c/35017
27130         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
27131         static decls.
27132         * c-typeck.c (build_external_ref): Don't pedwarn about
27133         static vars in current function's scope.
27135 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
27137         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
27139 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
27141         PR c/35002
27142         * ipa-struct-reorg.c: Fix spelling.
27143         * params.def: Ditto.
27145 2008-01-29  Richard Guenther  <rguenther@suse.de>
27147         PR middle-end/35006
27148         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
27149         field.
27150         * tree-inline.c (remap_type): Increment remapping_type_depth
27151         around remapping types.
27152         (copy_body_r): Only add referenced variables if they are referenced
27153         from code, not types.
27155 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
27157         PR c++/34055
27158         PR c++/34103
27159         PR c++/34219
27160         PR c++/34606
27161         PR c++/34753
27162         PR c++/34754
27163         PR c++/34755
27164         PR c++/34919
27165         PR c++/34961
27166         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
27167         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
27169 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
27171         PR target/34412
27172         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
27173         pointer for tiny stack.
27175 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
27177         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
27179 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
27181         * config/vx-common.h: Fix typo in comment.
27183 2008-01-28  Ian Lance Taylor  <iant@google.com>
27185         PR c++/34862
27186         PR c++/33407
27187         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
27188         coalesce pointers if they have different DECL_NO_TBAA_P values.
27189         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
27190         between variables with different DECL_NO_TBAA_P values.
27192 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
27194         PR 31535
27195         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
27196         are not legitimate small data references on SPE targets.
27198 2008-01-28  David Daney  <ddaney@avtrex.com>
27200         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
27202 2008-01-28  David Daney  <ddaney@avtrex.com>
27204         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
27206 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
27208         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
27209         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
27210         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
27211         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
27212         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
27213         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
27214         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
27215         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
27217 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
27219         * basic-block.h (condjump_equiv_p): Fix comment.
27221 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
27223         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
27224         print_generic_stmt_indented): Fix comment.
27226 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
27228         * configure.ac (__stack_chk_fail): Add detecion for availability
27229         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
27230         * configure: Regenerate.
27232 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
27234         PR middle-end/34688
27235         * final.c (output_addr_const): Handle TRUNCATE.
27237 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
27239         PR target/34711
27240         * tree-ssa-loop-ivopts.c (comp_cost): New type.
27241         (zero_cost, infinite_cost): New constants.
27242         (struct cost_pair): Change type of cost to comp_cost.
27243         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
27244         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
27245         New functions.
27246         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
27247         split_address_cost, ptr_difference_cost, difference_cost,
27248         get_computation_cost_at, get_computation_cost,
27249         determine_use_iv_cost_generic, determine_use_iv_cost_address,
27250         determine_use_iv_cost_condition, determine_use_iv_costs,
27251         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
27252         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
27253         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
27254         Change type of cost to comp_cost.
27255         (determine_iv_cost): Increase cost of non-original ivs, instead
27256         of decreasing the cost of original ones.
27257         (get_address_cost): Indicate the complexity of the addressing mode
27258         in comp_cost.
27259         (try_add_cand_for): Prefer using ivs not specific to some object.
27260         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
27262 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
27263             Janis Johnson  <janis187@us.ibm.com>
27265         PR target/34814
27266         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
27267         (TARGET_INSTANTIATE_DECLS): Likewise.
27268         * target.h (expand_to_rtl_hook): New target hook.
27269         (instantiate_decls): Likewise.
27270         * function.c (instantiate_decl): Make non-static.  Rename to...
27271         (instantiate_decl_rtl): ... this.
27272         (instantiate_expr): Use instantiate_decl_rtl.
27273         (instantiate_decls_1): Likewise.
27274         (instantiate_decls): Likewise.
27275         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
27276         * function.h (instantiate_decl_rtl): Add prototype.
27277         * cfgexpand.c (target.h): New include.
27278         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
27279         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
27280         (TARGET_INSTANTIATE_DECLS): Likewise.
27281         (TARGET_INITIALIZER): New target hooks added.
27282         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
27283         New prototype.
27284         * config/rs6000/rs6000.c (tree-flow.h): New include.
27285         (machine_function): Add sdmode_stack_slot field.
27286         (rs6000_alloc_sdmode_stack_slot): New function.
27287         (rs6000_instantiate_decls): Likewise.
27288         (rs6000_secondary_memory_needed_rtx): Likewise.
27289         (rs6000_check_sdmode): Likewise.
27290         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
27291         (TARGET_INSTANTIATE_DECLS): Likewise.
27292         (rs6000_hard_regno_mode_ok): Allow SDmode.
27293         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
27294         (rs6000_emit_move): Handle SDmode.
27295         (function_arg_advance): Likewise.
27296         (function_arg): Likewise.
27297         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
27298         SDmode var args for 32-bit compiles.
27299         (rs6000_secondary_reload_class): Handle SDmode.
27300         (rs6000_output_function_epilogue): Likewise.
27301         (rs6000_function_value): Simplify if statement.
27302         (rs6000_libcall_value): Likewise.
27303         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
27304         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
27305         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
27306         (movsd_hardfloat): New define_insn.
27307         (movsd_softfloat): Likewise.
27308         (movsd_store): Likewise.
27309         (movsd_load): Likewise.
27310         (extendsddd2): Likewise.
27311         (extendsdtd2): Likewise.
27312         (truncddsd2): Likewise.
27313         (movdd_hardfloat64): Fixup comment.
27314         (UNSPEC_MOVSD_LOAD): New constant.
27315         (UNSPEC_MOVSD_STORE): Likewise.
27317 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
27319         PR c++/34965
27320         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
27321         TRUTH_XOR_EXPR.
27322         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
27323         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
27324         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
27325         and TRUTH_XOR_EXPR.
27327 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
27329         PR target/34794
27330         * config.gcc: Separate AIX 5.3 from AIX 6.1.
27331         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27332         __LONGDOUBLE128 too.
27333         * config/rs6000/aix61.h: New file.
27335 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
27337         PR rtl-optimization/34959
27338         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
27339         popcount and parity rtxes the same mode as their operand.
27340         Truncate or extend the result to the return value's mode
27341         if necessary.
27343 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
27345         PR target/34981
27346         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
27347         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
27348         to GOT_VERSION_REGNUM.
27349         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
27350         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
27351         * config/mips/mips.c (mips_emit_call_insn): New function.
27352         (mips_call_tls_get_addr): Call mips_expand_call directly.
27353         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
27354         emit_call_insn.
27355         (mips16_build_call_stub): Likewise.  Return the call insn or null.
27356         (mips_expand_call): Update the call to mips16_build_call_stub
27357         accordingly and a remove redundant condition.  Assert that MIPS16
27358         stubs do not use lazy binding.  Use mips_emit_call_insn and return
27359         the call insn.
27360         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
27361         TARGET_USE_GOT.
27362         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
27363         (mips_avoid_hazard): Remove hazard_set handling.
27364         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
27365         (UNSPEC_RESTORE_GP): ...this.
27366         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
27367         (FAKE_CALL_REGNO): Rename to...
27368         (GOT_VERSION_REGNUM): ...this.
27369         (type): Add "ghost" value.  Add an associated insn reservation.
27370         (hazard_set): Remove.
27371         (exception_receiver): Rename to...
27372         (restore_gp): ...this and update the unspec identifier accordingly.
27373         (exception_receiver, nonlocal_got_receiver): New expanders.
27374         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
27375         FAKE_CALL_REGNO.  Remove hazard_set attribute.
27376         (set_got_version, update_got_version): New patterns.
27378 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
27380         PR target/34970
27381         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
27383 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
27385         PR other/31955
27386         * doc/install.texi2html: Generate gcc-vers.texi.
27388 2008-01-25  DJ Delorie  <dj@redhat.com>
27390         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
27392 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
27394         * config/c4x: Remove directory.
27395         * config.gcc (crx-*, mt-*): Mark obsolete.
27396         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
27397         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
27398         sh-*-rtemscoff*): Remove cases.
27399         * defaults.h (C4X_FLOAT_FORMAT): Remove.
27400         * real.c (encode_c4x_single, decode_c4x_single,
27401         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
27402         c4x_extended_format): Remove.
27403         * real.h (c4x_single_format, c4x_extended_format): Remove.
27404         * doc/extend.texi (interrupt, naked): Remove mention of attributes
27405         on C4x.
27406         (Pragmas): Remove comment about c4x pragmas.
27407         * doc/install.texi (c4x): Remove target-specific instructions.
27408         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
27409         * doc/md.texi (Machine Constraints): Remove C4x documentation.
27410         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
27411         refer to C4x source files as examples.
27412         (C4X_FLOAT_FORMAT): Remove documentation.
27414 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
27416         * config/bfin/bfin.c (override_options): Reorder tests so that
27417         flag_pic gets enabled for -msep-data.
27419 2008-01-25  Richard Guenther  <rguenther@suse.de>
27421         PR middle-end/32244
27422         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
27423         to its bitfield precision if required.
27425 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
27427         PR middle-end/33880
27428         * tree-nested.c (walk_omp_for): New function.
27429         (convert_nonlocal_reference, convert_local_reference): Call
27430         walk_omp_for on OMP_FOR.
27431         (convert_call_expr): Call walk_body on OMP_FOR's
27432         OMP_FOR_PRE_INIT_BODY.
27434 2008-01-25  Richard Guenther  <rguenther@suse.de>
27436         PR tree-optimization/34966
27437         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
27438         default defs and PHI_NODEs we have to insert after the
27439         defining statement.
27441 2008-01-24  Nick Clifton  <nickc@redhat.com>
27443         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
27444         Provide a default definition.
27445         (LIBGCC2_UNITS_PER_WORD): Likewise.
27447         * config/stormy16/stormy16.c: Include df.h for the prototype
27448         for df_regs_ever_live_p.
27449         (xstormy16_expand_builtin_va_start): Convert the stack offset
27450         into a component_ref and then use POINTER_PLUS_EXPR to add it
27451         to the incoming_virtual_args_rtx.
27452         (xstormy16_gimplify_va_arg_expr): Rename to
27453         xstormy16_gimplify_va_arg_expr.
27454         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
27455         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
27456         xstormy16_gimplify_va_arg_expr.
27457         Fix up some formatting issues.
27459         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
27460         Move to predicates.md.
27461         (xs_hi_general_operand): Likewise.
27462         (xs_hi_nonmemory_operand): Likewise.
27463         * config/stormy16/predicates.md:
27464         (xstormy16_carry_plus_operand): New predicate.
27465         (xs_hi_general_operand): New predicate.
27466         (xs_hi_nonmemory_operand): New predicate.
27467         * config/stormy16/stormy16-protos.h:
27468         (xstormy16_carry_plus_operand): Delete prototype.
27469         (xs_hi_general_operand): Likewise.
27470         (xs_hi_nonmemory_operand): Likewise.
27472         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
27473         modifiers as they are no longer needed and they can trigger
27474         reload spill failures.
27476         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
27477         with a match_operand in order to help reload.
27479         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
27480         constraint with 'e' for the 8th alternative as this version of
27481         the mov.w instruction only accepts the lower 8 registers.
27483 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
27485         PR target/34856
27486         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
27487         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
27488         vector elements.
27490 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
27492         PR middle-end/33333
27493         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
27495 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
27497         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
27498         New functions.
27499         (remove_structure): Update allocations list before removing structure.
27501 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
27503         * ipa-struct-reorg.c (is_safe_cond_expr,
27504         create_new_stmts_for_cond_expr): Use integer_zerop function,
27505         that recognize not only zero-pointer, but zero-integer too.
27507 2008-01-25  Ben Elliston  <bje@au.ibm.com>
27509         PR other/22232
27510         * fixproto: Escape "." in sed expression that strips leading "./".
27512 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
27514         PR driver/34904
27515         * gcc.c (SWITCH_OK): Removed.
27516         (SWITCH_LIVE): Changed to bit.
27517         (SWITCH_FALSE): Likewise.
27518         (SWITCH_IGNORE): Likewise.
27519         (switchstr): Change live_cond to unsigned int.
27520         (process_command): Replace SWITCH_OK with 0.
27521         (do_self_spec): Likewise.
27522         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
27523         (give_switch): Likewise.
27524         (used_arg): Likewise.
27525         (do_spec_1): Set the SWITCH_IGNORE bit.
27526         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
27527         bits.  Set the SWITCH_LIVE bit.
27529 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27531         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
27533 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
27535         PR tree-optimization/34472
27536         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
27537         parameter to a "bool *" and set *DATA to false if there is
27538         an unsafe access.  Do not delete the structure here.
27539         (check_cond_exprs): Delete it here instead.
27540         (check_cond_exprs, exclude_cold_structs): Do not increase
27541         I when removing a structure.
27543 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
27545         PR target/34856
27546         * config/i386/i386.c (ix86_expand_vector_init): Consider only
27547         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
27549 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
27551         PR middle-end/34934
27552         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
27553         a fixed vector for stack.
27555 2008-01-24  Ben Elliston  <bje@au.ibm.com>
27557         PR c++/25701
27558         * doc/gcc.texi (Software development): Add a direntry for g++.
27560 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
27562         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
27563         stale and straggling -fforce-addr comments above.
27565         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
27566         define.
27567         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
27568         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
27570 2008-01-23  Michael Matz  <matz@suse.de>
27572         PR debug/34895
27573         * dwarf2out.c (force_type_die): Use modified_type_die instead of
27574         gen_type_die.
27576 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
27578         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
27579         malloc result type.
27581 2008-01-23 Anatoly Sokolov <aesok@post.ru>
27583         * config/avr/avr.c (avr_current_arch): New variable.
27584         (avr_arch_types): Add 'avr31' and 'avr51' entries.
27585         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
27586         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
27587         (avr_override_options): Init 'avr_current_arch'.
27588         (base_arch_s): Move from here...
27589         * config/avr/avr.h (base_arch_s): ... here. Add new members
27590         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
27591         'mega' to 'have_jmp_call'.
27592         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
27593         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
27594         macros.
27595         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
27596         architectures.
27597         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
27598         MULTILIB_MATCHES): Ditto.
27600 2008-01-23  Richard Guenther  <rguenther@suse.de>
27602         PR middle-end/31529
27603         * cgraphunit.c (cgraph_reset_node): Always mark the node
27604         not reachable if it is not queued already.
27606 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
27608         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
27609         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
27610         (cputype_selected): New static variable.
27611         (bfin_handle_option): Set it if -mcpu is used.
27612         (override_option): Select default set of workarounds if no cpu type
27613         selected on the command line.
27614         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
27616         From  Michael Frysinger  <michael.frysinger@analog.com>
27617         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
27618         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
27620         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
27621         for bf547, bf523, bf524, and bf526.
27622         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
27623         bf526.
27624         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
27625         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
27626         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
27627         __ADSPBF547__ and __ADSPBF54x__ for bf547.
27628         * doc/invoke.texi (Blackfin Options): Document that
27629         -mcpu now accept bf547, bf523, bf524, and bf526.
27631 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
27633         PR rtl-optimization/34628
27634         * combine.c (try_combine): Stop and undo after the first combination
27635         if an autoincrement side-effect on the first insn has effectively
27636         been lost.
27638 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
27640         PR target/34529
27641         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
27642         Offset addresses are not valid for Altivec or paired float modes.
27644 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
27646         PR c++/34607
27647         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
27648         if DECL_INITIAL (decl) is error_mark_node.
27650         PR c++/34914
27651         * c-common.c (handle_vector_size_attribute): Only allow
27652         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
27653         the same way as pointer, array etc. types.
27654         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
27656         PR c++/34917
27657         * tree.c (build_type_attribute_qual_variant): Call
27658         build_qualified_type if attributes are equal, but quals are not.
27660 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27662         PR 32102
27663         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
27664         * flags.h (warn_strict_aliasing): Remove.
27665         (warn_strict_overflow): Remove.
27666         * opts.c (warn_strict_aliasing): Remove.
27667         (warn_strict_overflow): Remove.
27668         * c-opts.c (c_common_handle_option): -Wall only sets
27669         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
27670         (c_common_post_options): Give default values to -Wstrict-aliasing
27671         and -Wstrict-overflow if they are uninitialized.
27672         * common.opt (Wstrict-aliasing): Specify Var and Init.
27673         (Wstrict-overflow): Likewise.
27675 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
27677         PR rtl-optimization/26854
27678         PR rtl-optimization/34400
27679         PR rtl-optimization/34884
27680         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
27681         DF_RD->gen.
27682         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
27683         (df_rd_bb_info.expanded_lr_out): Deleted
27684         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
27685         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
27686         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27687         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27688         Removed code to allocate, initialize or free expanded_lr_out.
27689         (df_rd_bb_local_compute_process_def): Restructured to make more
27690         understandable.
27691         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
27692         sets if the sets are being trimmed.
27694 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
27696         PR bootstrap/32287
27697         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
27698         (as_vers): Likewise.
27699         * configure: Regenerated.
27701 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27703         PR middle-end/33092
27704         * tree-pass.h (pass_build_alias): New pass.
27705         * tree-ssa-alias.c (gate_build_alias): New.
27706         (pass_build_alias): New.
27707         * passes.c (init_optimization_passes): Add pass_build_alias after
27708         pass_create_structure_vars.
27710 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
27712         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
27713         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
27714         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
27715         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
27716         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
27717         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
27718         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
27719         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
27720         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
27721         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
27722         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
27723         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
27724         * config/s390/s390.md (FP_ALL): New mode iterator.
27725         (_d): New mode attribute.
27726         ("*signbit<mode>2>"): Changed mode of first operand.
27727         ("isinf<mode>2"): Changed mode of first operand.
27728         ("*TDC_insn"): Adaptation for DFP modes.
27730 2008-01-22  Ben Elliston  <bje@au.ibm.com>
27732         * tree.c (check_qualified_type): Improve function description.
27734 2008-01-21  Jason Merrill  <jason@redhat.com>
27736         PR c++/34196
27737         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
27738         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
27739         if it is set.
27741 2008-01-21  DJ Delorie  <dj@redhat.com>
27743         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
27744         return zero.
27746 2008-01-21  Richard Guenther  <rguenther@suse.de>
27748         PR middle-end/34856
27749         * tree-cfg.c (verify_expr): Allow all invariant expressions
27750         instead of just constant class ones as reference argument.
27751         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
27752         like any other constant.
27753         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
27755 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
27757         * regmove.c (fixup_match_1): Update call crossed frequencies.
27759 2008-01-21  Richard Guenther  <rguenther@suse.de>
27761         PR c/34885
27762         * tree-inline.c (setup_one_parameter): Deal with mismatched
27763         types using a VIEW_CONVERT_EXPR.
27765 2008-01-21  Alon Dayan  <alond@il.ibm.com>
27766             Olga Golovanevsky  <olga@il.ibm.com>
27768         PR tree-optimization/34701
27769         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
27770         when the structure size is not a power of 2.
27772 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
27774         * doc/install.texi: Add doc for --enable-checking=df.
27776 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
27778         PR rtl-optimization/34808
27779         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
27781 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27783         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
27784         input.
27786 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
27788         PR rtl-optimization/26854
27789         PR rtl-optimization/34400
27790         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
27791         DF_RD->gen.
27792         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
27793         (df_rd_bb_info.expanded_lr_out): New.
27794         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
27795         * loop_iv.c (iv_analysis_loop_init): Ditto.
27796         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27797         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27798         Added code to allocate, initialize or free expanded_lr_out.
27799         (df_rd_bb_local_compute_process_def): Restructured to make
27800         more understandable.
27801         (df_rd_confluence_n): Add code to do nothing with fake edges and
27802         code to no apply invalidate_by_call sets if the sets are being trimmed.
27803         (df_lr_local_finalize): Renamed to df_lr_finalize.
27804         (df_live_local_finalize): Renamed to df_live_finalize.
27806 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27808         PR target/34831
27809         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
27810         deciding whether to use reciprocal instructions.
27812 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
27814         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
27815         dwarf2out_note_section_used if cold_text_section is NULL.
27817 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
27819         PR gcov-profile/34610
27820         * tree-cfg.c (make_edges): Mark both outgoing edges from
27821         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
27822         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
27823         from OMP_FOR and OMP_CONTINUE outgoing edges.
27825         * tree-profile.c (tree_profiling): Return early if
27826         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
27827         at the end.
27828         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
27829         from cfun to child_cfun.
27830         * function.h (struct function): Add after_tree_profile bit.
27832 2008-01-19 Anatoly Sokolov <aesok@post.ru>
27834         * config/avr/avr.S (_exit): Disable interrupt.
27836 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
27837             Steven Bosscher  <stevenb.gcc@gmail.com>
27839         PR rtl-optimization/26854
27840         PR rtl-optimization/34400
27841         * df-problems.c (df_live_scratch): New scratch bitmap.
27842         (df_live_alloc): Allocate df_live_scratch when doing df_live.
27843         (df_live_reset): Clear the proper bitmaps.
27844         (df_live_bb_local_compute): Only process the artificial defs once
27845         since the order is not important.
27846         (df_live_init): Init the df_live sets only with the variables
27847         found live by df_lr.
27848         (df_live_transfer_function): Use the df_lr sets to prune the
27849         df_live sets as they are being computed.
27850         (df_live_free): Free df_live_scratch.
27852 2008-01-18  Ian Lance Taylor  <iant@google.com>
27854         * common.opt: Add fmerge-debug-strings.
27855         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
27856         flag_merge_debug_strings rather than flag_merge_constants.
27857         * doc/invoke.texi (Option Summary): Mention
27858         -fmerge-debug-strings.
27859         (Debugging Options): Document -fmerge-debug-strings.
27861 2008-01-18  Ian Lance Taylor  <iant@google.com>
27863         PR c++/33407
27864         * tree.h (DECL_IS_OPERATOR_NEW): Define.
27865         (struct tree_function_decl): Add new field operator_new_flag.
27866         * tree-inline.c (expand_call_inline): When inlining a call to
27867         operator new, force the return value to go into a variable, and
27868         set DECL_NO_TBAA_P on that variable.
27869         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
27871 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
27873         PR debug/34484
27874         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
27875         DWARF2_DEBUGGING_INFO.
27876         (dwarf2out_note_section_used): Ditto.  Add prototype.
27877         (have_multiple_function_sections, text_section_used,
27878         cold_text_section_used, *cold_text_sections): Move declarations
27879         before their uses.
27881 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
27883         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
27884         field and add signal_ra.
27885         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
27886         assignments to frame state pc.  Move end of stack check after
27887         MD_FALLBACK_FRAME_STATE_FOR.
27888         (uw_update_context_1): Use frame state signal_regs if set, instead
27889         of checking signal_frame flag.
27890         (uw_update_context): Use frame state signal_ra if set.
27891         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
27892         * config/xtensa/linux-unwind.h: New file.
27894 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
27896         * modulo-sched.c (get_sched_window): Fix comment typo.
27898 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
27900         PR tree-optimization/34648
27901         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
27903 2008-01-17  Anatoly Sokolov <aesok@post.ru>
27905         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
27906         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
27908 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
27910         PR rtl-optimization/34400
27911         * df-core.c (df_worklist_dataflow_overeager,
27912         df_worklist_dataflow_doublequeue): New functions.
27913         (df_worklist_dataflow): Two different worklist solvers.
27914         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
27915         New param.
27917 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27919         PR testsuite/34821
27920         * doc/invoke.texi: Document the dependence on pthread for fopenmp
27921         and ftree-parallelize-loops.
27923 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
27925         PR rtl-optimization/34826
27926         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
27928 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
27930         * global.c (find_reg): Mark the eh regs as used if necessary.
27931         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
27932         * ra.h (struct allocno): no_eh_reg field added.  Changed
27933         no_stack_reg type to bitfield.
27935 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
27937         * tree.c (substitute_in_expr): Add missing 'break'.
27939 2008-01-17  Richard Guenther  <rguenther@suse.de>
27941         PR tree-optimization/34825
27942         * tree-ssa-math-opts.c (is_division_by): Do not recognize
27943         x / x as division to handle.
27945 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27947         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
27948         "-pthread" is specified.
27949         * pa-hpux11.h (LIB_SPEC): Likewise.
27951 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
27952             Peter Bergner  <bergner@vnet.ibm.com>
27954         PR rtl-optimization/33796
27955         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
27957 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27959         PR libgfortran/34699
27960         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
27961         static links.
27962         * pa-hpux10.h (LINK_SPEC): Likewise.
27963         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
27965 2008-01-16  Richard Guenther  <rguenther@suse.de>
27967         PR middle-end/32628
27968         * fold-const.c (fold_convert_const_int_from_int): Do not
27969         set overflow if that occured only because of a sign extension
27970         change when converting from/to a sizetype with the same
27971         precision and signedness.
27973 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27975         PR debug/34249
27976         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
27977         location address to the correct place.  Update copyright year.
27979 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27981         * lambda-code.c (lambda_transform_legal_p): Handle the case of
27982         no dependences in the dependence_relations vector.
27984 2008-01-16  Jan Hubicka  <jh@suse.cz>
27986         PR rtl-optimization/31396
27987         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
27988         * cfg.c (dump_reg_info): Print it.
27989         * regs.h (struct reg_info_t): add freq_calls_crossed.
27990         (REG_FREQ_CALLS_CROSSED): New macro.
27991         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
27992         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
27993         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
27994         regmove_optimize): Update call crossed frequencies.
27995         * local-alloc.c (struct qty): Add freq_calls_crossed.
27996         (alloc_qty): Copute freq_calls_crossed.
27997         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
27998         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
27999         * ra.h (struct allocno): Add freq_calls_crossed.
28001 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28003         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
28004         libgomp when compiling with ftree-parallelize-loops.
28005         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
28007 2008-01-16  Richard Guenther  <rguenther@suse.de>
28009         PR tree-optimization/34769
28010         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
28011         * tree.c (int_cst_value): Instead make this function more
28012         permissive in what it accepts as valid input.  Document this
28013         function always sign-extends the value.
28015 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
28016             Richard Guenther  <rguenther@suse.de>
28018         PR c/34668
28019         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
28020         (gimple_fold_indirect_ref_rhs): ... this.
28021         (gimple_fold_indirect_ref): New function with foldings
28022         that preserve lvalueness.
28023         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
28024         * tree-flow.h (gimple_fold_indirect_ref): Declare.
28025         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
28026         to fold an INDIRECT_REF, fall back to the old use of
28027         fold_indirect_ref_1.
28029 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28031         * tree-data-ref.c (subscript_dependence_tester_1): Call
28032         free_conflict_function.
28033         (compute_self_dependence): Same.
28035 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
28037         PR debug/34249
28038         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
28039         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
28040         function global.
28041         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
28042         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
28043         for DWARF2_UNWIND_INFO targets.
28045 2008-01-16  Richard Guenther  <rguenther@suse.de>
28047         PR c/34768
28048         * c-typeck.c (common_pointer_type): Do not merge inconsistent
28049         type qualifiers for function types.
28051 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
28053         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
28054         loop_iterator li from previous commit.
28056 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
28058         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
28060 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
28062         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
28063         (parallelize_loops): Don't parallelize irreducible components.
28065 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28067         PR c++/24924
28068         * c-opts (c_common_post_options): Do not enable CPP
28069         flag_pedantic_errors by default.
28071 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
28073         PR rtl-optimization/31944
28074         * cse.c (remove_pseudo_from_table): New function.
28075         (merge_equiv_classes): Use above function to remove pseudo-registers.
28076         (invalidate): Likewise.
28078 2008-01-13  Richard Guenther  <rguenther@suse.de>
28080         PR middle-end/34601
28081         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
28082         instead of TYPE_MODE to deal with calls from expand_one_error_var.
28084 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
28086         * gcse.c (cprop_jump): Call validate_unshare_change instead of
28087         validate_change to unshare the source of the PC set.
28089 2008-01-12  Jan Hubicka  <jh@suse.cz>
28091         PR middle-end/32135
28092         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
28093         references above array bounds.  This might trigger bounds checks for
28094         pointers to arrays.
28096 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
28098         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
28099         new_replaceable_dependencies.
28101 2008-01-12  Doug Kwan  <dougkwan@google.com>
28103         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
28104         instead of OPT_Wreturn_type in warning due to ignored return type
28105         qualifiers.
28106         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
28107         options included in -Wextra.
28108         * c.opt: New option -Wignored_qualifiers.
28109         * doc/invoke.texi (Warning Options, -Wextra): Add new option
28110         -Wignore_qualifiers.
28111         (-Wignored-qualifiers): Document.
28112         (-Wreturn-type): Remove description of functionality now handled
28113         by -Wignored-qualifiers.
28115 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
28117         PR ada/33788
28118         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
28119         NOP_EXPR if it is between integral types with the same precision.
28121 2008-01-12  Jan Hubicka  <jh@suse.cz>
28123         PR other/28023
28124         * invoke.texi (max-inline-recursive-depth): Fix default value.
28126 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
28128         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
28129         correct type.
28131 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
28133         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
28135 2008-01-11  James E. Wilson  <wilson@specifix.com>
28137         PR target/26015
28138         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
28140 2008-01-11  Anatoly Sokolov <aesok@post.ru>
28142         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
28143         save/restore frame pointer register and don't use 'call-prologues'
28144         optimization in function with "OS_task" attribute.
28146 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
28148         PR middle-end/31309
28149         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
28150         when copying to memory.
28152 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
28154         PR rtl-optimization/30905
28155         * cfgcleanup.c: Include dce.h
28156         (crossjumps_occured): New global variable.
28157         (try_crossjump_bb): Exit loop after finding a fallthru edge.
28158         If something changed, set crossjumps_occured to true.
28159         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
28160         Don't add/remove fake edges to exit here...
28161         (cleanup_cfg): ...but do it here, when crossjumping.
28162         Run a fast DCE when successful crossjumps occured in the latest
28163         iteration of try_optimize_cfg.
28165 2008-01-11  Richard Guenther  <rguenther@suse.de>
28167         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
28168         (struct vn_unary_op_s): Likewise.
28169         (vn_reference_insert): Free old reference on hash collision.
28171 2008-01-10  Raksit Ashok  <raksit@google.com>
28173         PR rtl-optimization/27971
28174         * combine.c (find_split_point): Split PLUS expressions which are
28175         inside a MEM rtx, and whose first operand is complex.
28177 2008-01-10  DJ Delorie  <dj@redhat.com>
28179         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
28180         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
28181         (m32c_hard_regno_ok): Call the underlying function.
28183 2008-01-10  Richard Guenther  <rguenther@suse.de>
28185         PR middle-end/34683
28186         * tree-cfg.c (tree_merge_blocks): Do not go through the
28187         full-blown folding and stmt updating path if we just deal
28188         with virtual operands.
28189         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
28190         test for abnormal SSA_NAMEs.
28192 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
28194         PR middle-end/34641
28195         * reload.c (push_reload): Add assertions.  All constants from
28196         reg_equiv_constant should have been used for replacing the respective
28197         pseudo earlier.
28198         (find_reloads_address): Invoke find_reloads_address_part for
28199         constant taken from the reg_equiv_constant array.
28201 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
28203         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
28204         field (valnum) the first in the struct.  Replace bools with
28205         unit bit fields.
28207 2008-01-10  Richard Guenther  <rguenther@suse.de>
28209         PR tree-optimization/34651
28210         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
28211         types and ordering for masking and converting.
28213 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
28215         PR tree-optimization/34017
28216         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
28217         also for PHI_NODE expressions.
28219 2008-01-09  Jan Hubicka  <jh@suse.cz>
28221         PR tree-optimization/34708
28222         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
28223         based on number of case labels.
28224         (init_inline_once): Remove switch_cost.
28225         * tree-inline.h (eni_weights_d): Remove switch_cost.
28227 2008-01-09  Richard Guenther  <rguenther@suse.de>
28228         Andrew Pinski  <andrew_pinski@playstation.sony.com>
28230         PR middle-end/30132
28231         * gimplify.c (gimplify_cond_expr): Do not create an addressable
28232         temporary if an rvalue is ok or an lvalue is not required.
28234 2008-01-09  Richard Guenther  <rguenther@suse.de>
28236         PR middle-end/34458
28237         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
28238         adjust return type.
28240 2008-01-09  Richard Guenther  <rguenther@suse.de>
28242         PR middle-end/34679
28243         * tree.c (host_integerp): Check for sizetype only if the
28244         type is an integer type.
28246 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
28248         PR debug/26364
28249         * opts.c (decode_options): Disable inlining of functions called
28250         once if not in unit-at-a-time mode.
28252 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
28254         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
28256 2008-01-08  Richard Guenther  <rguenther@suse.de>
28258         PR middle-end/31863
28259         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
28260         out early if the result will be unused.
28262 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
28264         PR target/34709
28265         Revert:
28267         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28268         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
28269         for TARGET_RECIP.
28271 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
28273         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
28274         for vectorization tuned.
28276 2008-01-08  Richard Guenther  <rguenther@suse.de>
28278         PR tree-optimization/34683
28279         * tree-ssa-operands.c (operand_build_cmp): Export.
28280         * tree-ssa-operands.h (operand_build_cmp): Declare.
28281         * tree-vn.c (vuses_compare): Remove.
28282         (sort_vuses): Use operand_build_cmp.
28283         (sort_vuses_heap): Likewise.
28284         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
28285         to re-use old VEC if available.  Do not sort already sorted VUSEs.
28286         (vdefs_to_vec): Do not sort already sorted VDEFs.
28288 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
28290         PR middle-end/34694
28291         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
28293 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
28295         PR target/34702
28296         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
28297         limitations of reciprocal sequences on x86 targets.
28299 2008-01-08  Richard Guenther  <rguenther@suse.de>
28301         PR tree-optimization/34683
28302         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
28304 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
28306         PR target/34622
28307         * config/darwin.c (darwin_mergeable_string_section): Don't use
28308         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
28310 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
28312         PR target/34682
28313         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
28314         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
28315         predicates of op0 and op1 to register_operand.
28316         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
28317         expander using X87MODEF mode iterator.  Change predicates of
28318         op0 and op1 to register_operand.
28319         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
28320         corresponding patterns and macroize using MODEF macro.  Change
28321         predicates of op0 and op1 to register_operand and remove
28322         "m" constraint. Disparage "r" alternative with "!".
28323         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
28324         macroize using X87MODEF macro.  Change predicates of op0 and op1
28325         to register_operand and remove "m" constraint.  Disparage "r"
28326         alternative with "!".
28327         (absneg splitter with memory operands): Remove.
28328         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
28329         patterns and macroize using X87MODEF mode iterator.
28330         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
28331         Change predicate of op1 to register_operand.
28332         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
28333         for memory operands.
28335 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
28337         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
28339 2008-01-07  Richard Guenther  <rguenther@suse.de>
28341         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
28342         fields.
28344 2008-01-07  Richard Guenther  <rguenther@suse.de>
28346         PR tree-optimization/34683
28347         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
28348         VOPs of the needed size to save memory.  Use VEC_quick_push
28349         to save compile-time.
28350         (vdefs_to_vec): Likewise.
28352 2008-01-07  Sa Liu  <saliu@de.ibm.com>
28354         * config/spu/spu.md (divdf3): Genetate inline code for double
28355         division.  The implementation doesn't handle INF or NAN, therefore it
28356         only applies when -ffinite-math-only is given.
28358 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
28360         PR libstdc++/34680
28361         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
28362         * doc/cpp.texi ([Common Predefined Macros]): Document.
28364 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
28366         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
28367         order to use commutative addition instead of subtraction.
28369 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28370             Mircea Namolaru  <namolaru@il.ibm.com>
28371             Vladimir Yanovsky  <yanov@il.ibm.com>
28372             Revital Eres  <eres@il.ibm.com>
28374         PR tree-optimization/34263
28375         * tree-outof-ssa.c (process_single_block_loop_latch,
28376         contains_tree_r): New functions.
28377         (analyze_edges_for_bb): Call process_single_block_loop_latch
28378         function to empty single-basic-block latch block if possible.
28380 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28382         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
28383         for TARGET_RECIP.
28384         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
28386 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
28388         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
28390 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
28392         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
28394 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
28396         PR tree-optimization/34618
28397         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
28398         flag from T.
28400 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28402         PR target/34673
28403         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
28404         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
28405         Update copyright year.
28407         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
28408         Update copyright year.
28409         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
28410         using NR fixup.
28412 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
28414         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
28415         edge does not point to current bb before changing need_assert.
28417 2008-01-04  Richard Guenther  <rguenther@suse.de>
28419         PR middle-end/34029
28420         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
28421         for verifying purposes if they are is_gimple_min_invariant.
28423 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
28425         PR tree-optimization/34448
28426         PR tree-optimization/34465
28427         * gimplify.c (gimplify_init_constructor): Add new parameter
28428         notify_temp_creation.  Use it.
28429         (gimplify_modify_expr_rhs): Take volatiles into account when
28430         optimizing constructors.
28431         Do not optimize constructors if gimplify_init_constructor will dump to
28432         memory.
28433         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
28434         * gcc.c-torture/compile/pr34448.c: New.
28436 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
28438         PR gcov-profile/34609
28439         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
28440         return_slot if result is TREE_ADDRESSABLE.
28442 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
28444         * config/mips/mips.md (sqrt_condition): Tweak comment.
28445         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
28447 2008-01-03  Tom Tromey  <tromey@redhat.com>
28449         PR c/34457
28450         * c-common.c (c_type_hash): Handle VLAs.
28452 2008-01-03  Jan Hubicka  <jh@suse.cz>
28454         PR tree-optimization/31081
28455         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
28456         0 when inlining and not inlining to first basic block.
28457         (remap_decl): When var is initialized to 0, don't set default_def.
28458         (expand_call_inline): Set entry_bb.
28459         * tree-inline.h (copy_body_data): Add entry_bb.
28461 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
28463         PR c++/34619
28464         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
28465         before returning.
28467         PR tree-optimization/29484
28468         * tree-inline.c (inline_forbidden_p_2): New function.
28469         (inline_forbidden_p): Disallow inlining if some static var
28470         has an address of a local LABEL_DECL in its initializer.
28471         * doc/extend.texi (Labels as Values): Document &&foo behaviour
28472         vs. inlining.
28474 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
28476         PR tree-optimization/34635
28477         * tree-data-ref.c (add_other_self_distances): Make sure that the
28478         evolution step is constant.
28480 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
28482         PR middle-end/34608
28483         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
28485 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
28487         * tree-sra.c (scalarize_init): Insert the generate_element_init
28488         statements after the generate_element_zero statements.
28490 2008-01-02  Richard Guenther  <rguenther@suse.de>
28492         PR middle-end/34093
28493         PR middle-end/31976
28494         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
28495         for very large number of operands instead of ICEing.
28497 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
28499         PR target/34013
28500         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
28501         while stack probing.
28503 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
28505         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
28506         in C++0x mode.
28508 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
28510         PR libmudflap/26442
28511         * tree-mudflap.c (mx_register_decls): Guard warning by
28512         !DECL_ARTIFICIAL check.
28514 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
28516         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
28517         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
28518         sse5_perm<mode>): Fix constraints.