OSDN Git Service

* config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
2
3         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
4         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
5         *return_and_restore_fpregs_<mode>,
6         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
7
8         PR bootstrap/41397
9         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
10         instead of assuming it has always a REG inside of it.
11
12 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
13
14         * config/freebsd.h: Update comment on types.
15         (WINT_TYPE): Define.
16
17 2009-09-18  Jason Merrill  <jason@redhat.com>
18
19         * c.opt: Add -fno-deduce-init-list.
20
21 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
22
23         * value-prof.c (interesting_stringop_to_profile_p): Added output
24         argument to indicate which parameter is the size parameter.
25         * value-prof.c (gimple_stringop_fixed_value): Use
26         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
27         * value-prof.c (gimple_stringops_transform): Update call sites to
28         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
29         * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
30
31 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
32
33         PR target/38288
34         From David Binderman <dcb314@hotmail.com>:
35         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
36         local variable f.  Remove stale comments.
37         (ix86_compute_frame_layout): Remove useless local variable total_size.
38         Remove #if 0'd code.
39         (legitimate_address_p): Remove useless local variables
40         reason_rtx and reason.
41         (ix86_split_copysign_const): Remove useless local variable op1.
42         (scale_counter): Remove useless local variable piece_size_mask.
43
44 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
45
46         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
47         output decl.
48
49 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
50
51         PR target/40913
52         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
53
54 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
55
56         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
57         TYPE_STUB_DECL.
58
59 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
60
61         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
62         DW_OP_implicit_value even without dwarf_version 4.
63
64 2009-09-17  Jan Hubicka  <jh@suse.cz>
65
66         * dwarf2out.c: Include tree-pass.h and gimple.h.
67         (loc_list_plus_const): New function.
68         (loc_descriptor_from_tree_1): Rename to ...
69         (loc_descriptor_from_tree): ... remove original.
70         (loc_list_from_tree): New function.
71         (add_AT_location_description): Accept location list.
72         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
73         (concatn_mem_loc_descriptor): Remove.
74         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
75         returning NULL.
76         (secname_for_decl): Move up.
77         (hidden_reference_p): New function; break out from ...
78         (loc_by_refernece): ... here; move up.
79         (dw_loc_list): New function.
80         (single_element_loc_list): New function.
81         (single_element_loc_list_p): New function.
82         (add_loc_descr_to_each): New function.
83         (add_loc_list): New function.
84         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
85         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
86         add diagnostics why expansion failed.
87         (add_location_or_const_value_attribute): Support location lists.
88         (add_bound_info): Likewise.
89         (descr_info_loc): Update call of loc_descriptor_from_tree.
90         (gen_variable_die): Work on location lists.
91         * final.c (pass_final): Add dump file.
92         * Makefile.in (dwarf2out.o): Add new dependencies.
93
94 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
95
96         PR c/41049
97         * real.c decimal_from_integer, decimal_integer_string): New.
98         (real_from_integer): Use them as special case for decimal float.
99         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
100         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
101         Do not append zero after the decimal point in string to convert.
102
103 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
104
105         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
106         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
107
108 2009-09-17  Martin Jambor  <mjambor@suse.cz>
109
110         * common.opt (fipa-sra): New switch.
111         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
112         * timevar.def (TV_IPA_SRA): New timevar.
113         * params.def (ipa-sra-ptr-growth-factor): New parameter.
114         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
115         * tree-sra.c: Include cgraph.c.
116         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
117         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
118         and grp_not_necessarilly_dereferenced.
119         (func_param_count): New variable.
120         (encountered_apply_args): New variable.
121         (bb_dereferences): New variable.
122         (final_bbs): New variable.
123         (no_accesses_representant): New variable.
124         (no_accesses_p): New function.
125         (dump_access): Dump the new fields.
126         (sra_initialize): Set encountered_apply_args to false.
127         (get_ssa_base_param): New function.
128         (mark_parm_dereference): New function.
129         (create_access): Caring for INIDRECT_REFs and different handling of
130         varialble length accesses in early IPA SRA.  Store the stmt - a new
131         parameter - to the new access.
132         (build_access_from_expr_1): New parameter stmt, passed to
133         create_access.  Handle INDIRECT_REFs.
134         (build_access_from_expr): Pass the current statement to
135         build_access_from_expr_1.
136         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
137         passes.
138         (build_accesses_from_assign): Pass the current statement to
139         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
140         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
141         final_bbs when necessary.  Check for calls to __builtin_apply_args.
142         Fixup EH info if anythng was changed.
143         (is_unused_scalar_param): New function.
144         (ptr_parm_has_direct_uses): New function.
145         (find_param_candidates): New function.
146         (mark_maybe_modified): New function.
147         (analyze_modified_params): New function.
148         (propagate_dereference_distances): New function.
149         (dump_dereferences_table): New function.
150         (analyze_caller_dereference_legality): New function.
151         (unmodified_by_ref_scalar_representative): New function.
152         (splice_param_accesses): New function.
153         (decide_one_param_reduction): New function.
154         (enum ipa_splicing_result): New type.
155         (splice_all_param_accesses): New function.
156         (get_param_index): New function.
157         (turn_representatives_into_adjustments): New function.
158         (analyze_all_param_acesses): New function.
159         (get_replaced_param_substitute): New function.
160         (get_adjustment_for_base): New function.
161         (replace_removed_params_ssa_names): New function.
162         (sra_ipa_reset_debug_stmts): New function.
163         (sra_ipa_modify_expr): New function.
164         (sra_ipa_modify_assign): New function.
165         (convert_callers): New function.
166         (modify_function): New function.
167         (ipa_sra_preliminary_function_checks): New function.
168         (ipa_early_sra): New function.
169         (ipa_early_sra_gate): New function.
170         (pass_early_ipa_sra): New variable.
171         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
172
173 2009-09-17  Michael Matz  <matz@suse.de>
174
175         PR middle-end/41347
176         * tree.c (build_type_attribute_qual_variant): Export.
177         * tree.h (build_type_attribute_qual_variant): Declare.
178         * tree-inline.c (remap_type_1): Use it to build variants with
179         the original qualifiers and attributes.
180
181 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
182
183         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
184         without a fallthrough edge.
185
186 2009-09-16  DJ Delorie  <dj@redhat.com>
187
188         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
189         chip and ignore the "fast_interrupt" attribute if so.
190
191 2009-09-16  Richard Henderson  <rth@redhat.com>
192
193         PR middle-end/41360
194         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
195         barrier fix.
196
197 2009-09-16  Richard Henderson  <rth@redhat.com>
198
199         PR target/41246
200         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
201         is set only if DECL_NO_STATIC_CHAIN is unset.
202         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
203         (FOR_EACH_NEST_INFO): New.
204         (walk_all_functions): Use it.
205         (finalize_nesting_tree): Likewise.
206         (unnest_nesting_tree): Likewise.
207         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
208         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
209         (convert_gimple_call): Early out if gimple_call_chain already set.
210         (convert_all_function_calls): Iterate until no new functions
211         require a static chain.
212         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
213         when building a trampoline.  Use dump_function_to_file instead
214         of dump_function.
215         (lower_nested_functions): Open dump_file.  Validate that decls
216         that have DECL_NO_STATIC_CHAIN from the front end don't have that
217         bit reset by this pass.
218
219 2009-09-16  Michael Matz  <matz@suse.de>
220
221         PR fortran/41212
222         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
223         shorten decl_common_unused.
224         (DECL_RESTRICTED_P): New accessor.
225         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
226         to disambiguate marked decls and restrict pointers.
227
228 2009-09-16  Richard Henderson  <rth@redhat.com>
229
230         PR middle-end/41360
231         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
232
233 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
234
235         * integrate.c (set_block_abstract_flags): Call
236         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
237
238 2009-09-16  Richard Guenther  <rguenther@suse.de>
239
240         PR middle-end/34011
241         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
242         as non-aliased.
243
244 2009-09-16  DJ Delorie  <dj@redhat.com>
245             Kaz Kojima  <kkojima@gcc.gnu.org>
246
247         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
248         (sh_expand_prologue): Update calls to output_stack_adjust.
249         (sh_expand_epilogue): Likewise.
250
251 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
252
253         PR bootstrap/41349
254         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
255         trying to limit the extent of searches in the insn stream.
256
257 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
258             Jakub Jelinek  <jakub@redhat.com>
259
260         PR target/41175
261         PR target/40677
262         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
263         problem.
264         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
265         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
266         (rs6000_savres_strategy): Always save FP registers inline if the
267         target doesn't support hardware double-precision.  Set the above
268         bits in return value when needed.
269         (rs6000_savres_routine_sym): Fix computation for cache selector.
270         Mark the generated symbol as a function.  Rename exitp argument to
271         lr.  Move code for determining the name of the symbol...
272         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
273         getting the names right on AIX and 64-bit Linux.
274         (savres_routine_name): New variable.
275         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
276         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
277         on what the target routine uses as a base register.  If savep && lr
278         describe saving of r0 into memory slot.
279         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
280         line calls for AIX ABI.
281         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
282         determine FP save/restore functions.
283         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
284         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
285         gen_addsi3.
286         (rs6000_emit_epilogue): Adjust computation of restore_lr.
287         Duplicate restoration of LR and execute the appropriate one
288         depending on whether GPRs are being restored inline.  Set r11 from
289         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
290         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
291         Fix out of line calls for AIX ABI.
292         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
293         New insn.
294         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
295         register 11.
296         (*restore_gpregs_spe): Likewise.
297         (*return_and_restore_gpregs_spe): Likewise.
298         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
299         Define to empty string unconditionally.
300         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
301         Define to empty string unconditionally.
302         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
303         !TARGET_64BIT.
304
305 2009-09-15  Jan Hubicka  <jh@suse.cz>
306
307         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
308         * params.def (inline-insns-auto): Likewise.
309
310 2009-09-15  Martin Jambor  <mjambor@suse.cz>
311
312         * ipa-inline.c (estimate_function_body_sizes): Dump info about
313         individual statements only at TDF_DETAILS dump level.  Format
314         source for 80 characters per line.
315
316 2009-09-15  Christian Bruel  <christian.bruel@st.com>
317
318         * regrename.c (do_replace): Update REG_DEAD notes.
319
320 2009-09-15  Revital Eres  <eres@il.ibm.com>
321
322         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
323         * targhooks.c (default_builtin_support_vector_misalignment):
324         New builtin function.
325         * targhooks.h (default_builtin_support_vector_misalignment):
326         Declare.
327         * target.h (builtin_support_vector_misalignment):
328         New field in struct gcc_target.
329         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
330         new builtin function.
331         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
332         Define.
333         * config/rs6000/rs6000.c
334         (rs6000_builtin_support_vector_misalignment): New function.
335         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
336
337 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
338
339         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
340         instead of INSN_P.
341         (bfin_optimize_loop): Likewise.
342         (bfin_gen_bundles): Likewise.
343         (workaround_speculation): Likewise.
344         (find_load): Return NULL_RTX for debug_insn.
345
346 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
347
348         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
349         (sminsf3): Ditto.
350
351 2009-09-14  DJ Delorie  <dj@redhat.com>
352
353         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
354         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
355         VLIW mode.
356
357 2009-09-14  Richard Henderson  <rth@redhat.com>
358             Jakub Jelinek  <jakub@redhat.com>
359
360         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
361         * cfgbuild.c (make_edges): Handle asm goto.
362         * cfglayout.c (fixup_reorder_chain): Likewise.
363         * cfgrtl.c (patch_jump_insn): Likewise.
364         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
365         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
366         (gimple_build_asm_vec): Add and use labels parameter.
367         (gimple_build_asm): Remove.
368         (walk_gimple_asm): Walk labels too.
369         * gimple.def (GIMPLE_ASM): Update docs.
370         * gimple.h: Update decls.
371         (struct gimple_statement_asm): Change nc to use unsigned char;
372         add nl member.
373         (gimple_asm_nlabels): New.
374         (gimple_asm_label_op, gimple_asm_set_label_op): New.
375         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
376         into gimple_build_asm_vec.
377         * jump.c (mark_jump_label_asm): New.
378         (mark_jump_label): Use it.
379         (redirect_jump_1): Handle asm goto.
380         (invert_jump_1): Soft fail if X is null.
381         * recog.c (extract_asm_operands): New.
382         (asm_noperands): Use it; handle asm labels.
383         (decode_asm_operands): Use extract_asm_operands.
384         (asm_operand_ok): Properly handle empty string.
385         * reg-stack.c (get_asm_operands_in_out): Rename from
386         get_asm_operand_n_inputs; use extract_asm_operands; return both
387         inputs and outputs by reference; update all callers.
388         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
389         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
390         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
391         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
392         (extract_asm_operands): Declare.
393         * stmt.c (expand_asm_operands): Add and use labels parameter.
394         (check_unique_operand_names): Likewise.
395         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
396         (expand_asm_stmt): Handle asm labels.
397         * tree-cfg.c (make_gimple_asm_edges): New.
398         (make_edges): Use it.
399         (cleanup_dead_labels): Handle asm labels.
400         (is_ctrl_altering_stmt): Likewise.
401         (gimple_redirect_edge_and_branch): Likewise.
402         * tree.def (ASM_EXPR): Add 5th operand.
403         * tree.h (ASM_LABELS): New.
404         (resolve_asm_operand_names): Update decl.
405
406         * c-parser.c (c_parser_asm_statement): Parse asm goto.
407         (c_parser_asm_goto_operands): New.
408         * c-tree.h (build_asm_expr): Update decl.
409         * c-typeck.c (build_asm_expr): Add and use labels parameter.
410         * doc/extend.texi: Document asm goto.
411
412 2009-09-14  Richard Henderson  <rth@redhat.com>
413
414         * except.h: Update declarations.
415         (struct pointer_map_t): Forward declare.
416         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
417         (struct eh_landing_pad_d, eh_landing_pad): New.
418         (struct eh_catch_d, eh_catch): New.
419         (struct eh_region_d): Remove next_region_sharing_label, aka,
420         label, tree_label, landing_pad, post_landing_pad, resume,
421         may_contain_throw.  Rename region_number to index.  Remove
422         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
423         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
424         (VEC(eh_landing_pad,gc)): New.
425         (struct eh_status): Remove last_region_number.  Add lp_array,
426         throw_stmt_table, ttype_data, ehspec_data.
427         (ehr_next, FOR_ALL_EH_REGION_AT): New.
428         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
429         * except.c (lang_protect_cleanup_actions): Return tree.
430         (struct ehl_map_entry): Remove.
431         (init_eh_for_function): Push zero entries for region and lp_array.
432         (gen_eh_region): Add to region_array immediately.
433         (gen_eh_region_catch): Operate on eh_catch objects.
434         (gen_eh_landing_pad): New.
435         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
436         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
437         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
438         (get_eh_landing_pad_from_number_fn): New.
439         (get_eh_landing_pad_from_number): New.
440         (get_eh_region_from_lp_number_fn): New.
441         (get_eh_region_from_lp_number): New.
442         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
443         (get_exception_pointer, get_exception_filter): Remove.
444         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
445         (current_function_has_exception_handlers): Simplify.
446         (bring_to_root, eh_region_replaceable_by_p): Remove.
447         (replace_region, hash_type_list, hash_eh_region): Remove.
448         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
449         (label_to_region_map, num_eh_regions): Remove.
450         (get_next_region_sharing_label, must_not_throw_labels): Remove.
451         (find_exception_handler_labels): Remove.
452         (duplicate_eh_regions_0, find_prev_try): Remove.
453         (struct duplicate_eh_regions_data): New.
454         (duplicate_eh_regions_1): Rewrite.
455         (duplicate_eh_regions): Return a pointer map instead of an
456         integer offset.
457         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
458         (redirect_eh_edge_to_label): Remove.
459         (eh_region_outermost): Rewrite using eh_region pointers
460         instead of integers.
461         (add_ttypes_entry): Update for ttype_data move to eh_status.
462         (add_ehspec_entry): Rewrite with VEC instead of varray.
463         (assign_filter_values): Likewise.  Export.
464         (build_post_landing_pads, connect_post_landing_pads): Remove.
465         (dw2_build_landing_pads): Rewrite to use lp_array.
466         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
467         (sjlj_assign_call_site_values): Rewrite to use lp_array.
468         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
469         (sjlj_mark_call_sites): Update for landing pad numbers.
470         (finish_eh_generation): Rewrite.
471         (gate_handle_eh): Do nothing for no eh tree.
472         (pass_rtl_eh): Move up near finish_eh_generation.
473         (remove_eh_landing_pad): New.
474         (remove_eh_handler): Export.
475         (remove_eh_region, remove_eh_handler_and_replace): Remove.
476         (for_each_eh_label): Rewrite to use lp_array.
477         (make_reg_eh_region_note): New.
478         (make_reg_eh_region_note_nothrow_nononlocal): New.
479         (insn_could_throw_p): New.
480         (copy_reg_eh_region_note_forward): New.
481         (copy_reg_eh_region_note_backward): New.
482         (check_handled, add_reachable_handler): Remove.
483         (reachable_next_level, foreach_reachable_handler): Remove.
484         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
485         (get_eh_region_and_lp_from_rtx): New.
486         (get_eh_region_from_rtx): New.
487         (can_throw_internal_1, can_throw_external_1): Remove.
488         (can_throw_internal): Use get_eh_region_from_rtx.
489         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
490         (insn_nothrow_p, can_nonlocal_goto): New.
491         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
492         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
493         (add_action_record): Use VEC not varray.
494         (collect_one_action_chain): Update for eh_region changes.
495         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
496         Use get_eh_region_and_lp_from_rtx.
497         (gate_convert_to_eh_region_ranges): New.
498         (pass_convert_to_eh_region_ranges): Use it.
499         (push_uleb128, push_sleb128): Use VEC not varray.
500         (output_one_function_exception_table): Likewise.
501         (dump_eh_tree): Update for eh_region changes.
502         (verify_eh_tree): Likewise.
503         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
504         * tree-eh.c: Include target.h.
505         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
506         Don't disallow GIMPLE_RESX; adjust argument check.
507         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
508         (record_stmt_eh_region): Update for landing pad numbers;
509         generate a landing pad if necessary.
510         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
511         (remove_stmt_from_eh_lp_fn): Similarly.
512         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
513         Update for lp numbers; don't special case missing throw_stmt_table.
514         (lookup_expr_eh_lp): Similarly.
515         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
516         (eh_seq, eh_region_may_contain_throw): New.
517         (struct leh_state): Add ehp_region.
518         (struct leh_tf_state): Remove eh_label.
519         (emit_post_landing_pad): New.
520         (emit_resx, emit_eh_dispatch): New.
521         (note_eh_region_may_contain_throw): New.
522         (frob_into_branch_around): Take eh_region not eh label;
523         emit eh code into eh_seq.
524         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
525         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
526         lower_eh_must_not_throw.  Emit code to eh_seq.
527         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
528         (lower_try_finally_onedest): Likewise.
529         (lower_try_finally_copy): Likewise.
530         (lower_try_finally_switch): Likewise.
531         (lower_try_finally): Initialize ehp_region.
532         (lower_catch): Update for eh_catch objects.
533         (lower_eh_filter): Don't handle must_not_throw.
534         (lower_eh_must_not_throw): New.
535         (lower_cleanup): Don't set eh_label.
536         (lower_eh_constructs_2): Resolve eh builtins.
537         Handle GIMPLE_EH_MUST_NOT_THROW.
538         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
539         Add eh_seq to the end of the function body.
540         (make_eh_dispatch_edges): New.
541         (make_eh_edge): Remove.
542         (make_eh_edges): Simplify for landing pads.
543         (redirect_eh_edge_1): New.
544         (redirect_eh_edge): Use it.
545         (redirect_eh_dispatch_edge): New.
546         (stmt_could_throw_p): Use a switch.  Allow RESX.
547         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
548         (stmt_can_throw_internal): Likewise.
549         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
550         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
551         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
552         (gate_refactor_eh): New.
553         (pass_refactor_eh): Use it.
554         (lower_resx, execute_lower_resx, pass_lower_resx): New.
555         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
556         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
557         (remove_unreachable_handlers): Rename from
558         tree_remove_unreachable_handlers; rewrite for landing pads;
559         call remove_eh_handler directly.
560         (remove_unreachable_handlers_no_lp): New.
561         (unsplit_eh, unsplit_all_eh): New.
562         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
563         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
564         (cleanup_empty_eh_unsplit): New.
565         (cleanup_empty_eh): Rewrite.
566         (cleanup_all_empty_eh): New.
567         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
568         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
569         (gate_cleanup_eh): New.
570         (pass_cleanup_eh): Use it.
571         (verify_eh_edges): Move later in file.  Expect one EH edge.
572         (verify_eh_dispatch_edge): New.
573
574         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
575         (gtype-desc.o): Add TARGET_H.
576         (tree.o): Use EXCEPT_H, not except.h.
577         (cfgbuild.o): Add EXPR_H.
578         (GTFILES): Add vecprim.h.
579         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
580         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
581         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
582         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
583         * calls.c (emit_call_1): Use make_reg_eh_region_note.
584         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
585         calls to can_throw_internal.
586         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
587         (make_edges): Don't handle RESX; use can_nonlocal_goto.
588         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
589         (expand_gimple_stmt): Use make_reg_eh_region_note.
590         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
591         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
592         or find_exception_handler_labels.
593         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
594         there is exacly one EH edge.  Use can_nonlocal_goto and
595         can_throw_internal.
596         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
597         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
598         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
599         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
600         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
601         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
602         * dse.c (scan_insn): Use insn_could_throw_p.
603         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
604         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
605         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
606         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
607         EXC_PTR_EXPR or FILTER_EXPR.
608         (tree_expr_nonzero_warnv_p): Likewise.
609         * function.h: Include vecprim.h, not varray.h
610         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
611         move ttype_data and ehspec_data members to struct eh_status; change
612         action_record_data member to a VEC.
613         * gcse.c (hash_scan_set): Use can_throw_internal.
614         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
615         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
616         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
617         (block_may_fallthru): Don't handle RESX_EXPR.
618         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
619         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
620         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
621         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
622         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
623         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
624         (gimple_size): Likewise.
625         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
626         (gimple_build_resx): Use gimple_build_with_ops.
627         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
628         (is_gimple_val): Likewise.
629         (is_gimple_stmt): Remove RESX_EXPR.
630         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
631         (GIMPLE_RESX): Reorder with other EH constructs.
632         * gimple.h (struct gimple_statement_eh_mnt): New.
633         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
634         (gimple_eh_filter_must_not_throw): Remove.
635         (gimple_eh_filter_set_must_not_throw): Remove.
636         (gimple_eh_must_not_throw_fndecl): New.
637         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
638         (is_gimple_resx): New.
639         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
640         Don't copy EH_FILTER_MUST_NOT_THROW.
641         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
642         * ipa-inline.c (estimate_function_body_sizes): Don't try to
643         handle must_not_throw_labels specially.
644         * ipa-pure-const.c (check_call): Update debug statement for LP.
645         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
646         * ipa-utils.c (get_base_var): Likewise.
647         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
648         * lower-subreg.c (move_eh_region_note): Remove.
649         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
650         * omp-low.c (new_omp_context): Update for eh_lp_nr.
651         (create_task_copyfn): Likewise.
652         (maybe_catch_exception): Use gimple_build_eh_filter.
653         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
654         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
655         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
656         and pass_lower_resx.
657         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
658         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
659         can_throw_internal, can_nonlocal_goto.
660         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
661         copy_reg_eh_region_note_forward.
662         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
663         (emit_output_reload_insns): Likewise.
664         (copy_eh_notes): Remove.
665         * rtl.def (RESX): Remove.
666         * rtl.h: Update declarations.
667         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
668         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
669         (update_eh_label): Remove.
670         (cleanup_dead_labels_eh): New.
671         (cleanup_deal_labels): Use it instead of update_eh_label.
672         (gimple_merge_blocks): Update landing pad data structure when
673         removing a landing pad label.
674         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
675         test; handle GIMPLE_EH_MUST_NOT_THROW.
676         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
677         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
678         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
679         (verify_stmt): Likewise.  Verify landing pads.
680         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
681         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
682         (struct move_stmt_d): Add eh_map.
683         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
684         (move_stmt_r): Remap eh region numbers in builtin calls,
685         resx and eh_dispatch.
686         (move_block_to_fn): Remove eh_offset parameter.  Use
687         maybe_duplicate_eh_stmt_fn.
688         (find_outermost_region_in_block): Operate on eh_region pointers
689         instead of region numbers.
690         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
691         duplicate_eh_regions.
692         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
693         test earlier.  Disallow EH landing pads.
694         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
695         * tree-flow.h: Update declarations.
696         (struct tree_ann_common_d): Replace rn with lp_nr.
697         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
698         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
699         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
700         resx and eh_dispatch.
701         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
702         (copy_edges_for_bb): Use make_eh_dispatch_edges.
703         (copy_cfg_body): Expect eh_map instead of eh_region_offset
704         from duplicate_eh_regions.
705         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
706         update RESX; handle EH_DISPATCH.
707         (expand_call_inline): Set eh_lp_nr, not eh_region.
708         (maybe_inline_call_in_expr): Likewise.
709         * tree-inline.h (struct copy_body_data): Replace eh_region with
710         eh_lp_nr, eh_region_offset with eh_map.
711         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
712         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
713         * tree-pretty-print.c (dump_generic_node): Don't handle
714         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
715         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
716         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
717         EXC_PTR_EXPR, FILTER_EXPR.
718         * tree-ssa-operands.c (get_expr_operands): Likewise.
719         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
720         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
721         (ao_ref_init_from_vn_reference): Likewise.
722         * tree-ssa-sink.c (statement_sink_location): Likewise.
723         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
724         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
725         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
726         EXC_PTR_EXPR, FILTER_EXPR.
727         (is_exception_related): Remove.
728         (compute_avail): Don't call it.
729         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
730         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
731         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
732         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
733         Build EH builtins.
734         (build_resx): Remove.
735         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
736         * tree.h: Update declarations.
737         (EH_FILTER_MUST_NOT_THROW): Remove.
738         (struct tree_label_decl): Add eh_landing_pad_nr.
739         (EH_LANDING_PAD_NR): New.
740         * value-prof.c (gimple_ic): Tidy variable names.  Update for
741         landing pad numbers.
742         (gimple_stringop_fixed_value): Tidy variable names.  Assert
743         that neither call stmt can throw.
744         * vecprim.h (uchar): New.
745         (VEC(uchar,heap), VEC(uchar,gc)): New.
746
747         * c-common.c (c_define_builtins): Update call to
748         build_common_builtin_nodes.
749         * c-parser.c (c_parse_file): Don't call
750         default_init_unwind_resume_libfunc.
751
752 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
753
754         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
755         (mips_cprestore_address_p): Likewise.
756         (mips_save_gp_to_cprestore_slot): Likewise.
757         (mips_restore_gp): Rename to...
758         (mips_restore_gp_from_cprestore_slot): ...this.
759         (mips_must_initialize_gp_p): Declare.
760         (mips_emit_save_slot_move): Likewise.
761         (mips_output_load_label): Return nothing.
762         (mips_eh_uses): Declare.
763         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
764         (TARGET_CPRESTORE_DIRECTIVE): New macro.
765         (TARGET_ABSOLUTE_JUMPS): Likewise.
766         (EH_USES): Likewise.
767         (FIRST_PSEUDO_REGISTER): Update comment.
768         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
769         (MIPS_CALL): ...here.
770         (REGISTER_NAMES): Add $cprestore.
771         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
772         Add load_label_length, has_inflexible_gp_insn_p,
773         has_flexible_gp_insn_p, must_initialize_gp_p and
774         must_restore_gp_when_clobbered_p.
775         (mips_expand_call): Don't generate split instructions here.
776         (mips_split_call): Update the call to mips_restore_gp after
777         the above name change.
778         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
779         (mips_find_gp_ref): New function.
780         (mips_insn_has_inflexible_gp_ref_p): Likewise.
781         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
782         (mips_insn_has_flexible_gp_ref_p): Likewise.
783         (mips_cfun_has_flexible_gp_ref_p): Likewise.
784         (mips_function_has_gp_insn): Delete.
785         (mips_global_pointer): Drop the df_regs_ever_live_p check.
786         Use the new functions above.  Only return INVALID_REGNUM
787         for TARGET_ABSOLUTE_JUMPS.
788         (mips_must_initialize_gp_p): New function.
789         (mips_get_cprestore_base_and_offset): New function, extracted from...
790         (mips_cprestore_slot): ...here.  Take a bool parameter.
791         (mips_cfun_has_cprestore_slot_p): New function.
792         (mips_cprestore_address_p): Likewise.
793         (mips_save_gp_to_cprestore_slot): Likewise.
794         (mips_restore_gp): Rename to...
795         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
796         epilogue_completed.  Update the call to mips_cprestore_slot.
797         Test cfun->machine->must_restore_gp_when_clobbered_p.
798         (mips_direct_save_slot_move_p): New function.
799         (mips_emit_save_slot_move): Likewise.
800         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
801         of cfun->machine->global_pointer.
802         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
803         (mips_save_reg): Use mips_emit_save_slot_move.
804         (mips_expand_prologue): Set must_initialize_gp_p.
805         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
806         for all cprestore saves.  Emit a use_cprestore instruction after
807         setting up the cprestore slot.
808         (mips_restore_reg): Use mips_emit_save_slot_move.
809         (mips_process_load_label): New function.
810         (mips_load_label_length): Likewise.
811         (mips_output_load_label): Don't return asm: output it here instead.
812         Use mips_process_load_label.
813         (mips_adjust_insn_length): Adjust the length of branch instructions
814         that have length MAX_PIC_BRANCH_LENGTH.
815         (mips_output_conditional_branch): Update the call to
816         mips_output_load_label.  Assume the branch target is OPERANDS[0]
817         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
818         (mips_output_order_conditional_branch): Swap the meaning of
819         OPERANDS[0] and OPERANDS[1].
820         (mips_variable_issue): Don't count ghost instructions.
821         (mips_expand_ghost_gp_insns): New function.
822         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
823         (mips_output_mi_thunk): Set must_initialize_gp_p.
824         (mips_eh_uses): New function.
825         * config/mips/predicates.md (cprestore_save_slot_operand)
826         (cprestore_load_slot_operand): New predicates.
827         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
828         (UNSPEC_MOVE_GP): Likewise.
829         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
830         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
831         (CPRESTORE_SLOT_REGNUM): New register.
832         (MAX_PIC_BRANCH_LENGTH): New constant.
833         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
834         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
835         branches.  Fix commentary.
836         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
837         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
838         Change type to "ghost".
839         (loadgp_absolute_<mode>): Likewise.
840         (loadgp_rtp_<mode>): Likewise.
841         (copygp_mips16): Likewise.
842         (loadgp_blockage): Remove redundant mode attribute.
843         (potential_cprestore): New instruction.
844         (cprestore): Turn into an unspec set.
845         (use_cprestore): New instruction.
846         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
847         (*branch_fp_inverted): Likewise.
848         (*branch_order<mode>): Likewise.
849         (*branch_order<mode>_inverted): Likewise.
850         (*branch_equality<mode>): Likewise.
851         (*branch_equality<mode>_inverted): Likewise.
852         (*branch_bit<bbv><mode>): Likewise.
853         (*branch_bit<bbv><mode>_inverted): Likewise.
854         (*branch_equality<mode>_mips16): Remove redundant mode.
855         (jump): Turn into a define_expand.
856         (*jump_absolute): New instruction.
857         (*jump_pic): Likewise.
858         (*jump_mips16): Rename previously-unnamed pattern.  Remove
859         redundant mode attribute.
860         (restore_gp): Split on epilogue_completed rather than
861         reload_completed.  Change type to "ghost".
862         (move_gp<mode>): New instruction.
863         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
864         Remove redundant mode attribute.
865         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
866         (bc1any4f, bc1any2t, bc1any2f): Likewise.
867         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
868
869 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
870
871         PR target/41210
872         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
873         are returned in the same register (vs34 or v2) that Altivec vector
874         types are returned in.
875         (rs6000_libcall_value): Ditto.
876
877         PR target/41331
878         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
879         instead of explicit addsi3/adddi3 calls.
880         (rs6000_split_multireg_move): Ditto.
881         (rs6000_emit_allocate_stack): Ditto.
882         (rs6000_emit_prologue): Ditto.
883         (rs6000_output_mi_thunk): Ditto.
884
885         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
886         size is 64 bits if we can use 64-bit registers.
887
888 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
889
890         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
891         symbols.
892
893         From Jie Zhang <jie.zhang@analog.com>:
894         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
895         save FP and RETS with saveall attribute.
896         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
897         with saveall attribute.
898
899         * config/bfin/bfin.c (bfin_expand_builtin,
900         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
901         operands.
902
903         From Jie Zhang <jie.zhang@analog.com>:
904         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
905         before use in two places.
906         * config/bfin/bfin.md (AREG): Define mode iterator.
907         (reload_in, reload_out): Use mode iterator AREG.
908
909 2009-09-14  Richard Guenther  <rguenther@suse.de>
910
911         PR middle-end/41350
912         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
913         EH personality path.
914
915 2009-09-13  Richard Guenther  <rguenther@suse.de>
916             Rafael Avila de Espindola  <espindola@google.com>
917
918         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
919         (LANG_HOOKS_EH_PERSONALITY): Likewise.
920         (LANG_HOOKS_INITIALIZER): Adjust.
921         (lhd_pass_through_t): Declare.
922         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
923         eh_personality.
924         * langhooks.c (lhd_pass_through_t): New function.
925         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
926         dwarf2out_begin_prologue): Use personality from current_function_decl.
927         * expr.h (get_personality_function): Declare.
928         * expr.c (get_personality_function): New function.
929         (build_personality_function): Likewise.
930         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
931         (eh_personality_libfunc): Remove.
932         * optabs.c (build_libfunc_function): New function split out from ...
933         (init_one_libfunc): ... here.
934         * tree.h (DECL_FUNCTION_PERSONALITY): New.
935         (tree_function_decl): Add personality.
936         (lhd_gcc_personality): Declare.
937         (build_personality_function): Likewise.
938         * tree.c (gcc_eh_personality_decl): New.
939         (lhd_gcc_personality): New function.
940         * except.h (lang_eh_runtime_type): Remove.
941         (enum eh_personality_kind): New.
942         (build_personality_function): Declare.
943         (function_needs_eh_personality): Declare.
944         * except.c (lang_eh_runtime_type): Remove.
945         (function_needs_eh_personality): New function.
946         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
947         (sjlj_emit_function_enter, output_function_exception_table):
948         Use personality from current_function_decl.
949         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
950         * tree-inline.c (tree_can_inline_p): Do not inline across different
951         EH personalities.
952         (expand_call_inline): Likewise.  Adjust the callers EH personality.
953         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
954         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
955         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
956         (c-parser.o): Likewise
957         * c-tree.h (c_eh_initialized_p): Remove.
958         (c_maybe_initialize_eh): Likewise.
959         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
960         (finish_decl): Don't call c_maybe_initialize_eh.
961         (c_eh_initialized_p): Remove.
962         (c_maybe_initialize_eh): Likewise.
963         * c-parser.c (c_parser_omp_construct): Likewise.
964         (c_parse_file): Initialize exception handling.
965
966 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
967
968         * config.gcc (tm_file): Remove i386/biarch32.h
969         for i?86-w64-mingw* case.
970         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
971         support.
972         * config.host: Set for x64 mingw the option
973         use_long_long_for_widest_fast_int to yes.
974
975 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
976
977         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
978         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
979         (dbxout_begin_function): Likewise.
980         * final.c (dwarf2_debug_info_emitted_p): New predicate.
981         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
982         set on the function.
983         (final_end_function): Likewise.
984         (final_scan_insn): Likewise.
985         (rest_of_handle_final): Likewise.
986         * varasm.c (assemble_start_function): Likewise.
987         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
988
989 2009-09-12  Jason Merrill  <jason@redhat.com>
990
991         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
992         * opts.c (common_handle_option): constify.
993
994 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
995
996         * doc/install.texi (avr): Remove obsolete reference site.
997
998 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
999         
1000         * doc/install.texi (Binaries): Adjust AIX link.
1001
1002 2009-09-12  Akim Demaille  <demaille@gostai.com>
1003
1004         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1005         Use an imperative sentence.
1006
1007 2009-09-11  Richard Henderson  <rth@redhat.com>
1008
1009         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1010         structure-name and has-tree-operands arguments; update all entries.
1011         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1012         update all entries.
1013         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1014         (gsstruct_code_size): New.
1015         (gss_for_code_): New.
1016         (gss_for_code): Remove.
1017         (gimple_size): Rewrite using gsstruct_code_size.
1018         (gimple_statement_structure): Move to gimple.h.
1019         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1020         (gss_for_code, gimple_statement_structure): New.
1021         (gimple_ops): Use new arrays; tidy.
1022
1023 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1024
1025         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1026         operand to be a PLUS expression.
1027         * config/pa/pa.c (pa_secondary_reload): Likewise.
1028
1029 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
1030
1031         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1032
1033         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1034         XEXP (in_rtx, 8).
1035
1036 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1037
1038         From Jie Zhang <jie.zhang@analog.com>:
1039         * doc/extend.texi (node Function Attributes): Document l2
1040         function attribute.
1041         (node Blackfin Variable Attributes): Document l2 variable attributes.
1042
1043 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
1044
1045         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1046         to match the system compiler's configuration at inflection point.
1047         Add comment to remark a remaining difference with system compiler.
1048
1049         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1050         * configure: Regenerate.
1051
1052 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1053
1054         From Jie Zhang <jie.zhang@analog.com>:
1055         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1056         (bfin_handle_l2_attribute): New.
1057         (bfin_attribute_table): Add l2 attribute.
1058
1059 2009-09-11  Michael Matz  <matz@suse.de>
1060
1061         PR middle-end/41275
1062         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1063         on the local_decls list.
1064
1065 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
1066
1067         PR debug/41276
1068         PR debug/41307
1069         * cselib.c (cselib_expand_value_rtx_cb): Document callback
1070         interface.
1071         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
1072         for VALUEs, to implement the documented interface.
1073         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1074         Adjust for VALUEs and anything else, to implement the
1075         documented interface.
1076
1077 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
1078
1079         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1080         with actual SPE/paired vector modes before using 64-bit alignment.
1081         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1082
1083 2009-09-10  DJ Delorie  <dj@redhat.com>
1084
1085         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1086         emitted.
1087
1088         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1089         * config/mep/mep.c (mep_legitimate_constant_p): New.
1090         * config/mep/mep-protos.h: Prototype it.
1091
1092 2009-09-10  Richard Henderson  <rth@redhat.com>
1093
1094         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1095
1096 2009-09-10  Jason Merrill  <jason@redhat.com>
1097
1098         * tree.c (chain_index): New fn.
1099         * tree.h: Declare it.
1100
1101 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1102
1103         * config/sol2-c.c (cmn_err_length_specs): Initialize
1104         scalar_identity_flag.
1105
1106 2009-09-10  Richard Henderson  <rth@redhat.com>
1107
1108         * tree.h (struct tree_decl_common): Move align member earlier;
1109         move label_decl_uid member ...
1110         (struct tree_label_decl): ... here.
1111         (LABEL_DECL_UID): Update to match.
1112
1113         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1114         not TDF_DETAILS.
1115
1116         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1117         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1118
1119         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1120         dest_prev if the edge is complex.
1121
1122         * tree-cfg.c (is_ctrl_stmt): Use a switch.
1123
1124         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1125         loop latch tests earlier.
1126
1127         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1128         before GIMPLE_RETURN, not after its predecessor; insert
1129         before GIMPLE_RESX.
1130
1131         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1132         gimple_seq_empty_p to test for no PHI nodes.
1133         * tree-cfg.c (split_critical_edges): Likewise.
1134
1135         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1136
1137 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1138
1139         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1140         introduced by the VTA branch merge.
1141
1142 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1143
1144         * ira-conflicts.c: Use fputs or putc instead of fprintf
1145         where appropriate.
1146         * cfg.c: Ditto.
1147         * toplev.c: Ditto.
1148         * tree-switch-conversion.c: Ditto.
1149
1150 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1151
1152         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1153         introduced by the VTA branch merge.
1154
1155 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1156
1157         Revert:
1158         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1159
1160         PR rtl-optimization/39779
1161         * expr.c (convert_modes): Return when mode == oldmode after
1162         CONST_INTs are processed.
1163
1164 2009-09-10  Nick Clifton  <nickc@redhat.com>
1165
1166         * config/mep/mep.c (mep_encode_section_info): Copy weakness
1167         attribute and referring decl when creating renamed symbol.
1168
1169 2009-09-10  Richard Guenther  <rguenther@suse.de>
1170
1171         PR middle-end/41257
1172         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
1173         reachable nodes.
1174         (cgraph_finalize_compilation_unit): Compute reachability
1175         before emitting thunks.  Properly process aliases before
1176         possibly removing unreachable nodes.
1177
1178 2009-09-10  Richard Guenther  <rguenther@suse.de>
1179
1180         PR middle-end/41254
1181         * tree.c (struct free_lang_data_d): Add worklist member.
1182         (find_decls_types_r): Push onto the worklist instead of recursing.
1183         Handle TREE_BINFOs properly.
1184         (find_decls_types): New function wrapped around find_decls_types_r
1185         to process the worklist.
1186         (find_decls_types_in_eh_region): Use it.
1187         (find_decls_types_in_node): Likewise.
1188         (find_decls_types_in_var): Likewise.
1189         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
1190         * tree.h (RECORD_OR_UNION_TYPE_P): New.
1191         (AGGREGATE_TYPE_P): Adjust.
1192
1193 2009-09-09  Jason Merrill  <jason@redhat.com>
1194
1195         * configure.ac: Check glibc version even if we have an in-tree
1196         assembler.
1197
1198 2009-09-09  Anthony Green  <green@moxielogic.com>
1199
1200         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
1201         the constant 0 when appropriate.
1202         * config/moxie/constraints.md: Add constraint O.
1203
1204         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
1205         to pass up to 6 32-bit argument values in registers.
1206         (moxie_function_arg): Ditto.
1207         (moxie_arg_partial_bytes): Ditto.
1208         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
1209         (REG_PARM_STACK_SPACE): Ditto.
1210         (FUNCTION_ARG_REGNO_P): Ditto.
1211
1212         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1213         instruction to allocate stack space.
1214
1215 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1216
1217         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
1218         unnecessarily stringent constraints.  Fix address
1219         calculation in the splitters.
1220
1221 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1222
1223         PR rtl-optimization/39779
1224         * expr.c (convert_modes): Return when mode == oldmode after
1225         CONST_INTs are processed.
1226
1227 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
1228
1229         PR/41315
1230         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
1231         (ix86_expand_prologue): Take frame.padding0 into logic of
1232         to_allocate checks.
1233         (ix86_expand_epilogue): Likewise.
1234
1235 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
1236
1237         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
1238         New variables.
1239         (SHLIB_LINK, SHLIB_INSTALL): Use them.
1240         * config/t-slibgcc-libgcc: New file.
1241         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
1242
1243 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1244
1245         PR tree-optimization/41089
1246         * tree-sra.c (find_var_candidates): Do not consider va_lists in
1247         early SRA.
1248
1249 2009-09-09  Richard Henderson  <rth@redhat.com>
1250
1251         * gimple.h (CASE_GIMPLE_OMP): New.
1252         (is_gimple_omp): Use it.
1253         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
1254         (verify_gimple_debug): Likewise.
1255
1256 2009-09-09  Richard Guenther  <rguenther@suse.de>
1257
1258         PR tree-optimization/41101
1259         * tree-ssa-pre.c (maximal_set): Remove.
1260         (compute_antic_aux): Treat the maximal set as implicitly all ones.
1261         Defer all blocks we didn't visit at least one successor.
1262         (add_to_exp_gen): Do not add to the maximal set.
1263         (make_values_for_phi): Likewise.
1264         (compute_avail): Likewise.
1265         (init_pre): Do not allocate the maximal set.
1266         (execute_pre): Do not dump it.
1267
1268 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1269
1270         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
1271         an SSA_NAME rather than a is_gimple_variable.
1272
1273 2009-09-09  Richard Guenther  <rguenther@suse.de>
1274
1275         PR middle-end/41317
1276         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
1277         code dealing with plain pointer bases.
1278         (maybe_fold_offset_to_reference): Likewise.
1279         (maybe_fold_stmt_addition): Adjust.
1280
1281 2009-09-09  Richard Guenther  <rguenther@suse.de>
1282
1283         * tree.c (free_lang_data_in_type): Do not free the type variant
1284         chains.
1285         (free_lang_data): Merge char_type_node with its properly signed
1286         variant.
1287         (pass_ipa_free): Collect after freeing language specific data.
1288
1289 2009-09-09  Michael Matz  <matz@suse.de>
1290
1291         PR middle-end/41268
1292         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
1293         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
1294         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
1295         to reflect reality.
1296
1297 2009-09-08  DJ Delorie  <dj@redhat.com>
1298
1299         * config/mep/mep.c (conversions[]): Add "ml" pattern.
1300
1301 2009-09-04  Jason Merrill  <jason@redhat.com>
1302
1303         * tree.c (tree_find_value): Remove.
1304         * tree.h: Remove prototype.
1305         * varasm.c (assemble_external): Use value_member instead.
1306
1307 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1308
1309         * toplev.c (process_options): Choose default debugging type when
1310         gtoggle enables debug info and type is unset.
1311
1312 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1313
1314         PR debug/41276
1315         PR debug/41307
1316         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
1317         invalid subreg.
1318
1319 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1320
1321         * configure: Rebuilt with modified libtool.m4.
1322
1323 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1324
1325         PR debug/41229
1326         PR debug/41291
1327         PR debug/41300
1328         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
1329
1330 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1331
1332         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
1333         (remove_statement): Likewise.
1334         (rewrite_use_nonlinear_expr): Adjust.
1335         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
1336         * tree-ssa.c (release_defs_bitset): ... this.  New.
1337         * tree-flow.h (release_defs_bitset): Declare.
1338
1339 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1340
1341         PR debug/41232
1342         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
1343         in the middle block.
1344
1345 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
1346
1347         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
1348         via intptr_t to long type.
1349         (insert_operand_rank): Cast long type via intptr_t to
1350         pointer type.
1351         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
1352         pointer to scalar.
1353         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
1354         from pointer to unsigned via uintptr_t.
1355
1356         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
1357         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
1358         and HAVE_INTPTR_T.
1359         * configure: Regenerated.
1360         * config.in: Regenerated
1361         * system.h (stdint.h): Add include.
1362         (inttypes.h): Likewise.
1363         * Makefile.in (aclocal): Add config/stdint.m4.
1364         * aclocal.m4: Regenerated.
1365
1366 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1367
1368         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
1369         variables.
1370         (note_np_check_stores): New function.
1371         (harmless_null_pointer_p): New function.
1372         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
1373         changed.  Take into account whether we're in the shadow of a condjump
1374         that tested NP_REG for NULL.
1375         Lose all code that tested for SEQUENCEs.
1376         (workaround_speculation): Avoid inserting NOPs for loads that are
1377         either always executed or a NULL pointer.
1378
1379 2009-09-08  Jan Hubicka  <jh@suse.cz>
1380
1381         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
1382         * params.def (early-inlining-insns): Likewise.
1383
1384 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
1385
1386         PR rtl-optimization/41239
1387         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
1388         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
1389         lists.
1390         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
1391         across calls, as the calls might not always return normally.
1392         (call_may_noreturn_p): New function.
1393         (deps_analyze_insn): Update last_function_call_may_noreturn list.
1394         (init_deps): Initialize it.
1395         (remove_from_deps): Also remove calls from
1396         last_function_call_may_noreturn list.
1397
1398 2009-09-07  Richard Henderson  <rth@redhat.com>
1399
1400         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
1401         more VR->OPERANDS than LHS operands.  Free LHS before returning.
1402
1403 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1404
1405         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
1406         (attr "addrtype"): New member "spreg".
1407         Use it if mem_spfp_address_operand is true for the address.
1408         (attr "type"): New entry "stall".
1409         (cpu_unit "load"): New.
1410         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
1411         "load".
1412         (insn_reservation "loadsp"): New.
1413         (insn_reservation "load_stall1"): New.
1414         (insn_reservation "load_stall3"): New.
1415         (stall): New insn.
1416         * config/bfin/predicates.md (const1_operand, const3_operand): New.
1417         (mem_p_address_operand): Exclude stack and frame pointer based
1418         addresses.
1419         (mem_spfp_address_operand): New; match them here.
1420         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
1421         (bfin_reorg): Call it if scheduling insns.
1422         (bfin_gen_bundles): Remove dummy insns created by
1423         add_sched_insns_for_speculation.
1424
1425         From Jie Zhang <jie.zhang@analog.com>:
1426         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
1427         bfin_si_revision, bfin_workarounds): Move these ...
1428         * config/bfin/bfin.h: ... here.
1429
1430         From Mike Frysinger  <michael.frysinger@analog.com>
1431         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
1432         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
1433         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
1434         bf547m, bf548m, and bf549m.
1435         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
1436         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
1437         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
1438         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
1439         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
1440         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
1441         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
1442         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
1443         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
1444         bf542m, bf544m, bf547m, bf548m, and bf549m.
1445
1446         From Jie Zhang <jie.zhang@analog.com>:
1447         * config/bfin/predicates.md (p_register_operand): New predicate.
1448         (dp_register_operand): New predicate.
1449         * config/bfin/bfin-protos.h (WA_05000074): Define.
1450         (ENABLE_WA_05000074): Define.
1451         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
1452         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
1453         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
1454         (define_attr addrtype): Allow load/store register to be P register.
1455         (define_attr storereg): New.
1456         (define_cpu_unit anomaly_05000074): New.
1457         (define_insn_reservation dsp32shiftimm): New.
1458         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
1459         (define_insn_reservation loadp): Cannot use slot2.
1460         (define_insn_reservation loadsp): Cannot use slot2.
1461         (define_insn_reservation storep): Cannot use slot2. Does not
1462         apply when working around 05000074.
1463         (define_insn_reservation storep_anomaly_05000074): New.
1464         (define_insn_reservation storei): Does not apply when working
1465         around 05000074.
1466         (define_insn_reservation storei_anomaly_05000074): New.
1467         (define_attr length): Add dsp32shiftimm case.
1468         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
1469         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
1470         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
1471         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
1472         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
1473
1474 2009-09-07  Martin Jambor  <mjambor@suse.cz>
1475
1476         PR middle-end/41282
1477         * tree-sra.c (create_artificial_child_access): Return NULL if
1478         build_ref_for_offset fails.
1479         (propagate_subacesses_accross_link): Allow build_ref_for_offset
1480         and create_artificial_child_access to fail.
1481
1482 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
1483
1484         PR c++/41214
1485         * unwind-dw2.c (uw_init_context_1): Mark noinline.
1486         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
1487         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
1488
1489 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1490
1491         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
1492         block, ensure it has an exit edge.  Emit a barrier after a jump.
1493
1494 2009-09-07  Nick Clifton  <nickc@redhat.com>
1495
1496         * gcc.c (this_is_linker_script): New variable.  Like
1497         this_is_library_file but for the %T constructor.
1498         (end_going_arg): If this_is_linker_script is set then locate the
1499         script and insert a --script switch before it
1500         (do_spec_2): Initialise this_is_linker_script.
1501         (do_spec_1): Likewise.  Handle %T construct.
1502         (eval_spec_function): Preserve this_is_linker_script.
1503         * doc/invoke.texi: Document %T construct in spec files.
1504         * config/m32c/m32c.h (LIB_SPEC): Use it.
1505
1506 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1507
1508         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
1509         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
1510         when volatile flag is set.
1511         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
1512
1513 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
1514
1515         PR bootstrap/41241
1516         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
1517         (combine_stack_adjustments_for_block): Allow insns between stack
1518         adjustments and stores with corresponding pre-(dec|inc)rement or
1519         pre-modify operation.
1520
1521 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
1522
1523         PR bootstrap/41241
1524         * combine-stack-adj.c (struct csa_memlist): Rename to...
1525         (struct csa_reflist): ... this.  Rename mem field to ref.
1526         (free_csa_memlist): Rename to...
1527         (free_csa_reflist): ... this.
1528         (record_one_stack_memref): Rename to...
1529         (record_one_stack_ref): ... this.  Handle also REG_P.
1530         (try_apply_stack_adjustment): Handle also REG_P.
1531         (struct record_stack_memrefs_data): Rename to...
1532         (struct record_stack_refs_data): ... this.  Rename memlist field to
1533         reflist.
1534         (record_stack_memrefs): Rename to...
1535         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
1536         subexpressions instead of failing when a MEM contains SP references.
1537         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
1538         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
1539
1540 2009-09-06  Richard Guenther  <rguenther@suse.de>
1541
1542         PR middle-end/41144
1543         * tree.c (build_array_type): Do not record types marked
1544         with structural equality in the canonical type hashtable.
1545
1546 2009-09-06  Richard Guenther  <rguenther@suse.de>
1547
1548         PR middle-end/41261
1549         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
1550
1551 2009-09-05  Richard Guenther  <rguenther@suse.de>
1552
1553         PR middle-end/41181
1554         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
1555
1556 2009-09-05  Richard Guenther  <rguenther@suse.de>
1557
1558         PR debug/41273
1559         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
1560
1561 2009-09-05  Richard Guenther  <rguenther@suse.de>
1562
1563         PR middle-end/41271
1564         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
1565         before comparing function argument types.
1566
1567 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1568
1569         PR target/41024
1570         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
1571         the assembler.
1572
1573 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1574
1575         Revert:
1576         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
1577
1578         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
1579         locators before emit_insn is called.
1580
1581 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1582
1583         PR bootstrap/41241
1584         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
1585         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
1586         (reginfo_init): Don't call allocate_reg_info.
1587
1588 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1589
1590         PR target/41262
1591         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
1592         NONDEBUG_INSN_P instead of INSN_P.
1593
1594 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1595
1596         PR debug/41225
1597         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
1598
1599 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1600
1601         PR target/41252
1602         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
1603         pattern of the split.
1604
1605 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1606
1607         * toplev.c (process_options): Move setter of flag_var_tracking
1608         before other tests that depend on it.  Move down setter of
1609         flag_rename_registers.  Don't enable var-tracking-assignments
1610         by default if selective scheduling is enabled.  Warn if both
1611         are enabled.
1612
1613 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1614
1615         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
1616         comment.  Use switch statement to catch overlaps between rtx
1617         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
1618         (IS_DECL_CODE): ... here. Remove.
1619         (check_value_is_not_decl): Remove.
1620         (dv_from_decl, dv_from_value): Check after conversion.
1621
1622 2009-09-04  Richard Guenther  <rguenther@suse.de>
1623
1624         PR middle-end/41257
1625         * (cgraph_finalize_compilation_unit): Move finalizing aliases
1626         after emitting tunks.  Move emitting thunks and ctors from ...
1627         (cgraph_optimize): ... here.  Remove redundant
1628         cgraph_analyze_functions.
1629         * varasm.c (find_decl_and_mark_needed): Remove no longer
1630         necessary check.
1631         (finish_aliases_1): Adjust check for thunk aliases.
1632
1633 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
1634
1635         * config/arm/arm.md (ctzsi2): Added braces
1636         to avoid warning that broke booststrap.
1637
1638 2009-09-04  Martin Jambor  <mjambor@suse.cz>
1639
1640         PR tree-optimization/41112
1641         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
1642         handle variable-bounded arrays.
1643         (expr_with_var_bounded_array_refs_p): New function.
1644         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
1645
1646 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
1647
1648         * config/s390/2097.md: Removed two incorrect bypasses.
1649         (z10_fsimpdf): Fixed latency.
1650         (z10_fhex): New insn_reservation.
1651         (z10_floaddf): Fixed latency.
1652         (z10_floadsf): Fixed latency.
1653         (z10_ftrunctf): Fixed latency.
1654         (z10_ftruncdf): Fixed latency.
1655         * config/s390/s390.c (z10_cost): Fixed values.
1656         (s390_adjust_priority): Added z10 path.
1657         * config/s390/s390.md (type): Added fhex.
1658         (*mov<mode>_64dfp): Updated type attribute.
1659         (*mov<mode>_64): Updated type attribute.
1660         (*mov<mode>_31): Updated type attribute.
1661         (*mov<mode>"): Likewise.
1662         * config/s390/2084.md (x_fsimpdf): Updated condition.
1663
1664 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
1665
1666         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
1667         RTXs in the predicate for operand 1.
1668
1669 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
1670
1671         * config/arm/arm.md (UNSPEC_RBIT): New constant.
1672         (rbitsi2): New insn.
1673         (ctzsi2): New expand.
1674         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
1675
1676 2009-09-03  Martin Jambor  <mjambor@suse.cz>
1677
1678         * tree-sra.c (duplicate_expr_for_different_base): Removed.
1679         (create_artificial_child_access): Use build_ref_for_offset instead
1680         of duplicate_expr_for_different_base.
1681         (propagate_subacesses_accross_link): Likewise.
1682
1683 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
1684
1685         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
1686         of INSN_P.
1687         (mips16e_collect_argument_saves): Skip debug instructions.
1688         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
1689         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
1690         (r10k_insert_cache_barriers): Likewise.
1691         (mips_reorg_process_insns): Likewise.
1692
1693 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1694
1695         PR bootstrap/41241
1696         * ira.c (update_equiv_reg): Remove check on class likely spill.
1697
1698 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
1699
1700         PR debug/41236
1701         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
1702         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
1703         it or SUBREG.
1704
1705         PR debug/41238
1706         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
1707         the stack slot if it is passed by invisible reference.
1708         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
1709         by invisible reference.
1710
1711 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1712
1713         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
1714         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
1715         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
1716         0.
1717         * config/bfin/sync.md: New file.
1718         * config/bfin/bfin.md: Include it.
1719         (UNSPEC_ATOMIC): New.
1720         (UNSPEC_ONES): Provide a unique number.
1721
1722         From Jie Zhang <jie.zhang@analog.com>:
1723         * config/bfin/bfin.c (ret_regs): New.
1724         (must_save_fp_p): Don't return true because of frame_pointer_needed.
1725         (must_save_rets_p): New.
1726         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
1727         current_function_is_leaf.
1728         (do_link): Likewise.
1729         (do_unlink): Likewise.
1730         (expand_interrupt_handler_prologue): Use ret_regs array.
1731         (expand_interrupt_handler_epilogue): Use ret_regs array and
1732         pass return register to gen_return_internal.
1733         (bfin_expand_epilogue): Pass return register to
1734         gen_return_internal.
1735         (bfin_expand_call): Explicitly clobber RETS.
1736         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
1737         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
1738         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
1739         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
1740         RETS.
1741         (return_internal): Take a reg rtx rather than the register number.
1742
1743 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
1744
1745         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
1746         when comparing against estimated_loop_iterations_int return.
1747
1748 2009-09-03  Richard Guenther  <rguenther@suse.de>
1749
1750         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
1751         eh_personality_libfunc.
1752
1753 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1754
1755         * tree-parloops.c (separate_decls_in_region): Add space.
1756
1757 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1758
1759         * tree-parloops.c (separate_decls_in_region): Change the condition
1760         checking if there are reductions in the loop.
1761
1762 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1763
1764         PR tree-optimization/38275
1765         * tree-parloops.c (parallelize_loops): Replace profitability condition
1766         for expected number of iterations.
1767
1768 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
1769
1770         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
1771         (bootstrap-debug): Explain conditions in which it becomes default.
1772         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
1773         make it add to it.
1774
1775 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
1776
1777         * doc/invoke.texi (Optimize Options): Move
1778         -finline-small-functions to the -O2 list.
1779
1780 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
1781
1782         * toplev.c (process_options): Enable var-tracking-assignments
1783         by default if var-tracking is enabled.
1784
1785 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
1786
1787         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
1788         barrier.
1789         * emit-rtl.c (prev_nonnote_insn_bb): New function.
1790         * rtl.h (prev_nonnote_insn_bb): Declare it.
1791
1792 2009-09-03  Diego Novillo  <dnovillo@google.com>
1793
1794         * cgraph.c (cgraph_node_for_decl): New.
1795         * cgraph.h (cgraph_node_for_decl): Declare.
1796         * tree.c (host_integerp): Return 0 if T is NULL.
1797
1798 2009-09-03  Diego Novillo  <dnovillo@google.com>
1799
1800         * tree.h (struct alias_pair): Move from varasm.c.
1801         (alias_pairs): Likewise.
1802         (TYPE_MAXVAL): Define.
1803         (TYPE_MINVAL): Define.
1804         (iterative_hash_host_wide_int): Declare.
1805         (remove_unreachable_alias_pairs): Declare.
1806         * tree-pass.h (pass_ipa_free_lang_data): Declare.
1807         * diagnostic.c (default_diagnostic_starter): Make extern.
1808         (default_diagnostic_finalizer): Make extern.
1809         * diagnostic.h (default_diagnostic_starter): Declare.
1810         (default_diagnostic_finalizer): Declare.
1811         (default_tree_printer): Declare.
1812         * toplev.c (default_tree_printer): Make extern.
1813
1814 2009-09-03  Richard Guenther  <rguenther@suse.de>
1815             Diego Novillo  <dnovillo@google.com>
1816
1817         * cgraph.c (cgraph_add_new_function): Remove gimplification.
1818         * cgraphunit.c (cgraph_expand_function): Do not emit
1819         associated thunks from here.
1820         (cgraph_emit_thunks): New.
1821         (cgraph_optimize): Call it.
1822         Return if any IPA pass finds an error.
1823         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
1824         by thunks.
1825
1826 2009-09-03  Simon Baldwin  <simonb@google.com>
1827             Rafael Espindola  <espindola@google.com>
1828             Richard Guenther  <rguenther@suse.de>
1829             Doug Kwan  <dougkwan@google.com>
1830             Diego Novillo  <dnovillo@google.com>
1831
1832         * tree.c: Include tree-pass.h, langhooks-def.h,
1833         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
1834         (free_lang_data_in_type): New.
1835         (need_assembler_name_p): New.
1836         (free_lang_data_in_block): New.
1837         (free_lang_data_in_decl): New.
1838         (struct free_lang_data_d): New.
1839         (add_tree_to_fld_list): New.
1840         (find_decls_types_r): New.
1841         (get_eh_types_for_runtime): New.
1842         (find_decls_types_in_eh_region): New.
1843         (find_decls_types_in_node): New.
1844         (find_decls_types_in_var): New.
1845         (free_lang_data_in_cgraph): New.
1846         (free_lang_data): New.
1847         (gate_free_lang_data): New.
1848         (pass_ipa_free_lang_data): New.
1849
1850 2009-09-03  Diego Novillo  <dnovillo@google.com>
1851
1852         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
1853         * langhooks.h (struct lang_hooks): Add field free_lang_data.
1854         (lang_hooks): Remove const qualifier.
1855         * ipa.c (cgraph_remove_unreachable_nodes): Call
1856         remove_unreachable_alias_pairs.
1857         * except.c (add_type_for_runtime): Check if TYPE has
1858         already been converted.
1859         (lookup_type_for_runtime): Likewise.
1860         (check_handled): Handle converted types.
1861         * varasm.c (remove_unreachable_alias_pairs): New.
1862         * gimple.c: Include demangle.h.
1863         (gimple_decl_printable_name): New.
1864         (gimple_fold_obj_type_ref): New.
1865         * gimple.h (gimple_decl_printable_name): Declare.
1866         (gimple_fold_obj_type_ref): Declare.
1867         * passes.c (init_optimization_passes): Add pass
1868         pass_ipa_free_lang_data.
1869         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
1870         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
1871
1872 2009-09-03  Diego Novillo  <dnovillo@google.com>
1873
1874         * c-lang.c (lang_hooks): Remove const qualifier.
1875
1876 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
1877
1878         * doc/install.texi (*-*-freebsd*): Update target information.
1879
1880 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
1881
1882         * hard-reg-set.h (call_fixed_regs): Remove.
1883         * reginfo.c (call_fixed_regs): Remove.
1884         (init_reg_sets_1): Remove initialization of call_fixed_regs.
1885         (globalize_reg): Don't use call_fixed_regs.
1886         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
1887         call_fixed_regs.
1888
1889 2009-09-01  Michael Matz  <matz@suse.de>
1890
1891         * expr.h (emit_storent_insn, expand_expr_real_1,
1892         expand_expr_real_2): Declare.
1893         * expr.c (emit_storent_insn, expand_expr_real_1,
1894         expand_expr_real_2): Export.
1895         (store_expr): Setting and evaluating dont_return_target is useless.
1896         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
1897         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
1898         * except.c (expand_resx_expr): Rename to ...
1899         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
1900         * except.h (expand_resx_stmt): Declare.
1901         * stmt.c: Add include gimple.h
1902         (expand_asm_expr): Rename to ...
1903         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
1904         (expand_case): Rewrite to take gimple statement.
1905         * tree.h (expand_asm_stmt): Declare.
1906         (expand_case): Change prototype.
1907         * Makefile.in (stmt.o): Depend on gimple.h.
1908         * builtins.c (expand_builtin_synchronize): Build gimple asm
1909         statement, not an ASM_EXPR.
1910         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
1911         gimple_to_tree, release_stmt_tree): Remove.
1912         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
1913         ggc_free, but hold comparison code and operands separately.
1914         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
1915         (expand_call_stmt, expand_gimple_stmt_1,
1916         expand_gimple_stmt): New helpers.
1917         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
1918         release_stmt_tree.  Call expand_gimple_stmt instead.
1919         (expand_gimple_basic_block): Ditto.
1920
1921         * calls.c (emit_call_1): Don't look at EH regions here, make
1922         fntree parameter useless.
1923         (expand_call): New local rettype for TREE_TYPE(exp), use it
1924         throughout.  Remove local p, use addr instead.
1925         Don't look at EH regions here.
1926
1927 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
1928
1929         * doc/invoke.texi (-fsched-pressure): Document it.
1930         (-fsched-reg-pressure-heuristic): Remove it.
1931
1932         * reload.c (ira.h): Include.
1933         (find_reloads): Add choosing reload on number of small spilled
1934         classes.
1935
1936         * haifa-sched.c (ira.h): Include.
1937         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
1938         saved_reg_pressure, curr_reg_live, saved_reg_live,
1939         region_ref_regs): New variables.
1940         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
1941         initiate_reg_pressure_info, setup_ref_regs,
1942         initiate_bb_reg_pressure_info, save_reg_pressure,
1943         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
1944         functions.
1945         (setup_insn_reg_pressure_info): New function.
1946         (rank_for_schedule): Add pressure checking and insn issue time.
1947         Remove comparison of insn reg weights.
1948         (ready_sort): Set insn reg pressure info.
1949         (update_register_pressure, setup_insn_max_reg_pressure,
1950         update_reg_and_insn_max_reg_pressure,
1951         sched_setup_bb_reg_pressure_info): New functions.
1952         (schedule_insn): Add code for printing and updating reg pressure info.
1953         (find_set_reg_weight, find_insn_reg_weight): Remove.
1954         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
1955         (debug_ready_list): Print reg pressure info.
1956         (schedule_block): Ditto.  Check insn issue time.
1957         (sched_init): Set up sched_pressure_p.  Allocate and set up some
1958         reg pressure related info.
1959         (sched_finish): Free some reg pressure related info.
1960         (fix_tick_ready): Make insn always ready if pressure_p.
1961         (init_h_i_d): Don't call find_insn_reg_weight.
1962         (haifa_finish_h_i_d): Free insn reg pressure info.
1963
1964         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
1965         ira_memory_move_cost, ira_class_hard_regs,
1966         ira_class_hard_regs_num, ira_no_alloc_regs,
1967         ira_available_class_regs, ira_reg_class_cover_size,
1968         ira_reg_class_cover, ira_class_translate): Move to ira.h.
1969
1970         * ira-lives.c (single_reg_class): Check mode to find how many
1971         registers are necessary for operand.
1972         (ira_implicitly_set_insn_hard_regs): New.
1973
1974         * common.opt (fsched-pressure): New options.
1975         (fsched-reg-pressure-heuristic): Remove.
1976
1977         * ira.c (setup_eliminable_regset): Rename to
1978         ira_setup_eliminable_regset.  Make it external.
1979         (expand_reg_info): Pass cover class to setup_reg_classes.
1980         (ira): Call resize_reg_info instead of allocate_reg_info.
1981
1982         * sched-deps.c: Include ira.h.
1983         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
1984         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
1985         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
1986         mark_insn_hard_regno_birth, mark_insn_reg_birth,
1987         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
1988         mark_insn_reg_store, mark_insn_reg_clobber,
1989         setup_insn_reg_pressure_info): New.
1990         (sched_analyze_1): Update implicit_reg_pending_uses.
1991         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
1992         Use them to create dependencies.  Set insn reg uses and pressure
1993         info.  Process reg_pending_uses in one place.
1994         (free_deps): Free implicit sets.
1995         (remove_from_deps): Remove implicit sets if necessary.  Check
1996         implicit sets when clearing reg_last_in_use.
1997         (init_deps_global): Clear implicit_reg_pending_clobbers and
1998         implicit_reg_pending_uses.
1999
2000         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2001         ira_memory_move_cost, ira_class_hard_regs,
2002         ira_class_hard_regs_num, ira_no_alloc_regs,
2003         ira_available_class_regs, ira_reg_class_cover_size,
2004         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2005         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2006         ira_implicitly_set_insn_hard_regs): New prototypes.
2007
2008         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2009         cost_elements_num): New variables.
2010         (allocno_costs, total_costs): Rename to costs and
2011         total_allocno_costs.
2012         (COSTS_OF_ALLOCNO): Rename to COSTS.
2013         (allocno_pref): Rename to pref.
2014         (allocno_pref_buffer): Rename to pref_buffer.
2015         (common_classes): Rename to regno_cover_class.
2016         (COST_INDEX): New.
2017         (record_reg_classes): Set allocno attributes only if allocno_p.
2018         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
2019         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2020         and COSTS_OF_ALLOCNO.
2021         (print_costs): Rename to print_allocno_costs.
2022         (print_pseudo_costs): New.
2023         (process_bb_node_for_costs): Split into 2 functions with new
2024         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
2025         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
2026         new parameter dump_file.  Use cost_elements_num instead of
2027         ira_allocnos_num.  Make one iteration if preferred classes were
2028         already calculated for scheduler.  Make 2 versions of code
2029         depending on allocno_p.
2030         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
2031         regno_cover_class and COSTS instead of common_classes and
2032         COSTS_OF_ALLOCNO.
2033         (init_costs, finish_costs): New.
2034         (ira_costs): Set up allocno_p and cost_elements_num.  Call
2035         init_costs and finish_costs.
2036         (ira_set_pseudo_classes): New.
2037
2038         * rtl.h (allocate_reg_info): Remove.
2039         (resize_reg_info): Change return type.
2040         (reg_cover_class): New.
2041         (setup_reg_classes): Add new parameter.
2042
2043         * sched-int.h (struct deps_reg): New member implicit_sets.
2044         (sched_pressure_p, sched_regno_cover_class): New external definitions.
2045         (INCREASE_BITS): New macro.
2046         (struct reg_pressure_data, struct reg_use_data): New.
2047         (struct _haifa_insn_data): Remove reg_weight.  Add members
2048         reg_pressure, reg_use_list, reg_set_list, and
2049         reg_pressure_excess_cost_change.
2050         (struct deps): New member implicit_sets.
2051         (pressure_p): New variable.
2052         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2053         (struct reg_pressure_data, struct reg_use_data): New.
2054         (INSN_REG_WEIGHT): Remove.
2055         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2056         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2057         (sched_init_region_reg_pressure_info,
2058         sched_setup_bb_reg_pressure_info): New prototypes.
2059
2060         * reginfo.c (struct reg_pref): New member coverclass.
2061         (reg_cover_class): New function.
2062         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2063         (reg_info_size): New variable.
2064         (allocate_reg_info): Make static.  Setup reg_info_size.
2065         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
2066         (setup_reg_classes): Add a new parameter.  Setup cover class too.
2067
2068         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2069         the dependencies.
2070
2071         * sched-rgn.c (deps_join): Set up implicit_sets.
2072         (schedule_region): Set up region and basic blocks pressure
2073         relative info.
2074
2075         * passes.c (init_optimization_passes): Move
2076         pass_subregs_of_mode_init before pass_sched.
2077
2078 2009-09-02  Martin Jambor  <mjambor@suse.cz>
2079
2080         * tree-sra.c (struct access): New field grp_hint.
2081         (dump_access): Dump grp_hint.
2082         (sort_and_splice_var_accesses): Set grp_hint if a group is read
2083         multiple times.
2084         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2085         those which have been specifically read and somehow written to.
2086         (propagate_subacesses_accross_link): Set grp_hint of right child and
2087         also possibly of the left child.
2088
2089 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
2090
2091         * tree-object-size.c (addr_object_size): Always use object_size_type
2092         0 or 2 when determining the pointer pointed object size.
2093
2094 2009-09-02  Richard Guenther  <rguenther@suse.de>
2095
2096         Revert
2097         2009-08-31  Richard Guenther  <rguenther@suse.de>
2098
2099         * builtins.c (fold_builtin_memory_op): Use the alias oracle
2100         to query if the memory regions for memmove overlap.
2101         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2102         asserts on pointers, instead deal with odd trees.
2103         (ptr_derefs_may_alias_p): Likewise.
2104         (refs_may_alias_p_1): Constructor bases also never alias.
2105
2106 2009-08-01  Christian Bruel  <christian.bruel@st.com>
2107
2108         Revert:
2109         2009-07-31  Christian Bruel  <christian.bruel@st.com>
2110         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2111
2112 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
2113
2114         * doc/invoke.texi (-fvar-tracking-assignments): New.
2115         (-fvar-tracking-assignments-toggle): New.
2116         (-fdump-final-insns=file): Mark filename as optional.
2117         (--param min-nondebug-insn-uid): New.
2118         (-gdwarf-@{version}): Mention version 4.
2119         * opts.c (common_handle_option): Accept it.
2120         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2121         * regrename.c (regrename_optimize): Drop last.  Don't count debug
2122         insns as uses.  Don't reject change because of debug insn.
2123         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
2124         from the chain starter, and check for inexact matches in DEBUG_INSNS.
2125         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2126         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2127         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2128         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2129         * doc/gimple.texi (is_gimple_debug): New.
2130         (gimple_debug_bind_p): New.
2131         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2132         * doc/install.texi (bootstrap-debug): More details.
2133         (bootstrap-debug-big, bootstrap-debug-lean): Document.
2134         (bootstrap-debug-lib): More details.
2135         (bootstrap-debug-ckovw): Update.
2136         (bootstrap-time): New.
2137         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2138         (insert_phi_nodes_for): Insert debug stmts.
2139         (rewrite_stmt): Take iterator.  Insert debug stmts.
2140         (rewrite_enter_block): Adjust.
2141         (maybe_replace_use_in_debug_stmt): New.
2142         (rewrite_update_stmt): Use it.
2143         (mark_use_interesting): Return early for debug stmts.
2144         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2145         stmts before replacing stmt.
2146         (move_computations_stmt): Likewise.
2147         * ira-conflicts.c (add_copies): Skip debug insns.
2148         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2149         (regstat_bb_compute_ri): Skip debug insns.
2150         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2151         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2152         check_loop_closed_ssa_stmt): Skip debug stmts.
2153         * tree-tailcall.c (find_tail_calls): Likewise.
2154         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2155         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
2156         (build_var_debug_value_stat): Declare.
2157         (build_var_debug_value): Define.
2158         (target_for_debug_bind): Declare.
2159         * reload.c (find_equiv_reg): Skip debug insns.
2160         * rtlanal.c (reg_used_between_p): Skip debug insns.
2161         (side_effects_p): Likewise.
2162         (canonicalize_condition): Likewise.
2163         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
2164         insns never depend on debug insns.
2165         (create_ddg_dep_no_link): Likewise.
2166         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
2167         Don't add inter-loop dependencies for debug insns.
2168         (build_intra_loop_deps): Likewise.
2169         (create_ddg): Count debug insns.
2170         * ddg.h (struct ddg::num_debug): New.
2171         (num_backargs): Pair up with previous int field.
2172         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
2173         -fcompare-debug-second.
2174         * final.c (get_attr_length_1): Skip debug insns.
2175         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
2176         * gcc.c (invoke_as): Call compare-debug-dump-opt.
2177         (driver_self_specs): Map -fdump-final-insns to
2178         -fdump-final-insns=..
2179         (get_local_tick): New.
2180         (compare_debug_dump_opt_spec_function): Test for . argument and
2181         compute output name.  Compute temp output spec without flag name.
2182         Compute -frandom-seed.
2183         (OPT): Undef after use.
2184         * cfgloopanal.c (num_loop_insns): Skip debug insns.
2185         (average_num_loop_insns): Likewise.
2186         * params.h (MIN_NONDEBUG_INSN_UID): New.
2187         * gimple.def (GIMPLE_DEBUG): New.
2188         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
2189         * auto-inc-dec.c (merge_in_block): Skip debug insns.
2190         (merge_in_block): Fix whitespace.
2191         * toplev.c (flag_var_tracking): Update comment.
2192         (flag_var_tracking_assignments): New.
2193         (flag_var_tracking_assignments_toggle): New.
2194         (process_options): Don't open final insns dump file if we're not
2195         going to write to it.  Compute defaults for var_tracking.
2196         * df-scan.c (df_insn_rescan_debug_internal): New.
2197         (df_uses_record): Handle debug insns.
2198         * haifa-sched.c (ready): Initialize n_debug.
2199         (contributes_to_priority): Skip debug insns.
2200         (dep_list_size): New.
2201         (priority): Use it.
2202         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
2203         they're ready.  Disregard previous debug insns to make decisions.
2204         (queue_insn): Never queue debug insns.
2205         (ready_add, ready_remove_first, ready_remove): Count debug insns.
2206         (schedule_insn): Don't reject debug insns because of issue rate.
2207         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
2208         (queue_to_ready): Skip and discount debug insns.
2209         (choose_ready): Let debug insns through.
2210         (schedule_block): Check boundary debug insns.  Discount debug
2211         insns, schedule them early.  Adjust whitespace.
2212         (set_priorities): Check for boundary debug insns.
2213         (add_jump_dependencies): Use dep_list_size.
2214         (prev_non_location_insn): New.
2215         (check_cfg): Use it.
2216         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
2217         stmts.
2218         (remove_unused_ivs): Reset debug stmts.
2219         * modulo-sched.c (const_iteration_count): Skip debug insns.
2220         (res_MII): Discount debug insns.
2221         (loop_single_full_bb_p): Skip debug insns.
2222         (sms_schedule): Likewise.
2223         (sms_schedule_by_order): Likewise.
2224         (ps_has_conflicts): Likewise.
2225         * caller-save.c (refmarker_fn): New.
2226         (save_call_clobbered_regs): Replace regs with saved mem in
2227         debug insns.
2228         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
2229         Call refmarker_fn mark for hardregnos.
2230         (mark_reg_as_referenced): New.
2231         (replace_reg_with_saved_mem): New.
2232         * ipa-pure-const.c (check_stmt): Skip debug stmts.
2233         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
2234         searching back.
2235         (cse_extended_basic_block): Skip debug insns.
2236         (count_reg_usage): Likewise.
2237         (is_dead_reg): New, split out of...
2238         (set_live_p): ... here.
2239         (insn_live_p): Use it for debug insns.
2240         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
2241         (execute_optimize_stdarg): Likewise.
2242         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2243         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
2244         changes in debug stmts as changes.
2245         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
2246         (moveup_expr): Don't move across debug insns.  Don't move
2247         debug insn if it would create a bookkeeping block.
2248         (moveup_expr_cached): Don't use cache for debug insns that
2249         are heads of blocks.
2250         (compute_av_set_inside_bb): Skip debug insns.
2251         (sel_rank_for_schedule): Schedule debug insns first.  Remove
2252         dead code.
2253         (block_valid_for_bookkeeping_p); Support lax searches.
2254         (create_block_for_bookkeeping): Adjust block numbers when
2255         encountering debug-only blocks.
2256         (find_place_for_bookkeeping): Deal with debug-only blocks.
2257         (generate_bookkeeping_insn): Accept no place to insert.
2258         (remove_temp_moveop_nops): New argument full_tidying.
2259         (prepare_place_to_insert): Deal with debug insns.
2260         (advance_state_on_fence): Debug insns don't start cycles.
2261         (update_boundaries): Take fence as argument.  Deal with
2262         debug insns.
2263         (schedule_expr_on_boundary): No full_tidying on debug insns.
2264         (fill_insns): Deal with debug insns.
2265         (track_scheduled_insns_and_blocks): Don't count debug insns.
2266         (need_nop_to_preserve_insn_bb): New, split out of...
2267         (remove_insn_from_stream): ... this.
2268         (fur_orig_expr_not_found): Skip debug insns.
2269         * rtl.def (VALUE): Move up.
2270         (DEBUG_INSN): New.
2271         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
2272         (nearest_common_dominator_of_uses): Take debug_stmts argument.
2273         Set it if debug stmts are found.
2274         (statement_sink_location): Skip debug stmts.  Propagate
2275         moving defs into debug stmts.
2276         * ifcvt.c (first_active_insn): Skip debug insns.
2277         (last_active_insns): Likewise.
2278         (cond_exec_process_insns): Likewise.
2279         (noce_process_if_block): Likewise.
2280         (check_cond_move_block): Likewise.
2281         (cond_move_convert_if_block): Likewise.
2282         (block_jumps_and_fallthru_p): Likewise.
2283         (dead_or_predicable): Likewise.
2284         * dwarf2out.c (debug_str_hash_forced): New.
2285         (find_AT_string): Add comment.
2286         (gen_label_for_indirect_string): New.
2287         (get_debug_string_label): New.
2288         (AT_string_form): Use it.
2289         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
2290         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
2291         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
2292         several operations that cannot be represented with DWARF opcodes.
2293         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
2294         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
2295         (dwarf2out_var_location): Take during-call mark into account.
2296         (output_indirect_string): Update comment.  Output if there are
2297         label and references.
2298         (prune_indirect_string): New.
2299         (prune_unused_types): Call it if debug_str_hash_forced.
2300         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
2301         (dw_long_long_const): Remove.
2302         (struct dw_val_struct): Change val_long_long type to rtx.
2303         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
2304         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
2305         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
2306         component instead of HOST_BITS_PER_LONG.
2307         (output_loc_operands): Likewise.  For const8* assert
2308         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
2309         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
2310         rather than HOST_BITS_PER_LONG is >= 64.
2311         (add_AT_long_long): Remove val_hi and val_lo arguments, add
2312         val_const_double.
2313         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
2314         HOST_BITS_PER_LONG for dw_val_class_long_long.
2315         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
2316         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
2317         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
2318         DW_OP_stack_value.
2319         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
2320         Handle DW_OP_implicit_value.
2321         (extract_int): Move prototype earlier.
2322         (mem_loc_descriptor): For SUBREG punt if inner
2323         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
2324         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
2325         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
2326         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
2327         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
2328         instead of Pmode size.
2329         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
2330         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
2331         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
2332         (concat_loc_descriptor, concatn_loc_descriptor,
2333         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
2334         (add_location_or_const_value_attribute): Likewise.  For single
2335         location loc_lists attempt to use add_const_value_attribute
2336         for constant decls.  Add DW_AT_const_value even if
2337         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
2338         in its expression.
2339         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
2340         (control_flow_insn_p): Likewise.
2341         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
2342         (separate_decls_in_region_debug_bind): New.
2343         (separate_decls_in_region): Process debug bind stmts afterwards.
2344         * recog.c (verify_changes): Handle debug insns.
2345         (extract_insn): Likewise.
2346         (peephole2_optimize): Skip debug insns.
2347         * dse.c (scan_insn): Skip debug insns.
2348         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
2349         Pass it on.
2350         (setup_id_for_insn): Handle debug insns.
2351         (maybe_tidy_empty_bb): Adjust whitespace.
2352         (tidy_control_flow): Skip debug insns.
2353         (sel_remove_insn): Adjust for debug insns.
2354         (sel_estimate_number_of_insns): Skip debug insns.
2355         (create_insn_rtx_from_pattern): Handle debug insns.
2356         (create_copy_of_insn_rtx): Likewise.
2357         * sel-sched-.h (sel_bb_end): Declare.
2358         (sel_bb_empty_or_nop_p): New.
2359         (get_all_loop_exits): Use it.
2360         (_eligible_successor_edge_p): Likewise.
2361         (return_nop_to_pool): Adjust.
2362         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
2363         * ira-lives.c (process_bb_node_lives): Skip debug insns.
2364         * gimple-pretty-print.c (dump_gimple_debug): New.
2365         (dump_gimple_stmt): Use it.
2366         (dump_bb_header): Skip gimple debug stmts.
2367         * regmove.c (optimize_reg_copy_1): Discount debug insns.
2368         (fixup_match_2): Likewise.
2369         (regmove_backward_pass): Likewise.  Simplify combined
2370         replacement.  Handle debug insns.
2371         * function.c (instantiate_virtual_regs): Handle debug insns.
2372         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
2373         * print-rtl.h: Include cselib.h.
2374         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
2375         * df.h (df_inns_rescan_debug_internal): Declare.
2376         * gcse.c (alloc_hash_table): Estimate n_insns.
2377         (cprop_insn): Don't regard debug insns as changes.
2378         (bypass_conditional_jumps): Skip debug insns.
2379         (one_pre_gcse_pass): Adjust.
2380         (one_code_hoisting_pass): Likewise.
2381         (compute_ld_motion_mems): Skip debug insns.
2382         (one_cprop_pass): Adjust.
2383         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
2384         (if_convertible_stmt_p): Handle debug stmts.
2385         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
2386         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
2387         * ira-build.c (create_bb_allocnos): Skip debug insns.
2388         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
2389         (has_single_use): Likewise.
2390         (single_imm_use): Likewise.
2391         (num_imm_uses): Likewise.
2392         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
2393         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
2394         (create_outofssa_var_map): Likewise.
2395         * lower-subreg.c (adjust_decomposed_uses): New.
2396         (resolve_debug): New.
2397         (decompose_multiword_subregs): Use it.
2398         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
2399         * emit-rtl.c: Include params.h.
2400         (cur_debug_insn_uid): Define.
2401         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
2402         (copy_rtx_if_shared_1): Handle debug insns.
2403         (reset_used_flags): Likewise.
2404         (set_used_flags): LIkewise.
2405         (get_max_insn_count): New.
2406         (next_nondebug_insn): New.
2407         (prev_nondebug_insn): New.
2408         (make_debug_insn_raw): New.
2409         (emit_insn_before_noloc): Handle debug insns.
2410         (emit_jump_insn_before_noloc): Likewise.
2411         (emit_call_insn_before_noloc): Likewise.
2412         (emit_debug_insn_before_noloc): New.
2413         (emit_insn_after_noloc): Handle debug insns.
2414         (emit_jump_insn_after_noloc): Likewise.
2415         (emit_call_insn_after_noloc): Likewise.
2416         (emit_debug_insn_after_noloc): Likewise.
2417         (emit_insn_after): Take loc from earlier non-debug insn.
2418         (emit_jump_insn_after): Likewise.
2419         (emit_call_insn_after): Likewise.
2420         (emit_debug_insn_after_setloc): New.
2421         (emit_debug_insn_after): New.
2422         (emit_insn_before): Take loc from later non-debug insn.
2423         (emit_jump_insn_before): Likewise.
2424         (emit_call_insn_before): Likewise.
2425         (emit_debug_insn_before_setloc): New.
2426         (emit_debug_insn_before): New.
2427         (emit_insn): Handle debug insns.
2428         (emit_debug_insn): New.
2429         (emit_jump_insn): Handle debug insns.
2430         (emit_call_insn): Likewise.
2431         (emit): Likewise.
2432         (init_emit): Take min-nondebug-insn-uid into account.
2433         Initialize cur_debug_insn_uid.
2434         (emit_copy_of_insn_after): Handle debug insns.
2435         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
2436         location of single rhs in place.
2437         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
2438         (floor_sdiv_adjust): New.
2439         (cell_sdiv_adjust): New.
2440         (cell_udiv_adjust): New.
2441         (round_sdiv_adjust): New.
2442         (round_udiv_adjust): New.
2443         (wrap_constant): Moved from cselib.
2444         (unwrap_constant): New.
2445         (expand_debug_expr): New.
2446         (expand_debug_locations): New.
2447         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
2448         debug bind stmts.
2449         (gimple_expand_cfg): Expand debug locations.
2450         * cselib.c: Include tree-pass.h.
2451         (struct expand_value_data): New.
2452         (cselib_record_sets_hook): New.
2453         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
2454         (cselib_clear_table): Move, and implemnet in terms of...
2455         (cselib_reset_table_with_next_value): ... this.
2456         (cselib_get_next_unknown_value): New.
2457         (discard_useless_locs): Don't discard preserved values.
2458         (cselib_preserve_value): New.
2459         (cselib_preserved_value_p): New.
2460         (cselib_preserve_definitely): New.
2461         (cselib_clear_preserve): New.
2462         (cselib_preserve_only_values): New.
2463         (new_cselib_val): Take rtx argument.  Dump it in details.
2464         (cselib_lookup_mem): Adjust.
2465         (expand_loc): Take regs_active in struct.  Adjust.  Silence
2466         dumps unless details are requested.
2467         (cselib_expand_value_rtx_cb): New.
2468         (cselib_expand_value_rtx): Rename and reimplment in terms of...
2469         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
2470         without details.  Copy more subregs.  Try to resolve values
2471         using a callback.  Wrap constants.
2472         (cselib_subst_to_values): Adjust.
2473         (cselib_log_lookup): New.
2474         (cselib_lookup): Call it.
2475         (cselib_invalidate_regno): Don't count preserved values as useless.
2476         (cselib_invalidate_mem): Likewise.
2477         (cselib_record_set): Likewise.
2478         (struct set): Renamed to cselib_set, moved to cselib.h.
2479         (cselib_record_sets): Adjust.  Call hook.
2480         (cselib_process_insn): Reset table when it would be cleared.
2481         (dump_cselib_val): New.
2482         (dump_cselib_table): New.
2483         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
2484         (remove_forwarder_block): Support moving debug stmts.
2485         * cselib.h (cselib_record_sets_hook): Declare.
2486         (cselib_expand_callback): New type.
2487         (cselib_expand_value_rtx_cb): Declare.
2488         (cselib_reset_table_with_next_value): Declare.
2489         (cselib_get_next_unknown_value): Declare.
2490         (cselib_preserve_value): Declare.
2491         (cselib_preserved_value_p): Declare.
2492         (cselib_preserve_only_values): Declare.
2493         (dump_cselib_table): Declare.
2494         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
2495         (try_crossjump_to_edge): Likewise.
2496         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
2497         dominated blocks when debug stmts are present.
2498         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
2499         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
2500         (set_var_live_on_entry): Likewise.
2501         * loop-invariant.c (find_invariants_bb): Skip debug insns.
2502         * cfglayout.c (curr_location, last_location): Make static.
2503         (set_curr_insn_source_location): Don't avoid bouncing.
2504         (get_curr_insn_source_location): New.
2505         (get_curr_insn_block): New.
2506         (duplicate_insn_chain): Handle debug insns.
2507         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
2508         into debug stmts.
2509         * common.opt (fcompare-debug): Move to sort order.
2510         (fdump-unnumbered-links): Likewise.
2511         (fvar-tracking-assignments): New.
2512         (fvar-tracking-assignments-toggle): New.
2513         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
2514         because of debug stmts.
2515         (mark_stmt_if_obviously_necessary): Mark debug stmts.
2516         (eliminate_unnecessary_stmts): Walk dominated blocks before
2517         dominators.
2518         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
2519         * ira.c (memref_used_between_p): Skip debug insns.
2520         (update_equiv_regs): Likewise.
2521         * sched-deps.c (sd_lists_size): Accept empty list.
2522         (sd_init_insn): Mark debug insns.
2523         (sd_finish_insn): Unmark them.
2524         (sd_add_dep): Reject non-debug deps on debug insns.
2525         (fixup_sched_groups): Give debug insns group treatment.
2526         Skip debug insns.
2527         (sched_analyze_reg): Don't mark debug insns for sched before call.
2528         (sched_analyze_2): Handle debug insns.
2529         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
2530         insns.
2531         (deps_analyze_insn): Handle debug insns.
2532         (deps_start_bb): Skip debug insns.
2533         (init_deps): Initialize last_debug_insn.
2534         * tree-ssa.c (target_for_debug_bind): New.
2535         (find_released_ssa_name): New.
2536         (propagate_var_def_into_debug_stmts): New.
2537         (propagate_defs_into_debug_stmts): New.
2538         (verify_ssa): Skip debug bind stmts without values.
2539         (warn_uninialized_vars): Skip debug stmts.
2540         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
2541         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
2542         (rtx_equal_p): Likewise.
2543         * ira-costs.c (scan_one_insn): Skip debug insns.
2544         (process_bb_node_for_hard_reg_moves): Likewise.
2545         * rtl.h (DEBUG_INSN_P): New.
2546         (NONDEBUG_INSN_P): New.
2547         (MAY_HAVE_DEBUG_INSNS): New.
2548         (INSN_P): Accept debug insns.
2549         (RTX_FRAME_RELATED_P): Likewise.
2550         (INSN_DELETED_P): Likewise
2551         (PAT_VAR_LOCATION_DECL): New.
2552         (PAT_VAR_LOCATION_LOC): New.
2553         (PAT_VAR_OCATION_STATUS): New.
2554         (NOTE_VAR_LOCATION_DECL): Reimplement.
2555         (NOTE_VAR_LOCATION_LOC): Likewise.
2556         (NOTE_VAR_LOCATION_STATUS): Likewise.
2557         (INSN_VAR_LOCATION): New.
2558         (INSN_VAR_LOCATION_DECL): New.
2559         (INSN_VAR_LOCATION_LOC): New.
2560         (INSN_VAR_LOCATION_STATUS): New.
2561         (gen_rtx_UNKNOWN_VAR_LOC): New.
2562         (VAR_LOC_UNKNOWN_P): New.
2563         (NOTE_DURING_CALL_P): New.
2564         (SCHED_GROUP_P): Accept debug insns.
2565         (emit_debug_insn_before): Declare.
2566         (emit_debug_insn_before_noloc): Declare.
2567         (emit_debug_insn_beore_setloc): Declare.
2568         (emit_debug_insn_after): Declare.
2569         (emit_debug_insn_after_noloc): Declare.
2570         (emit_debug_insn_after_setloc): Declare.
2571         (emit_debug_insn): Declare.
2572         (make_debug_insn_raw): Declare.
2573         (prev_nondebug_insn): Declare.
2574         (next_nondebug_insn): Declare.
2575         (delegitimize_mem_from_attrs): Declare.
2576         (get_max_insn_count): Declare.
2577         (wrap_constant): Declare.
2578         (unwrap_constant): Declare.
2579         (get_curr_insn_source_location): Declare.
2580         (get_curr_insn_block): Declare.
2581         * tree-inline.c (insert_debug_decl_map): New.
2582         (processing_debug_stmt): New.
2583         (remap_decl): Don't create new mappings in debug stmts.
2584         (remap_gimple_op_r): Don't add references in debug stmts.
2585         (copy_tree_body_r): Likewise.
2586         (remap_gimple_stmt): Handle debug bind stmts.
2587         (copy_bb): Skip debug stmts.
2588         (copy_edges_for_bb): Likewise.
2589         (copy_debug_stmt): New.
2590         (copy_debug_stmts): New.
2591         (copy_body): Copy debug stmts at the end.
2592         (insert_init_debug_bind): New.
2593         (insert_init_stmt): Take id.  Skip and emit debug stmts.
2594         (setup_one_parameter): Remap variable earlier, register debug mapping.
2595         (estimate_num_insns): Skip debug stmts.
2596         (expand_call_inline): Preserve debug_map.
2597         (optimize_inline_calls): Check for no debug_stmts left-overs.
2598         (unsave_expr_now): Preserve debug_map.
2599         (copy_gimple_seq_and_replace_locals): Likewise.
2600         (tree_function_versioning): Check for no debug_stmts left-overs.
2601         Init and destroy debug_map as needed.  Split edges unconditionally.
2602         (build_duplicate_type): Init and destroy debug_map as needed.
2603         * tree-inline.h: Include gimple.h instead of pointer-set.h.
2604         (struct copy_body_data): Add debug_stmts and debug_map.
2605         * sched-int.h (struct ready_list): Add n_debug.
2606         (struct deps): Add last_debug_insn.
2607         (DEBUG_INSN_SCHED_P): New.
2608         (BOUNDARY_DEBUG_INSN_P): New.
2609         (SCHEDULE_DEBUG_INSN_P): New.
2610         (sd_iterator_cond): Accept empty list.
2611         * combine.c (create_log_links): Skip debug insns.
2612         (combine_instructions): Likewise.
2613         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
2614         return value is always unshared.
2615         (struct rtx_subst_pair): New.
2616         (auto_adjust_pair): New.
2617         (propagate_for_debug_subst): New.
2618         (propagate_for_debug): New.
2619         (try_combine): Skip debug insns.  Propagate removed defs into
2620         debug insns.
2621         (next_nonnote_nondebug_insn): New.
2622         (distribute_notes): Use it.  Skip debug insns.
2623         (distribute_links): Skip debug insns.
2624         * tree-outof-ssa.c (set_location_for_edge): Likewise.
2625         * resource.c (mark_target_live_regs): Likewise.
2626         * var-tracking.c: Include cselib.h and target.h.
2627         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
2628         MO_VAL_SET.
2629         (micro_operation_type_name): New.
2630         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
2631         (struct micro_operation_def): Update comments.
2632         (decl_or_value): New type.  Use instead of decls.
2633         (struct emit_note_data_def): Add vars.
2634         (struct attrs_def): Use decl_or_value.
2635         (struct variable_tracking_info_def): Add permp, flooded.
2636         (struct location_chain_def): Update comment.
2637         (struct variable_part_def): Use decl_or_value.
2638         (struct variable_def): Make var_part a variable length array.
2639         (valvar_pool): New.
2640         (scratch_regs): New.
2641         (cselib_hook_called): New.
2642         (dv_is_decl_p): New.
2643         (dv_is_value_p): New.
2644         (dv_as_decl): New.
2645         (dv_as_value): New.
2646         (dv_as_opaque): New.
2647         (dv_onepart_p): New.
2648         (dv_pool): New.
2649         (IS_DECL_CODE): New.
2650         (check_value_is_not_decl): New.
2651         (dv_from_decl): New.
2652         (dv_from_value): New.
2653         (dv_htab_hash): New.
2654         (variable_htab_hash): Use it.
2655         (variable_htab_eq): Support values.
2656         (variable_htab_free): Free from the right pool.
2657         (attrs_list_member, attrs_list_insert): Use decl_or_value.
2658         (attrs_list_union): Adjust.
2659         (attrs_list_mpdv_union): New.
2660         (tie_break_pointers): New.
2661         (canon_value_cmp): New.
2662         (unshare_variable): Return possibly-modified slot.
2663         (vars_copy_1): Adjust.
2664         (var_reg_decl_set): Adjust.  Split out of...
2665         (var_reg_set): ... this.
2666         (get_init_value): Adjust.
2667         (var_reg_delete_and_set): Adjust.
2668         (var_reg_delete): Adjust.
2669         (var_regno_delete): Adjust.
2670         (var_mem_decl_set): Split out of...
2671         (var_mem_set): ... this.
2672         (var_mem_delete_and_set): Adjust.
2673         (var_mem_delete): Adjust.
2674         (val_store): New.
2675         (val_reset): New.
2676         (val_resolve): New.
2677         (variable_union): Adjust.  Speed up merge of 1-part vars.
2678         (variable_canonicalize): Use unshared slot.
2679         (VALUED_RECURSED_INTO): New.
2680         (find_loc_in_1pdv): New.
2681         (struct dfset_merge): New.
2682         (insert_into_intersection): New.
2683         (intersect_loc_chains): New.
2684         (loc_cmp): New.
2685         (canonicalize_loc_order_check): New.
2686         (canonicalize_values_mark): New.
2687         (canonicalize_values_star): New.
2688         (variable_merge_over_cur): New.
2689         (variable_merge_over_src): New.
2690         (dataflow_set_merge): New.
2691         (dataflow_set_equiv_regs): New.
2692         (remove_duplicate_values): New.
2693         (struct dfset_post_merge): New.
2694         (variable_post_merge_new_vals): New.
2695         (variable_post_merge_perm_vals): New.
2696         (dataflow_post_merge_adjust): New.
2697         (find_mem_expr_in_1pdv): New.
2698         (dataflow_set_preserve_mem_locs): New.
2699         (dataflow_set_remove_mem_locs): New.
2700         (dataflow_set_clear_at_call): New.
2701         (onepart_variable_different_p): New.
2702         (variable_different_p): Use it.
2703         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
2704         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
2705         if not needed.
2706         (track_loc_p): Pass it true.
2707         (struct count_use_info): New.
2708         (find_use_val): New.
2709         (replace_expr_with_values): New.
2710         (log_op_type): New.
2711         (use_type): New, partially split out of...
2712         (count_uses): ... this.  Count new micro-ops.
2713         (count_uses_1): Adjust.
2714         (count_stores): Adjust.
2715         (count_with_sets): New.
2716         (VAL_NEEDS_RESOLUTION): New.
2717         (VAL_HOLDS_TRACK_EXPR): New.
2718         (VAL_EXPR_IS_COPIED): New.
2719         (VAL_EXPR_IS_CLOBBERED): New.
2720         (add_uses): Adjust.  Generate new micro-ops.
2721         (add_uses_1): Adjust.
2722         (add_stores): Generate new micro-ops.
2723         (add_with_sets): New.
2724         (find_src_status): Adjust.
2725         (find_src_set_src): Adjust.
2726         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
2727         Handle new micro-ops.  Canonicalize value equivalances.
2728         (vt_find_locations): Compute total size of hash tables for
2729         dumping.  Perform merge for var-tracking-assignments.  Don't
2730         disregard single-block loops.
2731         (dump_attrs_list): Handle decl_or_value.
2732         (dump_variable): Take variable.  Deal with decl_or_value.
2733         (dump_variable_slot): New.
2734         (dump_vars): Use it.
2735         (dump_dataflow_sets): Adjust.
2736         (set_slot_part): New, extended to support one-part variables
2737         after splitting out of...
2738         (set_variable_part): ... this.
2739         (clobber_slot_part): New, split out of...
2740         (clobber_variable_part): ... this.
2741         (delete_slot_part): New, split out of...
2742         (delete_variable_part): .... this.
2743         (check_wrap_constant): New.
2744         (vt_expand_loc_callback): New.
2745         (vt_expand_loc): New.
2746         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
2747         EMIT_NOTE_AFTER_CALL_INSN.
2748         (emit_notes_for_differences_1): Adjust.  Handle values.
2749         (emit_notes_for_differences_2): Likewise.
2750         (emit_notes_for_differences): Adjust.
2751         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
2752         Adjust.  Handle new micro-ops.
2753         (vt_add_function_parameters): Adjust.  Create and bind values.
2754         (vt_initialize): Adjust.  Initialize scratch_regs and
2755         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
2756         operations.  Move some code to count_with_sets and add_with_sets.
2757         (delete_debug_insns): New.
2758         (vt_debug_insns_local): New.
2759         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
2760         cselib.
2761         (var_tracking_main): If var-tracking-assignments is enabled
2762         but var-tracking isn't, delete debug insns and leave.  Likewise
2763         if we exceed limits or fail the stack adjustments tests, and
2764         after all var-tracking processing.
2765         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
2766         (dataflow_set): Add traversed_vars.
2767         (value_chain, const_value_chain): New typedefs.
2768         (value_chain_pool, value_chains): New variables.
2769         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
2770         add_value_chains, add_cselib_value_chains, remove_value_chain,
2771         remove_value_chains, remove_cselib_value_chains): New functions.
2772         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
2773         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
2774         static inlines.
2775         (shared_hash_find_slot_unshare, shared_hash_find_slot,
2776         shared_hash_find_slot_noinsert, shared_hash_find): Update.
2777         (dst_can_be_shared): New variable.
2778         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
2779         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
2780         different from set->vars, look up slot again instead of using the
2781         passed in slot.
2782         (dataflow_set_init): Initialize traversed_vars.
2783         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
2784         lookup if set->vars is shared.  Don't keep slot cleared before
2785         calling unshare_variable.  Unshare set->vars if needed.  Adjust
2786         unshare_variable callers.  Clear dst_can_be_shared if needed.
2787         Even ->refcount == 1 vars must be unshared if set->vars is shared
2788         and var needs to be modified.
2789         (dataflow_set_union): Set traversed_vars during canonicalization.
2790         (VALUE_CHANGED, DECL_CHANGED): Define.
2791         (set_dv_changed, dv_changed_p): New static inlines.
2792         (track_expr_p): Clear DECL_CHANGED.
2793         (dump_dataflow_sets): Set it.
2794         (variable_was_changed): Call set_dv_changed.
2795         (emit_note_insn_var_location): Likewise.
2796         (changed_variables_stack): New variable.
2797         (check_changed_vars_1, check_changed_vars_2): New functions.
2798         (emit_notes_for_changes): Do nothing if changed_variables is
2799         empty.  Traverse changed_variables with check_changed_vars_1,
2800         call check_changed_vars_2 on each changed_variables_stack entry.
2801         (emit_notes_in_bb): Add SET argument.  Just clear it at the
2802         beginning, use it instead of local &set, don't destroy it at the end.
2803         (vt_emit_notes): Call dataflow_set_clear early on all
2804         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
2805         computed set, dataflow_set_clear also VTI(bb)->in when we are
2806         done with the basic block.  Initialize changed_variables_stack,
2807         free it afterwards.  If ENABLE_CHECKING verify that after noting
2808         differences to an empty set value_chains hash table is empty.
2809         (vt_initialize): Initialize value_chains and value_chain_pool.
2810         (vt_finalize): Delete value_chains htab, free value_chain_pool.
2811         (variable_tracking_main): Call dump_dataflow_sets before calling
2812         vt_emit_notes, not after it.
2813         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
2814         (propagate_var_def_into_debug_stmts): Declare.
2815         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
2816         (df_set_note): Reject debug insns.
2817         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
2818         add notes to debug insns.
2819         (df_note_bb_compute): Adjust.  Likewise.
2820         (df_simulate_uses): Skip debug insns.
2821         (df_simulate_initialize_backwards): Likewise.
2822         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
2823         (subst_stack_regs_pat): Reject debug insns.
2824         (convert_regs_1): Handle debug insns.
2825         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
2826         (print-rtl.o): Depend on cselib.h.
2827         (cselib.o): Depend on TREE_PASS_H.
2828         (var-tracking.o): Depend on cselib.h and TARGET_H.
2829         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
2830         (init_ready_list): Skip boundary debug insns.
2831         (add_branch_dependences): Skip debug insns.
2832         (free_block_dependencies): Check for blocks with only debug insns.
2833         (compute_priorities): Likewise.
2834         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
2835         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
2836         all callers.
2837         (gimple_build_debug_bind_stat): New.
2838         (empty_body_p): Skip debug stmts.
2839         (gimple_has_side_effects): Likewise.
2840         (gimple_rhs_has_side_effects): Likewise.
2841         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
2842         (gimple_build_debug_bind_stat): Declare.
2843         (gimple_build_debug_bind): Define.
2844         (is_gimple_debug): New.
2845         (gimple_debug_bind_p): New.
2846         (gimple_debug_bind_get_var): New.
2847         (gimple_debug_bind_get_value): New.
2848         (gimple_debug_bind_get_value_ptr): New.
2849         (gimple_debug_bind_set_var): New.
2850         (gimple_debug_bind_set_value): New.
2851         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
2852         (gimple_debug_bind_reset_value): New.
2853         (gimple_debug_bind_has_value_p): New.
2854         (gsi_next_nondebug): New.
2855         (gsi_prev_nondebug): New.
2856         (gsi_start_nondebug_bb): New.
2857         (gsi_last_nondebug_bb): New.
2858         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
2859         (print_insn): Handle DEBUG_INSN.
2860         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
2861         of first insn prevail.
2862         (first_stmt): Skip debug stmts.
2863         (first_non_label_stmt): Likewise.
2864         (last_stmt): Likewise.
2865         (has_zero_uses_1): New.
2866         (single_imm_use_1): New.
2867         (verify_gimple_debug): New.
2868         (verify_types_in_gimple_stmt): Handle debug stmts.
2869         (verify_stmt): Likewise.
2870         (debug_loop_num): Skip debug stmts.
2871         (remove_edge_and_dominated_blocks): Remove dominators last.
2872         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
2873         (linearize_expr): Likewise.
2874         * config/i386/i386.c (ix86_delegitimize_address): Call
2875         default implementation.
2876         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
2877         (group_barrier_needed): Skip debug insns.
2878         (emit_insn_group_barriers): Likewise.
2879         (emit_all_insn_group_barriers): Likewise.
2880         (ia64_variable_issue): Handle debug insns.
2881         (ia64_dfa_new_cycle): Likewise.
2882         (final_emit_insn_group_barriers): Skip debug insns.
2883         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
2884         def cfa without frame.
2885         (process_set): Likewise.
2886         (process_for_unwind_directive): Pass frame on.
2887         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
2888         (rs6000_delegitimize_address): New.
2889         (rs6000_debug_adjust_cost): Handle debug insns.
2890         (is_microcoded_insn): Likewise.
2891         (is_cracked_insn): Likewise.
2892         (is_nonpipeline_insn): Likewise.
2893         (insn_must_be_first_in_group): Likewise.
2894         (insn_must_be_last_in_group): Likewise.
2895         (force_new_group): Likewise.
2896         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
2897         contains only debug insns.
2898         (rtl_merge_blocks): Skip debug insns.
2899         (purge_dead_edges): Likewise.
2900         (rtl_block_ends_with_call_p): Skip debug insns.
2901         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
2902         (mark_reg_dependencies): Skip debug insns.
2903         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
2904         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
2905         * tree-ssa-threadedge.c
2906         (record_temporary_equivalences_from_stmts): Skip debug stmts.
2907         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
2908         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
2909         (copyprop_hardreg_forward_1): Handle debug insns.
2910         * reload1.c (reload): Skip debug insns.  Replace unassigned
2911         pseudos in debug insns with their equivalences.
2912         (eliminate_regs_in_insn): Skip debug insns.
2913         (emit_input_reload_insns): Skip debug insns at first, adjust
2914         them later.
2915         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
2916         (get_indirect_ref_operands): Pass opf_no_vops on.
2917         (get_expr_operands): Likewise.  Skip debug stmts.
2918         (parse_ssa_operands): Scan debug insns with opf_no_vops.
2919
2920 2009-09-01  Richard Henderson  <rth@redhat.com>
2921
2922         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
2923         stmt_ends_pp_p statements at least once.
2924         * tree-vrp.c (vrp_initialize): Likewise.
2925         (vrp_visit_stmt): Be prepared for non-interesting stmts.
2926
2927 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
2928
2929         PR bootstrap/41205
2930         Fix AIX bootstrap after PR debug/30161
2931         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
2932         that is a GNU extension.
2933         (tmpl_value_parm_die_table): Move the definition of this global
2934         outside #ifdef DWARF2_DEBUGGING_INFO region.
2935
2936 2009-09-01  Richard Guenther  <rguenther@suse.de>
2937
2938         * tree.c (tree_expr_size): New function.
2939         * tree.h (tree_expr_size): Declare.
2940         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
2941         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
2942         * langhooks.c (lhd_expr_size): Remove.
2943         * langhooks.h (struct lang_hooks): Remove expr_size.
2944         * explow.c (expr_size): Use tree_expr_size.
2945         (int_expr_size): Likewise.
2946         * langhooks-def.h (lhd_expr_size): Remove.
2947         (LANG_HOOKS_EXPR_SIZE): Likewise.
2948         (LANG_HOOKS_INITIALIZER): Adjust.
2949
2950 2009-09-01  Richard Guenther  <rguenther@suse.de>
2951
2952         * tree-flow.h (mark_addressable): Move declaration ...
2953         * tree.h (mark_addressable): ... here.
2954         * stmt.c (expand_asm_operands): Use mark_addressable, not
2955         lang_hooks.mark_addressable.
2956         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
2957         LANG_HOOKS_MARK_ADDRESSABLE.
2958         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
2959         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
2960
2961 2009-08-31  Chris Demetriou  <cgd@google.com>
2962
2963         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
2964         vectorize if not TARGET_SSE2.
2965
2966 2009-08-31  DJ Delorie  <dj@redhat.com>
2967
2968         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
2969         registers if no coprocessor is enabled.
2970
2971 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
2972
2973         PR debug/30161
2974         * cgraph.h (cgraph_get_node): Declare ...
2975         * cgraph.c (cgraph_get_node): ... new function.
2976         * dwarf2out.c (gen_generic_params_dies,
2977         generic_parameter_die, tree_add_const_value_attribute_for_decl,
2978         make_ith_pack_parameter_name,
2979         append_entry_to_tmpl_value_parm_die_table,
2980         gen_remaining_tmpl_value_param_die_attribute): New functions.
2981         (gen_subprogram_die): Generate debug info for template parameters
2982         if debug info level is higher than DINFO_LEVEL_TERSE.
2983         Use tree_add_const_value_attribute_for_decl instead of
2984         tree_add_const_value_attribute.
2985         (gen_const_die): Use tree_add_const_value_attribute_for_decl
2986         instead of tree_add_const_value_attribute.
2987         (gen_struct_or_union_type_die): Generate debug
2988         info for template parameters if debug info level is higher than
2989         DINFO_LEVEL_TERSE.
2990         (tree_add_const_value_attribute): Handle integral and pointer
2991         constants. Update comment.
2992         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
2993         (dwarf_attr_name): Support DW_AT_GNU_template_name.
2994         (reference_to_unused): Fix thinko. Remove redundant predicates from
2995         tests.
2996         (tree_add_const_value_attribute): Make this work for constant
2997         expressions only.
2998         tree_add_const_value_attribute_for_decl is to be used for variable
2999         DECLs now.
3000         (add_location_or_const_value_attribute): Use
3001         tree_add_const_value_attribute_for_decl now.
3002         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3003         DW_TAG_template_value_param DIEs after function DIEs have been
3004         emitted.
3005         * langhooks.h (lang_hooks_for_types): Add
3006         get_argument_pack_elems.
3007         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3008         (lang_hooks): Added get_innermost_generic_parms,
3009         get_innermost_generic_args.
3010         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3011         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3012         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3013         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3014
3015 2009-08-31  DJ Delorie  <dj@redhat.com>
3016
3017         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
3018         it once we start generating the prologue or epilogue.
3019         (mep_call_saves_register): If the frame is locked, re-use
3020         cached values.
3021         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3022         (mep_expand_prologue): Call it.
3023         (mep_expand_epilogue): Likewise.
3024         (mep_start_function): Use the same logic as mep_expand_prologue.
3025         (mep_pass_by_reference): Make logic more readable.
3026         (mep_return_in_memory): Zero-sized objects are passed in memory.
3027         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3028
3029 2009-08-31  Richard Guenther  <rguenther@suse.de>
3030
3031         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3032         to query if the memory regions for memmove overlap.
3033         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3034         asserts on pointers, instead deal with odd trees.
3035         (ptr_derefs_may_alias_p): Likewise.
3036         (refs_may_alias_p_1): Constructor bases also never alias.
3037
3038 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
3039
3040         * doc/install.texi (Final install): Adjust reference on where to
3041         order printed manuals.
3042
3043 2009-08-30  Olivier Hainque  <hainque@adacore.com>
3044
3045         * dwarf2out.c (switch_to_frame_table_section): Move
3046         definition prior to first use.
3047
3048 2009-08-30  Richard Guenther  <rguenther@suse.de>
3049
3050         PR tree-optimization/41186
3051         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3052         (ao_ref_init_from_ptr_and_size): New function.
3053         (ref_maybe_used_by_call_p_1): Be more precise tracking
3054         used ranges for builtin functions.
3055         (ref_maybe_used_by_call_p): Adjust.
3056         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3057         ranges for builtin functions.
3058         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3059
3060 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
3061
3062         PR target/41081
3063         * fwprop.c (get_reg_use_in): Delete.
3064         (free_load_extend): New function.
3065         (forward_propagate_subreg): Use it.
3066
3067 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3068
3069         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3070
3071 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
3072
3073         PR/41184
3074         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3075         padding.
3076
3077 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
3078
3079         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3080         fini or fini_array section.
3081
3082 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3083
3084         * graphite-dependences.c (graphite_legal_transform_bb): Call
3085         pbb_remove_duplicate_pdrs.
3086         * graphite-poly.c (can_collapse_pdr): Removed.
3087         (pdr_find_duplicate): Removed.
3088         (can_collapse_pdrs): New.
3089         (pbb_remove_duplicate_pdrs): New.
3090         (new_poly_dr): Do not look for duplicates.
3091         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3092         (PBB_PDR_DUPLICATES_REMOVED): New.
3093         (pbb_remove_duplicate_pdrs): Declared.
3094
3095 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3096
3097         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3098         the strides by multiplying by PDR_NB_REFS.
3099         * graphite-poly.c (can_collapse_pdr): New.
3100         (pdr_find_duplicate): New.
3101         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
3102         Initialize PDR_NB_REFS.
3103         * graphite-poly.h (struct poly_dr): Add field nb_refs.
3104         (PDR_NB_REFS): New.
3105         (new_poly_dr): Number of subscripts is a graphite_dim_t.
3106
3107 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3108
3109         PR middle-end/40965
3110         * graphite-poly.c (apply_poly_transforms): Remove legality test before
3111         any transform.
3112
3113 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3114
3115         * graphite-dependences.c (pddr_original_scattering): Return NULL
3116         for read-read dependence relations.
3117         * graphite-poly.h (enum poly_dr_type): Fix comment.
3118         (pdr_read_p): New.
3119         (pdr_write_p): New.
3120         (pdr_may_write_p): New.
3121
3122 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3123
3124         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3125         (struct poly_dr): Same.
3126         (new_poly_dr): Same.
3127         * graphite-poly.c (new_poly_dr): Same.
3128         * graphite-dependences.c (dot_deps): Disable call to system.
3129
3130 2009-08-28  Cary Coutant  <ccoutant@google.com>
3131
3132         PR debug/41063
3133         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3134         struct/union/enum types local to a function.
3135
3136 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3137             Sebastian Pop  <sebastian.pop@amd.com>
3138
3139         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3140         pbb_strip_mine_time_depth.  Changed the implementation so that
3141         transformation is expressed as a transformation on
3142         time (scatttering) dimensions.  Also, ensures that the 2d+1
3143         scheduling format is preserved.
3144         (pbb_strip_mine_profitable_p): Profitability is based on the
3145         iteration number of a given time (scattering) dimension,
3146         and not on a original loop depth dimension.
3147         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3148         (pbb_do_strip_mine): Call psct_dynamic_dim.
3149         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3150         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3151         (pbb_nb_dynamic_scattering_transform): New.
3152         (psct_dynamic_dim): New.
3153
3154 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3155
3156         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3157         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3158         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
3159         * graphite-interchange.c (build_linearized_memory_access): Same.
3160         (memory_stride_in_loop): Same.
3161
3162 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3163
3164         * graphite-dependences.c (pddr_original_scattering): New.
3165         (graphite_legal_transform_dr): Call pddr_original_scattering.
3166         (dot_deps_1): New.
3167         (dot_deps): New.
3168         * graphite-dependences.h (dot_deps): Declared.
3169         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
3170         (print_pdr): Print PDR_ID.
3171         * graphite-poly.h (struct poly_dr): Add field id.
3172         (PDR_ID): New.
3173         (pbb_index): New.
3174         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
3175
3176 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3177
3178         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
3179         not delete the original dependence relation.
3180
3181 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3182
3183         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
3184         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
3185         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
3186         (free_poly_ddr): New.
3187         (pddr_is_empty): New.
3188         (dependence_polyhedron_1): Now returns a poly_ddr_p.
3189         (dependence_polyhedron): Same.  Remove useless gcc_assert.
3190         Remove fprintfs.
3191         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
3192         (graphite_carried_dependence_level_k): Call pddr_is_empty.
3193         * graphite-dependences.h (enum poly_dependence_kind): New.
3194         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
3195         (PDRP_SOURCE): Renamed PDDR_SOURCE.
3196         (PDRP_SINK): Renamed PDDR_SINK.
3197         (PDRP_DDP): Renamed PDDR_DDP.
3198         (PDDR_KIND): New.
3199         (free_poly_ddr): Declared.
3200         * graphite-poly.c (new_scop): Use the new hash function names.
3201         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
3202         into original_pddrs.
3203         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
3204
3205 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3206
3207         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
3208         bounds with LT_EXPR to make niter analysis more precise on code
3209         generated by Graphite.
3210
3211 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3212
3213         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
3214         (graphite_legal_transform_bb): Same.
3215         (poly_drs_may_alias_p): Same.
3216
3217 2009-08-28  Richard Guenther  <rguenther@suse.de>
3218
3219         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
3220
3221 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3222
3223         * config/i386/netware.c: Include langhooks.h.
3224         (i386_nlm_encode_section_info): Simplify.
3225         (netware_override_options): Delete.
3226         * config/i386/netware.h (netware_override_options): Delete
3227         declaration.
3228         (OVERRIDE_OPTIONS): Delete definition.
3229         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3230         (ASM_COMMENT_START): Define.
3231         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
3232
3233 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3234
3235         * configure.ac: For in-tree ld, do a plain version check to
3236         determine whether comdat groups are supported.
3237         * configure: Regenerate.
3238
3239 2009-08-28  Olivier Hainque  <hainque@adacore.com>
3240
3241         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
3242         always defined.  Reflect definition or absence of such for
3243         COLLECT_EXPORT_LIST.  Readability helper.
3244         (scanfilter): New enum, to help control what symbols
3245         are to be considered or ignored by scan_prog_file.
3246         (enum pass): Rename as "scanpass", moved together with scanfilter
3247         prior to scan_prog_file's prototype.
3248         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
3249         Group prototype with the scanpass/scanfilter definitions, factorize
3250         head comments for the several implementations at the prototype.
3251         (main): Reorganize the first pass link control to let AIX
3252         drag only the needed frame tables in executables.  Prevent
3253         frame tables collection during the scan aimed at static ctors.
3254         Pre-link and scan for frame tables later to compensate.
3255         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
3256         A C statement to issue assembly directives that create a reference
3257         to the given DWARF table identifier label from the current function
3258         section.
3259         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
3260         to differentiate first time section entry.  Only emit a .data
3261         tables start identifier label the first time around.
3262         (switch_to_frame_table_section): New function.  Helper for
3263         output_call_frame_info to switch possibly BACK into the eh_frame
3264         or the debug_frame section depending on FOR_EH.
3265         (output_call_frame_info): Use helper to first enter the proper
3266         frame section.
3267         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
3268         emit a link to the frame table start label from each function
3269         section.
3270         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
3271         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
3272         * config/rs6000/rs6000-protos.h: Declare it.
3273         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
3274
3275 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3276
3277         * config/sh/sh.c (split_branches): Check the result of
3278         next_active_insn.
3279
3280 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
3281
3282         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
3283         using -pthread -fopenmp
3284
3285 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
3286
3287         * doc/service.texi (service directory): Update URL.
3288
3289 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
3290
3291         PR rtl-optimization/40861
3292         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
3293         extract word from a multi-word subreg for negative byte positions.
3294
3295 2009-08-27  Tristan Gingold  <gingold@adacore.com>
3296             Douglas B Rupp  <rupp@gnat.com>
3297
3298         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
3299         (SECTION_VMS_OVERLAY): Define.
3300         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
3301         attribute.
3302         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
3303         for common_object.
3304         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
3305         common_object declarations.
3306         (ia64_section_type_flags): Set section flag for common_object.
3307         * config/ia64/ia64-protos.h
3308         (ia64_vms_output_aligned_decl_common): Declare.
3309         (ia64_vms_elf_asm_named_section): Declare.
3310
3311 2009-08-27  Michael Matz  <matz@suse.de>
3312
3313         * expr.c (expand_expr_real_2): New function taking exploded
3314         unary or binary expression, split out from ...
3315         (expand_expr_real_1): ... here.  Move over all unary/binary
3316         switch parts to above function, in particular these codes:
3317         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
3318         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
3319         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
3320         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
3321         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
3322         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
3323         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
3324         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
3325         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
3326         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
3327         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
3328         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
3329         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
3330         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
3331         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
3332         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
3333         VEC_PACK_FIX_TRUNC_EXPR.
3334         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
3335         full expression.
3336
3337 2009-08-27  Richard Guenther  <rguenther@suse.de>
3338
3339         * gengtype.c (main): Handle uint64_t.
3340         * ipa-utils.c (get_base_var): Indent properly.
3341         * tree-ssa-live.c (debug_scope_block): New function.
3342         * tree-flow.h (debug_scope_block): Declare.
3343         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
3344         * basic-block.h (enum profile_status): Rename to
3345         enum profile_status_d.
3346         (x_profile_status): Adjust type.
3347
3348 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
3349
3350         PR debug/41170
3351         * dwarf2out.c (get_context_die): Declare this static function.
3352         (gen_type_die_with_usage): Make sure a DIE is a generated for
3353         the context of a typedef.
3354
3355 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
3356
3357         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
3358         switch.
3359
3360 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
3361
3362         * config/mips/mips-protos.h (mips_output_sync): Declare.
3363         (mips_sync_loop_insns): Likewise.
3364         (mips_output_sync_loop): Replace first two parameters with an rtx.
3365         * config/mips/mips.c (mips_multi_member): New structure.
3366         (mips_multi_members): New variable.
3367         (mips_multi_start): New function.
3368         (mips_multi_add): Likewise.
3369         (mips_multi_add_insn): Likewise.
3370         (mips_multi_add_label): Likewise.
3371         (mips_multi_last_index): Likewise.
3372         (mips_multi_copy_insn): Likewise.
3373         (mips_multi_set_operand): Likewise.
3374         (mips_multi_write): Likewise.
3375         (mips_print_operand_punctuation): Remove '%|' and '%-'.
3376         (mips_init_print_operand_punct): Update accordingly.
3377         (mips_start_ll_sc_sync_block): New function.
3378         (mips_end_ll_sc_sync_block): Likewise.
3379         (mips_output_sync): Likewise.
3380         (mips_sync_insn1_template): Likewise.
3381         (mips_sync_insn2_template): Likewise.
3382         (mips_get_sync_operand): Likewise.
3383         (mips_process_sync_loop): Likewise.
3384         (mips_output_sync_loop): Use mips_process_sync_loop.
3385         (mips_sync_loop_insns): New function.
3386         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
3387         (MIPS_COMPARE_AND_SWAP_12): Likewise.
3388         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
3389         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
3390         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
3391         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
3392         (MIPS_SYNC_OLD_OP_12): Likewise.
3393         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
3394         (MIPS_SYNC_NEW_OP_12): Likewise.
3395         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
3396         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
3397         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
3398         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
3399         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
3400         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
3401         * config/mips/mips.md (sync_mem): New attribute.
3402         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
3403         (sync_exclusive_mask, sync_required_oldval): Likewise.
3404         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
3405         (sync_release_barrier): Likewise.
3406         (length): Handle sync loops.
3407         (sync): Use mips_output_sync.
3408         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
3409         (sync_compare_and_swap<mode>): Set the new sync_* attributes
3410         and use mips_output_sync_loop.
3411         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
3412         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3413         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
3414         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
3415         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
3416         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
3417         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
3418         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
3419         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
3420
3421 2009-08-26  Richard Guenther  <rguenther@suse.de>
3422
3423         PR middle-end/41163
3424         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
3425         the types to not match.
3426         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
3427         verification.
3428         * tree-ssa.c (useless_type_conversion_p): Conversions to
3429         pointers to unprototyped functions are useless.
3430
3431 2009-08-26  Richard Guenther  <rguenther@suse.de>
3432
3433         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
3434         whole-program condition, prepare to be called for non-globals.
3435         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
3436         params build a representative with known type and track its fields.
3437
3438 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
3439
3440         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
3441         clearing by a taken branch.
3442         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
3443         effectively after bbro pass.
3444         (sync_nand<mode>): Ditto.
3445         (sync_old_<fetchop_name><mode>): Ditto.
3446         (sync_old_nand<mode>): Ditto.
3447         (sync_new_<fetchop_name><mode>): Dito.
3448         (sync_new_nand<mode>): Ditto.
3449         (sync_compare_and_swap<mode>_1): Ditto.
3450         (*sync_compare_and_swap<mode>): Ditto.
3451         (sync_lock_test_and_set<mode>_1): Ditto.
3452         ("sync_lock_test_and_set<mode>): Ditto.
3453
3454 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
3455
3456         * hwint.h (HOST_LONG_FORMAT): New macro
3457         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
3458         Use HOST_PTR_PRINTF.
3459         * system.h (HOST_PTR_PRINTF): Resurrect old macro
3460         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
3461         (HOST_PTR_PRINTF): Document.
3462
3463 2009-08-25 Jan Hubicka  <jh@suse.cz>
3464
3465         * config/i386/bmmintrin.h: Replace by #error.
3466
3467         Revert:
3468         Michael Meissner  <michael.meissner@amd.com>
3469         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3470         Tony Linthicum  <tony.linthicum@amd.com>
3471
3472         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
3473         (TARGET_ROUND): New macro for the round/ptest instructions which
3474         are shared between SSE4.1 and SSE5.
3475         (OPTION_MASK_ISA_ROUND): Ditto.
3476         (OPTION_ISA_ROUND): Ditto.
3477         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
3478         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
3479
3480         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
3481         (-mfused-madd): New switch to give users control over whether the
3482         compiler optimizes to use the multiply/add SSE5 instructions.
3483
3484         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
3485         (ix86_handle_option): Turn off 3dnow if -msse5.
3486         (override_options): Add SSE5 support.
3487         (print_operand): %Y prints comparison codes for SSE5 com/pcom
3488         instructions.
3489         (ix86_expand_sse_movcc): Add SSE5 support.
3490         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
3491         vector type to the next largest size.
3492         (ix86_expand_sse5_pack): New function to use pperm to pack a
3493         vector type to the next smallest size.
3494         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
3495         (IX86_BUILTIN_FMADDSD): Ditto.
3496         (IX86_BUILTIN_FMADDPS): Ditto.
3497         (IX86_BUILTIN_FMADDPD): Ditto.
3498         (IX86_BUILTIN_FMSUBSS): Ditto.
3499         (IX86_BUILTIN_FMSUBSD): Ditto.
3500         (IX86_BUILTIN_FMSUBPS): Ditto.
3501         (IX86_BUILTIN_FMSUBPD): Ditto.
3502         (IX86_BUILTIN_FNMADDSS): Ditto.
3503         (IX86_BUILTIN_FNMADDSD): Ditto.
3504         (IX86_BUILTIN_FNMADDPS): Ditto.
3505         (IX86_BUILTIN_FNMADDPD): Ditto.
3506         (IX86_BUILTIN_FNMSUBSS): Ditto.
3507         (IX86_BUILTIN_FNMSUBSD): Ditto.
3508         (IX86_BUILTIN_FNMSUBPS): Ditto.
3509         (IX86_BUILTIN_FNMSUBPD): Ditto.
3510         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
3511         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
3512         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
3513         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
3514         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
3515         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
3516         (IX86_BUILTIN_PPERM): Ditto.
3517         (IX86_BUILTIN_PERMPS): Ditto.
3518         (IX86_BUILTIN_PERMPD): Ditto.
3519         (IX86_BUILTIN_PMACSSWW): Ditto.
3520         (IX86_BUILTIN_PMACSWW): Ditto.
3521         (IX86_BUILTIN_PMACSSWD): Ditto.
3522         (IX86_BUILTIN_PMACSWD): Ditto.
3523         (IX86_BUILTIN_PMACSSDD): Ditto.
3524         (IX86_BUILTIN_PMACSDD): Ditto.
3525         (IX86_BUILTIN_PMACSSDQL): Ditto.
3526         (IX86_BUILTIN_PMACSSDQH): Ditto.
3527         (IX86_BUILTIN_PMACSDQL): Ditto.
3528         (IX86_BUILTIN_PMACSDQH): Ditto.
3529         (IX86_BUILTIN_PMADCSSWD): Ditto.
3530         (IX86_BUILTIN_PMADCSWD): Ditto.
3531         (IX86_BUILTIN_PHADDBW): Ditto.
3532         (IX86_BUILTIN_PHADDBD): Ditto.
3533         (IX86_BUILTIN_PHADDBQ): Ditto.
3534         (IX86_BUILTIN_PHADDWD): Ditto.
3535         (IX86_BUILTIN_PHADDWQ): Ditto.
3536         (IX86_BUILTIN_PHADDDQ): Ditto.
3537         (IX86_BUILTIN_PHADDUBW): Ditto.
3538         (IX86_BUILTIN_PHADDUBD): Ditto.
3539         (IX86_BUILTIN_PHADDUBQ): Ditto.
3540         (IX86_BUILTIN_PHADDUWD): Ditto.
3541         (IX86_BUILTIN_PHADDUWQ): Ditto.
3542         (IX86_BUILTIN_PHADDUDQ): Ditto.
3543         (IX86_BUILTIN_PHSUBBW): Ditto.
3544         (IX86_BUILTIN_PHSUBWD): Ditto.
3545         (IX86_BUILTIN_PHSUBDQ): Ditto.
3546         (IX86_BUILTIN_PROTB): Ditto.
3547         (IX86_BUILTIN_PROTW): Ditto.
3548         (IX86_BUILTIN_PROTD): Ditto.
3549         (IX86_BUILTIN_PROTQ): Ditto.
3550         (IX86_BUILTIN_PROTB_IMM): Ditto.
3551         (IX86_BUILTIN_PROTW_IMM): Ditto.
3552         (IX86_BUILTIN_PROTD_IMM): Ditto.
3553         (IX86_BUILTIN_PROTQ_IMM): Ditto.
3554         (IX86_BUILTIN_PSHLB): Ditto.
3555         (IX86_BUILTIN_PSHLW): Ditto.
3556         (IX86_BUILTIN_PSHLD): Ditto.
3557         (IX86_BUILTIN_PSHLQ): Ditto.
3558         (IX86_BUILTIN_PSHAB): Ditto.
3559         (IX86_BUILTIN_PSHAW): Ditto.
3560         (IX86_BUILTIN_PSHAD): Ditto.
3561         (IX86_BUILTIN_PSHAQ): Ditto.
3562         (IX86_BUILTIN_FRCZSS): Ditto.
3563         (IX86_BUILTIN_FRCZSD): Ditto.
3564         (IX86_BUILTIN_FRCZPS): Ditto.
3565         (IX86_BUILTIN_FRCZPD): Ditto.
3566         (IX86_BUILTIN_CVTPH2PS): Ditto.
3567         (IX86_BUILTIN_CVTPS2PH): Ditto.
3568         (IX86_BUILTIN_COMEQSS): Ditto.
3569         (IX86_BUILTIN_COMNESS): Ditto.
3570         (IX86_BUILTIN_COMLTSS): Ditto.
3571         (IX86_BUILTIN_COMLESS): Ditto.
3572         (IX86_BUILTIN_COMGTSS): Ditto.
3573         (IX86_BUILTIN_COMGESS): Ditto.
3574         (IX86_BUILTIN_COMUEQSS): Ditto.
3575         (IX86_BUILTIN_COMUNESS): Ditto.
3576         (IX86_BUILTIN_COMULTSS): Ditto.
3577         (IX86_BUILTIN_COMULESS): Ditto.
3578         (IX86_BUILTIN_COMUGTSS): Ditto.
3579         (IX86_BUILTIN_COMUGESS): Ditto.
3580         (IX86_BUILTIN_COMORDSS): Ditto.
3581         (IX86_BUILTIN_COMUNORDSS): Ditto.
3582         (IX86_BUILTIN_COMFALSESS): Ditto.
3583         (IX86_BUILTIN_COMTRUESS): Ditto.
3584         (IX86_BUILTIN_COMEQSD): Ditto.
3585         (IX86_BUILTIN_COMNESD): Ditto.
3586         (IX86_BUILTIN_COMLTSD): Ditto.
3587         (IX86_BUILTIN_COMLESD): Ditto.
3588         (IX86_BUILTIN_COMGTSD): Ditto.
3589         (IX86_BUILTIN_COMGESD): Ditto.
3590         (IX86_BUILTIN_COMUEQSD): Ditto.
3591         (IX86_BUILTIN_COMUNESD): Ditto.
3592         (IX86_BUILTIN_COMULTSD): Ditto.
3593         (IX86_BUILTIN_COMULESD): Ditto.
3594         (IX86_BUILTIN_COMUGTSD): Ditto.
3595         (IX86_BUILTIN_COMUGESD): Ditto.
3596         (IX86_BUILTIN_COMORDSD): Ditto.
3597         (IX86_BUILTIN_COMUNORDSD): Ditto.
3598         (IX86_BUILTIN_COMFALSESD): Ditto.
3599         (IX86_BUILTIN_COMTRUESD): Ditto.
3600         (IX86_BUILTIN_COMEQPS): Ditto.
3601         (IX86_BUILTIN_COMNEPS): Ditto.
3602         (IX86_BUILTIN_COMLTPS): Ditto.
3603         (IX86_BUILTIN_COMLEPS): Ditto.
3604         (IX86_BUILTIN_COMGTPS): Ditto.
3605         (IX86_BUILTIN_COMGEPS): Ditto.
3606         (IX86_BUILTIN_COMUEQPS): Ditto.
3607         (IX86_BUILTIN_COMUNEPS): Ditto.
3608         (IX86_BUILTIN_COMULTPS): Ditto.
3609         (IX86_BUILTIN_COMULEPS): Ditto.
3610         (IX86_BUILTIN_COMUGTPS): Ditto.
3611         (IX86_BUILTIN_COMUGEPS): Ditto.
3612         (IX86_BUILTIN_COMORDPS): Ditto.
3613         (IX86_BUILTIN_COMUNORDPS): Ditto.
3614         (IX86_BUILTIN_COMFALSEPS): Ditto.
3615         (IX86_BUILTIN_COMTRUEPS): Ditto.
3616         (IX86_BUILTIN_COMEQPD): Ditto.
3617         (IX86_BUILTIN_COMNEPD): Ditto.
3618         (IX86_BUILTIN_COMLTPD): Ditto.
3619         (IX86_BUILTIN_COMLEPD): Ditto.
3620         (IX86_BUILTIN_COMGTPD): Ditto.
3621         (IX86_BUILTIN_COMGEPD): Ditto.
3622         (IX86_BUILTIN_COMUEQPD): Ditto.
3623         (IX86_BUILTIN_COMUNEPD): Ditto.
3624         (IX86_BUILTIN_COMULTPD): Ditto.
3625         (IX86_BUILTIN_COMULEPD): Ditto.
3626         (IX86_BUILTIN_COMUGTPD): Ditto.
3627         (IX86_BUILTIN_COMUGEPD): Ditto.
3628         (IX86_BUILTIN_COMORDPD): Ditto.
3629         (IX86_BUILTIN_COMUNORDPD): Ditto.
3630         (IX86_BUILTIN_COMFALSEPD): Ditto.
3631         (IX86_BUILTIN_COMTRUEPD): Ditto.
3632         (IX86_BUILTIN_PCOMEQUB): Ditto.
3633         (IX86_BUILTIN_PCOMNEUB): Ditto.
3634         (IX86_BUILTIN_PCOMLTUB): Ditto.
3635         (IX86_BUILTIN_PCOMLEUB): Ditto.
3636         (IX86_BUILTIN_PCOMGTUB): Ditto.
3637         (IX86_BUILTIN_PCOMGEUB): Ditto.
3638         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
3639         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
3640         (IX86_BUILTIN_PCOMEQUW): Ditto.
3641         (IX86_BUILTIN_PCOMNEUW): Ditto.
3642         (IX86_BUILTIN_PCOMLTUW): Ditto.
3643         (IX86_BUILTIN_PCOMLEUW): Ditto.
3644         (IX86_BUILTIN_PCOMGTUW): Ditto.
3645         (IX86_BUILTIN_PCOMGEUW): Ditto.
3646         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
3647         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
3648         (IX86_BUILTIN_PCOMEQUD): Ditto.
3649         (IX86_BUILTIN_PCOMNEUD): Ditto.
3650         (IX86_BUILTIN_PCOMLTUD): Ditto.
3651         (IX86_BUILTIN_PCOMLEUD): Ditto.
3652         (IX86_BUILTIN_PCOMGTUD): Ditto.
3653         (IX86_BUILTIN_PCOMGEUD): Ditto.
3654         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
3655         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
3656         (IX86_BUILTIN_PCOMEQUQ): Ditto.
3657         (IX86_BUILTIN_PCOMNEUQ): Ditto.
3658         (IX86_BUILTIN_PCOMLTUQ): Ditto.
3659         (IX86_BUILTIN_PCOMLEUQ): Ditto.
3660         (IX86_BUILTIN_PCOMGTUQ): Ditto.
3661         (IX86_BUILTIN_PCOMGEUQ): Ditto.
3662         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
3663         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
3664         (IX86_BUILTIN_PCOMEQB): Ditto.
3665         (IX86_BUILTIN_PCOMNEB): Ditto.
3666         (IX86_BUILTIN_PCOMLTB): Ditto.
3667         (IX86_BUILTIN_PCOMLEB): Ditto.
3668         (IX86_BUILTIN_PCOMGTB): Ditto.
3669         (IX86_BUILTIN_PCOMGEB): Ditto.
3670         (IX86_BUILTIN_PCOMFALSEB): Ditto.
3671         (IX86_BUILTIN_PCOMTRUEB): Ditto.
3672         (IX86_BUILTIN_PCOMEQW): Ditto.
3673         (IX86_BUILTIN_PCOMNEW): Ditto.
3674         (IX86_BUILTIN_PCOMLTW): Ditto.
3675         (IX86_BUILTIN_PCOMLEW): Ditto.
3676         (IX86_BUILTIN_PCOMGTW): Ditto.
3677         (IX86_BUILTIN_PCOMGEW): Ditto.
3678         (IX86_BUILTIN_PCOMFALSEW): Ditto.
3679         (IX86_BUILTIN_PCOMTRUEW): Ditto.
3680         (IX86_BUILTIN_PCOMEQD): Ditto.
3681         (IX86_BUILTIN_PCOMNED): Ditto.
3682         (IX86_BUILTIN_PCOMLTD): Ditto.
3683         (IX86_BUILTIN_PCOMLED): Ditto.
3684         (IX86_BUILTIN_PCOMGTD): Ditto.
3685         (IX86_BUILTIN_PCOMGED): Ditto.
3686         (IX86_BUILTIN_PCOMFALSED): Ditto.
3687         (IX86_BUILTIN_PCOMTRUED): Ditto.
3688         (IX86_BUILTIN_PCOMEQQ): Ditto.
3689         (IX86_BUILTIN_PCOMNEQ): Ditto.
3690         (IX86_BUILTIN_PCOMLTQ): Ditto.
3691         (IX86_BUILTIN_PCOMLEQ): Ditto.
3692         (IX86_BUILTIN_PCOMGTQ): Ditto.
3693         (IX86_BUILTIN_PCOMGEQ): Ditto.
3694         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
3695         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
3696         (enum multi_arg_type): New enum for describing the various SSE5
3697         intrinsic argument types.
3698         (bdesc_multi_arg): New table for SSE5 intrinsics.
3699         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
3700         (ix86_expand_multi_arg_builtin): New function for creating SSE5
3701         intrinsics.
3702         (ix86_expand_builtin): Add SSE5 intrinsic support.
3703         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
3704         operand instructions.
3705         (ix86_expand_sse5_multiple_memory): New function to split the
3706         second memory reference from SSE5 instructions.
3707         (type_has_variadic_args_p): Delete in favor of stdarg_p.
3708         (ix86_return_pops_args): Use stdarg_p to determine if the function
3709         has variable arguments.
3710         (ix86_setup_incoming_varargs): Ditto.
3711         (x86_this_parameter): Ditto.
3712
3713         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
3714         declaration.
3715         (ix86_expand_sse5_pack): Ditto.
3716         (ix86_sse5_valid_op_p): Ditto.
3717         (ix86_expand_sse5_multiple_memory): Ditto.
3718
3719         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
3720         constant for SSE5 support.
3721         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
3722         (UNSPEC_SSE5_TRUEFALSE): Ditto.
3723         (UNSPEC_SSE5_PERMUTE): Ditto.
3724         (UNSPEC_SSE5_ASHIFT): Ditto.
3725         (UNSPEC_SSE5_LSHIFT): Ditto.
3726         (UNSPEC_FRCZ): Ditto.
3727         (UNSPEC_CVTPH2PS): Ditto.
3728         (UNSPEC_CVTPS2PH): Ditto.
3729         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
3730         (PCOM_TRUE): Ditto.
3731         (COM_FALSE_S): Ditto.
3732         (COM_FALSE_P): Ditto.
3733         (COM_TRUE_S): Ditto.
3734         (COM_TRUE_P): Ditto.
3735         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
3736         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
3737         types.
3738         (memory attribute): Ditto.
3739         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3740         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
3741         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3742         (floor<mode>2): Ditto.
3743         (ceil<mode>2): Ditto.
3744         (btrunc<mode>2): Ditto.
3745         (nearbyintdf2): Ditto.
3746         (nearbyintsf2): Ditto.
3747         (sse_setccsf): Disable if SSE5.
3748         (sse_setccdf): Ditto.
3749         (sse5_setcc<mode>): New support for SSE5 conditional move.
3750         (sse5_pcmov_<mode>): Ditto.
3751
3752         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
3753         (SSEMODEF4): Ditto.
3754         (SSEMODEF2P): Ditto.
3755         (ssemodesuffixf4): New mode attribute for SSE5.
3756         (ssemodesuffixf2s): Ditto.
3757         (ssemodesuffixf2c): Ditto.
3758         (sserotatemax): Ditto.
3759         (ssescalarmode): Ditto.
3760         (sse_maskcmpv4sf3): Disable if SSE5.
3761         (sse_maskcmpv2df3): Ditto.
3762         (sse_vmmaskcmpv4sf3): Ditto.
3763         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
3764         (sse5_vmfmadd<mode>4): Ditto.
3765         (sse5_fmsub<mode>4): Ditto.
3766         (sse5_vmfmsub<mode>4): Ditto.
3767         (sse5_fnmadd<mode>4): Ditto.
3768         (sse5_vmfnmadd<mode>4): Ditto.
3769         (sse5_fnmsub<mode>4): Ditto.
3770         (sse5_vmfnmsub<mode>4): Ditto.
3771         (sse5i_fmadd<mode>4): Ditto.
3772         (sse5i_fmsub<mode>4): Ditto.
3773         (sse5i_fnmadd<mode>4): Ditto.
3774         (sse5i_fnmsub<mode>4): Ditto.
3775         (sse5i_vmfmadd<mode>4): Ditto.
3776         (sse5i_vmfmsub<mode>4): Ditto.
3777         (sse5i_vmfnmadd<mode>4): Ditto.
3778         (sse5i_vmfnmsub<mode>4): Ditto.
3779         (mulv16qi3): Add SSE5 support.
3780         (mulv4si3): Ditto.
3781         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
3782         (sse2_mulv4si3): Disable if SSE5.
3783         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
3784         (sse4_1_roundps): Ditto.
3785         (sse4_1_roundsd): Ditto.
3786         (sse4_1_roundss): Ditto.
3787         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
3788         be generated.
3789         (sse_maskcmpsf3): Ditto.
3790         (sse_vmmaskcmpv4sf3): Ditto.
3791         (sse2_maskcmpv2df3): Ditto.
3792         (sse2_maskcmpdf3): Ditto.
3793         (sse2_vmmaskcmpv2df3): Ditto.
3794         (sse2_eq<mode>3): Ditto.
3795         (sse2_gt<mode>3): Ditto.
3796         (sse5_pcmov_<mode>): Add SSE5 support.
3797         (vec_unpacku_hi_v16qi): Ditto.
3798         (vec_unpacks_hi_v16qi): Ditto.
3799         (vec_unpacku_lo_v16qi): Ditto.
3800         (vec_unpacks_lo_v16qi): Ditto.
3801         (vec_unpacku_hi_v8hi): Ditto.
3802         (vec_unpacks_hi_v8hi): Ditto.
3803         (vec_unpacku_lo_v8hi): Ditto.
3804         (vec_unpacks_lo_v8hi): Ditto.
3805         (vec_unpacku_hi_v4si): Ditto.
3806         (vec_unpacks_hi_v4si): Ditto.
3807         (vec_unpacku_lo_v4si): Ditto.
3808         (vec_unpacks_lo_v4si): Ditto.
3809         (sse5_pmacsww): New SSE5 intrinsic insn.
3810         (sse5_pmacssww): Ditto.
3811         (sse5_pmacsdd): Ditto.
3812         (sse5_pmacssdd): Ditto.
3813         (sse5_pmacssdql): Ditto.
3814         (sse5_pmacssdqh): Ditto.
3815         (sse5_pmacsdqh): Ditto.
3816         (sse5_pmacsswd): Ditto.
3817         (sse5_pmacswd): Ditto.
3818         (sse5_pmadcsswd): Ditto.
3819         (sse5_pmadcswd): Ditto.
3820         (sse5_pcmov_<move>): Conditional move support on SSE5.
3821         (sse5_phaddbw): New SSE5 intrinsic insn.
3822         (sse5_phaddbd): Ditto.
3823         (sse5_phaddbq): Ditto.
3824         (sse5_phaddwd): Ditto.
3825         (sse5_phaddwq): Ditto.
3826         (sse5_phadddq): Ditto.
3827         (sse5_phaddubw): Ditto.
3828         (sse5_phaddubd): Ditto.
3829         (sse5_phaddubq): Ditto.
3830         (sse5_phadduwd): Ditto.
3831         (sse5_phadduwq): Ditto.
3832         (sse5_phaddudq): Ditto.
3833         (sse5_phsubbw): Ditto.
3834         (sse5_phsubwd): Ditto.
3835         (sse5_phsubdq): Ditto.
3836         (sse5_pperm): Ditto.
3837         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
3838         (sse5_pperm_zero_v16qi_v8hi): Ditto.
3839         (sse5_pperm_sign_v8hi_v4si): Ditto.
3840         (sse5_pperm_zero_v8hi_v4si): Ditto.
3841         (sse5_pperm_sign_v4si_v2di): Ditto.
3842         (sse5_pperm_sign_v4si_v2di): Ditto.
3843         (sse5_pperm_pack_v2di_v4si): Ditto.
3844         (sse5_pperm_pack_v4si_v8hi): Ditto.
3845         (sse5_pperm_pack_v8hi_v16qi): Ditto.
3846         (sse5_perm<mode>): New SSE5 intrinsic insn.
3847         (rotl<mode>3): Ditto.
3848         (sse5_rotl<mode>3): Ditto.
3849         (sse5_ashl<mode>3): Ditto.
3850         (sse5_lshl<mode>3): Ditto.
3851         (sse5_frcz<mode>2): Ditto.
3852         (sse5s_frcz<mode>2): Ditto.
3853         (sse5_cvtph2ps): Ditto.
3854         (sse5_cvtps2ph): Ditto.
3855         (sse5_vmmaskcmp<mode>3): Ditto.
3856         (sse5_com_tf<mode>3): Ditto.
3857         (sse5_maskcmp<mode>3): Ditto.
3858         (sse5_maskcmp_uns<mode>3): Ditto.
3859         (sse5_maskcmp_uns2<mode>3): Ditto.
3860         (sse5_pcom_tf<mode>3): Ditto.
3861
3862         * config/i386/predicates.md (sse5_comparison_float_operator):
3863         New predicate to match the comparison operators supported by
3864         the SSE5 com instruction.
3865         (ix86_comparison_int_operator): New predicate to match just the
3866         signed int comparisons.
3867         (ix86_comparison_uns_operator): New predicate to match just the
3868         unsigned int comparisons.
3869
3870         * doc/invoke.texi (-msse5): Add documentation.
3871         (-mfused-madd): Ditto.
3872
3873         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
3874
3875         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
3876         mmintrin-common.h.
3877         (x86_64-*-*): Ditto.
3878
3879         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
3880
3881         * config/i386/bmmintrin.h: New file, provide common x86 compiler
3882         intrinisics for SSE5.
3883
3884         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
3885         mmintrin-common.h.
3886
3887         * config/i386/mmintrin-common.h: New file, to contain common
3888         instructions between SSE4.1 and SSE5.
3889
3890         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
3891         FOREACH_FUNCTION_ARGS to iterate over the argument list.
3892         (gen_regparm_prefix): Ditto.
3893
3894         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
3895         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
3896         prototype_p to determine if a function is prototyped.
3897
3898 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
3899
3900         * c-common.c (c_common_reswords) add the alignof keyword,
3901         with same RID as __alignof and __alignof__
3902
3903 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
3904
3905         * hooks.h (hook_bool_const_int_const_int_true): Declare.
3906         * hooks.c (hook_bool_const_int_const_int_true): New function.
3907         * target.h (struct gcc_target): Add can_eliminate field.
3908         * target-def.h (TARGET_CAN_ELIMINATE): Define.
3909         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
3910         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
3911         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
3912         (elim_table): Revise comment.
3913         * system.h (CAN_ELIMINATE): Poison.
3914         * defaults.h (CAN_ELIMINATE): Remove.
3915         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
3916
3917         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
3918         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
3919         Define macro.
3920         (alpha_vms_can_eliminate): Declare as static, change return type to
3921         bool.
3922         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
3923
3924         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
3925         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
3926         (arm_can_eliminate): New function.
3927
3928         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
3929         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
3930         (avr_can_eliminate): Declare as static.
3931         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
3932
3933         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
3934         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
3935         (bfin_can_eliminate): New function.
3936
3937         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
3938         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
3939         (crx_can_eliminate): New function.
3940
3941         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
3942         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
3943         (fr30_can_eliminate): New function.
3944
3945         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
3946         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
3947         (frv_can_eliminate): New function.
3948
3949         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
3950         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
3951         (h8300_can_eliminate): New function.
3952
3953         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
3954         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
3955         (i386_can_eliminate): Declare as static, change return type to bool.
3956         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
3957
3958         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
3959         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
3960         (ia64_can_eliminate): New function.
3961
3962         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
3963         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
3964         (iq2000_can_eliminate): New function.
3965
3966         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
3967         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
3968         (m32r_can_eliminate): New function.
3969
3970         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
3971         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
3972         (m68hc11_can_eliminate): New function.
3973
3974         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
3975         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
3976         (m68k_can_eliminate): New function.
3977
3978         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
3979         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
3980         (mep_can_eliminate): New function.
3981
3982         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
3983         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
3984         (mips_can_eliminate): New function.
3985
3986         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
3987         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
3988         (rs6000_can_eliminate): New function.
3989
3990         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
3991         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
3992         (s390_can_eliminate): Declare as static.
3993         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
3994
3995         * config/score/score.h (CAN_ELIMINATE): Remove macro.
3996         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
3997         (score_can_eliminate): New function.
3998
3999         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
4000         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
4001         (sparc_can_eliminate): Declare as static.
4002         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
4003
4004         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
4005         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
4006         (xstormy16_can_eliminate): New function.
4007
4008         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
4009         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
4010         (v850_can_eliminate): New function.
4011
4012 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
4013
4014         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
4015         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
4016         (*movdfcc_ext[1234]): Disable for IEEE mode.
4017
4018 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
4019
4020         * gimplify.c (prepare_gimple_addressable): New static function.
4021         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
4022         it addressable.
4023         (gimplify_addr_expr): Invoke it similarly on the operand instead of
4024         manually fiddling with it.
4025
4026 2009-08-25  Michael Matz  <matz@suse.de>
4027
4028         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
4029         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
4030         full expression.
4031         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
4032         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
4033         (do_jump): Split out code for simple binary comparisons into ...
4034         (do_jump_1): ... this, taking the individual operands and code.
4035         Change callers to helper function above accordingly.
4036         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
4037         comparisons.
4038
4039 2009-08-25  Michael Matz  <matz@suse.de>
4040
4041         * expr.h (struct separate_ops, sepops): New type for passing
4042         around an exploded simple expression.
4043         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
4044         Use this structure instead of expression tree.
4045         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
4046         expression, only its type.
4047         (expand_vec_cond_expr): Take type and individual operands instead
4048         of full expression.
4049         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
4050         expand_vec_shift_expr): Change prototype accordingly.
4051         * tree-vect-stmts.c (vectorizable_condition): Change call of
4052         expand_vec_cond_expr_p to pass only type.
4053         * expr.c (do_store_flags): Change prototype and implementation
4054         to take an exploded expression.
4055         (expand_expr_real_1): New local ops initialized with details
4056         of the full expression.  Use it instead of full
4057         expression in calls to do_store_flags, expand_vec_cond_expr,
4058         expand_widen_pattern_expr and expand_vec_shift_expr.
4059
4060 2009-08-25  Michael Matz  <matz@suse.de>
4061
4062         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
4063         treeop2 initialized with first three operands of the full expression.
4064         Substitute all TREE_OPERAND (exp, [012]) calls with them.
4065
4066 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
4067
4068         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
4069         (__gthread_objc_condition_allocate): Mark arguments as unused.
4070         (__gthread_objc_condition_deallocate): Likewise.
4071         (__gthread_objc_condition_wait): Likewise.
4072         (__gthread_objc_condition_broadcast): Likewise.
4073         (__gthread_objc_condition_signal): Likewise.
4074         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
4075         (__gthread_objc_thread_id): Likewise.
4076
4077 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
4078
4079         PR middle-end/41149
4080         * tree-pretty-print.c (print_call_name): Print the correct call name
4081         for procedure pointer components.
4082
4083 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
4084
4085         * config/ia64/ia64.c (ia64_promote_function_mode): Call
4086         default_promote_function_mode when not VMS.
4087
4088 2009-08-24  Olivier Hainque  <hainque@adacore.com>
4089
4090         * convert.c (convert_to_integer): Don't assume an input pointer is
4091         POINTER_SIZE wide.  Fetch from the type instead.
4092
4093 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4094
4095         * configure.ac (AC_PREREQ): Bump to 2.64.
4096
4097 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
4098
4099         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
4100         (process_command): Don't search standard_exec_prefix_1 and
4101         standard_exec_prefix_2.
4102
4103 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4104
4105         * config/arm/arm.c (output_return_instruction): Handle for
4106         unified syntax.
4107
4108 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4109
4110         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
4111
4112 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4113
4114         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
4115         (*arm_movdf_vfp): Likewise.
4116
4117 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4118
4119         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
4120         (vashr<mode>3): Rename from ashr<mode>3.
4121         (vlshr<mode>3): Rename from lshr<mode>3.
4122
4123 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
4124
4125         PR/40786
4126         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
4127         (check_format_info_main): Use scalar_identify_flag.
4128         (check_format_types): Check for scalar size identity if
4129         scalar_identify_flag is set.
4130         (printf_length_specs): Extend by new field.
4131         (asm_fprintf_length_specs): Likewise.
4132         (gcc_diag_length_specs): Likewise.
4133         (scanf_length_specs): Likewise.
4134         (strfmon_length_specs): Likewise.
4135         (gcc_gfc_length_specs): Likewise.
4136         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
4137         (ms_printf_flag_specs): Likewise.
4138         * c-format.h (format_length_info): Add new member scalar_identity_flag.
4139
4140 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
4141
4142         PR target/40718
4143         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
4144         (*call_value_pop_1): Ditto.
4145         (*sibcall_pop_1): New insn pattern.
4146         (*sibcall_value_pop_1): Ditto.
4147
4148 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4149
4150         PR target/41081
4151         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
4152         ashrsi3_64): New.
4153
4154 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4155
4156         PR target/41081
4157         * fwprop.c (try_fwprop_subst): Allow multiple sets.
4158         (get_reg_use_in): New function.
4159         (forward_propagate_subreg): Propagate through subreg of zero_extend
4160         or sign_extend.
4161
4162 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
4163
4164         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
4165         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
4166
4167 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4168
4169         * configure.ac: Remove --with-datarootdir, --with-docdir,
4170         --with-htmldir switches.  No need to call AC_SUBST for
4171         datarootdir, docdir, htmldir any more.
4172         * configure: Regenerate.
4173         * doc/install.texi (Configuration): Document --datarootdir,
4174         --docdir, --htmldir, --pdfdir; update documentation for
4175         --infodir, --mandir.
4176         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
4177         M4 to 1.4.6.
4178
4179         * aclocal.m4: Regenerate.
4180         * config.in: Regenerate.
4181         * configure: Regenerate.
4182
4183 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
4184             Olivier Hainque  <hainque@adacore.com>
4185
4186         * config/ia64/ia64.c: Include libfuncs.h.
4187         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
4188         (ia64_expand_call): Use reg 25 on VMS.
4189         (ia64_initialize_trampoline): Fix for VMS ABI.
4190         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
4191         (ia64_function_arg): Initialize reg 25 on VMS.
4192         Fix OpenVMS ABI issues for varargs.
4193         For OpenVMS, emit the Argument Information register set in the
4194         incoming/sibcall case as well.
4195         (ia64_arg_type): New function.
4196         (ia64_function_arg_advance): Keep track of cum->words.
4197         Fix OpenVMS ABI issues for varargs.
4198         (ia64_function_value): On VMS, promote mode of non-aggregate types.
4199         (ia64_override_options): Set flag_no_common on VMS.
4200         (ia64_init_builtins): Disable FWRITE builtin.
4201         (ia64_asm_output_external): Call DO_CRTL_NAMES.
4202         (ia64_vms_init_libfuncs): Add decc$ routines.
4203         (ia64_vms_valid_pointer_mode): New function.
4204         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
4205         (ia64_promote_function_mode): New function
4206         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
4207         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
4208         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
4209         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
4210         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
4211         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
4212         Suppress trailing '#' if VALUE is numeric.
4213         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
4214         ia64_promote_function_mode.
4215         (TARGET_VALID_POINTER_MODE): Define.
4216
4217 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
4218
4219         PR target/40671
4220         * config/rs6000/rs6000.c (rs6000_override_options): Use
4221         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
4222
4223         PR target/41145
4224         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
4225         reporting of vector + decimal/boolean/complex error.
4226
4227 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
4228
4229         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
4230         __vector double TYPE_DECL.
4231
4232 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
4233
4234         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
4235         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
4236         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
4237         to pointer to enum machine_mode.  Update all callers as needed.
4238
4239 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
4240
4241         * config/alpha/alpha.md (exception_receiver): Emit alternative
4242         GP load sequence if flag_reorder_blocks_and_partition is set.
4243         (*exception_receiver_2): Also enable when
4244         flag_reorder_blocks_and_partition is set.
4245
4246 2009-08-20  Matt Rice  <ratmice@gmail.com>
4247             Diego Novillo  <dnovillo@google.com>
4248
4249         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
4250         tree-ssa-sccvn.h.
4251
4252 2009-08-20  Richard Guenther  <rguenther@suse.de>
4253
4254         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
4255         * c-tree.h (c_dup_lang_specific_decl): Remove.
4256         (struct lang_decl, struct lang_type): Move definitions ...
4257         * c-lang.h: ... here.  New file.
4258         * c-decl.c: Include c-lang.h.
4259         (c_dup_lang_specific_decl): Remove.
4260         * c-typeck.c: Include c-lang.h.
4261         * Makefile.in (c-decl.o): Add c-lang.h dependency.
4262         (c-typeck.o): Likewise.
4263         * c-config-lang.in (gtfiles): Add c-lang.h.
4264         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
4265         like c-tree.h.
4266
4267 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
4268
4269         * config/alpha/alpha.c (alpha_end_function): Do not clear
4270         crtl->emit structure and free insn locators if cfun->is_thunk is true,
4271         this is now handled in generic code.
4272
4273 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4274
4275         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
4276         (s390_z10_fix_long_loop_prediction): New function.
4277         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
4278         (s390_reorg): Walk over the INSNs and invoke
4279         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
4280
4281 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4282
4283         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
4284         "*brx_64bit", "*brx_31bit"): New patterns.
4285         * config/s390/s390.c ('E'): New output modifier.
4286
4287 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4288             Richard Earnshaw  <richard.earnshaw@arm.com>
4289
4290         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
4291         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
4292
4293 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4294
4295         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
4296         patterns.
4297         * pa.c (emit_move_sequence): Check if address of operand1 is valid
4298         for mode mode of operand0 when doing secondary reload for SAR.
4299
4300 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4301
4302         PR middle-end/41123
4303         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
4304         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
4305
4306 2009-08-19  Jason Merrill  <jason@redhat.com>
4307
4308         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
4309         supported template depth in C++0x.
4310
4311 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4312
4313         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
4314         free_after_compilation.
4315         * config/score/score7.c (score7_output_mi_thunk): Likewise.
4316         * config/score/score3.c (score3_output_mi_thunk): Likewise.
4317         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
4318         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4319         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
4320         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
4321         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4322
4323 2009-08-19  Ian Lance Taylor  <iant@google.com>
4324
4325         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
4326         of (plus (mult (neg B) C) A).
4327
4328 2009-08-18  Michael Matz  <matz@suse.de>
4329
4330         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
4331         instead of comparing TYPE_MAIN_VARIANT for equality.
4332         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
4333         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
4334         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
4335         * gimplify.c (goa_lhs_expr_p): Ditto and use
4336         STRIP_USELESS_TYPE_CONVERSION.
4337
4338 2009-08-18  Michael Matz  <matz@suse.de>
4339
4340         * tree-ssa-structalias.c (create_variable_info_for): Also mark
4341         first field in a struct.
4342         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
4343
4344 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
4345
4346         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
4347         locators before emit_insn is called.  Remove assert that
4348         cfun->is_thunk.
4349         (alpha_end_function): Clear crtl->emit structure and free insn
4350         locators if cfun->is_thunk is true.
4351
4352 2009-08-18  Jason Merrill  <jason@redhat.com>
4353
4354         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
4355         type if available.
4356         * configure.ac: Test for it.
4357         * configure, config.in: Regenerate.
4358         * doc/install.texi: Document --enable-gnu-unique-object.
4359
4360 2009-08-18  Richard Guenther  <rguenther@suse.de>
4361
4362         PR middle-end/41094
4363         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
4364         pow(x,y*z) only if x is nonnegative.
4365
4366 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
4367
4368         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
4369         on jumps.
4370
4371         PR target/40971
4372         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
4373         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
4374
4375 2009-08-17  DJ Delorie  <dj@redhat.com>
4376
4377         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
4378         * config/m32c/prologue.md (epilogue_freit): New.
4379         (fset_b): New.
4380         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
4381         (bank_switch_p): Likewise.
4382         (fast_interrupt_p): Likewise.
4383         (interrupt_p): Likewise.
4384         (m32c_conditional_register_usage): Round memregs size up.
4385         (need_to_save): We only need to save $a0 when we use ENTER.
4386         (interrupt_p): Check for fast_interrupt too.
4387         (bank_switch_p): New.
4388         (fast_interrupt_p): New.
4389         (m32c_attribute_table): Add bank_switch and fast_interrupt.
4390         (m32c_emit_prolog): Support bank switching and fast interrupts.
4391         * doc/extend.texi (Function Attributes): Add bank_switch and
4392         fast_interrupt.
4393
4394 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
4395
4396         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
4397         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
4398
4399 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
4400
4401         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
4402         (menu): Add IA-64/VMS Options.
4403         (IA-64/VMS Options): Likewise.
4404
4405 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
4406
4407         PR target/38599
4408         * config/mips/mips.md (*lwxs): Use :P for pointer values.
4409
4410 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
4411
4412         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
4413         (mips_pop_asm_switch): Likewise.
4414         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
4415         with...
4416         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4417         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
4418         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
4419         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
4420         instead of set_noreorder.
4421         (mips_output_function_prologue): Use the new functions.
4422         (mips_output_function_epilogue): Likewise.
4423         (mips_need_noat_wrapper_p): New function, split out from...
4424         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
4425         Use mips_push_asm_switch and mips_pop_asm_switch.
4426         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
4427         and mips_pop_asm_switch.
4428         (ASM_OUTPUT_REG_POP): Likewise.
4429         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
4430         Use mips_pop_asm_switch.
4431         (mips_asm_switch): New structure.
4432         (set_noreorder, set_nomacro): Replace with...
4433         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4434         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
4435         instead of set_nomacro.
4436         (fix_truncsfsi2_macro): Likewise.
4437         (cprestore): Likewise.
4438         (hazard): Use mips_noreorder instead of set_noreorder.
4439         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
4440
4441 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
4442
4443         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
4444         from prev_active_insn.
4445
4446 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
4447
4448         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
4449         * config/avr/avr.c (avr_override_options): Initialize
4450         avr_current_arch variable.
4451         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
4452         __AVR_HAVE_16BIT_SP__ according to the device type.
4453         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
4454         TARGET_TINY_STACK.
4455         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
4456         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
4457
4458 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
4459
4460         PR debug/37801
4461         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
4462         generating inlined subroutine die only. We shouldn't be
4463         called for anything else.
4464         (gen_block_die): Don't generate inline subroutine debug info for
4465         abstract blocks.
4466
4467 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
4468
4469         * graphite-poly.c (print_pbb): Print PBB index.
4470
4471 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
4472
4473         PR middle-end/40981
4474         * graphite-interchange.c (ppl_max_for_le): Moved...
4475         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
4476         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
4477         ppl_Pointset_Powerset_C_Polyhedron_maximize.
4478         * graphite-ppl.h (ppl_max_for_le): Declared.
4479
4480 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
4481
4482         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
4483         supported on all platforms.
4484         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
4485         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
4486         * c-pragma.c: Likewise.
4487         * target-def.h (TARGET_INITIALIZER): Remove
4488         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
4489         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
4490
4491 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
4492
4493         * config/ia64/fde-vms.c: New file.
4494         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
4495         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
4496         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
4497         (uw_frame_state_for): Only register a personality routine if it is
4498         known to be compatible with our expectations.
4499         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
4500         Declare unw_table_entry stack variable and
4501         mod all calls to _Unwind_FindTableEntry to add arg.
4502         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
4503         (_Unwind_FindTableEntry): Add arg to prototype.
4504
4505 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
4506
4507         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
4508         field 'signal_pfs_loc'.
4509         (uw_frame_state_for): Remove duplicate code dealing with leaf
4510         procedures without unwind info.
4511         If in the frame after unwinding through a signal handler, restore
4512         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
4513         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
4514         'pfs_loc' to the AR.PFS location in the signal context; instead
4515         set 'signal_pfs_loc'.
4516         Manually generate the unwind info for the AR.PFS register.
4517         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
4518         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
4519         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
4520         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
4521         instead set 'signal_pfs_loc'.
4522         Remove code preventing the AR.PFS register from being restored
4523         from the signal context.
4524
4525 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
4526             Tristan Gingold  <gingold@adacore.com>
4527
4528         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
4529         * config/ia64/t-vms: New file.
4530         * config/ia64/vms64.h: New file.
4531         * config/ia64/vms.h: New file.
4532         * config/ia64/vms-crtinit.asm: New file.
4533         * config/ia64/vms_symvec_libgcc_s.opt: New file.
4534         * config/ia64/vms-unwind.h: New file.
4535
4536 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
4537
4538         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
4539         TFmode compares.
4540
4541 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4542
4543         PR middle-end/30789
4544         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
4545         Move declaration...
4546         * real.h (do_mpc_arg2): ... here.
4547         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
4548         and RDIV_EXPR.
4549
4550 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
4551
4552         * final.c (add_debug_prefix_map): Don't use GC memory for
4553         old_prefix and new_prefix.
4554
4555 2009-08-14  Richard Guenther  <rguenther@suse.de>
4556
4557         * ipa-prop.c (compute_complex_pass_through): If we cannot
4558         compute a non-varying offset for IPA_JF_ANCESTOR punt.
4559
4560 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4561
4562         * c-lex.c (c_lex_with_flags): Increase size of local variable
4563         to avoid memory clobber.
4564
4565 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
4566
4567         PR target/40934
4568         * config/i386/i386.c (ix86_fp_comparison_strategy):
4569         Only enable/disable sahf at function granularity.
4570
4571 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
4572
4573         PR rtl-optimization/41064
4574         * reload1.c (reload_as_needed): Don't call extract_insn
4575         for known invalid replacements after calling
4576         validate_replace_rtx_group and verify_changes.
4577
4578 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
4579
4580         PR target/41019
4581         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
4582         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
4583         ix86_expand_fp_vcond.
4584         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
4585         Assert that operation is supported by ix86_expand_int_vcond.
4586         (vcondu<SSEMODE124C8:mode>): Ditto.
4587
4588 2009-08-13  DJ Delorie  <dj@redhat.com>
4589
4590         * config/i386/djgpp-stdint.h: New.
4591         * config.gcc (djgpp): Use it.
4592
4593 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
4594
4595         * config/sh/sh.c (sh_override_options): When flag_exceptions or
4596         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
4597
4598 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
4599
4600         * tree-ssa-loop-prefetch.c
4601         (prune_ref_by_group_reuse): Enhance probabilistic analysis
4602         for long-stride pruning.
4603         (compute_miss_rate): New function to compute the probability
4604         that two memory references access different cache lines.
4605
4606 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
4607
4608         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
4609
4610 2009-08-13  Richard Guenther  <rguenther@suse.de>
4611
4612         PR middle-end/41047
4613         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
4614         use the constant pointer type.
4615         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
4616         of CV qualifiers on the target pointer type.
4617         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
4618         conversion check before restrict check.
4619
4620 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4621
4622         PR target/41029
4623         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
4624
4625 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4626
4627         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
4628
4629 2009-08-12  Richard Guenther  <rguenther@suse.de>
4630
4631         PR tree-optimization/41011
4632         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
4633         and reference constructing.
4634
4635 2009-08-12  Xinliang David Li  <davidxl@google.com>
4636
4637         PR tree-optimization/41012
4638         * tree-flow.h : New external interface.
4639         * gimple-low.c (check_call_arg): Change to public function.
4640         Remove argument mismatch check in lowering.
4641         * tree-inline.h (tree_can_inline_p): Interface change.
4642         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
4643         into this function.
4644         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
4645         Call change to tree_can_inline_p function.
4646         (cgraph_decide_inlining_incrementally): Ditto.
4647
4648 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
4649
4650         PR tree-optimization/41031
4651         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
4652         on the partition variable rather than promote_mode on the source
4653         type.  Assert that the partition variable's type has the same
4654         mode as the source value's.
4655
4656 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
4657
4658         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
4659         for for_return == 2.
4660         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
4661         comments.
4662         * calls.c (expand_call): Fix typo.
4663         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
4664         and PARM_DECL.
4665         * stmt.c (expand_value_return): Use promote_function_mode to copy out
4666         of pseudo.
4667         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
4668         * config/cris/cris.c (cris_promote_function_mode): Likewise.
4669         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
4670         * config/pa/pa.c (pa_promote_function_mode): Likewise.
4671
4672 2009-08-12  Andrew Haley  <aph@redhat.com>
4673
4674         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
4675
4676 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4677
4678         PR bootstrap/40103
4679         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
4680
4681 2009-08-12  Richard Guenther  <rguenther@suse.de>
4682
4683         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
4684         * gimplify.c (gimplify_modify_expr): Do not use
4685         lang_hooks.types_compatible_p.
4686         * tree-ssa.c (useless_type_conversion_p): For aggregates
4687         just return false if the canonical types differ.
4688
4689 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4690
4691         PR middle-end/40980
4692         * sese.c (convert_for_phi_arg): New.
4693         (add_guard_exit_phis): Use convert_for_phi_arg.
4694
4695 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4696
4697         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
4698         unknown subscript upper bounds.
4699
4700 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4701             Pranav Garg  <pranav.garg2107@gmail.com>
4702
4703         * graphite-interchange.c (gather_access_strides): Removed.
4704         (ppl_max_for_le): New.
4705         (build_linearized_memory_access): New.
4706         (memory_stride_in_loop): New.
4707         (pbb_interchange_profitable_p): Reimplemented.
4708         * graphite-ppl.h (ppl_new_id_map): New.
4709         (ppl_interchange): New.
4710
4711 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4712
4713         * graphite-interchange.c (compute_subscript): Removed.
4714         (compute_array_size_cstr): Removed.
4715         (compute_array_size_poly): Removed.
4716         (compute_array_size): Removed.
4717         (gather_access_strides_poly): Removed.
4718         (gather_access_strides): Empty.
4719
4720 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4721
4722         * graphite-dependences.c (dependence_polyhedron_1): Replace
4723         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
4724         (graphite_legal_transform_dr): Same.
4725         (graphite_carried_dependence_level_k): Same.
4726         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
4727         Initialize PDR_NB_SUBSCRIPTS.
4728         (print_pdr_access_layout): Replace pdr_nb_subscripts with
4729         PDR_NB_SUBSCRIPTS.
4730         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
4731         (PDR_NB_SUBSCRIPTS): New.
4732         (pdr_nb_subscripts): Removed.
4733         (pdr_dim): Simplified.
4734         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
4735         with PDR_NB_SUBSCRIPTS.
4736
4737 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4738
4739         * graphite-interchange.c (compute_array_size): Remove use of
4740         PDR_DATA_CONTAINER.
4741         * graphite-poly.c (new_poly_dr): Remove argument data_container.
4742         Do not initialize PDR_DATA_CONTAINER.
4743         (print_pdr): Do not print PDR_DATA_CONTAINER.
4744         * graphite-poly.h (struct poly_dr): Remove data_container field.
4745         (PDR_DATA_CONTAINER): Removed.
4746         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
4747         PDR_DATA_CONTAINER.
4748         (build_poly_dr): Same.
4749
4750 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
4751             Sebastian Pop  <sebastian.pop@amd.com>
4752
4753         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
4754         copy of the dependence polyhedron.  Free the temporary objects.
4755         (graphite_carried_dependence_level_k): Free unused objects before
4756         returning.
4757
4758         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
4759         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
4760         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
4761         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
4762         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
4763
4764 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4765
4766         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
4767         Early return without analyzing the data dependences if no
4768         transform has been done.  Call restore_scattering if the transform
4769         is not legal.
4770         (graphite-interchange.c): Same.
4771         * graphite-poly.c (print_scattering_function): Test for
4772         PBB_TRANSFORMED.
4773         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
4774         (apply_poly_transforms): Do not gcc_assert that
4775         the transform is legal.
4776         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
4777         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
4778         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
4779         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
4780         * graphite-poly.h (struct poly_scattering): New.
4781         (struct poly_bb): Add original, transformed, and saved fields.
4782         Remove transformed_scattering, original_scattering,
4783         nb_local_variables and nb_scattering_transform fields.
4784         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
4785         (poly_scattering_new): New.
4786         (poly_scattering_free): New.
4787         (poly_scattering_copy): New.
4788         (store_scattering_pbb): New.
4789         (store_scattering): New.
4790         (restore_scattering_pbb): New.
4791         (restore_scattering): New.
4792         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
4793         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
4794
4795 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4796
4797         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
4798         (print_scop): Same.
4799
4800 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4801
4802         * Makefile.in (graphite.o): Depends on PREDICT_H.
4803         * graphite.c: Include predict.h.
4804         (graphite_finalize): Call tree_estimate_probability.
4805         * predict.c (predict_loops): Do not call scev_initialize and
4806         scev_finalize.
4807         (tree_estimate_probability_bb): New.
4808         (tree_estimate_probability): Do not initialize loops: move that
4809         code to the driver.  Call tree_estimate_probability_bb.
4810         (tree_estimate_probability_driver): New.
4811         (pass_profile): Use tree_estimate_probability_driver.
4812         * predict.h (tree_estimate_probability): Declared.
4813
4814 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4815
4816         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
4817         * graphite-dependences.c (graphite_legal_transform): Add time to
4818         TV_GRAPHITE_DATA_DEPS.
4819         (dependency_between_pbbs_p): Same.
4820         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
4821
4822 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
4823
4824         PR rtl-optimization/41033
4825         * alias.c (nonoverlapping_component_refs_p): Punt when strict
4826         aliasing is disabled.
4827
4828 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
4829
4830         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
4831         si_mask_operand, and_load_operand, low_bitmask_operand,
4832         and_reg_operand, and_operand): New predicates.
4833         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
4834         * config/mips/mips.c (and_operands_ok): New function.
4835         * config/mips/mips-protos.h (and_operands_ok): Declare it.
4836         * config/mips/mips.md (move_type): Add ext_ins and logical.
4837         (type): Handle them.
4838         (and<mode>3): Use and_reg_operand as the second operand's predicate.
4839         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
4840         shift_shift.  Remove commutative constraint modifier.
4841         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
4842         shift_shift.
4843         (*clear_upper32_dext): Remove define_insn_and_split.
4844         (*clear_upper32): Turn this define_insn_and_split ...
4845         (splitter for ANDing register with 0xffff_ffff): .. into this.
4846
4847 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
4848
4849         * combine.c (try_widen_shift_mode): Factor out code to check if an
4850         integer constant is a low-order bitmask from here ...
4851         * rtlanal.c (low_bitmask_len): ... to here.
4852         * rtl.h (low_bitmask_len): Declare.
4853
4854 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
4855
4856         PR target/8603
4857         * config/alpha/alpha.md (addsi3): Remove expander.
4858         (addsi3): Rename from *addsi3_internal insn pattern.
4859         (subsi3): Remove expander.
4860         (subsi3): Rename from *subsi3_internal insn pattern.
4861
4862 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
4863
4864         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
4865         FWRITE_UNLOCKED.
4866
4867 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
4868             Eric Botcazou  <botcazou@adacore.com>
4869             Douglas B Rupp  <rupp@gnat.com>
4870
4871         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
4872         that records that fit in 64 bits are returned by immediate value,
4873         as required by OpenVMS Calling Standard.
4874         (function_value): Adjust for above modification.
4875         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
4876         virtual_incoming_args_rtx as base object, not next_arg.
4877         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
4878
4879 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4880
4881         * reload.c (find_reloads_subreg_address): Check the original
4882         req_equiv_mem address to detect the case where an address is
4883         not valid in the outer mode.
4884
4885 2009-08-11  Richard Guenther  <rguenther@suse.de>
4886
4887         PR bootstrap/40788
4888         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
4889
4890 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
4891
4892         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
4893         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
4894
4895 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
4896             Douglas B Rupp  <rupp@gnat.com>
4897
4898         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
4899         PT_STACK when frame_pointer_needed on OpenVMS.
4900         (alpha_pv_save_size, alpha_using_fp): Remove.
4901         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
4902         with proper processing for PT_NULL.
4903         (alpha_vms_initial_elimination_offset): New function. Support for
4904         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
4905         (alpha_sa_size): Force procedure type to PT_STACK when
4906         frame_pointer_needed on OpenVMS.
4907         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
4908         (alpha_using_fp): Likewise.
4909         (alpha_vms_can_eliminate): Add prototype.
4910         (alpha_vms_initial_elimination_offset): Likewise.
4911         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
4912         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
4913
4914 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
4915             Douglas B Rupp  <rupp@gnat.com>
4916
4917         * config/alpha/alpha.c (common_object_handler): New function.
4918         (vms_attribute_table): Declare a single attribute "common_object".
4919         (vms_output_aligned_decl_common): New global function.
4920         (SECTION_VMS_OVERLAY): Delete.
4921         (SECTION_VMS_GLOBAL): Likewise.
4922         (SECTION_VMS_INITIALIZE): Likewise.
4923         (vms_asm_named_section): Remove support for above flags.
4924         (vms_section_type_flags): Delete.
4925         (TARGET_SECTION_TYPE_FLAGS): Likewise.
4926         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
4927         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
4928         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
4929
4930 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
4931
4932         PR target/41015
4933         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
4934         (sub_ddmmss): Likewise.
4935
4936 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
4937
4938         PR bootstrap/41018
4939         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
4940         year.
4941
4942 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4943
4944         PR target/37053
4945         * reload1.c (reload_as_needed): Use cancel_changes to completely
4946         undo a failed replacement attempt.
4947
4948 2009-08-10  Richard Guenther  <rguenther@suse.de>
4949
4950         PR middle-end/41006
4951         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
4952         (useless_type_conversion_p): ... here.  Require pointer targets
4953         to be compatible.
4954
4955 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
4956
4957         PR c++/40866
4958         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
4959         loose the original type of the statement list.
4960
4961 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
4962
4963         * config/alpha/alpha.c: Include libfuncs.h
4964         (avms_asm_output_extern): New function.
4965         (alpha_init_libfuncs): Init some decc libfuncs.
4966         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
4967         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
4968         (DO_CRTL_NAMES): Define.
4969         (LIB_SPEC): Remove.
4970         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
4971         (LONG_TYPE_SIZE): Define.
4972         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
4973         (SUBTARGET_SWITCHES): Define malloc64 switch.
4974         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
4975         (MASK_RETURN_ADDR): Define.
4976         doc/invoke.texi (mmalloc64): Document switch.
4977
4978 2009-08-09  Olivier Hainque  <hainque@adacore.com>
4979             Douglas B Rupp  <rupp@gnat.com>
4980
4981         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
4982         uses_condition_handler.
4983         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
4984         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
4985         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
4986         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
4987         (code_for_builtin): New insn codes for the new alpha_builtins.
4988         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
4989         (alpha_sa_size): Account for uses_condition_handler.
4990         (alpha_expand_prologue): Likewise.
4991         (alpha_start_function): Likewise.
4992         (alpha_expand_epilogue): Likewise.
4993         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
4994         establish/revert expanders.
4995         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
4996         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
4997         New expander, resorting to the alpha.c associated function.
4998         (builtin_revert_vms_condition_handler): Likewise.
4999         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
5000         __gcc_shell_handler, the static VMS condition handler used as
5001         an indirection wrapper to the current dynamically established
5002         handler.
5003         * config/alpha/vms-unwind.h: Complete rewrite.
5004         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
5005         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
5006
5007 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
5008             Douglas B Rupp  <rupp@gnat.com>
5009
5010         * config/alpha/alpha.c (alpha_links): Add 'target' field.
5011         (alpha_need_linkage): Handle aliases.  Return function symbol.
5012         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
5013         Use ultimate alias target for the linkage name.
5014         * config/alpha/alpha.md (movmemdi): Use the symbol returned
5015         by alpha_need_linkage for the function symbol.
5016         (setmemdi): Likewise.
5017
5018 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5019
5020         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
5021         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
5022         (ASM_WEAKEN_LABEL): Define.
5023         (CRT_CALL_STATIC_FUNCTION): Define.
5024         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
5025         (ENDFILE_SPEC): Define.
5026         (INIT_SECTION_ASM_OP): Define.
5027         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
5028         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
5029         crtend.o crtendS.o.
5030         (MULTILIB_OSDIRNAMES): Define.
5031         (shlib_version): Define.
5032         (SHLIB_EXT): Define.
5033         (SHLIB_OBJS): Define.
5034         (SHLIB_NAME): Define.
5035         (SHLIB_MULTILIB): Define.
5036         (SHLIB_INSTALL): Define.
5037         (SHLIB_SYMVEC): Define.
5038         (SHLIB_SYMVECX2): Define.
5039         (SHLIB_LINK): Define.
5040
5041 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5042
5043         * config/alpha/alpha.c (alpha_initialize_trampoline):
5044         Initialize VMS trampoline IAW ABI for bounded procedure calls.
5045         (alpha_start_function): Emit transfer address on nested functions
5046         for VMS trampoline call.
5047         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
5048         since no longer used.
5049         * config/alpha/vms-tramp.asm: Remove.
5050         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
5051         since now only data initialized at runtime.
5052
5053 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5054
5055         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
5056         (LINK_GCC_C_SEQUENCE_SPEC): Define.
5057         (MD_EXEC_PREFIX): Remove, no longer used.
5058         (MD_STARTFILE_PREFIX): Likewise.
5059         (INCLUDE_DEFAULTS): Likewise.
5060         * config/alpha/t-vms:
5061         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
5062
5063 2009-08-09  Richard Guenther  <rguenther@suse.de>
5064
5065         PR tree-optimization/41016
5066         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
5067         (operand_precision): Remove.
5068         (integral_operand_p): Likewise.
5069         (recognize_single_bit_test): Adjust.
5070
5071 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5072
5073         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
5074         operation overflows.  Likewise non-cast unary arithmetic.
5075         If one arm of a conditional expression is always taken,
5076         inhibit evaluation warnings for the other arm.  Likewise inhibit
5077         evaluation warnings for the second && or || operand if the first
5078         operand is enough to determine the result.
5079         * c-typeck.c (build_conditional_expr): Apply the same inhibition
5080         rules here.
5081         (build_binary_op): Prevent duplicate evaluation warnings.
5082
5083 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5084
5085         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
5086         and destination have different modes, Use promote_mode to
5087         determine the signedness of the conversion.  Assert that the
5088         promoted source mode matches the destination mode.  Don't pass
5089         the destination and destination mode to expand_expr if the source
5090         mode is different.  Simplify conversion logic.
5091
5092 2009-08-09  Ira Rosen  <irar@il.ibm.com>
5093
5094         PR tree-optimization/41008
5095         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
5096         from condition only in case it's a comparison. Adjust checks.
5097
5098 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5099
5100         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
5101         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
5102         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
5103         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
5104         (dump_cand): Handle them.
5105         (struct iv_cand): New members COST_STEP and AINC_USE.
5106         (stmt_after_increment): Likewise.
5107         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
5108         callers changed.  Use gimple_uid comparison instead of scanning.
5109         (add_candidate_1): When looking for identical candidates, take
5110         AINC_USE into account.  Set it for new candidates.
5111         (force_expr_to_var_cost): Cast target_spill_cost to int.
5112         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
5113         All callers changed.  Check for availability of autoinc addressing
5114         modes, both in general for a given mode, and in the specific use case.
5115         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
5116         changed.
5117         (get_computation_cost): Likewise.
5118         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
5119         add_autoinc_candidates): New static functions.
5120         (add_candidate): Call add_autoinc_candidates for candidates based on
5121         a USE_ADDRESS use.
5122         (find_iv_candidates): Call set_autoinc_for_original_candidates.
5123         (determine_use_iv_cost_address): If we have an autoinc candidate at
5124         the matching use, verify autoinc is possible and subtract the cost
5125         of the candidate's step from the cost.
5126         (determine_iv_cost): Record the cost of the increment in the COST_STEP
5127         member of the candidate.
5128         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
5129         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
5130
5131 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5132
5133         * config.build (ia64-hp-*vms*): New target.
5134         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5135         with ia64-hp-*vms*.
5136         * config.gcc (ia64-hp-*vms*): New target.
5137         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5138         with ia64-hp-*vms*.
5139         * config.host (ia64-hp-*vms*): New target.
5140         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5141         with ia64-hp-*vms*.
5142
5143 2009-08-08  Richard Guenther  <rguenther@suse.de>
5144
5145         PR tree-optimization/40991
5146         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
5147
5148 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
5149
5150         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
5151         mode check.  Do truncations in an integer mode.
5152         (force_to_mode): Handle subregs for all mode types.  Only do
5153         arithmetic simplifications on integer modes.
5154
5155 2009-08-07  Richard Guenther  <rguenther@suse.de>
5156
5157         PR tree-optimization/40999
5158         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
5159         (maybe_fold_reference): Lookup constant initializers.
5160         (fold_gimple_assign): Likewise.
5161
5162 2009-08-07  Richard Guenther  <rguenther@suse.de>
5163
5164         * tree-ssa.c (useless_type_conversion_p_1): Only for types
5165         that require structural equality defer to the langhook.
5166
5167 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5168
5169         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
5170         comments.
5171         (struct ipa_pass_through_data): New type.
5172         (struct ipa_ancestor_jf_data): New type.
5173         (union jump_func_value): Removed field formal_id, added fields
5174         pass_through and ancestor.
5175         (struct ipa_param_call_note): Changed type of formal_id to int from
5176         unsigned.
5177         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
5178         operations jump functions and ancestor jump functions.
5179         (compute_complex_pass_through): New function.
5180         (compute_scalar_jump_functions): Call compute_complex_pass_through,
5181         reflect changes in the jump function strucutre.
5182         (update_jump_functions_after_inlining): Ignore complex pass-through
5183         and ancestor jump functions.
5184         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
5185         polynomial pass-through with operation jump functions.
5186
5187 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
5188
5189         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
5190         fde->dw_fde_begin as begin label instead of hot/cold label.
5191         Use LLSDAC label instead of LLSDA for second section lsda.
5192         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
5193         label instead of LLSDA if it is true.
5194         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
5195         callers.
5196         * except.c (add_call_site, dw2_size_of_call_site_table): Add
5197         SECTION argument.  Use it as index into crtl->eh.call_site_record
5198         array.
5199         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
5200         use it to determine how to print table entries instead of using
5201         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
5202         label instead of normal begin label as base.
5203         (sjlj_assign_call_site_values): Adjust add_call_site caller.
5204         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
5205         ensure no EH range spans between sections and that landing pads
5206         are always in the corresponding section.
5207         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
5208         for crtl->eh.call_site_record being an array rather than scalar.
5209         (output_one_function_exception_table): New function, copied
5210         from output_function_exception_table.  Adjust
5211         dw2_size_of_call_site_table, dw2_output_call_site_table
5212         callers.  For SECOND section use *C suffixed labels.
5213         (output_function_exception_table): Call
5214         output_one_function_exception_table and, when doing hot/cold
5215         partitioning, also another time for the second section.
5216         * opts.c: Include except.h.
5217         (decode_options): Allow -freorder-blocks-and-partition with
5218         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
5219         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
5220         * function.h (struct rtl_eh): Change call_site_record from
5221         scalar into array of 2 elements.
5222
5223 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5224
5225         * ipa-prop.c (count_formal_params_1): New function.
5226         (ipa_get_vector_of_formal_parms): New function.
5227         (get_vector_of_formal_parm_types): New function.
5228         (ipa_modify_formal_parameters): New function.
5229         (ipa_modify_call_arguments): New function.
5230         (index_in_adjustments_multiple_times_p): New function.
5231         (ipa_combine_adjustments): New function.
5232         (ipa_dump_param_adjustments): New function.
5233         * ipa-prop.h (struct ipa_parm_adjustment): New type.
5234         (ipa_get_vector_of_formal_parms): Declare.
5235         (ipa_modify_formal_parameters): Declare.
5236         (ipa_modify_call_arguments): Declare.
5237         (ipa_combine_adjustments): Declare.
5238         (ipa_dump_param_adjustments): Declare.
5239         (build_ref_for_offset): Declare.
5240         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
5241         * tree-sra.c: Include ipa-prop.c.
5242         (build_ref_for_offset): Make public.
5243
5244 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
5245
5246         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
5247
5248 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
5249
5250         * gcc/doc/extend.texi (__builtin_extract_return_address)
5251         (__builtin_frob_return_address): Document.
5252
5253 2009-08-06  Paul Brook  <paul@codesourcery.com>
5254
5255         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
5256         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
5257         implementation on ARMv6-M.
5258
5259 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5260
5261         * doc/extend.texi (pcs): Document new attribute for ARM.
5262
5263 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5264
5265         * arm.c (pcs_attribute_args): Comment out unsupported attribute
5266         variants.
5267
5268 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5269
5270         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
5271         warning ().
5272
5273 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5274
5275         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
5276
5277 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5278
5279         Merge ARM/hard_vfp_branch to trunk.
5280
5281         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
5282
5283         * arm.c (libcall_eq): New function.
5284         (libcall_hash): New function.
5285         (add_libcall): New function.
5286         (arm_libcall_uses_aapcs_base): New function.
5287         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
5288         libcalls using the base PCS.
5289         (arm_init_cumulative_args): Likewise.
5290
5291         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
5292
5293         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
5294         Use base ABI for conversion libfuncs between HFmode and SFmode.
5295
5296         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5297
5298         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
5299         V4SImode as representatives of all 64-bit and 128-bit vector
5300         types.  Allow vector types without vector modes.
5301         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
5302         without vector modes like BLKmode.
5303         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
5304         BLKmode.  Avoid unsupported vector modes or TImode moves for
5305         non-TARGET_NEON.
5306         (aapcs_vfp_allocate_return_reg): Likewise.
5307         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
5308         V8QImode if TARGET_NEON || TARGET_IWMMXT.
5309
5310         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5311
5312         * config/arm/arm.c (arm_handle_pcs_attribute): New.
5313         (arm_get_pcs_model): Pass attribute arguments to
5314         arm_pcs_from_attribute.
5315         (arm_init_cumulative_args): Use base AAPCS for conversions from
5316         floating-point types to DImode.
5317         (arm_attribute_table): Add pcs attribute.
5318         (arm_handle_pcs_attribute): New.
5319         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
5320         conversions from floating-point types to DImode, also declare them
5321         to use base AAPCS and declare functions they call to use base
5322         AAPCS and their RTABI names.
5323
5324         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5325
5326         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
5327         -mfloat-abi=hard not being supported for VFP.
5328
5329         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
5330
5331         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
5332         SYMBOL_REF to hard_libcall_value.
5333
5334         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5335             Richard Earnshaw  <rearnsha@arm.com>
5336
5337         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
5338         has been put on the stack, all remaining co-processory arguments for
5339         that co-processor also go on the stack.
5340
5341         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5342
5343         * config/arm/arm.c (arm_return_in_memory): Handle returning
5344         vectors of suitable size in registers also for AAPCS case.
5345
5346         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
5347
5348         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
5349
5350         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
5351
5352         ARM Hard-VFP calling convention
5353         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
5354         * target.h (gcc_target): Add libcall_value to table of call hooks.
5355         * targhooks.h (default_libcall_value): Default implementation.
5356         * targhooks.c (default_libcall_value): Likewise.
5357         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
5358         * optabs.c (expand_unop): Use it.
5359         * expr.h (hard_libcall_value): Pass the function RTX through.
5360         * calls.c (emit_library_call_value_1): Update call to
5361         hard_libcall_value.
5362         * explow.c (hard_libcall_value): Use new target hook.
5363         * testsuite/lib/target-supports.exp
5364         (check_effective_target_arm_hard_vfp_ok): New hook.
5365         (check_effective_target_arm_neon_ok): Improve test for neon
5366         availability.
5367         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
5368         * config/arm/arm.c: Include cgraph.h
5369         (TARGET_FUNCTION_VALUE): Override default hook.
5370         (arm_pcs_default): New variable.
5371         (arm_override_options): Don't fault hard calling convention with VFP.
5372         Add support for AAPCS variants.
5373         (arm_function_value): Make static.  Handle AAPCS variants.
5374         (arm_libcall_value): New function.
5375         (arm_apply_result_size): Handle VFP registers in results.
5376         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
5377         conventions.
5378         (pcs_attribute_args): New variable.
5379         (arm_pcs_from_attribute): New function.
5380         (arm_get_pcs_model): New function.
5381         (aapcs_vfp_cum_init): New function.
5382         (aapcs_vfp_sub_candidate): New function.
5383         (aapcs_vfp_is_return_candidate): New function.
5384         (aapcs_vfp_is_call_candidate): New function.
5385         (aapcs_vfp_allocate): New function.
5386         (aapcs_vfp_allocate_return_reg): New function.
5387         (aapcs_vfp_advance): New function.
5388         (aapcs_cp_arg_layout): New variable.
5389         (aapcs_select_call_coproc): New function.
5390         (aapcs_select_return_coproc): New function.
5391         (aapcs_allocate_return_reg): New function.
5392         (aapcs_libcall_value): New function.
5393         (aapcs_layout_arg): New function.
5394         (arm_init_cumulative_args): Initialize AAPCS args data.
5395         (arm_function_arg): Handle AAPCS variants using new interface.
5396         (arm_arg_parital_bytes): Likewise.
5397         (arm_function_arg_advance): New function.
5398         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
5399         calling conventions.
5400         (arm_setup_incoming_varargs): Handle new AAPCS args data.
5401         * arm.h (NUM_VFP_ARG_REGS): Define.
5402         (LIBCALL_VALUE): Update.
5403         (FUNCTION_VALUE): Delete.
5404         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
5405         (arm_pcs): New enum.
5406         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
5407         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
5408         (FUNCTION_ARG_REGNO_P): Add VFP regs.
5409         * arm-protos.h (arm_function_arg_advance): Add.
5410         (aapcs_libcall_value): Add.
5411         (arm_function_value): Delete.
5412
5413 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
5414             H.J. Lu  <hongjiu.lu@intel.com>
5415
5416         PR target/40957
5417         * config/i386/i386.c (standard_sse_mode_p): Remove.
5418         (standard_sse_constant_p): Return 2 for integer mode
5419         vector_all_ones_operand when SSE2 is enabled.
5420         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
5421         (ix86_expand_vector_move): Do not check for negative values from
5422         standard_sse_constant_p.
5423
5424 2009-08-06  Richard Guenther  <rguenther@suse.de>
5425
5426         * tree-ssa.c (useless_type_conversion_p_1): Make function and
5427         array type comparisons frontend independent.
5428         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
5429         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
5430         out array reference lower bound and element size operands.
5431         (ao_ref_init_from_vn_reference): Properly compute the offset
5432         for ARRAY_RANGE_REF.
5433         (vn_reference_fold_indirect): Fill out array reference lower
5434         bound and element size operands.
5435         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
5436         a non gimple valued reference operand which can happen for
5437         array reference lower bound or element size.
5438         (create_component_ref_by_pieces_1): Properly generate the
5439         element size operand for array references.
5440
5441 2009-08-06  Richard Guenther  <rguenther@suse.de>
5442
5443         PR tree-optimization/40964
5444         * tree.c (iterative_hash_host_wide_int): Export.
5445         * tree.h (iterative_hash_host_wide_int): Declare.
5446         * tree-ssa-structalias.c (heapvar_map): New struct.
5447         (heapvar_map_eq): New function.
5448         (heapvar_map_hash): Likewise.
5449         (heapvar_lookup): Adjust.
5450         (heapvar_insert): Likewise.
5451         (make_constraint_from_heapvar): Allow multiple heap variables
5452         per decl at different offsets.
5453         (init_alias_heapvars): Adjust.
5454
5455 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
5456
5457         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
5458         * mips_output_sync_loop (mips_output_sync_loop): Only emit
5459         trailing sync if TARGET_SYNC_AFTER_SC.
5460
5461 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
5462
5463         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
5464         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
5465         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
5466         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
5467         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5468         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5469         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5470         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
5471         test_and_set_12): Rewrite calls to mips_output_sync_loop.
5472         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
5473         the prototype declaration match the definition.
5474         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
5475         instructions explicitly.  Add barrier_before and operands
5476         parameters.
5477         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
5478         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
5479         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
5480         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5481         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
5482         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
5483
5484 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
5485
5486         * tree-ssa-alias.c: Fix intervals to use [) syntax.
5487
5488 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
5489             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
5490
5491         PR target/40906
5492         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
5493         source operand.
5494
5495 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
5496
5497         PR rtl-optimization/40924
5498         * dse.c (canon_address): Before calling cselib_expand_value_rtx
5499         make sure canon_rtx (mem_address) isn't simpler than
5500         canon_rtx (expanded_mem_address).
5501
5502 2009-08-05  Li Feng  <nemokingdom@gmail.com>
5503
5504         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
5505         for each poly_bb_p.
5506         (build_scop_drs): Build alias set for each SCoP.
5507
5508 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
5509
5510         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
5511         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
5512         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
5513         (MIPS_ARCH_FLOAT_SPEC): Likewise.
5514         (BASE_DRIVER_SELF_SPECS): Likewise.
5515
5516 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
5517
5518         * tree-ssa-alias.c: Fix some comment typos.
5519
5520 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
5521
5522         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
5523         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
5524
5525 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
5526
5527         PR c/39902
5528         * simplify-rtx.c (simplify_binary_operation_1): Disable
5529         simplifications for decimal float operations.
5530
5531 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
5532
5533         PR middle-end/40943
5534         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
5535         operand of INDIRECT_REF.
5536
5537 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
5538
5539         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
5540         constants referencing TLS symbols.
5541
5542 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5543
5544         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
5545         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
5546
5547 2009-08-03  Richard Guenther  <rguenther@suse.de>
5548
5549         * tree.c (make_vector_type): Build a main variant first,
5550         get the canonical one and then build the variant.
5551         * tree-ssa.c (useless_type_conversion_p_1): Handle
5552         fixed-point types.
5553         (useless_type_conversion_p): Conversions to pointers to
5554         incomplete record types are useless.
5555
5556 2009-08-03  Richard Guenther  <rguenther@suse.de>
5557
5558         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
5559         file will be created.
5560         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
5561         * toplev.c (compile_file): Adjust comment.
5562
5563 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
5564
5565         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
5566         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
5567         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5568         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5569         (sh_promote_function_mode): Fix typo.
5570
5571 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
5572
5573         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
5574
5575 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5576
5577         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
5578         declaration arguments.
5579
5580 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
5581
5582         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
5583         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
5584         (ix86_split_ashl): Ditto.
5585         (ix86_expand_vector_init_one_nonzero): Ditto.
5586         (ix86_expand_vector_set): Ditto.
5587         (ix86_expand_reduc_v4sf): Ditto.
5588
5589 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
5590
5591         * explow.c (promote_function_mode): Remove assert.
5592         * config/sh/sh.c (sh_promote_function_mode): Declare.
5593
5594 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5595
5596         * config/pa/pa.c (pa_promote_function_mode): Declare.
5597         Change to static.  Fix promote_mode call.
5598
5599         * gthr-dce.h (CONST_CAST2): Define if not defined.
5600         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
5601
5602         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
5603
5604 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
5605
5606         * expr.c (store_constructor): Use promote_decl_mode.  Remove
5607         now write-only variable unsignedp.
5608         (expand_expr_real_1): Use promote_decl_mode.
5609         * expr.h (promote_function_mode, promote_decl_mode): New.
5610         (promote_mode): Remove last argument.
5611         * function.c (assign_temp): Drop last argument of promote_mode.
5612         (assign_parm_find_data_types): Use promote_function_mode.
5613         (assign_parm_setup_reg): Likewise.
5614         (expand_function_end): Use promote_function_mode.
5615         * calls.c (initialize_argument_information): Use promote_function_mode.
5616         (precompute_arguments): Use promote_mode instead of checking if
5617         only PROMOTE_FUNCTION_MODE is defined.
5618         (expand_call): When making sibcall decisions, use promote_function_mode.
5619         Below, remove an if for targetm.calls.promote_function_return and
5620         and use promote_function_mode.
5621         (emit_library_call_value_1): Use promote_function_mode, fix bug
5622         where promote_mode was passed FOR_CALL == 0 for a return value in an
5623         assertion.
5624         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
5625         * explow.c (promote_function_mode, promote_decl_mode): New.
5626         (promote_mode): Keep only the FOR_CALL == 0 case.
5627         * combine.c (setup_incoming_promotion): Remove test of
5628         promote_function_args.  Use promote_function_mode.
5629         * stmt.c (expand_value_return): Use promote_decl_mode.
5630         (expand_decl): Use promote_decl_mode.
5631
5632         * expr.c (store_constructor): Use promote_decl_mode.  Remove
5633         now write-only variable unsignedp.
5634         (expand_expr_real_1): Use promote_decl_mode.
5635         * expr.h (promote_function_mode, promote_decl_mode): New.
5636         (promote_mode): Remove last argument.
5637         * function.c (assign_temp): Drop last argument of promote_mode.
5638         (assign_parm_find_data_types): Use promote_function_mode.
5639         (assign_parm_setup_reg): Likewise.
5640         (expand_function_end): Use promote_function_mode.
5641         * calls.c (initialize_argument_information): Use promote_function_mode.
5642         (precompute_arguments): Use promote_mode instead of checking if
5643         only PROMOTE_FUNCTION_MODE is defined.
5644         (expand_call): When making sibcall decisions, use promote_function_mode.
5645         Below, remove an if for targetm.calls.promote_function_return and
5646         and use promote_function_mode.
5647         (emit_library_call_value_1): Use promote_function_mode, fix bug
5648         where promote_mode was passed FOR_CALL == 0 for a return value in an
5649         assertion.
5650         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
5651         * explow.c (promote_function_mode, promote_decl_mode): New.
5652         (promote_mode): Keep only the FOR_CALL == 0 case.
5653         * combine.c (setup_incoming_promotion): Remove test of
5654         promote_function_args.  Use promote_function_mode.
5655         * stmt.c (expand_value_return): Use promote_decl_mode.
5656         (expand_decl): Use promote_decl_mode.
5657
5658         * explow.c (promote_function_mode): Just call the target hook.
5659         * targhooks.c (default_promote_function_mode,
5660         default_promote_function_mode_always_promote): New.
5661         * targhooks.h (default_promote_function_mode,
5662         default_promote_function_mode_always_promote): Declare.
5663         * target.h (promote_function_args, promote_function_return): Remove.
5664         (promote_function_mode): New.
5665         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
5666         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5667         (TARGET_PROMOTE_FUNCTION_MODE): New.
5668         (TARGET_CALLS): Adjust.
5669         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
5670         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
5671
5672         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
5673         * config/s390/s390.c (s390_promote_function_mode): ... here,
5674         with pointer handling.
5675         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5676         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5677
5678         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
5679         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
5680         with pointer handling.
5681         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5682         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5683
5684         * config/sh/sh-protos.h (sh_promote_function_mode): New.
5685         * config/sh/sh.c (sh_promote_function_mode): New.
5686         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5687         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5688
5689         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
5690         * config/cris/cris.c (cris_promote_function_mode): ... here.
5691         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5692         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5693
5694         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
5695         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
5696         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5697         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5698
5699         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
5700         * config/arm/arm.c (arm_promote_function_mode): ... here, without
5701         complex type handling.
5702         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5703         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5704
5705         * config/pa/pa.c (pa_promote_function_mode): New.
5706         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5707         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5708
5709         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
5710         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5711         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
5712         * config/xtensa/xtensa.c: Likewise.
5713         * config/stormy16/stormy16.c: Likewise.
5714         * config/iq2000/iq2000.c: Likewise.
5715         * config/rs6000/rs6000.c: Likewise.
5716         * config/picochip/picochip.c: Likewise.
5717         * config/arc/arc.c: Likewise.
5718         * config/mcore/mcore.c: Likewise.
5719         * config/score/score.c: Likewise.
5720         * config/mips/mips.c: Likewise.
5721         * config/bfin/bfin.c: Likewise.
5722         * config/ia64/ia64.c: Likewise (disabled though).
5723
5724         * config/frv/frv.h: Remove pointless remark.
5725
5726         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
5727         TARGET_PROMOTE_FUNCTION_ARGS,
5728         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
5729         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
5730
5731 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
5732
5733         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
5734         -floop-parallelize-all.
5735         * toplev.c (process_options): Rename flag_graphite_force_parallel to
5736         flag_loop_parallelize_all.
5737         * tree-ssa-loop.c (gate_graphite_transforms): Same.
5738         * graphite.c (graphite_transform_loops): Same.
5739         * common.opt: Same.
5740         * graphite-poly.c (apply_poly_transforms): Same.
5741
5742 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
5743
5744         PR tree-optimization/40914
5745         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
5746         if set, then check the delta field of the PMF record.
5747         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
5748         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
5749         call is stored in the delta.
5750
5751 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
5752
5753         * config/mips/mips.md (*clear_upper32_dext): New pattern.
5754
5755 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
5756
5757         * config/i386/bsd.h (ASM_BYTE): New define.
5758         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
5759         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
5760         .byte.  Use fputs or putc instead of fprintf where appropriate.
5761         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
5762         fputs or putc instead of fprintf where appropriate.
5763         * config/i386/i386elf.h: Ditto.
5764         * config/i386/sysv4.h: Ditto.
5765
5766         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
5767         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
5768         (*tls_global_dynamic_64): Ditto.
5769
5770 2009-07-31  Christian Bruel  <christian.bruel@st.com>
5771
5772         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
5773
5774 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5775
5776         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
5777         Remove dead code for MINUS.
5778
5779 2009-07-31  Anthony Green  <green@moxielogic.com>
5780
5781         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
5782         $r12 in prologue.
5783         (moxie_expand_epilogue): Ditto for epilogue.
5784         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
5785         incoming arguments.
5786         (moxie_function_arg): Ditto.
5787         (moxie_pass_by_reference): Ditto.
5788         (moxie_arg_partial_bytes): Ditto.
5789         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
5790         (FUNCTION_ARG_ADVANCE) Ditto.
5791         (REG_PARM_STACK_SPACE) Ditto.
5792         (FUNCTION_ARG_REGNO_P) Dito.
5793
5794         * config.gcc: Add moxie linux config support.
5795         * gcc/config/moxie/uclinux.h: New file.
5796
5797 2009-07-31  DJ Delorie  <dj@redhat.com>
5798
5799         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
5800         (UNSPECV_SP_SWITCH_E): New.
5801         (sp_switch_1): Change to an unspec.
5802         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
5803         replace $r15.
5804         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
5805         reference the new stack's address
5806
5807 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5808
5809         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
5810         graphite-clast-to-gimple.o, graphite-dependences.o,
5811         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
5812         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
5813         (graphite-blocking.o,
5814         graphite-clast-to-gimple.o, graphite-dependences.o,
5815         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
5816         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
5817         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
5818         * cfgloop.h (struct loop): Add can_be_parallel field.
5819         * common.opt (fgraphite-identity): Moved up.
5820         (fgraphite-force-parallel): New flag.
5821         * graphite.c: Rewrite.
5822         * graphite.h: Rewrite.
5823         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
5824         after Graphite.
5825         * toplev.c (graphite_out_file): New file descriptor.
5826         (graphite_in_file): New.
5827         (process_options): flag_graphite_force_parallel cannot be used without
5828         Graphite.
5829         * tree-ssa-loop.c: Include toplev.h.
5830         (gate_graphite_transforms): Enable flag_graphite for
5831         flag_graphite_force_parallel.
5832
5833 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5834
5835         * ChangeLog.graphite: New.
5836         * graphite-blocking.c: New.
5837         * graphite-clast-to-gimple.c: New.
5838         * graphite-clast-to-gimple.h: New.
5839         * graphite-dependences.c: New.
5840         * graphite-dependences.h: New.
5841         * graphite-interchange.c: New.
5842         * graphite-poly.c: New.
5843         * graphite-poly.h: New.
5844         * graphite-ppl.c: New.
5845         * graphite-ppl.h: New.
5846         * graphite-scop-detection.c: New.
5847         * graphite-scop-detection.h: New.
5848         * graphite-sese-to-poly.c: New.
5849         * graphite-sese-to-poly.h: New.
5850         * sese.c: New.
5851         * sese.h: New.
5852
5853 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5854
5855         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
5856         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
5857
5858 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5859
5860         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
5861         (scev_is_linear_expression): Return false if the evolution is not
5862         affine multivariate.
5863
5864 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5865
5866         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
5867         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
5868
5869 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5870
5871         * tree-data-ref.c (debug_data_references): New.
5872         (debug_data_reference): New.
5873         * tree-data-ref.h (debug_data_references): Declared.
5874         (debug_data_reference): Declared.
5875
5876 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5877
5878         * tree-data-ref.c (stmt_simple_memref_p: Removed.
5879         * tree-data-ref.h (scop_p): Removed.
5880         (struct data_reference): Remove field scop.
5881         (DR_SCOP): Removed.
5882         (stmt_simple_memref_p): Removed.
5883
5884 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5885
5886         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
5887         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
5888         basic block empty.
5889
5890 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5891
5892         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
5893
5894 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5895
5896         * doc/invoke.texi (-fgraphite-identity): Documented.
5897
5898 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5899
5900         * tree-scalar-evolution.c: Fix comment.
5901         (instantiate_scev_1): Return unknow from scev instantiation if the
5902         result is not above instantiate_below.
5903
5904 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5905
5906         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
5907         static anymore.  Instantiate the symbols that may have been introduced
5908         by chrec_apply.
5909         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
5910         Declared.
5911
5912 2009-07-30  DJ Delorie  <dj@redhat.com>
5913
5914         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
5915         .vliw directive to VLIW sections.
5916
5917 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5918
5919         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
5920         New variables.
5921         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
5922         (AUTOHEADER): New variable.
5923         ($(srcdir)/cstamp-h.in): Use it.
5924
5925 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
5926             Pat Haugen  <pthaugen@us.ibm.com>
5927             Revital Eres <ERES@il.ibm.com>
5928
5929         * config/rs6000/vector.md (VEC_F): Add VSX support.
5930         (VEC_A): Ditto.
5931         (VEC_N): Ditto.
5932         (mov<mode>): Ditto.
5933         (vector_load_<mode>): Ditto.
5934         (vector_store_<mode>): Ditto.
5935         (vector GPR move split): Ditto.
5936         (vec_reload_and_plus_<mptrsize>): Ditto.
5937         (vec_reload_and_reg_<mptrsize>): Ditto.
5938         (add<mode>3): Ditto.
5939         (sub<mode>3): Ditto.
5940         (mul<mode>3): Ditto.
5941         (neg<mode>2): Ditto.
5942         (abs<mode>2): Ditto.
5943         (smin<mode>3): Ditto.
5944         (smax<mode>3): Ditto.
5945         (vector_eq<mode>): Ditto.
5946         (vector_gt<mode>): Ditto.
5947         (vector_ge<mode>): Ditto.
5948         (vector_gtu<mode>): Ditto.
5949         (vector_select_<mode>_uns): Ditto.
5950         (vector_eq_<mode>_p): Ditto.
5951         (vector_gt_<mode>_p): Ditto.
5952         (vector_ge_<mode>_p): Ditto.
5953         (vector_gtu_<mode>_p): Ditto.
5954         (cr6_test_for_zero): Ditto.
5955         (cr6_test_for_zero_reverse): Ditto.
5956         (cr6_test_for_lt): Ditto.
5957         (cr6_test_for_lt_reverse): Ditto.
5958         (xor<mode>3): Ditto.
5959         (ior<mode>3): Ditto.
5960         (and<mode>3): Ditto.
5961         (one_cmpl<mode>2): Ditto.
5962         (nor<mode>2): Ditto.
5963         (andc<mode>2): Ditto.
5964         (float<VEC_int<mode>2): Ditto.
5965         (unsigned_float<VEC_int><mode>2): Ditto.
5966         (fix_trunc<mode><VEC_int>2): Ditto.
5967         (fixuns_trunc<mode><VEC_int>2): Ditto.
5968         (vec_init<mode>):
5969         (vec_set<mode>): Ditto.
5970         (vec_extract<mode>): Ditto.
5971         (vec_interleave_highv4sf): Ditto.
5972         (vec_interleave_lowv4sf): Ditto.
5973         (vec_realign_load_<mode>): Ditto.
5974         (vec_shl_<mode>): Ditto.
5975         (vec_shr_<mode>): Ditto.
5976         (div<mode>3): New patterns for VSX.
5977         (vec_interleave_highv2df): Ditto.
5978         (vec_interleave_lowv2df): Ditto.
5979         (vec_pack_trunc_v2df): Ditto.
5980         (vec_pack_sfix_trunc_v2df): Ditto.
5981         (vec_pack_ufix_trunc_v2df): Ditto.
5982         (vec_unpacks_hi_v4sf): Ditto.
5983         (vec_unpacks_lo_v4sf): Ditto.
5984         (vec_unpacks_float_hi_v4si): Ditto.
5985         (vec_unpacks_float_lo_v4si): Ditto.
5986         (vec_unpacku_float_hi_v4si): Ditto.
5987         (vec_unpacku_float_lo_v4si): Ditto.
5988         (movmisalign<mode>): Ditto.
5989         (vector_ceil<mode>2): New patterns for vectorizing math library.
5990         (vector_floor<mode>2): Ditto.
5991         (vector_btrunc<mode>2): Ditto.
5992         (vector_copysign<mode>3): Ditto.
5993
5994         * config/rs6000/predicates.md (easy_vector_constant_msb): New
5995         predicate for setting the high bit in each word, used for copysign.
5996
5997         * config/rs6000/ppc-asm.h (f19): Whitespace.
5998         (f32-f63): Define if VSX.
5999         (v0-v31): Define if Altivec.
6000         (vs0-vs63): Define if VSX.
6001
6002         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
6003
6004         * config/rs6000/power7.md: New file, provide tuning parameters for
6005         -mcpu=power7.
6006
6007         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
6008         (rs6000_cpu_cpp_builtins): Ditto.
6009         (altivec_overloaded_builtins): Ditto.
6010         (altivec_resolve_overloaded_builtin): Ditto.
6011
6012         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
6013         debug switch to disable vectorizing simple math builtin
6014         functions.
6015
6016         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
6017         Vectorize simple math builtin functions.
6018         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
6019         hook to vectorize math builtins.
6020         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
6021         (rs6000_builtin_conversion): Add VSX/power7 support.
6022         (rs6000_builtin_vec_perm): Ditto.
6023         (vsplits_constant): Add support for loading up a vector constant
6024         with just the high bit set in each part.
6025         (rs6000_expand_vector_init): Add VSX/power7 support.
6026         (rs6000_expand_vector_set): Ditto.
6027         (rs6000_expand_vector_extract): Ditto.
6028         (rs6000_emit_move): Ditto.
6029         (bdesc_3arg): Ditto.
6030         (bdesc_2arg): Ditto.
6031         (bdesc_1arg): Ditto.
6032         (rs6000_expand_ternop_builtin): Ditto.
6033         (altivec_expand_builtin): Ditto.
6034         (rs6000_expand_unop_builtin): Ditto.
6035         (rs6000_init_builtins): Ditto.
6036         (altivec_init_builtins): Ditto.
6037         (builtin_function_type): Ditto.
6038         (rs6000_common_init_builtins): Ditto.
6039         (rs6000_handle_altivec_attribute); Ditto.
6040         (rs6000_mangle_type): Ditto.
6041         (rs6000_vector_mode_supported_p): Ditto.
6042         (rs6000_mode_dependent_address): Altivec addresses with AND -16
6043         are mode dependent.
6044
6045         * config/rs6000/vsx.md: New file for VSX support.
6046
6047         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
6048         identifing values with just the most significant bit set.
6049         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
6050         vectorized builtins.
6051
6052         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
6053         (UNSPEC_VRFIM): Delete.
6054         (splitter for loading up vector with most significant bit): New
6055         splitter for vectorizing copysign.
6056         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
6057         vectorizing simple math functions.
6058         (altivec_vrfip): Add support for vectorizing simple math functions.
6059         (altivec_vrfim): Ditto.
6060         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
6061
6062         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
6063         (power7.md, vsx.md): Include for power7 support.
6064         (copysigndf3): Use VSX instructions if -mvsx.
6065         (negdf2_fpr): Ditto.
6066         (absdf2_fpr): Ditto.
6067         (nabsdf2_fpr): Ditto.
6068         (adddf3_fpr): Ditto.
6069         (subdf3_fpr): Ditto.
6070         (muldf3_fpr): Ditto.
6071         (divdf3_fpr): Ditto.
6072         (fix_truncdfdi2_fpr): Ditto.
6073         (cmpdf_internal1): Ditto.
6074         (fred, fred_fpr): Convert into expander/insn to add VSX support.
6075         (btruncdf2, btruncdf2_fpr): Ditto.
6076         (ceildf2, ceildf2_fpr): Ditto.
6077         (floordf2, floordf2_fpr): Ditto.
6078         (floatdidf2, floatdidf2_fpr): Ditto.
6079         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
6080         (fmsubdf4_fpr): Ditto.
6081         (fnmadddf4_fpr_1): Ditto.
6082         (fnmadddf4_fpr_2): Ditto.
6083         (fnmsubdf4_fpr_1): Ditto.
6084         (fnmsubdf4_fpr_2): Ditto.
6085         (fixuns_truncdfdi2): Add expander for VSX support.
6086         (fix_truncdfdi2): Ditto.
6087         (fix_truncdfsi2): Ditto.
6088         (ftruncdf2): Ditto.
6089         (btruncsf2): Whitespace.
6090         (movdf_hardfloat32): Add support for VSX registers.
6091         (movdf_softfloat32): Ditto.
6092         (movdf_hardfloat64): Ditto.
6093         (movdf_hardfloat64_mfpgpr): Ditto.
6094         (movdf_softfloat64): Ditto.
6095         (movti splitters): Add check for vector registers supporting
6096         TImode in the future.
6097         (bpermd): Add power7 bpermd instruction.
6098
6099         * config/rs6000/altivec.h (vec_div): Define if VSX.
6100         (vec_mul): Ditto.
6101         (vec_msub): Ditto.
6102         (vec_nmadd): Ditto.
6103         (vec_nearbyint): Ditto.
6104         (vec_rint): Ditto.
6105         (vec_sqrt): Ditto.
6106         (all predicates): Use the generic builtin function, and not the V4SF
6107         specific function so that the predicates will work with VSX's V2DF.
6108         (vec_all_*): Ditto.
6109         (vec_any_*): Ditto.
6110
6111         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
6112         Document new VSX functions and types.
6113
6114         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
6115         switches.
6116
6117         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
6118         "wa", and "j" constraints.  Modify "v" to talk about Altivec
6119         instead of just vector.
6120
6121 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
6122
6123         PR debug/26475
6124         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
6125         location for phi arguments.
6126         (rewrite_update_phi_arguments): Find locations for reaching defs.
6127         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
6128         Add location to add_phi_arg calls.
6129         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
6130         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
6131         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
6132         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
6133         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
6134         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
6135         * tree-phinodes.c (make_phi_node): Initialize location.
6136         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
6137         (add_phi_arg): Add location parameter.
6138         (remove_phi_arg_num): Move location when moving phi argument.
6139         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
6140         location.
6141         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
6142         slpeel_update_phi_nodes_for_guard1,
6143         slpeel_update_phi_nodes_for_guard2,
6144         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
6145         vect_loop_versioning): Set locations.
6146         * tree-parloops.c (create_phi_for_local_result,
6147         transform_to_exit_first_loop, create_parallel_loop): Add locations.
6148         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
6149         * tree-vect-loop.c (get_initial_def_for_induction,
6150         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
6151         locations.
6152         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
6153         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
6154         (gimple_phi_arg_set_location): New.  Set locus.
6155         (gimple_phi_arg_has_location): New.  Check for locus.
6156         (redirect_edge_var_map_location): New.  Return locus from var_map.
6157         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
6158         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
6159         combining PHI arguments.
6160         (cond_store_replacement): Set location.
6161         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
6162         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
6163         scop_add_exit_phis_edge): Add locations.
6164         * tree-cfgcleanup.c (remove_forwarder_block,
6165         remove_forwarder_block_with_phi): Add locations.
6166         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
6167         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
6168         locations.
6169         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
6170         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
6171         flush_pending_stmts): Add source location.
6172         * lambda-code.c (perfect_nestify): Maintain location stack with argument
6173         stack to preserve locations.
6174         * tree-vect-stmts.c (vectorizable_load): Add location.
6175         * tree-inline.c (copy_phis_for_bb): Copy locus.
6176         (setup_one_parameter): Add call locus to inlined parameter stmts.
6177         (initialize_inlined_parameters): Pass in call location as parameter
6178         assignment locus.
6179         (tree_function_versioning): Pass location to setup_one_parameter.
6180         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
6181         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
6182         copy and edge lists.
6183         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
6184         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
6185         locus parameter and override the stmt default if provided.
6186         (new_elim_graph, clear_elim_graph, delete_elim_graph,
6187         elim_graph_add_edge, elim_graph_remove_succ_edge,
6188         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
6189         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
6190         eliminate_phi):  Add locus info in elimination graph for each edge and
6191         value copy.
6192         (insert_backedge_copies): Copy locus if present.
6193         * tree-flow.h (struct _edge_var_map): Add locus field.
6194         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
6195         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
6196         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
6197         locations.
6198         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
6199
6200 2009-07-30  Martin Jambor  <mjambor@suse.cz>
6201
6202         PR tree-optimization/40570
6203         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
6204         use inlining loops.
6205
6206 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
6207
6208         * ssa-loop-manip.c: Include langhooks.h.
6209         (rewrite_phi_with_iv): New.
6210         (rewrite_all_phi_nodes_with_iv): New.
6211         (canonicalize_loop_ivs): Move here from tree-parloops.c.
6212         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
6213         * tree-parloops.c (loop_parallel_p): Move out all conditions
6214         except dependency check.
6215         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
6216         (gen_parallel_loop): Call canonicalize_loop_ivs without
6217         reduction_list argument.
6218         (build_new_reduction): New.
6219         (gather_scalar_reductions): New.
6220         (try_get_loop_niter): New.
6221         (try_create_reduction_list): New.
6222         (parallleize_loops): Change the parallel conditions check.
6223         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
6224         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
6225
6226 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
6227
6228         * opt-functions.awk (opt_args): Allow argument to be enclosed in
6229         curly braces.
6230         * doc/options.texi (Option properties):  Mention new quoting syntax.
6231
6232 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6233
6234         * config/alpha/alpha.c (alpha_start_function):
6235         Handle VMS_DEBUG_MAIN_POINTER
6236         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
6237         * doc/invoke.texi: Document -mdebug-main switch.
6238
6239 2009-07-29  Richard Henderson  <rth@redhat.com>
6240
6241         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
6242         (cgraph_create_edge_including_clones): Likewise.
6243         * tree-inline.c (copy_bb): Operate on the correct edges
6244         when updating the callgraph.
6245
6246 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6247
6248         * config/alpha/vms-cc.c: Deleted.
6249         * config/alpha/vms-ld.c: Deleted.
6250         * config/alpha/t-vms64: Moved to config/vms
6251         * config/alpha/vms-crt0-64.c: Moved to config/vms
6252         * config/alpha/vms-crt0.c: Moved to config/vms
6253         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
6254         * config/alpha/vms-psxcrt0.c: Moved to config/vms
6255         * config/alpha/xm-vms.h: Moved to config/vms
6256         * config/alpha/x-vms: Moved to config/vms
6257         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
6258         config/vms/t-vms.
6259         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
6260         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
6261         (version): Set.
6262         * config/vms/t-vms64: Moved here from config/alpha
6263         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
6264         (argc,argv,envp): Enforce 32bit malloc'ing.
6265         * config/vms/vms-psxcrt0-64.c: Likewise.
6266         * config/vms/vms-crt0.c: Moved here from config/alpha.
6267         * config/vms/vms-psxcrt0.c: Likewise.
6268         * config/vms/vms-crtl-64.h: New file.
6269         * config/vms/vms-crtl.h: New file.
6270         * config/vms/vms.opt: New file.
6271         * config/vms/xm-vms64.h: New file.
6272         * config/vms/xm-vms.h: Moved here from config/alpha.
6273         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
6274         Set.
6275         * config/vms/x-vms: Moved here from config/alpha.
6276         (version, VMS_EXTRA_PARTS): Moved to t-vms.
6277         (vms-ld.o, vms-cc.o): Removed.
6278         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
6279
6280 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6281
6282         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
6283         correct stack (obvious VMS fix).
6284
6285 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6286
6287         * dwarf2out.c (output_file_names): Output VMS style file name, size,
6288         date, version info if VMS_DEBUGGING_INFO defined.
6289         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
6290         size, date calculating code moved here.
6291
6292 2009-07-29  Paul Brook  <paul@codesourcery.com>
6293
6294         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
6295         do_push/do_pop.
6296
6297 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
6298
6299         PR target/40577
6300         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
6301         to DImode when generating insq_le insn.
6302
6303 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6304
6305         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
6306         New macro set for VMS_DEBUGGGING_INFO.
6307         (AT_string_form): Use it.
6308
6309 2009-07-28  DJ Delorie  <dj@redhat.com>
6310
6311         * config/mep/mep.c (vtext_section): New.
6312         (vftext_section): New.
6313         (ftext_section): New.
6314         (mep_select_section): Add support for functions.
6315         (mep_unique_section): Likewise.
6316         (mep_asm_init_sections): Likewise.
6317         (mep_encode_section_info): Remove it from here.
6318
6319         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
6320
6321 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
6322
6323         * tree.h (TREE_DEPRECATED): Document it is used for types too.
6324         (TYPE_VECTOR_OPAQUE): Use default_def_flag
6325
6326 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6327
6328         * dwarf2out.c (output_file_names): Test new macro
6329         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
6330         (add_comp_dir_attribute): Likewise.
6331
6332 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
6333
6334         * config/i386/mingw-w64.h (LINK_SPEC): Add
6335         separating space between commands.
6336
6337 2009-07-28  Jan Hubicka  <jh@suse.cz>
6338
6339         PR tree-optimization/40759
6340         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
6341         for renaming.
6342
6343 2009-07-27  DJ Delorie  <dj@redhat.com>
6344
6345         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
6346         types are dword-aligned.
6347         (mep_expand_va_start): Likewise.
6348
6349 2009-07-27  Olivier Hainque  <hainque@adacore.com>
6350             Douglas B Rupp  <rupp@gnat.com>
6351
6352         * convert.c (convert_to_pointer): Don't assume the target
6353         pointer type is POINTER_SIZE long. Fetch its precision instead.
6354
6355 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
6356
6357         * system.h (fopen): Undefine if macro.
6358
6359 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
6360
6361         * dwarf2out.c (output_cfi_p): Removed.
6362         (output_cfis): New function.
6363         (output_fde): New function, split from output_call_frame_info.
6364         (output_call_frame_info): Use it.
6365         (dwarf2out_switch_text_section): Use output_cfis.
6366
6367 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
6368
6369         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
6370         TARGET_BI_ARCH is specified without enabling SJLJ.
6371         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
6372         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
6373
6374 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
6375
6376         * arm.md (negdi2): Use DImode if forcing a value into a register.
6377
6378 2009-07-26  Ira Rosen  <irar@il.ibm.com>
6379
6380         PR tree-optimization/40801
6381         * tree-vect-stmts.c (vectorizable_call): Get previous copy
6382         of vector operand from the previous copy of vector statement.
6383         Pass the correct definition type value to
6384         vect_get_vec_def_for_stmt_copy().
6385
6386 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6387
6388         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
6389         const char ** conversion.
6390
6391 2009-07-25 David Daney <ddaney@caviumnetworks.com>
6392
6393         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
6394         fancy_abort() if !ENABLE_ASSERT_CHECKING.
6395         (gcc_unreachable): Invoke __builtin_unreachable() if
6396         !ENABLE_ASSERT_CHECKING.
6397
6398 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
6399
6400         PR rtl-optimization/40445
6401         * emit-rtl.c (next_nonnote_insn_bb): New function.
6402         * rtl.h (next_nonnote_insn_bb): Declare new function.
6403         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
6404         with no successors that is the successor of the ENTRY_BLOCK.
6405         Continue from the top after removing an empty fallthrough block.
6406         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
6407         of next_nonnote_insn.
6408
6409 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
6410
6411         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
6412
6413 2009-07-25  Martin Jambor  <mjambor@suse.cz>
6414
6415         * c-common.c (c_common_attribute_table): New element for noclone.
6416         (handle_noclone_attribute): New function. Forward-declare.
6417         * tree-inline.c (tree_versionable_function_p): Check for noclone
6418         attribute.
6419         * doc/extend.texi (Labels as Values): Document need for noclone.
6420         (Function Attributes): Document noclone attribute.
6421
6422 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
6423
6424         PR rtl-optimization/34999
6425         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
6426         and dw_fde_switched_cold_to_hot fields.
6427         (output_cfi_p): New function.
6428         (output_call_frame_info): If fde->dw_fde_switched_sections,
6429         output 2 FDEs instead of one with corrupted header.
6430         (dwarf2out_do_cfi_startproc): New function.
6431         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
6432         and fde->dw_fde_switched_cold_to_hot.
6433         (dwarf2out_switch_text_section): Compute
6434         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
6435         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
6436         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
6437         Otherwise, compute fde->dw_fde_switch_cfi.
6438
6439 2009-07-24  Cary Coutant  <ccoutant@google.com>
6440
6441         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
6442
6443 2009-07-24  Cary Coutant  <ccoutant@google.com>
6444
6445         * cfghooks.c (split_block): Copy discriminator to new block.
6446         * tree-cfg.c (assign_discriminator): Check location of last
6447         instruction in block as well as first.
6448
6449 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
6450
6451         * config/i386/linux.c: Use fputs or putc instead of fprintf
6452         where appropriate.
6453         * config/i386/gas.h: Ditto.
6454         * config/i386/x86-64.h: Ditto.
6455         * config/i386/att.h: Ditto.
6456
6457 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6458
6459         * expmed.c (emit_store_flag): Use a recursive call to optimize the
6460         xor case.
6461
6462 2009-07-24  Martin Jambor  <mjambor@suse.cz>
6463
6464         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
6465         (ipa_push_func_to_list_1): Declare.
6466         (ipa_push_func_to_list): New function.
6467
6468         * ipa-prop.c (ipa_push_func_to_list_1): New function.
6469         (ipa_init_func_list): Call ipa_push_func_to_list_1.
6470         (ipa_push_func_to_list): Removed.
6471         (ipa_pop_func_from_list): Clear node_enqueued flag.
6472
6473 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6474
6475         * config/s390/s390.c (override_options): Default
6476         max-unrolled-insns to 100 for z10 tuning.
6477
6478 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
6479
6480         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
6481         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
6482         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
6483         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
6484         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
6485         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
6486         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
6487
6488 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
6489
6490         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
6491         use default set in mingw32.h header.
6492         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
6493         64-bit /mingw/include path.
6494         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
6495         path.
6496
6497 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
6498
6499         PR rtl-optimization/40209
6500         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
6501
6502 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
6503
6504         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
6505         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
6506         with the rest of string where appropriate.  Use fputs or putc
6507         instead of fprintf where appropriate.
6508
6509 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
6510             Pat Haugen  <pthaugen@us.ibm.com>
6511             Revital Eres <ERES@il.ibm.com>
6512
6513         * config/rs6000/vector.md: New file.  Move most of the vector
6514         expander support here from altivec.md to allow for the VSX vector
6515         unit in the future.  Add support for secondary_reload patterns.
6516         Rewrite the patterns for vector comparison, and vector comparison
6517         predicate instructions so that the RTL expresses the desired
6518         behavior, instead of using unspec.
6519
6520         * config/rs6000/constraints.md ("f" constraint): Use
6521         rs6000_constraints to hold the precalculated register class.
6522         ("d" constraint): Ditto.
6523         ("wd" constraint): New constraint for VSX.
6524         ("wf" constraint): Ditto.
6525         ("ws" constraint): Ditto.
6526         ("wa" constraint): Ditto.
6527         ("wZ" constraint): Ditto.
6528         ("j" constraint): Ditto.
6529
6530         * config/rs6000/predicates.md (vsx_register_operand): New
6531         predicate for VSX.
6532         (vfloat_operand): New predicate for vector.md.
6533         (vint_operand): Ditto.
6534         (vlogical_operand): Ditto.
6535         (easy_fp_constant): If VSX, 0.0 is an easy constant.
6536         (easy_vector_constant): Add VSX support.
6537         (altivec_indexed_or_indirect_operand): New predicate for
6538         recognizing Altivec style memory references with AND -16.
6539
6540         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
6541         for vector secondary reload support.
6542         (rs6000_vector_reg_class): Delete, replacing it with
6543         rs6000_constraints.
6544         (rs6000_vsx_reg_class): Ditto.
6545         (rs6000_constraints): New array to hold the register classes of
6546         each of the register constraints that can vary at runtime.
6547         (builtin_mode_to_type): New static array for builtin function type
6548         creation.
6549         (builtin_hash_table): New static hash table for builtin function
6550         type creation.
6551         (TARGET_SECONDARY_RELOAD): Define target hook.
6552         (TARGET_IRA_COVER_CLASSES): Ditto.
6553         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
6554         registers are 128 bits if VSX memory reference instructions are used.
6555         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
6556         unit is being used.
6557         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
6558         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
6559         Print several of the scheduling related parameters.
6560         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
6561         rs6000_constraints instead of rs6000_vector_reg_class.  Move
6562         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
6563         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
6564         Altivec.  Add VSX support.  Setup for secondary reload support on
6565         Altivec/VSX registers.
6566         (rs6000_override_options): Make power7 set the scheduling groups
6567         like the power5.  Add support for new debug switches to override
6568         the scheduling defaults.  Temporarily disable -mcpu=power7 from
6569         setting -mvsx.  Add support for debug switches -malways-hint,
6570         -msched-groups, and -malign-branch-targets.
6571         (rs6000_buitlin_conversion): Add support for returning unsigned
6572         vector conversion functions to fix regressions due to stricter
6573         type checking.
6574         (rs6000_builtin_mul_widen_even): Ditto.
6575         (rs6000_builtin_mul_widen_odd): Ditto.
6576         (rs6000_builtin_vec_perm): Ditto.
6577         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
6578         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
6579         to zero a register.
6580         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
6581         generated upstream.
6582         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
6583         VSX types for bit operations.  Changes to accomidate vector.md.
6584         (bdesc_2arg): Ditto.
6585         (bdesc_1arg): Ditto.
6586         (struct builtin_description_predicates): Rewrite predicate
6587         handling so that RTL describes the operation, instead of passing
6588         the instruction to be used as a string argument.
6589         (bdesc_altivec_preds): Ditto.
6590         (altivec_expand_predicate_builtin): Ditto.
6591         (altivec_expand_builtin): Ditto.
6592         (rs6000_expand_ternop_builtin): Use a switch instead of an if
6593         statement for vsldoi support.
6594         (altivec_expand_ld_builtin): Change to use new names from vector.md.
6595         (altivec_expand_st_builtin): Ditto.
6596         (paired_expand_builtin): Whitespace changes.
6597         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
6598         builtin_mode_to_type table for secondary reload.  Call
6599         builtin_function_type to build random builtin functions.
6600         (altivec_init_builtins): Change to use builtin_function_type to
6601         create builtin function types dynamically as we need them.
6602         (builtin_hash_function): New support for hashing the tree types
6603         for builtin function as we need it, rather than trying to build
6604         all of the trees that we need.  Add initial preliminary VSX support.
6605         (builtin_function_type): Ditto.
6606         (builtin_function_eq): Ditto.
6607         (builtin_hash_struct): Ditto.
6608         (rs6000_init_builtins): Ditto.
6609         (rs6000_common_init_builtins): Ditto.
6610         (altivec_init_builtins): Ditto.
6611         (rs6000_common_init_builtins): Ditto.
6612         (enum reload_reg_type): New enum for simplifing reg classes.
6613         (rs6000_reload_register_type): Simplify register classes into GPR,
6614         Vector, and other registers.  Altivec and VSX addresses in reload.
6615         (rs6000_secondary_reload_inner): Ditto.
6616         (rs6000_ira_cover_classes): New target hook, that returns the
6617         appropriate cover classes, based on -mvsx being used or not.
6618         (rs6000_secondary_reload_class): Add VSX support.
6619         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
6620         (get_vsel_insn): Ditto.
6621         (rs6000_emit_vector_compare): Rewrite vector conditional support
6622         so that where we can, we use RTL operators, instead of blindly use
6623         UNSPEC.
6624         (rs6000_emit_vector_select): Ditto.
6625         (rs6000_emit_vector_cond_expr): Ditto.
6626         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
6627         (create_TOC_reference): Add -mdebug=addr support.
6628         (emit_frame_save): VSX loads/stores need register indexed addressing.
6629
6630         * config/rs6000/rs6000.md: Include vector.md.
6631
6632         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
6633
6634         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
6635         support for V2DI, V2DF in logical, permute, select operations.
6636
6637         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
6638         switch for vsx/power7.
6639         (-mvsx-scalar-memory): Ditto.
6640         (-mvsx-align-128): Ditto.
6641         (-mallow-movmisalign): Ditto.
6642         (-mallow-df-permute): Ditto.
6643         (-msched-groups): Ditto.
6644         (-malways-hint): Ditto.
6645         (-malign-branch-targets): Ditto.
6646
6647         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
6648         hook instead.
6649         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
6650         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
6651         (rs6000_vector_reg_class): Delete.
6652         (rs6000_vsx_reg_class): Ditto.
6653         (enum rs6000_reg_class_enum): New enum for the constraints that
6654         vary based on target switches.
6655         (rs6000_constraints): New array to hold the register class for all
6656         of the register constraints that vary based on the switches used.
6657         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
6658         (enum rs6000_builtins): Add unsigned varients for the builtin
6659         declarations returned by target hooks for expanding multiplies,
6660         select, and permute operations.  Add VSX builtins.
6661         (enum rs6000_builtin_type_index): Add entries for VSX.
6662         (V2DI_type_node): Ditto.
6663         (V2DF_type_node): Ditto.
6664         (unsigned_V2DI_type_node): Ditto.
6665         (bool_long_type_node): Ditto.
6666         (intDI_type_internal_node): Ditto.
6667         (uintDI_type_internal_node): Ditto.
6668         (double_type_internal_node): Ditto.
6669
6670         * config/rs6000/altivec.md (whole file): Move all expanders to
6671         vector.md from altivec.md.  Rename insn matching functions to be
6672         altivec_foo.
6673         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
6674         (altivec_vcmp*): Ditto.
6675         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
6676         (VM): New iterator for moves that includes the VSX types.
6677         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
6678         (altivec_vperm_<mode>_uns): New, for unsigned types.
6679         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
6680         (altivec_eq<mode>): Ditto.
6681         (altivec_gt<mode>): Ditto.
6682         (altivec_gtu<mode>): Ditto.
6683         (altivec_eqv4sf): Ditto.
6684         (altivec_gev4sf): Ditto.
6685         (altivec_gtv4sf): Ditto.
6686         (altivec_vcmpbfp_p): Ditto.
6687
6688 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
6689
6690         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
6691         unsigned HWI.
6692
6693 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
6694
6695         PR target/40832
6696         * config/i386/i386.c (output_387_ffreep): Rewrite to use
6697         ASM_SHORT instead of .word.
6698         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
6699         instead of .word in asm template.
6700
6701 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
6702
6703         PR target/37488
6704         * ira-lives.c (bb_has_abnormal_call_pred): New function.
6705         (process_bb_node_lives): Use it.
6706
6707         * ira.c (setup_cover_and_important_classes): Don't setup
6708         ira_important_class_nums.  Add cover classes to the end of
6709         important classes.
6710         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
6711         New.
6712         (find_reg_class_closure): Use reorder_important_classes.
6713
6714         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
6715
6716         * config/i386/i386.c (i386_ira_cover_classes): New function.
6717         (TARGET_IRA_COVER_CLASSES): Redefine.
6718
6719         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
6720         importance of order of cover classes in the array.
6721
6722 2009-07-22  Diego Novillo  <dnovillo@google.com>
6723
6724         * tree-pass.h (TDF_EH): Define.
6725         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
6726         contains TDF_EH, print the EH region number holding GS.
6727         * tree-dump.c (dump_options): Add "eh".
6728         * doc/invoke.texi: Document it.
6729
6730 2009-07-22  Doug Kwan  <dougkwan@google.com>
6731
6732         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
6733
6734 2009-07-22  Michael Matz  <matz@suse.de>
6735
6736         PR tree-optimization/35229
6737         PR tree-optimization/39300
6738
6739         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
6740         (inhibit_phi_insertion): New function.
6741         (insert_into_preds_of_block): Call it for REFERENCEs.
6742         (init_pre): Initialize and finalize scalar evolutions.
6743         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
6744
6745 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
6746
6747         * config/i386/predicates.md (zero_extended_scalar_load_operand):
6748         Use CONST_VECTOR_NUNITS to determine number of elements.
6749
6750 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
6751
6752         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
6753         (U, W): Constraints are now deprecated and will be removed if we
6754         run out of letters.
6755         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
6756         the file.
6757         ("prefetch"): Add the stcmh instruction for prefetching.
6758         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
6759         changes.
6760         (s390_short_displacement): Return always true if compiling for
6761         machines not providing the long displacement facility.
6762         (s390_mem_constraint): Support the new constraint letter Z.
6763         (s390_check_qrst_address): New function.
6764
6765 2009-07-21  DJ Delorie  <dj@redhat.com>
6766
6767         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
6768         alone too.
6769
6770 2009-07-21  Jason Merrill  <jason@redhat.com>
6771
6772         * c-common.c (max_tinst_depth): Increase default to 1024.
6773
6774 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
6775
6776         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
6777         (vec_unpacku_float_lo_v4si): Ditto.
6778
6779 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
6780
6781         PR target/40811
6782         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
6783         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
6784         (builtin_description): Add __builtin_ia32_cvtudq2ps.
6785         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
6786
6787 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
6788
6789         PR tree-optimization/40813
6790         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
6791         it.
6792
6793 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6794
6795         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
6796         with a NOP_EXPR if needed.
6797
6798 2009-07-21  Paul Brook <paul@codesourcery.com>
6799
6800         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
6801         Terminate debug dump with newline.
6802
6803 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6804
6805         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
6806         Cast "1" to unsigned HOST_WIDE_INT.
6807         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
6808         deposit length to the maximum length - lsb.  Extend length if
6809         HOST_BITS_PER_WIDE_INT is 32.
6810
6811 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
6812
6813         * cgraph.h (constant_pool_htab): New function.
6814         (constant_descriptor_tree): Move from varasm.c.
6815         * varasm.c (constant_pool_htab): New function.
6816         (constant_descriptor_tree): Move to cgraph.h.
6817
6818 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
6819
6820         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
6821
6822 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
6823
6824         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
6825         $(VARRAY_H).
6826
6827 2009-07-20  Xinliang David Li  <davidxl@google.com>
6828
6829         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
6830
6831 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
6832
6833         * config/mips/mips.md (move_type): Add arith.
6834         (type): Handle arith.
6835         (zero_extendsidi2): Rename this into ...
6836         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
6837         (zero_extendsidi2): New expander.
6838         (*zero_extendsidi2_dext): New pattern.
6839
6840 2009-07-20  Nick Clifton  <nickc@redhat.com>
6841
6842         * config.gcc (mips64-*-*): Add definition of tm_defines in order
6843         to set MIPS_ABI_DEFAULT.
6844         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
6845
6846 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
6847
6848         * tree-object-size.c (addr_object_size): Handle unions with
6849         array in it as last field of structs in __bos (, 1) as __bos (, 0).
6850
6851         PR tree-optimization/40792
6852         * tree.c (build_function_type_skip_args): Remove bogus assert.
6853
6854 2009-07-20  Jan Hubicka  <jh@suse.cz>
6855             Martin Jambor  <mjambor@suse.cz>
6856
6857         * cgraph.h (combined_args_to_skip): New field.
6858         * cgraph.c (cgraph_create_virtual_clone): Properly handle
6859         combined_args_to_skip and args_to_skip.
6860         * tree-inline.c (update_clone_info): New function.
6861         (tree_function_versioning): Call update_clone_info.
6862         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
6863         functions.
6864         (cgraph_materialize_all_clones): More extensive dumping, working
6865         with combined_args_to_skip rather than args_to_skip.
6866
6867 2009-07-20  Ira Rosen  <irar@il.ibm.com>
6868
6869         * tree-vectorizer.h (vectorizable_condition): Add parameters.
6870         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
6871         (get_initial_def_for_reduction): Likewise.
6872         (vectorizable_reduction): Skip the check of first operand in case
6873         of COND_EXPR. Add check that it is outer loop vectorization if
6874         nested cycle was detected. Call vectorizable_condition() for
6875         COND_EXPR. If reduction epilogue cannot be created do not fail for
6876         nested cycles (if it is not double reduction). Assert that there
6877         is only one type in the loop in case of COND_EXPR. Call
6878         vectorizable_condition() to vectorize COND_EXPR.
6879         * tree-vect-stmts.c (vectorizable_condition): Update comment.
6880         Add parameters. Allow nested cycles if called from
6881         vectorizable_reduction(). Use reduction vector variable if provided.
6882         (vect_analyze_stmt): Call vectorizable_reduction() before
6883         vectorizable_condition().
6884         (vect_transform_stmt): Update call to vectorizable_condition().
6885
6886 2009-07-20  Christian Bruel  <christian.bruel@st.com>
6887
6888         * config/sh/sh.opt (-mfmovd): Resurrect and document.
6889         * doc/invoke.texi (-mfmovd): Likewise.
6890         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
6891
6892 2009-07-20  Jan Hubicka  <jh@suse.cz>
6893
6894         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
6895         when handling SSA name.
6896
6897 2009-07-19  Jan Hubicka  <jh@suse.cz>
6898
6899         PR tree-optimization/40676
6900         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
6901         virtual PHIs in empty BBs.
6902
6903 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
6904
6905         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
6906         re-expanded the compound use gen_lowpart instead to convert to the
6907         desired mode.
6908
6909 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
6910
6911         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
6912         OUTER_CONST arguments.
6913         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
6914         the new wider mode will be masked off.
6915         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
6916
6917 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
6918
6919         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
6920         high-order bits are zero.
6921
6922 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
6923
6924         * combine.c (simplify_shift_const_1): Split code to determine
6925         shift_mode into ...
6926         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
6927         new bits shifted in are identical to the old sign bit.
6928
6929 2009-07-18  Richard Guenther  <rguenther@suse.de>
6930
6931         PR c/40787
6932         * gimplify.c (gimplify_call_expr): Reject code using results from
6933         functions returning void.
6934
6935 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
6936
6937         * doc/md.texi: Document the new PowerPC "es" constraint.
6938         Document that "m" can include automodified addresses on this target,
6939         and explain how %U must be used.  Extend the "Q" and "Z" documentation
6940         to suggest "es" as well as "m".
6941         * config/rs6000/constraints.md (es): New memory constraint.
6942         (Q, Z): Update strings to match new documentation.
6943
6944 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
6945
6946         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
6947         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
6948         * config/rs6000/predicates.md (volatile_mem_operand): Use
6949         offsettable_nonstrict_memref_p.
6950         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
6951         (*floatunssidf2_internal): Likewise.
6952         (*fix_truncdfsi2_internal): Likewise.
6953         (*fix_trunctfsi2_internal): Likewise.
6954
6955 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
6956
6957         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
6958         atmega32u2 devices.
6959         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
6960
6961 2009-07-17  Richard Guenther  <rguenther@suse.de>
6962
6963         PR c/40401
6964         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
6965         (pass_warn_unused_result): Likewise.
6966         (TODO_set_props): Remove.
6967         * omp-low.c (diagnose_omp_structured_block_errors): Change to
6968         run as a pass.
6969         (pass_diagnose_omp_blocks): Define.
6970         * c-decl.c (pop_file_scope): Do not finalize the CU here.
6971         (c_gimple_diagnostics_recursively): Remove.
6972         (finish_function): Do not call it.
6973         (c_write_global_declarations): Continue after errors.
6974         Finalize the CU here.
6975         * c-gimplify.c (c_genericize): Do not gimplify here.
6976         * c-common.c (c_warn_unused_result): Move ...
6977         * tree-cfg.c (do_warn_unused_result): ... here.
6978         (run_warn_unused_result): New function.
6979         (gate_warn_unused_result): New function.
6980         (pass_warn_unused_result): New pass.
6981         * c-common.h (c_warn_unused_result): Remove.
6982         * flags.h (flag_warn_unused_result): Declare.
6983         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
6984         * opts.c (flag_warn_unused_result): Initialize to false.
6985         * toplev.c (compile_file): Add comment.
6986         * omp-low.c (create_omp_child_function): Do not register
6987         the function with the frontend.
6988         (diagnose_omp_structured_block_errors): Prepare to be
6989         called as optimization pass.
6990         (gate_diagnose_omp_blocks): New function.
6991         (pass_diagnose_omp_blocks): New pass.
6992         * cgraph.h (cgraph_optimize): Remove.
6993         (cgraph_analyze_function): Likewise.
6994         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
6995         * cgraphunit.c (cgraph_lower_function): Lower nested functions
6996         before their parents here.
6997         (cgraph_finalize_function): Not here.
6998         (cgraph_analyze_function): Gimplify functions here.
6999         (cgraph_finalize_compilation_unit): Continue after errors.
7000         Optimize the callgraph from here.
7001         (cgraph_optimize): Make static.
7002         * langhooks.c (write_global_declarations): Finalize the CU.
7003         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
7004         (gimplify_function_tree): Assert we gimplify only once.
7005         Set PROP_gimple_any property.
7006         * tree-nested.c (gimplify_all_functions): New function.
7007         (lower_nested_functions): Gimplify all nested functions.
7008         * gimple.h (diagnose_omp_structured_block_errors): Remove.
7009         * passes.c (init_optimization_passes): Add pass_warn_unused_result
7010         and pass_diagnose_omp_blocks after gimplification.  Do not
7011         set TODO_set_props on all_lowering_passes.
7012         (execute_one_pass): Do not handle TODO_set_props.
7013         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
7014         (gimplify.o): Add tree-pass.h dependency.
7015         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
7016         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
7017         (unsave_r): Likewise.
7018         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
7019         temporary variable.
7020
7021 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
7022
7023         * doc/service.texi (Service): Restore previously removed link,
7024         which isn't broken after all.
7025
7026 2009-07-17  Richard Guenther  <rguenther@suse.de>
7027
7028         PR tree-optimization/40321
7029         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
7030         PHI nodes to the maximal set.
7031         (make_values_for_phi): Add PHI arguments to the maximal set.
7032         (execute_pre): Dump PHI_GEN and the maximal set.
7033
7034 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
7035
7036         PR c++/40780
7037         * gimplify.c (gimplify_conversion): Don't change non-conversions into
7038         VIEW_CONVERT_EXPR.
7039
7040 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
7041
7042         * doc/extend.texi (Nested Functions): Replace broken link with
7043         textual reference.
7044         * doc/service.texi (Service): Remove broken link.
7045
7046 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
7047
7048         PR bootstrap/40781
7049         * builtins.c (expand_builtin_memcmp): Use loc instead of
7050         EXPR_LOCATION (exp).
7051         (expand_builtin_strncmp): Likewise.
7052
7053 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
7054             Manuel López-Ibáñez  <manu@gcc.gnu.org>
7055
7056         PR 40435
7057         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
7058         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
7059         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
7060         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
7061         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
7062         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
7063         tree-inline.c, c-common.c, c-common.h, gimple.c,
7064         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
7065         convert.c: Add location argument to fold_{unary,binary,ternary},
7066         fold_build[123], build_call_expr, build_size_arg,
7067         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
7068         fold_build1_initializer, fold_build2_initializer,
7069         fold_build3_initializer, fold_build_call_array,
7070         fold_build_call_array_initializer, fold_single_bit_test,
7071         omit_one_operand, omit_two_operands, invert_truthvalue,
7072         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
7073         combine_comparisons, fold_builtin_*, fold_call_expr,
7074         build_range_check, maybe_fold_offset_to_address, round_up,
7075         round_down.
7076
7077 2009-07-16  Jason Merrill  <jason@redhat.com>
7078
7079         PR libstdc++/37907
7080         * c-common.c (c_common_reswords): Add __is_standard_layout
7081         and __is_trivial.
7082         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
7083         * doc/implement-cxx.texi: New.
7084         * doc/gcc.texi: Include it.
7085
7086 2009-07-16  DJ Delorie  <dj@redhat.com>
7087
7088         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
7089         compares that may be indirectly affected by previous instructions.
7090
7091 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7092
7093         * builtins.c (do_mpc_arg2): New.
7094         (fold_builtin_2): Fold builtin cpow.
7095         * real.h (HAVE_mpc_pow): New.
7096
7097 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
7098
7099         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
7100         comparison to skip unprofitable schedule
7101
7102 2009-07-16  Simon Baldwin  <simonb@google.com>
7103
7104         * gcc.c (option_map): New flag -no-canonical-prefixes.
7105         * (display_help): Print help text for new flag.
7106         * (process_command): Move options translation and language specifics
7107         and handle new flag early.  Use it to set a function pointer to a
7108         prefix builder.  Replace make_relative_prefix calls with calls to
7109         the function pointed to.  Ignore new flag in regular options handling.
7110         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
7111
7112 2009-07-15  DJ Delorie  <dj@redhat.com>
7113
7114         * config/mep/mep.md (sibcall_internal): Change register to avoid
7115         argument registers.
7116         (sibcall_value_internal): Likewise.
7117
7118 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
7119
7120         PR rtl-optimization/40710
7121         * resource.c (mark_target_live_regs): Reset DF problem to LR.
7122
7123 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
7124
7125         * config/mips/mips.md (*extenddi_truncate<mode>,
7126         *extendsi_truncate<mode>): Change type attribute to move_type
7127         with shift_shift.  Split out code handling exts from here ...
7128         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
7129         pattern.
7130         (*extendhi_truncateqi): Change type attribute to move_type with
7131         shift_shift.  Split out code handling exts from here ...
7132         (*extendhi_truncateqi_exts): ... to this new pattern.
7133
7134 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
7135
7136         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
7137         instead of "and" with inverted sign bit mask value.  Use
7138         "nonimmediate_operand" for operand 1 and operand 2 predicate.
7139         Allocate registers only for operand 4 and operand 5.
7140
7141 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
7142
7143         PR middle-end/40747
7144         * fold-const.c (fold_cond_expr_with_comparison): When folding
7145         < and <= to MIN, make sure the MIN uses the same type as the
7146         comparison's operands.
7147
7148 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
7149
7150         * arm.md (ior_xor): New code iterator.
7151         (split for ior/xor with shift and zero-extend): New split pattern.
7152         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
7153
7154 2009-07-15  Richard Guenther  <rguenther@suse.de>
7155
7156         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
7157         offset member.
7158
7159 2009-07-15  Richard Guenther  <rguenther@suse.de>
7160
7161         PR middle-end/40753
7162         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
7163
7164 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7165
7166         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
7167         handle 2.6.30 kernel.
7168
7169 2009-07-15  DJ Delorie  <dj@redhat.com>
7170
7171         * config/mep/mep.md (sibcall_internal): Change register to allow
7172         for 24-bit addresses.
7173         (sibcall_value_internal): Likewise.
7174
7175 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7176
7177         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
7178         that are enabled/disabled by the flags introduced by a previous patch.
7179
7180 2009-07-14  DJ Delorie  <dj@redhat.com>
7181
7182         * config/mep/mep.md (sibcall_internal): Include non-toggling
7183         non-jmp case.
7184         (sibcall_value_internal): Likewise.
7185
7186 2009-07-14  Taras Glek  <tglek@mozilla.com>
7187             Rafael Espindola  <espindola@google.com>
7188
7189         * doc/sourcebuild.texi: Document install-plugin target.
7190         * configure.ac: Added install-plugin target to language makefiles.
7191         * configure: Regenerate.
7192         * Makefile.in: (install-plugin): Install more headers,
7193         depend on lang.install-plugin.
7194
7195 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7196
7197         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
7198         translation.
7199
7200 2009-07-14  DJ Delorie  <dj@redhat.com>
7201
7202         * config/mep/mep.c (mep_vliw_jmp_match): New function.
7203         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
7204         * config/mep/mep.md (sibcall_internal): Change test from
7205         mep_vliw_mode_match to mep_vliw_jmp_match.
7206         (sibcall_value_internal): Likewise.
7207
7208 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
7209
7210         * config/i386/sse.md (copysign<mode>3): New expander.
7211         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
7212         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
7213         Use ix86_build_const_vector.
7214         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
7215         IX86_BUILTIN_CPYSGNPD.
7216         (builtin_description): Add __builtin_ia32_copysignps and
7217         __builtin_ia32_copysignpd.
7218         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
7219         and BUILT_IN_COPYSIGNF.
7220
7221 2009-07-13  Jason Merrill  <jason@redhat.com>
7222
7223         * builtins.c (can_trust_pointer_alignment): New fn.
7224         (get_pointer_alignment): Factor it out from here.
7225         * tree.h: Declare it.
7226
7227 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
7228
7229         * config/rs6000/predicates.md (offsettable_mem_operand): Test
7230         RTX_AUTOINC class.
7231
7232 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
7233
7234         PR debug/40705
7235         PR c++/403057
7236         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
7237
7238 2009-07-14  Richard Guenther  <rguenther@suse.de>
7239             Andrey Belevantsev <abel@ispras.ru>
7240
7241         PR middle-end/40745
7242         * cfgexpand.c (partition_stack_vars): Do not bother to update
7243         alias information when not optimizing.
7244
7245 2009-07-14  Richard Guenther  <rguenther@suse.de>
7246             Andrey Belevantsev <abel@ispras.ru>
7247
7248         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
7249         (pt_solution_set): Likewise.
7250         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
7251         * tree-ssa-structalias.c (pt_solution_set): New function.
7252         * final.c (rest_of_clean_state): Free SSA data structures.
7253         * print-rtl.c (print_decl_name): Remove.
7254         (print_mem_expr): Implement in terms of print_generic_expr.
7255         * alias.c (ao_ref_from_mem): New function.
7256         (rtx_refs_may_alias_p): Likewise.
7257         (true_dependence): Query alias-export info.
7258         (canon_true_dependence): Likewise.
7259         (write_dependence_p): Likewise.
7260         * tree-dfa.c (get_ref_base_and_extent): For void types leave
7261         size unknown.
7262         * emit-rtl.c (component_ref_for_mem_expr): Remove.
7263         (mem_expr_equal_p): Use operand_equal_p.
7264         (set_mem_attributes_minus_bitpos): Do not use
7265         component_ref_for_mem_expr.
7266         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
7267         (update_alias_info_with_stack_vars): Likewise.
7268         (partition_stack_vars): Call update_alias_info_with_stack_vars.
7269         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
7270         explicitly nor clear stmt operands.
7271         Free the decl-to-pointer map.
7272         * tree-optimize.c (execute_free_datastructures): Do not free
7273         SSA data structures here.
7274         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
7275         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
7276         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
7277         dependencies.
7278         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
7279
7280 2009-07-13  DJ Delorie  <dj@redhat.com>
7281
7282         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
7283         unrolling at the right iteration count.
7284
7285         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
7286         calculations.
7287
7288 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7289
7290         * haifa-sched.c (rank_for_schedule): Introduced flags to
7291         enable/disable individual scheduling heuristics.
7292         * common.opt: Introduced flags to enable/disable individual
7293         heuristics in the scheduler.
7294         * doc/invoke.texi: Introduced flags to enable/disable individual
7295         heuristics in the scheduler.
7296
7297 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
7298
7299         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
7300         config/i386/mingw-tls.c.
7301         * config/i386/mingw-tls.c: Removed.
7302
7303 2009-07-13  Ira Rosen  <irar@il.ibm.com>
7304
7305         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
7306         checks access only relevant statements.
7307         (vectorizable_reduction): Likewise.
7308
7309 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
7310
7311         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
7312         just for 32-bit case.
7313
7314 2009-07-12  Jan Hubicka  <jh@suse.cz>
7315
7316         PR tree-optimization/40585
7317         * except.c (expand_resx_expr): When there already is resume
7318         instruction, produce linked list.
7319         (build_post_landing_pads): Assert that resume is empty.
7320         (connect_post_landing_pads): Handle resume lists.
7321         (dump_eh_tree): Dump resume list.
7322
7323 2009-07-12  Ira Rosen  <irar@il.ibm.com>
7324
7325         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
7326         with additional argument.
7327         * tree-vectorizer.h (enum vect_def_type): Add
7328         vect_double_reduction_def.
7329         (vect_is_simple_reduction): Add argument.
7330         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
7331         indentation.
7332         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
7333         vect_is_simple_reduction with additional argument.
7334         (vect_analyze_loop_operations): Handle exit phi nodes in case of
7335         double reduction.
7336         (reduction_code_for_scalar_code): Handle additional codes by
7337         returning ERROR_MARK for them. Fix comment and indentation.
7338         (vect_is_simple_reduction): Fix comment, add argument to specify
7339         double reduction. Detect double reduction.
7340         (get_initial_def_for_induction): Fix indentation.
7341         (get_initial_def_for_reduction): Fix comment and indentation.
7342         Handle double reduction. Create initial definitions that do not
7343         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
7344         (vect_create_epilog_for_reduction): Fix comment, add argument to
7345         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
7346         epilogue result extraction. Create double reduction phi node and
7347         replace relevant uses.
7348         (vectorizable_reduction): Call vect_is_simple_reduction with
7349         additional argument. Fix indentation. Update epilogue code treatment
7350         according to the changes in reduction_code_for_scalar_code. Check
7351         for double reduction. Call vect_create_epilog_for_reduction with
7352         additional argument.
7353         * tree-vect-stmts.c (process_use): Handle double reduction, update
7354         documentation.
7355         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
7356         (vect_get_vec_def_for_operand): Likewise.
7357
7358 2009-07-12  Danny Smith  <dansmister@gmail.com>
7359
7360         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
7361         dllexport if !TREE_PUBLIC.
7362         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
7363
7364 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
7365
7366         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
7367         (avr_extra_arch_macro) Remove declatation.
7368         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
7369         (avr_extra_arch_macro) Declare as static.
7370         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
7371
7372 2009-07-11  Jan Hubicka  <jh@suse.cz>
7373
7374         PR middle-end/48388
7375         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
7376
7377 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
7378
7379         PR debug/40713
7380         * dwarf2out.c (dw_fde_struct): Add in_std_section and
7381         cold_in_std_section bits.
7382         (dwarf2out_begin_prologue): Initialize them.
7383         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
7384         if already covered by text_section or cold_text_section range.
7385
7386         PR rtl-optimization/40667
7387         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
7388         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
7389         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
7390         * config/i386/i386.c (ix86_minimum_alignment): New function.
7391         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
7392         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
7393         * emit-rtl.c (gen_reg_rtx): Likewise.
7394         * function.c (assign_parms): Likewise.  If nominal_type needs
7395         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
7396         rather than passed_type's alignment.
7397
7398         PR target/40668
7399         * function.c (assign_parm_setup_stack): Adjust
7400         MEM_OFFSET (data->stack_parm) if promoted_mode is different
7401         from nominal_mode on big endian.
7402
7403 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
7404
7405         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
7406
7407 2009-07-10  DJ Delorie  <dj@redhat.com>
7408
7409         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
7410
7411 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
7412
7413         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
7414         attribute.
7415         (thumb2_cbnz): Likewise.
7416
7417 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
7418
7419         PR target/39079
7420         * config.gcc (supported_defaults): Add synci.
7421         (with_synci): Add validation.
7422         (all_defaults): Add synci.
7423         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
7424         ISA_HAS_SYNCI.
7425         (synci): Same.
7426         * config/mips/mips.opt (msynci): New option.
7427         * config/mips/mips.c (mips_override_options): Warn on use of
7428         -msynci for targets that do now support it.
7429         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
7430         msynci.
7431         * gcc/doc/invoke.texi (-msynci): Document the new option.
7432         * doc/install.texi (--with-synci): Document the new option.
7433
7434 2009-07-10  Richard Guenther  <rguenther@suse.de>
7435
7436         PR tree-optimization/40496
7437         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
7438         the PHI result with a compatible type.
7439
7440 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7441
7442         PR 25509
7443         PR 40614
7444         * c.opt (Wunused-result): New.
7445         * doc/invoke.texi: Document it.
7446         * c-common.c (c_warn_unused_result): Use it.
7447
7448 2009-07-09  DJ Delorie  <dj@redhat.com>
7449
7450         * targhooks.c (default_target_can_inline_p): Rename from
7451         default_target_option_can_inline_p.
7452         * targhooks.h (default_target_can_inline_p): Likewise.
7453         * target-def.h (TARGET_CAN_INLINE_P): Rename from
7454         TARGET_OPTION_CAN_INLINE_P.
7455         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
7456         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
7457         (mep_target_can_inline_p): Rename from
7458         mep_target_option_can_inline_p.
7459
7460         PR target/40626
7461         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
7462         registers used to pass vectors.
7463
7464         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
7465
7466 2009-07-09  Tom Tromey  <tromey@redhat.com>
7467
7468         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
7469         * config/mmix/mmix.c: Include dwarf2.h.
7470         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
7471         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
7472         * config/sh/sh.c: Include dwarf2.h.
7473         * config/i386/i386.c: Include dwarf2.h.
7474         * Makefile.in (DWARF2_H): Remove 'elf'.
7475         * except.c: Include dwarf2.h.
7476         * unwind-dw2.c: Include dwarf2.h.
7477         * dwarf2out.c: Include dwarf2.h.
7478         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
7479         * unwind-dw2-fde.c: Include dwarf2.h.
7480         * dwarf2asm.c: Include dwarf2.h.
7481
7482 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
7483
7484         * haifa-sched.c (insn_finishes_cycle_p): New static function.
7485         (max_issue): Use it.
7486         * sched-int.h (struct sched_info: insn_finishes_block_p): New
7487         scheduler hook.
7488         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
7489         (region_sched_info): Update.
7490         * sched-ebb.c (ebb_sched_info): Update.
7491         * modulo-sched.c (sms_sched_info): Update.
7492         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
7493
7494 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
7495
7496         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
7497
7498 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
7499
7500         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
7501
7502 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
7503
7504         PR middle-end/40692
7505         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
7506         arg1 with arg01 if arg1 is already INTEGER_CST.
7507
7508 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
7509
7510         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
7511         Transform (and (truncate)) into (truncate (and)).
7512
7513 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
7514
7515         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
7516         creating LHS paradoxical subregs.  Fix surrounding returns to
7517         use NULL_RTX rather than 0.
7518
7519 2009-07-08  DJ Delorie  <dj@redhat.com>
7520
7521         * config/mep/mep.c: (mep_option_can_inline_p): New.
7522         (TARGET_OPTION_CAN_INLINE_P): Define.
7523
7524 2009-07-08  Mark Wielaard  <mjw@redhat.com>
7525
7526         PR debug/40659
7527         * dwarf2out.c (add_data_member_location_attribute): When we have
7528         only a constant offset don't emit a new location description using
7529         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
7530         dwarf_version > 2.
7531
7532 2009-07-08  Richard Henderson  <rth@redhat.com>
7533
7534         PR target/38900
7535         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
7536         (enum reg_class): Add CLOBBERED_REGS.
7537         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
7538         * config/i386/i386.c (ix86_conditional_register_usage): Moved
7539         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
7540         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
7541         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
7542         force 64-bit sibcalls into R11.
7543         * config/i386/constraints.md (U): New constraint.
7544         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
7545         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
7546         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
7547
7548 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
7549
7550         * basic-block.h (dump_regset, debug_regset): Remove duplicate
7551         prototypes.
7552         * c-objc-common.h (c_initialize_diagnostics): Ditto.
7553         * ebitmap.h (dump_ebitmap): Ditto.
7554         * optabs.h (optab_libfunc): Ditto.
7555         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
7556         * tree-flow.h (vect_can_force_dr_alignment_p,
7557         get_vectype_for_scalar_type): Ditto.
7558         (vectorize_loops): Move prototype to ...
7559         * tree-vectorizer.h: ... here. Also, adjust comment.
7560         (vect_set_verbosity_level): Remove duplicate prototype.
7561         * tree-ssa-loop.c: Include tree-vectorizer.h.
7562         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
7563
7564 2009-07-08  Nick Clifton  <nickc@redhat.com>
7565
7566         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
7567         forward slash.
7568
7569 2009-07-08  DJ Delorie  <dj@redhat.com>
7570
7571         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
7572         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
7573         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
7574         written to.
7575         * config/mep/intrinsics.md: Regenerated.
7576         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
7577         registers when asm() or calls are detected.
7578
7579 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7580
7581         PR c++/31246
7582         * gimplify.c (gimplify_expr): Propagate no_warning flag when
7583         gimplifying.
7584         * gimple (gimple_build_call_from_tree): Likewise.
7585         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
7586         no_warning flag before warning.
7587
7588 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7589
7590         * tree.c (set_expr_locus): Remove.
7591         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
7592         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
7593         EXPR_LOCATION.
7594         * gimplify.c (internal_get_tmp_var): Likewise.
7595         (gimplify_call_expr): Likewise.
7596         (gimplify_one_sizepos): Likewise.
7597
7598 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
7599
7600         PR debug/40666
7601         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
7602         to variables for debugging purposes.
7603
7604 2009-06-23  Mark Loeser  <mark@halcy0n.com>
7605
7606         PR build/40010
7607         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
7608
7609 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7610
7611         * pretty-print.c (pp_base_format): Remove %J.
7612         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
7613         gcc_cxxdiag_char_table): Likewise.
7614         (init_dynamic_diag_info): Likewise.
7615
7616 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7617
7618         * pretty-print.c (pp_base_format): Remove %H.
7619         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
7620         gcc_cxxdiag_char_table): Likewise.
7621         (init_dynamic_diag_info): Likewise.
7622         * config/mep/mep.c (mep_select_section): Likewise.
7623
7624 2009-07-07  Duncan Sands  <baldrick@free.fr>
7625
7626         * final.c (pass_clean_state): Give the pass a name.
7627         * passes.c (pass_rest_of_compilation): Likewise.
7628         * tree-optimize.c (pass_all_optimizations): Likewise.
7629
7630 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
7631
7632         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
7633         an extra 'decl' for error_at.
7634
7635 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
7636
7637         PR middle-end/40669
7638         * tree-tailcall.c (adjust_return_value_with_ops,
7639         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
7640         if it has complex or vector type.
7641
7642 2009-07-07  Olivier Hainque  <hainque@adacore.com>
7643
7644         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
7645         pthread symbols.
7646
7647 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
7648
7649         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
7650
7651 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7652
7653         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
7654         * c-decl.c: Likewise.
7655         * function.c: Likewise.
7656         * varasm.c: Likewise.
7657         * tree-ssa.c: Likewise.
7658         * c-common.c: Likewise.
7659         * tree-cfg.c: Likewise.
7660         * config/spu/spu.c: Likewise.
7661         * config/ia64/ia64.c: Likewise.
7662         * config/v850/v850.c: Likewise.
7663
7664 2009-07-06  DJ Delorie  <dj@redhat.com>
7665
7666         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
7667         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
7668         unspecified accesses to control registers.
7669         * config/mep/intrinsics.md: Regenerate.
7670         * config/mep/intrinsics.h: Regenerate.
7671         * config/mep/mep-intrin.h: Regenerate.
7672
7673 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7674
7675         * c-lex.c: Replace %H by an explicit location. Update all calls.
7676         * c-common.c: Likewise.
7677         * c-decl.c: Likewise.
7678         * c-typeck.c: Likewise.
7679         * fold-const.c: Likewise.
7680         * gimplify.c: Likewise.
7681         * stmt.c: Likewise.
7682         * tree-cfg.c: Likewise.
7683         * tree-ssa-loop-niter.c: Likewise.
7684         * tree-vrp.c: Likewise.
7685         * value-prof.c: Likewise.
7686
7687 2009-07-06  Diego Novillo  <dnovillo@google.com>
7688
7689         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
7690         if it has one.  Handle cases where VAR does not have an
7691         annotation or cfun is NULL.
7692
7693 2009-07-06  Diego Novillo  <dnovillo@google.com>
7694
7695         * tree.c: Include debug.h.
7696         (initialize_tree_contains_struct): New.
7697         (init_ttree): Call it.
7698         (tree_node_structure_for_code): Factor out of ...
7699         (tree_node_structure): ... here.
7700         * treestruct.def (TS_PHI_NODE): Remove.
7701         (TS_GIMPLE_STATEMENT): Remove.
7702
7703 2009-07-06  Diego Novillo  <dnovillo@google.com>
7704
7705         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
7706         (debug_tree_chain): Handle cycles.
7707
7708 2009-07-06  Nick Clifton  <nickc@redhat.com>
7709             DJ Delorie  <dj@redhat.com>
7710
7711         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
7712         __FMOVD_ENABLED__ is defined.
7713         * config/sh/sh.h
7714         (TARGET_FMOVD): Provide a default definition.
7715         (MASK_FMOVD): Likewise.
7716         (TARGET_CPU_CPP_BUILTINS): Define
7717         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
7718         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
7719         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
7720         (split for DF load from memory into register): Also handle
7721         MEMs which consist of REG+DISP addressing.
7722         (split for DF store from register to memory): Likewise.
7723         (movsf_ie): Always use single fp_mode.
7724         * config/sh/sh.c (sh_override_options): Do not automatically
7725         enable TARGET_MOVD for the SH2A when supporting doubles - leave
7726         that to the -mfmovd command line switch.
7727         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
7728         (fldi_ok): Always allow.
7729         * config/sh/sh.opt (mfmovd): Remove this switch.
7730         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
7731
7732 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
7733             Kaz Kojima  <kkojima@gcc.gnu.org>
7734
7735         PR rtl-optimization/30807
7736         * postreload.c (reload_combine): For every new use of REG_SUM,
7737         record the use of BASE.
7738
7739 2009-07-06  Jan Hubicka  <jh@suse.cz>
7740
7741         * params.def: Revert my accidental commit at 2009-06-30.
7742
7743 2009-07-04  Ian Lance Taylor  <iant@google.com>
7744
7745         PR target/40636
7746         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
7747         EXPORTED_CONST.
7748         (mingw_format_attribute_overrides): Likewise.
7749
7750 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
7751
7752         PR debug/40596
7753         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
7754         don't check cfa.reg.  Instead of cfa.indirect use
7755         fde && fde->drap_reg != INVALID_REGNUM test.
7756
7757 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
7758
7759         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
7760
7761 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
7762
7763         PR target/40587
7764         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
7765
7766 2009-07-03  Richard Guenther  <rguenther@suse.de>
7767
7768         PR tree-optimization/40640
7769         * tree-switch-conversion.c (build_arrays): Perform arithmetic
7770         in original type.
7771
7772 2009-07-03  Jan Hubicka  <jh@suse.cz>
7773
7774         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
7775         for size, reduce amount of inlining.
7776
7777 2009-07-03  Richard Guenther  <rguenther@suse.de>
7778
7779         PR middle-end/34163
7780         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
7781         if t +- x is known to not overflow and the conversion widens the
7782         operation.
7783         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
7784
7785 2009-07-03  Jan Hubicka  <jh@suse.cz>
7786
7787         * ipa-pure-const.c (analyze): Update loop optimizer init.
7788         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
7789         try_remove_empty_loop, remove_empty_loops): Remove.
7790         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
7791         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
7792         to mark regular loops as neccesary.
7793         (degenerate_phi_p): New function.
7794         (propagate_necessity, remove_dead_phis): Use it.
7795         (forward_edge_to_pdom): Likewise.
7796         (eliminate_unnecessary_stmts): Take care to remove uses of results of
7797         virtual PHI nodes that became unreachable.
7798         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
7799         * tree-flow.h (remove_empty_loops): Remove.
7800         * passes.c (init_optimization_passes): Remove.
7801
7802 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
7803
7804         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
7805         can_create_pseudo_p.
7806         (*fix_trunc<mode>_i387_1): Ditto.
7807         (*floathi<mode>2_1): Ditto.
7808         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
7809         (*fistdi2_1): Ditto.
7810         (*fist<mode>2_1): Ditto.
7811         (frndintxf2_floor): Ditto.
7812         (*fist<mode>2_floor_1): Ditto.
7813         (frndintxf2_ceil): Ditto.
7814         (*fist<mode>2_ceil_1): Ditto.
7815         (frndintxf2_trunc): Ditto.
7816         (frndintxf2_mask_pm): Ditto.
7817         (fxam<mode>2_i387_with_temp): Ditto.
7818         * config/i386/sse.md (mulv16qi3): Ditto.
7819         (*sse2_mulv4si3): Ditto.
7820         (mulv2di3): Ditto.
7821         (sse4_2_pcmpestr): Ditto.
7822         (sse4_2_pcmpistr): Ditto.
7823
7824 2009-07-03  Jan Hubicka  <jh@suse.cz>
7825
7826         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
7827         (mark_stmt_necessary): Set it.
7828         (mark_operand_necessary): Set it.
7829         (mark_control_dependent_edges_necessary): Set it.
7830         (mark_virtual_phi_result_for_renaming): New function.
7831         (get_live_post_dom): New function.
7832         (forward_edge_to_pdom): New function.
7833         (remove_dead_stmt): Fix handling of control dependences.
7834         (tree_dce_init): Init new bitmap.
7835         (tree_dce_done): Free it.
7836
7837 2009-07-02  Richard Guenther  <rguenther@suse.de>
7838
7839         PR bootstrap/40617
7840         * tree-ssa-structalias.c (new_var_info): Initialize
7841         is_restrict_var.
7842
7843 2009-07-02  Jan Hubicka  <jh@suse.cz>
7844
7845         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
7846         local.
7847
7848 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
7849
7850         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
7851         instead of recomputing it.  Adjust calls.
7852         (emit_store_flag): Adjust recursive calls.
7853
7854 2009-07-02  Richard Guenther  <rguenther@suse.de>
7855
7856         * tree-ssa-live.c (remove_unused_locals): Do not remove
7857         heap variables.
7858         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
7859         of DECL_EXTERNAL for HEAP variables.
7860         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
7861         HEAP variables.  Do not adjust RESTRICT vars.
7862         (find_what_var_points_to): Nobody cares if something
7863         points to READONLY.
7864
7865 2009-07-02  Ben Elliston  <bje@au.ibm.com>
7866
7867         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
7868         pc_low and pc_high declarations to the top of the function.
7869
7870 2009-07-01  DJ Delorie  <dj@redhat.com>
7871
7872         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
7873         registers as fixed.
7874         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
7875         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
7876         unspecified accesses to control registers.
7877         * config/mep/intrinsics.md: Regenerate.
7878         * config/mep/intrinsics.h: Regenerate.
7879         * config/mep/mep-intrin.h: Regenerate.
7880
7881 2009-07-01  Anthony Green  <green@moxielogic.com>
7882
7883         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7884         instruction when possible.
7885         (moxie_expand_prologue): Ditto.  Also, save an instruction and
7886         some complexity by popping off of $r12 instead of $sp.
7887         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
7888         operands.
7889
7890 2009-07-01  Richard Henderson  <rth@redhat.com>
7891
7892         PR bootstrap/40347
7893         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
7894         contained no insns, reposition note before last insn.
7895
7896 2009-07-01  Richard Henderson  <rth@redhat.com>
7897
7898         PR debug/40431
7899         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
7900         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
7901
7902 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
7903
7904         PR bootstrap/40558
7905         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
7906         darwin9 for printing reg addresses with %y.
7907
7908 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
7909
7910         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
7911         truncation from operands in binary operations.
7912
7913 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
7914
7915         Revert:
7916         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
7917         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
7918         subreg of op0 to the original op0.
7919
7920         * expmed.c (store_bit_field_1): Use a temporary as the destination
7921         instead of a paradoxical subreg when we need to truncate the result.
7922
7923 2009-07-01  DJ Delorie  <dj@redhat.com>
7924
7925         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
7926         names to VLIW variants.
7927         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
7928         * config/mep/intrinsics.md: Regenerate.
7929         * config/mep/intrinsics.h: Regenerate.
7930         * config/mep/mep-intrin.h: Regenerate.
7931
7932 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
7933
7934         PR debug/40462
7935         * jump.c (returnjump_p): Revert last patch.
7936         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
7937
7938 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7939
7940         PR target/40575
7941         * pa.md (casesi32p): Use jump table label to determine the offset
7942         of the jump table.
7943         (casesi64p): Likewise.
7944
7945         * pa.c (forward_branch_p): Return bool type.  Use instruction
7946         addresses when available.  Assert that INSN has a jump label.
7947         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
7948         have a jump label.
7949
7950 2009-07-01  Richard Guenther  <rguenther@suse.de>
7951
7952         PR tree-optimization/19831
7953         * tree-ssa-dce.c (propagate_necessity): Calls to functions
7954         that only act as barriers do not make any previous stores necessary.
7955         * tree-ssa-structalias.c (handle_lhs_call): Delay making
7956         HEAP variables global, do not add a constraint from nonlocal.
7957         (find_func_aliases): Handle escapes through return statements.
7958         (compute_points_to_sets): Make escaped HEAP variables global.
7959
7960 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
7961
7962         PR bootstrap/40597
7963         * expmed.c (emit_store_flag): Perform a conversion if necessary,
7964         after reducing a DImode cstore to SImode.
7965
7966 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
7967
7968         * expr.c (expand_expr_real_1): Reinstate fallthrough to
7969         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
7970
7971 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
7972
7973         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
7974         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
7975         to 0.
7976         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
7977         and umod_optab if TARGET_BSD_DIVMOD.
7978         * config/vax/lib1funcs.asm: New file.
7979         * config/vax/t-linux: New file.
7980         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
7981
7982 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
7983
7984         PR c++/40566
7985         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
7986         to type arguments that have void type.
7987
7988         PR debug/40573
7989         * dwarf2out.c (gen_formal_parameter_die): Call
7990         equate_decl_number_to_die if node is different from origin.
7991
7992 2009-06-30  Anthony Green  <green@moxielogic.com>
7993
7994         Clean up moxie port for --enable-build-with-cxx.
7995         * config/moxie/moxie.c (moxie_function_value): First two
7996         parameters are const_tree, not tree.
7997         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
7998         (REG_CLASS_NAMES): Ditto.
7999         (REGNO_REG_CLASS): Ditto.
8000         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
8001         (moxie_function_value): Fix constyness of arguments.
8002
8003 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
8004
8005         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
8006         finalize_size_functions before further processing.
8007         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
8008         (variable_size): Call self_referential_size on size expressions
8009         that contain a PLACEHOLDER_EXPR.
8010         (size_functions): New static variable.
8011         (copy_self_referential_tree_r): New static function.
8012         (self_referential_size): Likewise.
8013         (finalize_size_functions): New global function.
8014         * tree.c: Include tree-inline.h.
8015         (push_without_duplicates): New static function.
8016         (find_placeholder_in_expr): New global function.
8017         (substitute_in_expr) <tcc_declaration>: Return the replacement object
8018         on equality.
8019         <tcc_expression>: Likewise.
8020         <tcc_vl_exp>: If the replacement object is a constant, try to inline
8021         the call in the expression.
8022         * tree.h (finalize_size_functions): Declare.
8023         (find_placeholder_in_expr): Likewise.
8024         (FIND_PLACEHOLDER_IN_EXPR): New macro.
8025         (substitute_placeholder_in_expr): Update comment.
8026         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
8027         is true.
8028         (copy_tree_body_r): Likewise.
8029         (copy_tree_body): New static function.
8030         (maybe_inline_call_in_expr): New global function.
8031         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
8032         (maybe_inline_call_in_expr): Declare.
8033         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
8034         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
8035         GIMPLE_H.
8036
8037 2009-06-30  Richard Guenther  <rguenther@suse.de>
8038
8039         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
8040         continue walking.
8041         (propagate_necessity): Do not mark reaching defs of stores
8042         as necessary.
8043
8044 2009-06-30  Jan Hubicka  <jh@suse.cz>
8045
8046         * cfgloopanal.c (check_irred): Move into ...
8047         (mark_irreducible_loops): ... here; return true if ireducible
8048         loops was found.
8049         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
8050         (analyze_function): Try to prove loop finiteness.
8051         * cfgloop.h (mark_irreducible_loops): Update prototype.
8052         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
8053
8054 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
8055
8056         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
8057
8058 2009-06-30  Ira Rosen  <irar@il.ibm.com>
8059
8060         PR tree-optimization/40542
8061         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
8062         types.
8063
8064 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8065
8066         PR tree-optimization/40582
8067         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
8068         than useless_type_conversion_p.
8069         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
8070         proper place.
8071
8072 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8073
8074         PR middle-end/40554
8075         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
8076
8077 2009-06-30  Richard Guenther  <rguenther@suse.de>
8078
8079         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
8080         use ao_ref references.
8081         (walk_aliased_vdefs): Likewise.
8082         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
8083         * tree-ssa-dce.c (struct ref_data): Remove.
8084         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
8085         (mark_aliased_reaching_defs_necessary): Adjust.
8086         (mark_all_reaching_defs_necessary_1): Likewise.
8087
8088 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
8089
8090         PR boostrap/40597
8091         * expmed.c (emit_cstore): New name of emit_store_flag_1.
8092         (emit_store_flag_1): Extract from emit_store_flag, adjust
8093         calls to (what now is) emit_cstore.
8094         (emit_store_flag): Call emit_store_flag_1 and also use it
8095         for what used to be recursive calls.
8096
8097 2009-06-30  Wei Guozhi  <carrot@google.com>
8098
8099         PR/40416
8100         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
8101         if the target bb post dominates from bb.
8102         * config/i386/i386.c (memory_address_length): Check existence of base
8103         register before using it.
8104
8105 2009-06-30  Nick Clifton  <nickc@redhat.com>
8106             DJ Delorie  <dj@redhat.com>
8107
8108         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8109         __FMOVD_ENABLED__ is defined.
8110         * config/sh/sh.h
8111         (TARGET_FMOVD): Provide a default definition.
8112         (MASK_FMOVD): Likewise.
8113         (TARGET_CPU_CPP_BUILTINS): Define
8114         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8115         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8116         two fmov instructions depending upon whether TARGET_FMOVD is
8117         enabled.
8118         (split for DF load from memory into register): Also handle
8119         MEMs which consist of REG+DISP addressing.
8120         (split for DF store from register to memory): Likewise.
8121         * config/sh/sh.opt (mfmovd): Remove this switch.
8122         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8123         * config/sh/sh.c (sh_override_options): Do not automatically
8124         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8125         that to the -mfmovd command line switch.
8126
8127         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
8128         the SH4 and SH4A.
8129         (fldi_ok): Always allow.
8130         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
8131
8132 2009-06-29  DJ Delorie  <dj@redhat.com>
8133
8134         * doc/install.texi (mep-x-elf): Correct chip's full name.
8135
8136 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
8137
8138         * doc/extend.texi: Fix typo.
8139
8140 2009-06-29  Tom Tromey  <tromey@redhat.com>
8141
8142         * dwarf2.h: Remove.
8143         * Makefile.in (DWARF2_H): New variable.
8144         (except.o): Use it.
8145         (dwarf2out.o): Likewise.
8146         (dwarf2asm.o): Likewise.
8147         * config/i386/t-i386: Use DWARF2_H.
8148         * except.c: Include elf/dwarf2.h.
8149         * unwind-dw2.c: Include elf/dwarf2.h.
8150         * dwarf2out.c: Include elf/dwarf2.h.
8151         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
8152         <dtprel>: New field.
8153         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
8154         (size_of_loc_descr): Likewise.
8155         (output_loc_operands_raw): Likewise.
8156         (output_loc_operands): Handle new dtprel field.
8157         (loc_checksum): Update.
8158         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
8159         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
8160         * unwind-dw2-fde.c: Include elf/dwarf2.h.
8161         * dwarf2asm.c: Include elf/dwarf2.h.
8162         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
8163         * config/mmix/mmix.c: Include elf/dwarf2.h.
8164         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
8165         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
8166         * config/sh/sh.c: Include elf/dwarf2.h.
8167         * config/i386/i386.c: Include elf/dwarf2.h.
8168
8169 2009-06-29  DJ Delorie  <dj@redhat.com>
8170
8171         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
8172
8173         * doc/extend.texi: Add MeP attributes and pragmas.
8174         * doc/invoke.text: Add MeP Options.
8175         * doc/contrib.texi: Add MeP contribution.
8176         * doc/md.texi: Add MeP constraints.
8177         * doc/install.texi: Add MeP target.
8178
8179 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
8180
8181         * target.h (struct gcc_target): Add frame_pointer_required field.
8182         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
8183         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
8184         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
8185         hook.
8186         * reload1.c (update_eliminables): (Ditto.).
8187         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
8188         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8189         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
8190
8191         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
8192
8193         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
8194         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8195         (arm_frame_pointer_required): New function.
8196
8197         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
8198         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8199         (avr_frame_pointer_required_p): Declare as static.
8200         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
8201
8202         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
8203         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8204         (bfin_frame_pointer_required): Make as static, change return type
8205         to bool.
8206         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
8207
8208         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
8209         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8210         (cris_frame_pointer_required): New function.
8211
8212         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
8213
8214         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
8215         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8216         (fr30_frame_pointer_required): New function.
8217
8218         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
8219         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8220         (frv_frame_pointer_required): Make as static, change return type
8221         to bool.
8222         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
8223
8224         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
8225         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8226         (ix86_frame_pointer_required): Make as static, change return type to
8227         bool.
8228         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
8229
8230         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
8231         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8232
8233         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
8234
8235         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
8236
8237         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
8238
8239         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
8240         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8241         (mips_frame_pointer_required): Make as static.
8242         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
8243
8244         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
8245         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8246         (mmix_frame_pointer_required): Mew function.
8247
8248         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
8249         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8250
8251         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
8252
8253         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
8254
8255         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
8256
8257         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
8258         (CAN_ELIMINATE): Redefine.
8259         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8260         (sparc_frame_pointer_required): New function.
8261         (sparc_can_eliminate): New function.
8262         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
8263
8264         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
8265         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8266
8267         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
8268         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8269         (xtensa_frame_pointer_required): Make as static, change return type
8270         to bool.
8271         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
8272         Remove.
8273
8274 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
8275
8276         * doc/plugins.texi: Document PLUGIN_START_UNIT.
8277         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
8278         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
8279         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
8280         (register_callback): Handle PLUGIN_START_UNIT.
8281         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
8282
8283 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
8284
8285         * tree.c (process_call_operands): Propagate TREE_READONLY from the
8286         operands.
8287         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
8288         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
8289
8290 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
8291
8292         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
8293         move cost.
8294
8295 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
8296
8297         * doc/extend.texi (Additional Floating Types): __float128 is also
8298         supported on i386 targets.
8299
8300 2009-06-29  Richard Guenther  <rguenther@suse.de>
8301
8302         PR middle-end/14187
8303         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
8304         flag.
8305         (pt_solutions_same_restrict_base): Declare.
8306         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
8307         flag.
8308         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
8309         (make_constraint_from, make_copy_constraint): Move earlier.
8310         (make_constraint_from_heapvar): New function.
8311         (make_constraint_from_restrict): Likewise.
8312         (handle_lhs_call): Use it.
8313         (find_func_aliases): Use it to track conversions to restrict
8314         qualified pointers.
8315         (struct fieldoff): Add only_restrict_pointers flag.
8316         (push_fields_onto_fieldstack): Initialize it.
8317         (create_variable_info_for): Track global restrict qualified pointers.
8318         (intra_create_variable_infos): Use make_constraint_from_heapvar.
8319         Track restrict qualified pointer arguments.
8320         (set_uids_in_ptset): Use varinfo is_global_var flag.
8321         (find_what_var_points_to): Set the vars_contains_restrict flag.
8322         Always create the points-to solution for sets including restrict tags.
8323         (pt_solutions_same_restrict_base): New function.
8324         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
8325         qualified pointers use pt_solutions_same_restrict_base as
8326         additional source for disambiguation.
8327
8328 2009-06-29  Richard Guenther  <rguenther@suse.de>
8329
8330         PR middle-end/38212
8331         * alias.c (find_base_decl): Remove.
8332         (get_deref_alias_set_1): Remove restrict handling.
8333         * c-common.c (c_apply_type_quals_to_decl): Do not set
8334         DECL_POINTER_ALIAS_SET.
8335         * gimplify.c (find_single_pointer_decl_1): Remove.
8336         (find_single_pointer_decl): Likewise.
8337         (internal_get_tmp_var): Remove restrict handling.
8338         (gimple_regimplify_operands): Likewise.
8339         * omp-low.c (expand_omp_atomic_pipeline): Do not set
8340         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
8341         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
8342         * tree.c (restrict_base_for_decl): Remove.
8343         (init_ttree): Do not allocate it.
8344         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
8345         LABEL_DECL_UID for label decls.
8346         (copy_node_stat): Do not copy restrict information.
8347         (decl_restrict_base_lookup): Remove.
8348         (decl_restrict_base_insert): Likewise.
8349         (print_restrict_base_statistics): Likewise.
8350         (dump_tree_statistics): Do not call print_restrict_base_statistics.
8351         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
8352         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
8353         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
8354         (LABEL_DECL_UID): Adjust.
8355         (DECL_BASED_ON_RESTRICT_P): Remove.
8356         (DECL_GET_RESTRICT_BASE): Likewise.
8357         (SET_DECL_RESTRICT_BASE): Likewise.
8358         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
8359
8360         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
8361         instead of DECL_POINTER_ALIAS_SET.
8362         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
8363         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
8364         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
8365
8366 2009-06-29  Richard Guenther  <rguenther@suse.de>
8367
8368         PR tree-optimization/40579
8369         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
8370         the IL to simplify has constants that overflowed.
8371
8372 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
8373
8374         PR tree-optimization/40550
8375         * tree-vect-generic.c (expand_vector_operations_1): Compute in
8376         vector_compute_type only when the size of vector_compute_type is
8377         less than the size of type.
8378
8379 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
8380
8381         * fold-const.c (contains_label_1): Fix comments.
8382         (contains_label_p): Do not walk trees multiple time.
8383
8384 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8385
8386         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
8387         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
8388         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
8389         ix86_fp_comparison_operator.
8390         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
8391         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
8392         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
8393         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
8394         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
8395         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
8396         (related splits): Change predicate to ix86_fp_comparison_operator.
8397         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
8398         instead of ix86_fp_comparison_codes.
8399         (ix86_trivial_fp_comparison_operator,
8400         ix86_fp_comparison_operator): New.
8401         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
8402         (ix86_expand_compare): Eliminate last two parameters.
8403         (ix86_fp_jump_nontrivial_p): Kill.
8404         * config/i386/i386.c (put_condition_code): Eliminate call to
8405         ix86_fp_comparison_codes and subsequent assertion.
8406         (ix86_fp_comparison_codes): Eliminate.
8407         (ix86_fp_swap_condition): New.
8408         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
8409         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
8410         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
8411         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
8412         and ix86_fp_swap_condition.
8413         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
8414         Use ix86_fp_comparison_strategy.
8415         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
8416         (ix86_fp_jump_nontrivial_p): Eliminate.
8417         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
8418         call to ix86_expand_compare.
8419         (ix86_split_fp_branch, ix86_expand_setcc,
8420         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
8421         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
8422
8423 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8424
8425         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
8426         related to jump_clobbers.
8427         * config/arm/arm.md (conds): Remove jump_clob case.
8428         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
8429         splits): Change comparison_operator to arm_comparison_operator.
8430         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
8431         Eliminate.
8432
8433 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8434
8435         * dojump.c (do_compare_rtx_and_jump): Try swapping the
8436         condition for floating point modes.
8437         * expmed.c (emit_store_flag_1): Move here a bigger part
8438         of emit_store_flag.
8439         (emit_store_flag): Try swapping the condition for floating point
8440         modes.
8441         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
8442
8443 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8444
8445         * expr.c (expand_expr_real_1): Just use do_store_flag.
8446         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
8447         emit_store_flag_force.
8448         * expmed.c (emit_store_flag_force): Copy here trick
8449         previously in expand_expr_real_1.  Try reversing the comparison.
8450         (emit_store_flag_1): Work if target is NULL.
8451         (emit_store_flag): Work if target is NULL, using the result mode
8452         from the comparison.  Use split_comparison, restructure final part
8453         to simplify conditionals.
8454
8455 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8456
8457         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
8458         * dojump.c (do_jump): Change handling of floating-point
8459         ops to use just do_compare_and_jump.
8460         (split_comparison): New.
8461         (do_compare_rtx_and_jump): Add here logic coming previously
8462         in do_jump, using split_comparison.
8463
8464 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
8465
8466         PR target/40489
8467         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
8468
8469 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8470
8471         * tree-ssa-alias.c: Fix unintentional commit.
8472
8473 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8474
8475         * passes.c (execute_one_pass): Fix unintentional commit.
8476
8477 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8478
8479         * df-problems.c (df_set_seen, df_unset_seen): Delete.
8480         (df_rd_local_compute, df_md_local_compute): Inline them.
8481
8482         (df_md_scratch): New.
8483         (df_md_alloc, df_md_free): Allocate/free it.
8484         (df_md_local_compute): Only include live registers in init.
8485         (df_md_transfer_function): Prune the in-set computed by
8486         the confluence function, and the gen-set too.
8487
8488 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8489
8490         PR rtl-optimization/26854
8491         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
8492         * df-problems.c (df_rd_add_problem): Fix comment.
8493         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
8494         df_md_simulate_artificial_defs_at_top,
8495         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
8496         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
8497         df_md_transfer_function, df_md_init, df_md_confluence_0,
8498         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
8499         problem_MD, df_md_add_problem): New.
8500         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
8501         df_md_get_bb_info): New.
8502         (DF_LAST_PROBLEM_PLUS1): Adjust.
8503
8504         * Makefile.in (fwprop.o): Include domwalk.h.
8505         * fwprop.c: Include domwalk.h.
8506         (reg_defs, reg_defs_stack): New.
8507         (bitmap_only_bit_between): Remove.
8508         (process_defs): New.
8509         (process_uses): Use reg_defs and local_md instead of
8510         bitmap_only_bit_between and local_rd.
8511         (single_def_use_enter_block): New, from build_single_def_use_links.
8512         (single_def_use_leave_block): New.
8513         (build_single_def_use_links): Remove code moved to
8514         single_def_use_enter_block, invoke domwalk.
8515         (use_killed_between): Adjust comment.
8516
8517 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8518
8519         * bitmap.h (bitmap_ior_and_into): New.
8520         * bitmap.c (bitmap_ior_and_into): New.
8521
8522 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8523
8524         * domwalk.h (struct dom_walk_data): Remove all callbacks except
8525         before_dom_children_before_stmts and after_dom_children_after_stmts.
8526         Rename the two remaining callbacks to just before_dom_children and
8527         after_dom_children. Remove other GIMPLE statement walking bits.
8528         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
8529         * graphite.c: Do not include domwalk.h.
8530         * tree-into-ssa.c (interesting_blocks): New global.
8531         (struct mark_def_sites_global_data): Remove it and names_to_rename.
8532         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
8533         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
8534         now that they're not domwalk callbacks.
8535         (rewrite_initialize_block): Rename to...
8536         (rewrite_enter_block): ... this, place after called functions.  Test
8537         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
8538         (rewrite_finalize_block): Rename to...
8539         (rewrite_leave_block): ... this, place after called functions.
8540         (rewrite_update_init_block): Rename to...
8541         (rewrite_update_enter_block): ... this, place after called functions.
8542         Test interesting_blocks, call rewrite_update_stmt and
8543         rewrite_update_phi_arguments.
8544         (rewrite_update_fini_block): Rename to...
8545         (rewrite_leave_block): ... this, place after called functions.
8546         (rewrite_blocks): Remove last argument, simplify initialization of
8547         walk_data.
8548         (mark_def_sites_initialize_block): Rename to...
8549         (mark_def_sites_block): ... this, call mark_def_sites.
8550         (mark_def_sites_blocks): Remove argument, simplify initialization of
8551         walk_data.
8552         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
8553         (update_ssa): Likewise.
8554         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
8555         callback.
8556         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
8557         (dom_opt_initialize_block): Rename to...
8558         (dom_opt_enter_block): ... this, place after called functions.  Walk
8559         statements here, inline propagate_to_outgoing_edges.
8560         (dom_opt_finalize_block): Rename to...
8561         (dom_opt_leave_block): ... this, place after called functions.
8562         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
8563         domwalk callback.
8564         (dse_enter_block, dse_record_phi): New.
8565         (dse_record_phis): Delete.
8566         (dse_finalize_block): Rename to...
8567         (dse_leave_block): ... this.
8568         (tree_ssa_dse): Simplify initialization of walk_data.
8569         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
8570         Adjust initialization of walk_data.
8571         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
8572         * tree-ssa-loop-phiopt.c (get_non_trapping):
8573         Adjust initialization of walk_data.
8574         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
8575         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
8576         it's not a domwalk callback.
8577         (uncprop_initialize_block): Rename to...
8578         (dse_enter_block): ... this, call uncprop_into_successor_phis.
8579         (dse_finalize_block): Rename to...
8580         (dse_leave_block): ... this.
8581         (tree_ssa_uncprop): Simplify initialization of walk_data.
8582         * Makefile.in: Adjust dependencies.
8583
8584 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
8585
8586         * arm.md (casesi): Fix test for Thumb1.
8587         (thumb1_casesi_internal_pic): Likewise.
8588         (thumb1_casesi_dispatch): Likewise.
8589
8590 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
8591
8592         * config/arm/arm-cores.def: Added core cortex-m0.
8593         * config/arm/arm-tune.md: Regenerated.
8594         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
8595
8596 2009-06-26  DJ Delorie  <dj@redhat.com>
8597
8598         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
8599
8600         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
8601         the scheduler doesn't tag jump insns.
8602
8603 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
8604
8605         * c-decl.c (merge_decls): Re-indent.
8606
8607 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
8608
8609         PR c/39902
8610         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
8611         Special-case decimal float constants.
8612
8613 2009-06-26  Richard Henderson  <rth@redhat.com>
8614
8615         * function.h (struct function): Add cannot_be_copied_reason,
8616         and cannot_be_copied_set.
8617         * tree-inline.c (has_label_address_in_static_1): Rename from
8618         inline_forbidden_p_2; don't set inline_forbidden_reason here.
8619         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
8620         don't set inline_forbidden_reason.
8621         (copy_forbidden): New function, split out of inline_forbidden_p.
8622         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
8623         (inline_forbidden_p): Use copy_forbidden.
8624         (tree_versionable_function_p): Likewise.
8625         (inlinable_function_p): Merge into tree_inlinable_function_p.
8626         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
8627         * ipa-cp.c (ipcp_versionable_function_p): New function.
8628         (ipcp_cloning_candidate_p): Use it.
8629         (ipcp_node_modifiable_p): Likewise.
8630
8631 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
8632
8633         * builtins.c (expand_builtin_alloca): Handle builtin alloca
8634         that is marked not to be inlined. Remove flag_mudflap use.
8635         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
8636         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
8637
8638 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
8639
8640         PR bootstrap/40338
8641         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
8642         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
8643
8644 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
8645
8646         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
8647         shared libgcc.
8648         (__mingwthr_remove_key_dtor): Likewise.
8649
8650 2009-06-26  Richard Guenther  <rguenther@suse.de>
8651
8652         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
8653
8654 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8655
8656         PR middle-end/40525
8657         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
8658         try the non-cond_exec path also.
8659
8660 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8661
8662         PR target/40468
8663         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
8664         (output_cbranch): Use new functions.
8665         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
8666         Likewise.
8667
8668 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
8669             Pat Haugen  <pthaugen@us.ibm.com>
8670             Revital Eres <ERES@il.ibm.com>
8671
8672         * config/rs6000/rs6000.c (print_operand): Correct lossage message
8673         for %c error.  Add %x support to print VSX registers as a unified
8674         register set, instead of separate float and altivec registers.
8675         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
8676         %y case, and add support for VSX pre-modify addresses.
8677         (output_toc): Add assert for CONST containing an integer constant
8678         in the PLUS case.
8679         (rs6000_adjust_cost): Add POWER7 support.
8680         (insn_must_be_first_in_group): Ditto.
8681         (insn_must_be_last_in_group): Ditto.
8682         (rs6000_emit_popcount): Ditto.
8683         (rs6000_vector_mode_supported_p): Ditto.
8684
8685         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
8686         Change some of the functions called by macros to being called
8687         through a pointer, so debug functions can be inserted if
8688         -mdebug=addr or -mdebug=cost.
8689         (rs6000_preferred_reload_class_ptr): Ditto.
8690         (rs6000_secondary_reload_class_ptr): Ditto.
8691         (rs6000_secondary_memory_needed_ptr): Ditto.
8692         (rs6000_cannot_change_mode_class_ptr): Ditto.
8693         (rs6000_secondary_reload_inner): Ditto.
8694         (rs6000_legitimize_reload_address): Ditto.
8695         (rs6000_legitimize_reload_address_ptr): Ditto.
8696         (rs6000_mode_dependent_address): Ditto.
8697         (rs6000_mode_dependent_address_ptr): Ditto.
8698
8699         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
8700         function to return true if the mode allows reg + integer
8701         addresses.
8702         (virtual_stack_registers_memory_p): New function to return true if
8703         the address refers to a virtual stack register.
8704         (rs6000_legitimate_offset_address_p): Move code to say whether a
8705         mode supports reg+int addressing to reg_offset_addressing_ok_p and
8706         call it.
8707         (rs6000_legitimate_address_p): Add checks for modes that only can
8708         do reg+reg addressing.  Start adding VSX support.
8709         (rs6000_legitimize_reload_address): Ditto.
8710         (rs6000_legitimize_address): Ditto.
8711         (rs6000_debug_legitimate_address_p): New debug functions for
8712         -mdebug=addr and -mdebug=cost.
8713         (rs6000_debug_rtx_costs): Ditto.
8714         (rs6000_debug_address_costs): Ditto.
8715         (rs6000_debug_adjust_cost): Ditto.
8716         (rs6000_debug_legitimize_address): Ditto.
8717         (rs6000_legitimize_reload_address_ptr): Point to call normal
8718         function or debug function.  Make functions called via pointer
8719         static.
8720         (rs6000_mode_dependent_address_ptr): Ditto.
8721         (rs6000_secondary_reload_class_ptr): Ditto.
8722         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
8723         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
8724         into a friendlier error.
8725         (rs6000_init_builtins): Add initial VSX support.
8726         (rs6000_adjust_cost): Fix some spacing issues.
8727
8728         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
8729         (REG_CLASS_NAMES): Ditto.
8730         (REG_CLASS_CONTENTS): Ditto.
8731         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
8732         pointer, to add -mdebug=addr support.
8733         (CANNOT_CHANGE_MODE_CLASS): Ditto.
8734         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
8735         -mdebug=addr support.
8736         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
8737         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
8738         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
8739
8740         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
8741         16-bit values.
8742         (bswapsi*): Set attribute types for load/store.  Add combiner
8743         patterns to eliminate zero extend on 64-bit.
8744         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
8745         stdbrx if the hardware supports those instructions.
8746
8747 2009-06-25  Ian Lance Taylor  <iant@google.com>
8748
8749         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
8750         (Link Options): Document -static-libstdc++.
8751
8752 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8753
8754         PR target/38731
8755         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
8756         DATA_ALIGNMENT instead.
8757
8758 2009-06-25  Richard Guenther  <rguenther@suse.de>
8759
8760         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
8761         indirect references against the callused/escaped solutions.
8762         (call_may_clobber_ref_p_1): Likewise.
8763
8764 2009-06-25  Martin Jambor  <mjambor@suse.cz>
8765
8766         PR tree-optimization/40493
8767         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
8768         (enum unscalarized_data_handling): New type.
8769         (handle_unscalarized_data_in_subtree): Return what has been done.
8770         (load_assign_lhs_subreplacements): Handle left flushes differently.
8771         (sra_modify_assign): Use unscalarized_data_handling, simplified
8772         condition determining whether to remove the statement.
8773
8774 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
8775
8776         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
8777         excerpt - @ should be doubled for texinfo.
8778
8779 2009-06-24  Ian Lance Taylor  <iant@google.com>
8780
8781         * config/arc/arc.c: Include "df.h".
8782         (arc_attribute_table): Make static.  Move higher in file.
8783         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
8784         (output_shift): Initialize n later to avoid warning.
8785         * config/arm/arm.c (arm_attribute_table): Make static.  Move
8786         higher in file.
8787         * config/avr/avr.c (avr_attribute_table): Make static.  Move
8788         higher in file.
8789         (reg_class_tab): Change array type from int to enum reg_class.
8790         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
8791         LABEL_REF.
8792         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
8793         (lshrhi3_out): Likewise.
8794         (class_likely_spilled_p): Change return type to bool.
8795         (avr_rtx_costs): Use local code variable with enum type.
8796         * config/avr/avr.md (movmemhi): Use add_reg_note.
8797         (andhi3, andsi3): Don't use AS2 with "and".
8798         (iorhi3, iorsi3): Don't use AS2 with "or".
8799         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
8800         * config/crx/crx.c: Include "df.h".
8801         (crx_attribute_table): Make static.
8802         * config/m32r/m32r.c: Include "df.h".
8803         (m32r_attribute_table): Make static.  Move higher in file.
8804         (pop): Use add_reg_note.
8805         (block_move_call): Change 0 to LCT_NORMAL in function call.
8806         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
8807         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
8808         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
8809         declare, not just when TREE_CODE is defined.
8810         * config/m68hc11/m68hc11.c: Include "expr.h".
8811         (m68hc11_attribute_table): Make static.  Move higher in file.
8812         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
8813         function call.
8814         (m68hc11_register_indirect_p): Likewise.
8815         (m68hc11_function_arg_padding): Change return type to enum
8816         direction.
8817         (emit_move_after_reload): Use add_reg_note.
8818         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
8819         (m68hc11_split_logical): Likewise.
8820         (m68hc11_rtx_costs): Add local code_and outer_code variables with
8821         enum type.
8822         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
8823         to VOIDmode in function call.
8824         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
8825         tree is defined.
8826         (m68hc11_split_logical): Update declaration.
8827         (m68hc11_function_arg_padding): Update declaration.
8828         * config/mcore/mcore.c (regno_reg_class): Change form array of int
8829         to array of enum reg_class.
8830         (mcore_attribute_table): Make static.  Move higher in file.
8831         (mcore_rtx_costs): Add cast to enum type.
8832         * config/mcore/mcore.h (regno_reg_class): Update declaration.
8833         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
8834         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
8835         in file.
8836         * config/sh/predicates.md (trapping_target_operand): Rename and to
8837         and_expr.
8838         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
8839         higher in file.
8840         * config/spu/spu.c (spu_attribute_table): Make static.  Move
8841         higher in file.
8842         * config/v850/v850.c (v850_attribute_table): Make static.  Move
8843         higher in file.
8844         (v850_rtx_costs): Use local code with enum type.
8845         (expand_epilogue): Add cast.
8846         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
8847
8848 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
8849
8850         PR target/40515
8851         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
8852         -m2a-single-only and -m2a-nofpu.
8853         * config/sh/sh.opt: Document m2a generates FPU code.
8854
8855 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
8856
8857         * defaults.h (CAN_ELIMINATE): Provide default.
8858         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
8859         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
8860         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
8861         * config/spu/spu.h (CAN_ELIMINATE): Delete.
8862         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
8863         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
8864         * config/cris/cris.h (CAN_ELIMINATE): Delete.
8865         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
8866         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
8867         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
8868
8869 2009-06-24  DJ Delorie  <dj@redhat.com>
8870
8871         * mep-ext-cop.cpu: Fix copyright notice.
8872         * mep-default: Fix copyright notice.
8873         * mep-core: Fix copyright notice.
8874         * mep: Fix copyright notice.
8875         * mep-ivc2: Fix copyright notice.
8876         * mep-c5: Fix copyright notice.
8877
8878 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
8879
8880         * doc/contrib.texi (Contributors):
8881
8882 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8883
8884         PR middle-end/40501
8885         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
8886         src and dst operands if necessary.
8887
8888 2009-06-23  DJ Delorie  <dj@redhat.com>
8889
8890         Add MeP port.
8891         * config.gcc: Add mep support.
8892         * recog.c: Resurrect validate_replace_rtx_subexp().
8893         * recog.h: Likewise.
8894         * config/mep/: Add new port:
8895         * config/mep/constraints.md: New file.
8896         * config/mep/default.h: New file.
8897         * config/mep/intrinsics.h: New file.
8898         * config/mep/intrinsics.md: New file.
8899         * config/mep/ivc2-template.h: New file.
8900         * config/mep/mep-c5.cpu: New file.
8901         * config/mep/mep-core.cpu: New file.
8902         * config/mep/mep-default.cpu: New file.
8903         * config/mep/mep-ext-cop.cpu: New file.
8904         * config/mep/mep-intrin.h: New file.
8905         * config/mep/mep-ivc2.cpu: New file.
8906         * config/mep/mep-lib1.asm: New file.
8907         * config/mep/mep-lib2.c: New file.
8908         * config/mep/mep-pragma.c: New file.
8909         * config/mep/mep-protos.h: New file.
8910         * config/mep/mep-tramp.c: New file.
8911         * config/mep/mep.c: New file.
8912         * config/mep/mep.cpu: New file.
8913         * config/mep/mep.h: New file.
8914         * config/mep/mep.md: New file.
8915         * config/mep/mep.opt: New file.
8916         * config/mep/predicates.md: New file.
8917         * config/mep/t-mep: New file.
8918
8919 2009-06-23  Ian Lance Taylor  <iant@google.com>
8920
8921         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
8922         from loose_warn into c_loose_warn and from strict_warn into
8923         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
8924         --enable-build-with-cxx.  Set and substitute
8925         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
8926         * Makefile.in (CXXFLAGS): New variable.
8927         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
8928         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
8929         the default is the same as $(STRICT_WARN).
8930         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
8931         (CXX): New variable.
8932         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
8933         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
8934         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
8935         (HOST_LIBS): New variable.
8936         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
8937         (ALL_CXXFLAGS): New variable.
8938         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
8939         * doc/install.texi (Configuration): Document
8940         --enable-build-with-cxx, --with-stage1-ldflags,
8941         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
8942         * configure: Rebuild.
8943
8944 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8945
8946         * config/arm/arm.c (arm_override_options): Fix braces and formatting
8947         from previous commit.
8948
8949 2009-06-23  Ian Lance Taylor  <iant@google.com>
8950
8951         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
8952
8953 2009-06-23  Ian Lance Taylor  <iant@google.com>
8954
8955         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
8956         with ATTRIBUTE_UNUSED.
8957
8958 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
8959             Pat Haugen  <pthaugen@us.ibm.com>
8960             Revital Eres  <eres@il.ibm.com>
8961
8962         * config.in (HAVE_AS_POPCNTD): Add default definition.
8963         (HAVE_AS_LWSYNC): Ditto.
8964
8965         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
8966         release number.
8967         (gcc_cv_as_powerpc_cmpb): Ditto.
8968         (gcc_cv_as_powerpc_dfp): Ditto.
8969         (gcc_cv_as_powerpc_vsx): Ditto.
8970         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
8971         supporting the popcntd/lwsync instructions.
8972         (gcc_cv_as_powerpc_lwsync): Ditto.
8973         * configure: Regenerate.
8974
8975         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
8976         -mcpu=native and -mcpu=power7.
8977         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
8978
8979         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
8980         a variable instead of a mask to reduce the number of mask bits.
8981         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
8982         (-mbit-word): Ditto.
8983         (-mregnames): Ditto.
8984         * config/rs6000/rs6000.opt (-mupdate): Ditto.
8985         (-mfused-madd): Ditto.
8986
8987         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
8988         2.06 instructions.
8989         (-mvsx): New switch for VSX instructions.
8990         (-misel): Move from a variable to a mask to allow it to be set by
8991         -mcpu=.
8992
8993         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
8994         function declaration to an array declaration.
8995         (rs6000_hard_regno_nregs): New external array declaration.
8996
8997         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
8998         files included by rs6000.md.
8999
9000         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
9001         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
9002
9003         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
9004         a target mask.
9005         (rs6000_debug_reg): New -mdebug= variables.
9006         (rs6000_debug_addr): Ditto.
9007         (rs6000_debug_cost): Ditto.
9008         (rs6000_pmode): New variable to hold Pmode.
9009         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
9010         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
9011         calculated at compiler start.
9012         (rs6000_hard_regno_nregs): Change function to an array which holds
9013         HARD_REGNO_NREGS calculated at compiler start.
9014         (rs6000_explicit_options): Delete isel field.
9015         (rs6000_vector_unit): New array to hold which vector unit
9016         supports arithmetic options for a given type.
9017         (rs6000_vector_mem): New array to hold which vector unit supports
9018         memory reference operations for a given type.
9019         (rs6000_vector_align): New array to given the alignment of each
9020         vector type.
9021         (power7_cost): New basic costs for power7.
9022         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
9023         (rs6000_hard_regno_nregs_internal): New function, moved from
9024         HARD_REGNO_NREGS, to calculate the number of registers each hard
9025         register takes for each type.
9026         (rs6000_debug_reg_print): New function for -mdebug=reg support.
9027         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
9028         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
9029         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
9030         unit information here so it is calculated once at compiler startup
9031         time.
9032         (rs6000_override_options): Make -misel a target mask.  Add more
9033         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
9034         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
9035         -mdebug=cost.
9036         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
9037         (rs6000_handle_option): Move -misel from variable to target mask.
9038         (rs6000_builtin_mask_for_load): Add VSX support.
9039         (rs6000_conditional_register_usage): Ditto.
9040         (USE_ALTIVEC_FOR_ARG_P): Ditto.
9041         (function_arg_boundary): Ditto.
9042         (rs6000_expand_builtin): Ditto.
9043         (def_builtin): Make abort message a little friendlier.
9044         (rs6000_emit_int_cmove): Add support for 64-bit isel.
9045
9046         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
9047         assembler support the popcntd instruction instead of a vsx
9048         instruction to enable power7 support.
9049         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
9050         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
9051         option to the assembler if -mcpu=native.
9052         (ASM_CPU_NATIVE_SPEC): Ditto.
9053         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
9054         ISA 2.06 features.
9055         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
9056         the lwsync instruction.
9057         (enum processor_type): Add PROCESSOR_POWER7.
9058         (rs6000_debug_reg): New -mdebug= options.
9059         (rs6000_debug_addr): Ditto.
9060         (rs6000_debug_cost): Ditto.
9061         (rs6000_isel): Delete.
9062         (enum rs6000_vector): New enum to say what vector unit we have.
9063         (VECTOR_UNIT_*): New macros to say which vector unit has
9064         arithmetic operations for a given type.
9065         (VECTOR_MEM_*): New macros to say which vector unit has memory
9066         operations for a given type.
9067         (TARGET_LDBRX): Whether the machine supports the ldbrx
9068         instruction.
9069         (TARGET_ISEL): Delete, -misel moved to be a mask.
9070         (TARGET_ISEL64): New macro for 64-bit isel support.
9071         (UNITS_PER_VSX_WORD): New macro.
9072         (POINTER_SIZE): Move to be an external variable, rather than
9073         calculating whether we are generating 32 ot 64-bit code.
9074         (Pmode): Ditto.
9075         (STACK_BOUNDARY): Add VSX support.
9076         (LOCAL_ALIGNMENT): Ditto.
9077         (SLOW_UNALIGNED_ACCESS): Ditto.
9078         (VSX_REGNO_P): New macro for VSX support.
9079         (VFLOAT_REGNO_P): Ditto.
9080         (VINT_REGNO_P): Ditto.
9081         (VLOGICAL_REGNO_P): Ditto.
9082         (VSX_VECTOR_MODE): Ditto.
9083         (VSX_SCALAR_MODE): Ditto.
9084         (VSX_MODE): Ditto.
9085         (VSX_MOVE_MODE): Ditto.
9086         (VSX_REG_CLASS_P): Ditto.
9087         (HARD_REGNO_NREGS): Instead of calling a function, use an array
9088         lookup.
9089         (UNITS_PER_SIMD_WORD): Add VSX support.
9090         (MODES_TIEABLE_P): Ditto.
9091         (STARTING_FRAME_OFFSET): Ditto.
9092         (STACK_DYNAMIC_OFFSET): Ditto.
9093         (EPILOGUE_USES): Ditto.
9094         (REGNO_REG_CLASS): Move to array lookup.
9095         (CLASS_MAX_NREGS): Ditto.
9096         (rs6000_vector_reg_class): Add declaration.
9097         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
9098         overlap with the floating point and Altivec registers.
9099
9100         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
9101
9102         * config/rs6000/driver-rs6000.c (asm_names): New static array to
9103         give the appropriate asm switches if -mcpu=native.
9104         (host_detect_local_cpu): Add support for "asm".
9105         (host_detect_local_cpu): Follow GNU code guidelines for name.
9106
9107         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
9108         -mbit-word to a variable instead of being a target mask.
9109
9110         * config/rs6000/sync.md (lwsync): If the assembler supports it,
9111         emit the lwsync instruction instead of emitting the instruction as
9112         an integer constant.
9113
9114         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
9115         fixuns_trundfsi2, move expander into rs6000.md.
9116
9117         * config/rs6000/rs6000.md (cpu): Add power7.
9118         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
9119         (logical predicate patterns): Change the single instruction
9120         primitives that set CR0 to be fast_compare instead of compare.
9121         (norsi*): Ditto.
9122         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
9123         (popcntddi2): Ditto.
9124         (popcount<mode>): Ditto.
9125         (floating multiply/add insns): Name the floating point
9126         multiply/add insns.
9127         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
9128         (isel_unsigned_<mode>): Ditto.
9129         (fixuns_trundfsi2): Move expander here from spe.md.
9130         (smindi3): Define if we have -misel on 64-bit systems.
9131         (smaxdi3): Ditto.
9132         (umindi3): Ditto.
9133         (umaxdi3): Ditto.
9134
9135 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
9136
9137         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
9138         extra_objs.
9139         * config/avr/avr.c (avr_current_device): New variable.
9140         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
9141         (avr_arch, mcu_type_s): Move to avr.h.
9142         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
9143         default_data_section_start fields.
9144         (avr_arch): Moved from avr.c.
9145         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
9146         library_name fields.
9147         (avr_current_device, avr_mcu_types, avr_arch_types,
9148         avr_device_to_arch, avr_device_to_data_start,
9149         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
9150         (EXTRA_SPEC_FUNCTIONS): Define.
9151         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
9152         options mapping. Use device_to_arch and device_to_data_start insted.
9153         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
9154         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
9155         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
9156         * config/avr/driver-avr.c: New file.
9157         * config/avr/avr-devices.c: New file.
9158
9159 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
9160
9161         * var-tracking.c (unshare_variable): Force initialized to
9162         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
9163         (set_variable_part): Likewise.
9164         (struct variable_union_info): Remove pos_src field.
9165         (vui_vec, vui_allocated): New variables.
9166         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
9167         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
9168         == 1 use a simpler sorting algorithm.  Compute pos field right
9169         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
9170         Avoid quadratic comparison if !flag_var_tracking_uninit.
9171         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
9172         unshare_variable unconditionally.
9173         (dataflow_set_different_2): Removed.
9174         (dataflow_set_different): Don't traverse second hash table.
9175         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
9176         unconditionally to var_reg_set or var_mem_set.
9177         (emit_notes_in_bb): Likewise.
9178         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
9179         unshare_variable.
9180         (emit_note_insn_var_location): Don't set initialized to
9181         VAR_INIT_STATUS_INITIALIZED early.
9182         (vt_finalize): Free vui_vec if needed, clear vui_vec and
9183         vui_allocated.
9184         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
9185
9186         * tree-object-size.c (addr_object_size): Instead of checking
9187         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
9188         are no FIELD_DECLs following it.
9189
9190 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
9191
9192         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
9193         order to match bswaps with signed source operands.
9194
9195 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9196
9197         * sdbout.c (sdbout_one_type): Fix braces in switch.
9198
9199 2009-06-23  Richard Guenther  <rguenther@suse.de>
9200
9201         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
9202         member.
9203         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
9204         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
9205         var_callused, callused_tree, var_storedanything, storedanything_tree,
9206         var_integer, integer_tree): Remove global variables.
9207         (new_var_info): Do not pass new id, append the new var to the
9208         global variable vector.
9209         (do_ds_constraint): Use is_global_var member of the variable-info.
9210         (new_scalar_tmp_constraint_exp): Adjust.
9211         (create_function_info_for): Likewise.
9212         (create_variable_info_for): Likewise.
9213         (find_what_var_points_to): Remove dead code.
9214         (init_base_vars): Simplify.
9215         (compute_points_to_sets): Adjust.
9216
9217 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9218
9219         * combine.c (try_combine): Dump information about the insns we're
9220         combining.
9221
9222 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9223
9224         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
9225         check when calling force_to_mode on TRUNCATE's operand.
9226
9227 2009-06-22  Ian Lance Taylor  <iant@google.com>
9228
9229         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
9230
9231 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9232
9233         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
9234
9235 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9236
9237         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
9238         override library linkage flags such as -static-libgcc or
9239         -shared-libgcc.
9240
9241 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
9242
9243         * config/m68k/m68k-devices.def: Add line for MCF5221x.
9244
9245 2009-06-22  Ian Lance Taylor  <iant@google.com>
9246
9247         * config/linux.opt: Put mglibc ahead of muclibc.
9248
9249         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
9250         for duplicate decls.
9251
9252 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9253
9254         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
9255
9256 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9257
9258         PR objc/28050
9259         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
9260         instead of NULL if a parser error occurs.
9261
9262 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9263
9264         * dwarf2out.c (dwarf2_debug_hooks): Initialize
9265         non-DWARF2_DEBUGGING_INFO version.
9266
9267 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
9268
9269         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
9270         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
9271
9272         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
9273         (LIBGCC2_TF_CEXT): Define.
9274         (TF_SIZE): Define.
9275
9276 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9277
9278         PR target/40463
9279         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
9280
9281 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9282
9283         * config/arm/arm.c (arm_override_options): Disable
9284         -mcaller-super-interworking and -mcallee-super-interworking.
9285         * doc/invoke.texi (ARM Options): Document this.
9286
9287 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
9288
9289         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
9290         * config/arm/constraints.md (j): New constraint for movw operands.
9291         (N): Remove thumb2 meaning.
9292         * config/arm/arm.md (*arm_movw): Delete.
9293         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
9294         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
9295         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
9296
9297 2009-06-22  Martin Jambor  <mjambor@suse.cz>
9298
9299         PR tree-optimization/40492
9300         * tree-sra.c (sra_modify_assign): Pass zero offsets to
9301         build_ref_for_offset.
9302
9303 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
9304
9305         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
9306         JUMP_TABLE_DATA_P predicates where applicable.
9307         * auto-inc-dec.c: Ditto.
9308         * builtins.c: Ditto.
9309         * caller-save.c: Ditto.
9310         * calls.c: Ditto.
9311         * cfgcleanup.c: Ditto.
9312         * cfglayout.c: Ditto.
9313         * cfgrtl.c: Ditto.
9314         * combine.c: Ditto.
9315         * combine-stack-adj.c: Ditto.
9316         * cse.c: Ditto.
9317         * cselib.c: Ditto.
9318         * dbxout.c: Ditto.
9319         * df-scan.c: Ditto.
9320         * dse.c: Ditto.
9321         * dwarf2asm.c: Ditto.
9322         * dwarf2out.c: Ditto.
9323         * emit-rtl.c: Ditto.
9324         * except.c: Ditto.
9325         * explow.c: Ditto.
9326         * expmed.c: Ditto.
9327         * expr.c: Ditto.
9328         * final.c: Ditto.
9329         * function.c: Ditto.
9330         * fwprop.c: Ditto.
9331         * gcse.c: Ditto.
9332         * genpreds.c: Ditto.
9333         * genrecog.c: Ditto.
9334         * ifcvt.c: Ditto.
9335         * ira-costs.c: Ditto.
9336         * ira-lives.c: Ditto.
9337         * jump.c: Ditto.
9338         * loop-iv.c: Ditto.
9339         * lower-subreg.c: Ditto.
9340         * modulo-sched.c: Ditto.
9341         * optabs.c: Ditto.
9342         * postreload.c: Ditto.
9343         * print-rtl.c: Ditto.
9344         * recog.c: Ditto.
9345         * reginfo.c: Ditto.
9346         * regmove.c: Ditto.
9347         * reload1.c: Ditto.
9348         * reload.c: Ditto.
9349         * reorg.c: Ditto.
9350         * rtlanal.c: Ditto.
9351         * rtl.c: Ditto.
9352         * sched-vis.c: Ditto.
9353         * sdbout.c: Ditto.
9354         * sel-sched-ir.c: Ditto.
9355         * simplify-rtx.c: Ditto.
9356         * targhooks.c: Ditto.
9357         * var-tracking.c: Ditto.
9358         * vmsdbgout.c: Ditto.
9359
9360 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9361
9362         * Makefile.in (install-plugin): Always use DESTDIR.
9363
9364 2009-06-22  Olivier Hainque  <hainque@adacore.com>
9365
9366         * config/pa/pa.c (output_call): Don't optimize post call jumps
9367         into return address adjustments if the call may throw.
9368
9369 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
9370
9371         * arm.c (thumb1_output_casesi): New function.
9372         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
9373         optimizing for size or PIC.
9374         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
9375         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
9376         (casesi): Handle Thumb-1 when optimizing for size or PIC.
9377         (thumb1_casesi_internal_pic): New expand rule.
9378         (thumb1_casesi_dispatch): New pattern.
9379         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
9380         thumb-1 mode.
9381         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
9382         in the text seciton when PIC or optimizing for size.
9383         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
9384         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
9385         preservation properties of code.
9386         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
9387         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
9388         (__gnu_thumb1_case_si): New function.
9389         * t-arm (LIB1ASMSRC): Define here.
9390         (LIB1ASMFUNCS): Add some common functions.
9391         * t-arm-elf (LIB1ASMSRC): Delete.
9392         (LIB1ASMFUNCS): Append to existing set.
9393         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9394         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9395         * t-symbian (LIB1ASMFUNCS): Likewise.
9396         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9397         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9398
9399 2009-06-21  Richard Guenther  <rguenther@suse.de>
9400
9401         PR tree-optimization/38729
9402         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
9403         to loops with a single exit if -fno-expensive-optimizations.
9404
9405 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
9406
9407         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
9408         (dataflow_set): Change vars type from htab_t to shared_hash.
9409         (shared_hash_pool, empty_shared_hash): New variables.
9410         (vars_clear): Removed.
9411         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
9412         shared_hash_find_slot_unshare, shared_hash_find_slot,
9413         shared_hash_find_slot_noinsert, shared_hash_find): New
9414         static inlines.
9415         (shared_hash_unshare, shared_hash_destroy): New functions.
9416         (unshare_variable): Unshare set->vars if shared, use
9417         shared_hash_htab.
9418         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
9419         (get_init_value, find_src_set_src, dump_dataflow_set,
9420         clobber_variable_part, emit_notes_for_differences): Use
9421         shared_hash_htab.
9422         (dataflow_set_init): Remove second argument, set vars to
9423         empty_shared_hash instead of creating a new htab.
9424         (dataflow_set_clear): Call shared_hash_destroy and set vars
9425         to empty_shared_hash instead of calling vars_clear.
9426         (dataflow_set_copy): Don't call vars_copy, instead just share
9427         the src htab with dst.
9428         (variable_union): Use shared_hash_*, use initially NO_INSERT
9429         lookup if set->vars is shared.  Don't keep slot cleared before
9430         calling unshare_variable.  Unshare set->vars if needed.
9431         Even ->refcount == 1 vars must be unshared if set->vars is shared
9432         and var needs to be modified.
9433         (variable_canonicalize): New function.
9434         (dataflow_set_union): If dst->vars is empty, just share src->vars
9435         with dst->vars and traverse with variable_canonicalize to canonicalize
9436         and unshare what is needed.
9437         (dataflow_set_different): If old_set and new_set use the same shared
9438         htab, they aren't different.  If number of htab elements is different,
9439         htabs are different.  Use shared_hash_*.
9440         (dataflow_set_destroy): Call shared_hash_destroy instead of
9441         htab_delete.
9442         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
9443         second argument to dataflow_set_init.
9444         (vt_initialize): Likewise.  Initialize shared_hash_pool and
9445         empty_shared_hash, move bb in/out initialization afterwards.
9446         Use variable_htab_free instead of NULL as changed_variables del hook.
9447         (variable_was_changed): Change type of second argument to pointer to
9448         dataflow_set.  When inserting var into changed_variables, bump
9449         refcount.  Unshare set->vars if set is shared htab and slot needs to
9450         be cleared.
9451         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
9452         lookup if set->vars is shared.  Unshare set->vars if needed.
9453         Even ->refcount == 1 vars must be unshared if set->vars is shared
9454         and var needs to be modified.  Adjust variable_was_changed caller.
9455         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
9456         vars must be unshared if set->vars is shared and var needs to be
9457         modified.  Adjust variable_was_changed caller.
9458         (emit_note_insn_var_location): Don't pool_free var.
9459         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
9460         instead of 1.
9461         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
9462         free_alloc_pool on shared_hash_pool.
9463
9464 2009-06-20  Anthony Green  <green@moxielogic.com>
9465
9466         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
9467         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
9468
9469 2009-06-20  Richard Guenther  <rguenther@suse.de>
9470
9471         * tree-ssa-structalias.c (find_func_aliases): For memset use
9472         a constraint from NULL if we memset to zero.
9473         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
9474         we explicitly handle that do not read from memory.
9475         (call_may_clobber_ref_p_1): Properly handle builtins that may
9476         set errno.
9477
9478 2009-06-20  Richard Guenther  <rguenther@suse.de>
9479
9480         PR tree-optimization/40495
9481         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
9482         (new_scalar_tmp_constraint_exp): New function.
9483         (process_constraint): Do not create temporary decls.
9484         (process_all_all_constraints): Likewise.
9485         (handle_const_call): Likewise.
9486         (create_function_info_for): Do not set decl.
9487
9488 2009-06-19  Ian Lance Taylor  <iant@google.com>
9489
9490         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
9491         (rs6000_attribute_table): Make static; move before use.
9492
9493 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
9494
9495         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
9496         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
9497         Propagate the TREE_READONLY flag without overwriting it.
9498         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
9499         Propagate the TREE_READONLY flag onto the result.
9500         (process_call_operands): Move around.  Use correct constant value.
9501
9502 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9503
9504         PR target/40482
9505         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
9506         * config/arm/arm.md: Likewise.
9507
9508 2009-06-19  Ian Lance Taylor  <iant@google.com>
9509
9510         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
9511         to GIMPLE_ERROR_MARK.
9512
9513         * c-typeck.c (build_conditional_expr): Add op1_original_type and
9514         op2_original_type parameters.  Warn about using different enum types.
9515         * c-parser.c (c_parser_conditional_expression): Pass original
9516         types to build_conditional_expr.
9517         * c-tree.h (build_conditional_expr): Update declaration.
9518
9519 2009-06-19  Ian Lance Taylor  <iant@google.com>
9520
9521         * config/i386/i386.c (ix86_function_specific_save): Test that
9522         fields match values, rather than testing the values are in a
9523         certain range.
9524
9525 2009-06-19  Richard Guenther  <rguenther@suse.de>
9526
9527         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
9528         ADDR_EXPR pointers.
9529         (ptr_derefs_may_alias_p): Likewise.
9530         (ptr_deref_may_alias_ref_p_1): New function.
9531         (ptr_deref_may_alias_ref_p): Likewise.
9532         (ref_maybe_used_by_call_p_1): Handle builtins that are not
9533         covered by looking at the ESCAPED solution.
9534         (call_may_clobber_ref_p_1): Likewise.
9535         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
9536         Handle NULL_TREE offset.  Do not produce redundant constraints.
9537         (process_all_all_constraints): New helper function.
9538         (do_structure_copy): Use it.
9539         (handle_lhs_call): Likewise.
9540         (find_func_aliases): Handle some builtins with pointer arguments
9541         and/or return values explicitly.
9542
9543 2009-06-19  Ian Lance Taylor  <iant@google.com>
9544
9545         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
9546
9547 2009-06-19  Ian Lance Taylor  <iant@google.com>
9548
9549         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
9550
9551 2009-06-19  Ian Lance Taylor  <iant@google.com>
9552
9553         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
9554         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
9555         version.
9556
9557         * c-decl.c (finish_decl): If -Wc++-compat, warn about
9558         uninitialized const.
9559
9560 2009-06-19  Ian Lance Taylor  <iant@google.com>
9561
9562         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
9563         all uses.
9564
9565         * c-decl.c (in_struct, struct_types): Remove.
9566         (struct c_binding): Add in_struct field.
9567         (c_binding_ptr): Define type, along with VEC.
9568         (struct c_struct_parse_info): Define.
9569         (struct_parse_info): New static variable.
9570         (bind): Initialize in_struct field.
9571         (start_struct): Remove enclosing_in_struct and
9572         enclosing_struct_types parameters.  Add
9573         enclosing_struct_parse_info parameter.  Change all callers.  Set
9574         struct_parse_info rather than in_struct and struct_types.
9575         (grokfield): If -Wc++-compat and there is a symbol binding for the
9576         field name, set the in_struct flag and push it on the
9577         struct_parse_info->fields vector.
9578         (warn_cxx_compat_finish_struct): New static function.
9579         (finish_struct): Remove enclosing_in_struct and
9580         enclosing_struct_types parameters.  Add
9581         enclosing_struct_parse_info parameter.  Change all callers.  Don't
9582         set C_TYPE_DEFINED_IN_STRUCT here.  Call
9583         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
9584         parameter.  Only push on struct_types if warn_cxx_compat.
9585         (finish_enum): Only push on struct_types if warn_cxx_compat.
9586         (declspecs_add_type): Add loc parameter.  Change all callers.
9587         Change all error calls to error_at.  Pass loc, not input_location,
9588         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
9589         defined in a struct.  If -Wc++-compat and parsing a struct, record
9590         that a typedef name was used.
9591         * c-parser.c (c_parser_declspecs): Get location to pass to
9592         declspecs_add_type.
9593         (c_parser_struct_or_union_specifier): Update calls to start_struct
9594         and finish_struct.
9595         * c-tree.h (struct c_struct_parse_info): Declare.
9596         (finish_struct, start_struct): Update declarations.
9597         (declspecs_add_type): Update declaration.
9598
9599 2009-06-19  Ian Lance Taylor  <iant@google.com>
9600
9601         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
9602         variable with an anonymous type.
9603
9604 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
9605
9606         * see.c: Remove for real.
9607
9608 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
9609
9610         * optabs.h (enum optab_index): Add new OTI_significand.
9611         (significand_optab): Define corresponding macro.
9612         * optabs.c (init_optabs): Initialize significand_optab.
9613         * genopinit.c (optabs): Implement significand_optab using
9614         significand?f2 patterns.
9615         * builtins.c (expand_builtin_mathfn): Handle
9616         BUILT_IN_SIGNIFICAND{,F,L}.
9617         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
9618         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
9619
9620         * config/i386/i386.md (significandxf2, significand<mode>2): New
9621         expanders to implement significandf, significand and significandl
9622         built-ins as inline x87 intrinsics.
9623
9624 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
9625
9626         * config/avr/avr.c (avr_override_options): Remove setting value of
9627         PARAM_INLINE_CALL_COST.
9628
9629 2009-06-18  Richard Henderson  <rth@redhat.com>
9630
9631         PR 40488
9632         * tree-pass.h (TDF_ASMNAME): New.
9633         * tree-dump.c (dump_options): Add asmname.
9634         * doc/invoke.texi: Document it.
9635
9636         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
9637         (dump_decl_name): ...here.
9638         (dump_function_name): New flags arg; mind TDF_ASMNAME.
9639         (dump_generic_node): Update dump_function_name calls.
9640         (print_call_name): New flags arg; update all dump calls.
9641         * diagnostic.h (print_call_name): Update.
9642         * gimple-pretty-print.c (dump_gimple_call): Update.
9643
9644 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
9645
9646         PR target/40470
9647         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
9648
9649 2009-06-18  Diego Novillo  <dnovillo@google.com>
9650
9651         * doc/plugins.texi: Document plugin_is_GPL_compatible.
9652         * plugin.c (str_license): Declare.
9653         (try_init_one_plugin): Assert that the symbol
9654         'plugin_is_GPL_compatible' exists.
9655
9656 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
9657
9658         * see.c: Remove.
9659         * Makefile.in (OBJS-common): Remove see.o.
9660         (see.o): Remove.
9661         * common.opt (fsee): Mark as preserved for backward compatibility.
9662         * opts.c (common_handle_option): Add OPT_fsee to the backward
9663         compatibility section.
9664         * passes.c (init_optimization_passes, pass_see): Remove pass.
9665         * timevar.def (TV_SEE): Remove.
9666         * tree-pass.h (pass_see): Remove declaration.
9667         * doc/invoke.texi (-fsee): Remove documentation.
9668
9669 2009-06-18  Martin Jambor  <mjambor@suse.cz>
9670
9671         * tree-sra.c: Include statistics.h
9672         (sra_stats): New variable.
9673         (sra_initialize): Clear sra_stats.
9674         (create_access_replacement): Increment sra_stats.replacements.
9675         (get_access_replacement): Do not return twice.
9676         (analyze_all_variable_accesses): Increment statistics counter by the
9677         number of scalarized aggregates.
9678         (generate_subtree_copies): Increment sra_stats.subtree_copies.
9679         (sra_modify_expr): Increment sra_stats.exprs.
9680         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
9681         (sra_modify_assign): Increment sra_stats.exprs,
9682         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
9683         (perform_intra_sra): Update statistics counters.
9684         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
9685
9686 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
9687
9688         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
9689         (arm_scalar_mode_supported_p): New function.
9690
9691 2009-06-18  Paul Brook  <paul@codesourcery.com>
9692             Sandra Loosemore  <sandra@codesourcery.com>
9693
9694         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
9695         (__extendhfsf2, __truncsfhf2): Define.
9696         * config/arm/fp16.c: New file.
9697         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
9698         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
9699
9700 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
9701
9702         * doc/extend.texi (Half-Precision): New section.
9703         * doc/invoke.texi (Option Summary): List -mfp16-format.
9704         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
9705         * config/arm/arm.opt (mfp16-format=): New.
9706         * config/arm/arm.c: Include intl.h.
9707         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
9708         (TARGET_INVALID_RETURN_TYPE): Redefine.
9709         (TARGET_PROMOTED_TYPE): Redefine.
9710         (TARGET_CONVERT_TO_TYPE): Redefine.
9711         (arm_fp16_format): Define.
9712         (all_fpus): Add entry for neon-fp16.
9713         (fp_model_for_fpu): Likewise.
9714         (struct fp16_format): Declare.
9715         (all_fp16_formats): Define.
9716         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
9717         functions.
9718         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
9719         and no ldrh.
9720         (arm_legitimate_index_p): Treat HFmode like HImode.
9721         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
9722         (coproc_secondary_reload_class): Special-case HFmode.
9723         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
9724         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
9725         (arm_init_fp16_builtins): New.
9726         (arm_init_builtins): Call it.
9727         (arm_invalid_parameter_type): New.
9728         (arm_invalid_return_type): New.
9729         (arm_promoted_type): New.
9730         (arm_convert_to_type).
9731         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
9732         format.
9733         (arm_emit_fp16_const): New function.
9734         (arm_mangle_type): Mangle __fp16 as "Dh".
9735         * config/arm/arm.h (TARGET_VFPD32): Make it know about
9736         FPUTYPE_NEON_FP16.
9737         (TARGET_NEON_FP16): New.
9738         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
9739         (enum fputype): Add FPUTYPE_NEON_FP16.
9740         (enum arm_fp16_format_type): Declare.
9741         (arm_fp16_format): Declare.
9742         (LARGEST_EXPONENT_IS_NORMAL): Define.
9743         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
9744         * config/arm/arm-modes.def (HFmode): Define.
9745         * config/arm/vfp.md: (*movhf_vfp): New.
9746         (extendhfsf2): New.
9747         (truncsfhf2): New.
9748         * config/arm/arm.md: (fpu): Add neon_fp16.
9749         (floatsihf2, floatdihf2): New.
9750         (fix_trunchfsi2, fix_trunchfdi2): New.
9751         (truncdfhf2): New.
9752         (extendhfdf2): New.
9753         (movhf): New.
9754         (*arm32_movhf): New.
9755         (*thumb1_movhf): New.
9756         (consttable_2): Add check for HFmode constants.
9757         (consttable_4): Handle HFmode constants.
9758
9759 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
9760
9761         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
9762
9763 2009-06-17  Olivier Hainque  <hainque@adacore.com>
9764
9765         * collect2.c (main): Use CONST_CAST2 to perform char ** to
9766         const char ** conversion in AIX specific section.
9767
9768 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
9769
9770         * config/i386/i386.c (ix86_special_builtin_type): Remove
9771         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
9772         (bdesc_special_args): Updated.
9773         (ix86_init_mmx_sse_builtins): Likewise.
9774         (ix86_expand_special_args_builtin): Likewise.
9775
9776 2009-06-17  Richard Henderson  <rth@redhat.com>
9777
9778         * tree-pretty-print.c (maybe_dump_asm_name): New.
9779         (dump_decl_name): Use it.
9780         (PRINT_FUNCTION_NAME): Merge into...
9781         (dump_function_name): ... here.  Use maybe_dump_asm_name.
9782
9783 2009-06-17  Cary Coutant  <ccoutant@google.com>
9784
9785         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
9786         Change caller.
9787         * debug.c (struct gcc_debug_hooks): Change placeholder for
9788         source_line hook.
9789         (debug_nothing_int_charstar_int): Replaced by...
9790         (debug_nothing_int_charstar_int_bool): ...this.
9791         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
9792         source_line prototype.
9793         (debug_nothing_int_charstar_int): Replaced by...
9794         (debug_nothing_int_charstar_int_bool): ...this.
9795         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
9796         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
9797         Output is_stmt operand when necessary.
9798         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
9799         (notice_source_line): Add is_stmt parameter.
9800         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
9801         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
9802         Change callers.
9803         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
9804         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
9805
9806 2009-06-17  Ian Lance Taylor  <iant@google.com>
9807
9808         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
9809         Change all uses.
9810         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
9811         call uses.
9812
9813 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
9814
9815         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
9816         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
9817         tree_strip_sign_nop_conversions and
9818         tree_ssa_strip_useless_type_conversions rather than stripping
9819         the operations here.
9820         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
9821         Declare them.
9822         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
9823         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
9824         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
9825         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
9826         functions.
9827
9828 2009-06-17  Michael Eager  <eager@eagercon.com>
9829
9830         * config/rs6000/constraints.md (register_constraint "d"): New.
9831         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
9832         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
9833         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
9834         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
9835         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
9836         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
9837         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
9838         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
9839         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
9840         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
9841         __fctiwz): Same.
9842         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
9843         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
9844         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
9845         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
9846         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
9847         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
9848         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
9849         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
9850         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
9851         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
9852         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
9853         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
9854         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
9855         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
9856
9857 2009-06-16  Ian Lance Taylor  <iant@google.com>
9858
9859         * profile.c (total_num_never_executed): Don't define.
9860         (compute_branch_probabilities): Don't count or print
9861         num_never_executed.
9862         (init_branch_prob): Don't set total_num_never_executed.
9863         (end_branch_prob): Don't print total_num_never_executed.
9864
9865 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
9866
9867         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
9868
9869 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
9870
9871         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
9872         (nabstd2_fpr): Same.
9873
9874 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
9875
9876         * expr.c (expand_assignment): Change complex type check.
9877
9878 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
9879
9880         * doc/plugins.texi (Building GCC plugins): Added new section.
9881
9882 2009-06-17  Ian Lance Taylor  <iant@google.com>
9883
9884         * c-pch.c (get_ident): Don't set size of templ array.
9885         (pch_init): Don't set size of partial_pch array.
9886
9887         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
9888         string constant to intialize an array whose size is the length of
9889         the string.
9890
9891 2009-06-17  Richard Guenther  <rguenther@suse.de>
9892
9893         PR tree-optimization/40389
9894         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
9895         to addressable types.
9896         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
9897
9898 2009-06-17  Richard Guenther  <rguenther@suse.de>
9899
9900         PR middle-end/40460
9901         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
9902         if there is no evolution of left in the loop bail out.
9903         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
9904         chrec_fold_multiply.
9905
9906 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
9907             Janis Johnson  <janis187@us.ibm.com>
9908
9909         PR target/39254
9910         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
9911         for the symbol ref of a constant that is the source of a move
9912         - nor for any other not-obvious-label-ref constants.
9913
9914 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
9915
9916         * plugin.c (position_pass): Skip newly inserted pass during list
9917         traversal to avoid repeated insertion.
9918
9919 2009-06-16  Ian Lance Taylor  <iant@google.com>
9920
9921         * vec.h (VEC_stack_alloc): Define different version if
9922         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
9923         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
9924         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
9925         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
9926
9927 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
9928
9929         * config.gcc (extra_headers): Add ia32intrin.h for x86.
9930
9931         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
9932         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
9933         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
9934         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
9935         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
9936         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
9937         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
9938         (bdesc_special_args): Add __builtin_ia32_rdtsc and
9939         __builtin_ia32_rdtscp.
9940         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
9941         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
9942         and __builtin_ia32_rorhi.
9943         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
9944         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
9945         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
9946         (ix86_expand_args_builtin): Likewise.
9947         (ix86_expand_special_args_builtin): Likewise.
9948
9949         * config/i386/i386.md (UNSPECV_RDTSCP): New.
9950         (UNSPECV_RDTSC): Likewise.
9951         (UNSPECV_RDPMC): Likewise.
9952         (*bsr): Renamed to ...
9953         (bsr): This
9954         (*bsr_rex64): Renamed to ...
9955         (bsr_rex64): This.
9956         (rdpmc): New.
9957         (*rdpmc): Likewise.
9958         (*rdpmc_rex64): Likewise.
9959         (rdtsc): Likewise.
9960         (*rdtsc): Likewise.
9961         (*rdtsc_rex64): Likewise.
9962         (rdtscp): Likewise.
9963         (*rdtscp): Likewise.
9964         (*rdtscp_rex64): Likewise.
9965
9966         * config/i386/ia32intrin.h: New.
9967
9968         * config/i386/x86intrin.h: Include <ia32intrin.h>.
9969
9970 2009-06-16  Ian Lance Taylor  <iant@google.com>
9971
9972         * ira-build.c (copy_info_to_removed_store_destinations):
9973         Initialize parent_a.
9974
9975 2009-06-16  Ian Lance Taylor  <iant@google.com>
9976
9977         * c-decl.c (grokdeclarator): Change size_varies to bool.
9978
9979 2009-06-16  Ian Lance Taylor  <iant@google.com>
9980
9981         * sel-sched.c: Make forward declarations of move_op_hooks and
9982         fur_hooks explicitly extern.
9983
9984 2009-06-16  Ian Lance Taylor  <iant@google.com>
9985
9986         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
9987         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
9988
9989 2009-06-16  Ian Lance Taylor  <iant@google.com>
9990
9991         * resource.c (mark_referenced_resources): Change
9992         include_delayed_effects parameter to bool.  Change all callers.
9993         (mark_end_of_function_resources): Likewise.
9994         * reorg.c (insn_references_resource_p): Likewise.
9995         (insn_sets_resource_p): Likewise.
9996         * resource.h (mark_referenced_resources): Update declaration.
9997         (mark_end_of_function_resources): Update declaration.
9998
9999 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10000
10001         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
10002
10003 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10004
10005         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
10006         GCC can bootstrap on AIX with GNU Binutils 2.20.
10007
10008 2009-06-16  Ian Lance Taylor  <iant@google.com>
10009
10010         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
10011
10012 2009-06-16  Ian Lance Taylor  <iant@google.com>
10013
10014         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
10015         inline, not extern inline.
10016         (exact_log2): Likewise.
10017         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
10018         test CLZ_HWI.
10019         (exact_log2): Likewise, but don't test CTZ_HWI.
10020
10021 2009-06-16  Ian Lance Taylor  <iant@google.com>
10022
10023         * bitmap.c (bitmap_clear): Don't declare as inline.
10024         * gimple.c (gimplify_assign): Likewise.
10025         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
10026         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
10027         (sched_scan_info): Remove duplicate definition.
10028
10029 2009-06-16  Ian Lance Taylor  <iant@google.com>
10030
10031         * c-common.c (skip_evaluation): Don't define.
10032         (c_inhibit_evaluation_warnings): Define global variable.
10033         (overflow_warning): Check c_inhibit_evaluation_warnings rather
10034         than skip_evaluation.
10035         (convert_and_check, warn_for_div_by_zero): Likewise.
10036         * c-common.h (skip_evaluation): Don't declare.
10037         (c_inhibit_evaluation_warnings): Declare.
10038         * c-parser.c (c_parser_typeof_specifier): Set
10039         c_inhibit_evaluation_warnings rather than skip_evaluation.
10040         (c_parser_conditional_expression): Likewise.
10041         (c_parser_binary_expression): Likewise.
10042         (c_parser_sizeof_expression): Likewise.
10043         (c_parser_alignof_expression): Likewise.
10044         * c-typeck.c (build_indirect_ref): Check
10045         c_inhibit_evaluation_warnings rather than skip_evaluation.
10046         (build_conditional_expr, build_binary_op): Likewise.
10047
10048 2009-06-16  Richard Guenther  <rguenther@suse.de>
10049
10050         * tree-ssa-alias.c (is_escape_site): Remove.
10051         * tree-ssa-alias.h (enum escape_type): Remove.
10052         (is_escape_site): Likewise.
10053         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
10054         via casts and asms without deferring to is_escape_site.
10055
10056 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
10057
10058         PR middle-end/40446
10059         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
10060         use gen_lowpart if op0 has complex mode.
10061
10062 2009-06-16  Richard Guenther  <rguenther@suse.de>
10063
10064         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
10065         variables add them to ESCAPED.
10066         (find_func_aliases): Do not make all indirectly stored values escaped.
10067
10068 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
10069
10070         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
10071         make_decl_one_only.
10072
10073 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10074
10075         PR tree-optimization/40432
10076         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
10077         check whether we need to force gimple register operand.
10078
10079 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10080
10081         PR tree-optimization/40413
10082         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
10083         build_ref_for_offset.
10084         (propagate_subacesses_accross_link): Fix a typo in a comment.
10085
10086 2009-06-16  Ira Rosen  <irar@il.ibm.com>
10087
10088         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10089         with additional parameter.
10090         * tree-vectorizer.h (enum vect_def_type): Add new value
10091         vect_nested_cycle.
10092         (enum vect_relevant): Add comments.
10093         (vect_is_simple_reduction): Add new argument.
10094         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
10095         Detect nested cycles.
10096         (vect_is_simple_reduction): Update documentation, add an argument to
10097         distinguish inner-loop reduction from nested cycle, detect nested
10098         cycles, fix printings and indentation, don't swap operands in case
10099         of nested cycle.
10100         (get_initial_def_for_reduction): Handle subtraction.
10101         (vect_create_epilog_for_reduction): Add new argument to specify
10102         reduction variable.
10103         (vect_finalize_reduction): Handle subtraction, fix comments.
10104         (vectorizable_reduction): Handle nested cycles. In case of nested
10105         cycle keep track of the reduction variable position. Call
10106         vect_is_simple_reduction with additional parameter. Use original
10107         statement code in reduction epilogue for nested cycle. Call
10108         vect_create_epilog_for_reduction with additional parameter.
10109         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
10110         inner-loop vectorization.
10111         (vect_recog_widen_sum_pattern): Likewise.
10112         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
10113         and reductions.
10114         (vect_mark_stmts_to_be_vectorized): Likewise.
10115         (vect_get_vec_def_for_operand): Handle nested cycles.
10116
10117 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10118
10119         * doc/invoke.texi (Debugging Options): Fix option index entries
10120         for -fdump-statistics, -frandom-seed add entries for
10121         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
10122         (FRV Options): Fix entries for -mTLS, -mtls.
10123         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
10124         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
10125         (M68hc1x Options): Fix @itemx for -mnominmax.
10126         (MCore Options): Fix entry for -mno-lsim.
10127         (MMIX Options): Fix entry for -mabi=mmixware.
10128         (PDP-11 Options): Fix entry for -mbcopy-builtin.
10129
10130 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
10131
10132         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
10133         Mention the plugin mode of gengtype.
10134         * doc/gty.texi (Source Files Containing Type Information): Likewise.
10135         * gengtype.c: Updated copyright.
10136         (plugin_files, nb_plugin_files) Added new static variables.
10137         (measure_input_list) Care about plugin_files.
10138         (write_rtx_next): Added early return in plugin mode.
10139         (create_file): Updated copyright year in generated file. Added
10140         asserts.
10141         (oprintf): Added early return if NULL outf.
10142         (get_output_file_with_visibility): Care of plugin_files.
10143         (get_output_file_name): May return null.
10144         (write_local): Added early return.
10145         (put_mangled_filename): Ditto.
10146         (finish_root_table): Added check for base_files.
10147         (write_roots): Care about null when plugins.
10148         (main): Added plugin mode.
10149
10150 2009-06-15  Ian Lance Taylor  <iant@google.com>
10151
10152         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
10153         * gcov.c (read_count_file): Add braces around variables declared
10154         before label.
10155
10156         * c.opt (Wjump-misses-init): New warning.
10157         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
10158         -Wall and -Wc++-compat if not already set.
10159         (c_common_post_options): Clear warn_jump_misses_init if it was not
10160         set.
10161         * c-decl.c (struct c_binding): Change type field to a union with
10162         new label field.  Make it the first field in the struct.  Update
10163         references to type to use u.type instead.
10164         (struct c_spot_bindings): Define.
10165         (struct c_goto_bindings): Define.
10166         (c_goto_bindings_p): Define, along with VECs.
10167         (struct c_label_vars): Define.
10168         (struct c_scope): Add has_label_bindings field.
10169         (bind_label, set_spot_bindings): New static functions.
10170         (decl_jump_unsafe, update_spot_bindings): New static functions.
10171         (update_label_decls): New static function.
10172         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
10173         Update binding u.label field to shadowed field.
10174         (c_binding_start_stmt_expr): New function.
10175         (c_binding_end_stmt_expr): New function.
10176         (pushdecl): Don't call c_begin_vm_scope.
10177         (make_label): Add defining and p_label_vars parameters.  Change
10178         all callers.
10179         (lookup_label): Correct test for whether a label has not yet been
10180         defined.  Call bind_label rather than bind.
10181         (warn_about_goto): New static function.
10182         (lookup_label_for_goto): New function.
10183         (declare_label): Call bind_label rather than bind.
10184         (check_earlier_gotos): New static function.
10185         (define_label): Don't give errors about jumping into statement
10186         expressions or scopes of variably modified types.  Call
10187         set_spot_bindings and check_earlier_gotos.  Call bind_label
10188         instead of bind.  Don't set label_context_stack_se or
10189         label_context_stack_vm.
10190         (c_get_switch_bindings): New function.
10191         (c_release_switch_bindings): New function.
10192         (c_check_switch_jump_warnings): New function.
10193         (start_function): Don't set label_context_stack_se or
10194         label_context_stack_vm.
10195         (finish_function): Likewise.
10196         * c-typeck.c (label_context_stack_se): Don't define.
10197         (label_context_stack_vm): Don't define.
10198         (c_finish_goto_label): Call lookup_label_for_goto rather than
10199         lookup_label.  Don't give errors about jumping into a statement
10200         expression or the scope of a variably modified type.  Don't set
10201         label_context_stack_se or label_context_stack_vm.
10202         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
10203         fields.  Add bindings field.
10204         (c_start_case): Don't set deleted fields.  Set bindings field.
10205         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
10206         or blocked_vm.  Call c_check_switch_jump_warnings.
10207         (c_finish_case): Don't test blocked_stmt_expr field.  Call
10208         c_release_switch_bindings.
10209         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
10210         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10211         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
10212         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
10213         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10214         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
10215         (c_begin_vm_scope, c_end_vm_scope): Don't define.
10216         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
10217         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
10218         (C_DECL_UNJUMPABLE_VM): Don't define.
10219         (C_DECL_UNDEFINABLE_VM): Don't define.
10220         (struct c_label_list): Don't define.
10221         (struct c_label_context_se): Don't define.
10222         (struct c_label_context_vm): Don't define.
10223         (struct c_spot_bindings): Declare.
10224         (c_bindings_start_stmt_expr): Declare.
10225         (c_bindings_end_stmt_expr): Declare.
10226         (lookup_label_for_goto): Declare.
10227         (c_get_switch_bindings, c_release_switch_bindings): Declare.
10228         (c_check_switch_jump_warnings): Declare.
10229         (label_context_stack_se, label_context_stack_vm): Don't declare.
10230         (c_finish_goto_label): Update declaration.
10231         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
10232         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
10233         (Warning Options): Document -Wjump-misses-init.
10234
10235 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
10236
10237         * tree-object-size.c (addr_object_size): Fix a pasto in the last
10238         change.
10239
10240 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10241
10242         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
10243
10244 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10245
10246         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
10247
10248 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10249
10250         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
10251
10252 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10253
10254         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
10255         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
10256         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
10257         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
10258         * dwarf2asm.c (dw2_force_const_mem): Update call to
10259         make_decl_one_only.
10260         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
10261         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
10262         * langhooks.c (lhd_comdat_group): Remove.
10263         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
10264         * tree.h (DECL_COMDAT_GROUP): New.
10265         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
10266         (tree_decl_with_vis): Add comdat_group. Remove one_only.
10267         (make_decl_one_only): Change signature.
10268         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
10269         make_decl_one_only.
10270         (make_decl_one_only): Change signature.
10271         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
10272
10273 2009-06-15  Richard Guenther  <rguenther@suse.de>
10274
10275         PR middle-end/40439
10276         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
10277
10278 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10279
10280         * tree-ssa-math-opts.c: Remove extra divide.
10281
10282 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10283
10284         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
10285
10286 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10287
10288         * passes.c: Add bswap pass.
10289         * tree-pass.h: Add pass_optimize_bswap declaration.
10290         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
10291         Include rtl.h, expr.h and optabs.h for optab_handler check.
10292         (struct symbolic_number, pass_optimize_bswap): New definition.
10293         (do_shift_rotate, verify_symbolic_number_p): New functions.
10294         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
10295         (gate_optimize_bswap): New function.
10296         * tree.c (widest_int_cst_value): New function.
10297         * tree.h (widest_int_cst_value): Prototype added.
10298
10299 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
10300
10301         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
10302         REG_EQUAL/REG_EQUIV notes.
10303
10304 2009-06-14  Richard Guenther  <rguenther@suse.de>
10305
10306         PR middle-end/40389
10307         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
10308         has its address taken if NRV was applied and it is addressable.
10309         * tree-ssa-structalias.c (get_constraint_for_address_of): New
10310         function split out from ...
10311         (get_constraint_for_1): ... here.
10312         (handle_rhs_call): Use it to mark the return slot escaped if
10313         it is addressable and NRV was applied.
10314
10315 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10316
10317         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
10318         Change first argument type to location_t.
10319         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
10320         Do not set input_location.
10321         Use loc instead of input_location throughout.
10322
10323 2009-06-13  Richard Guenther  <rguenther@suse.de>
10324
10325         PR tree-optimization/40421
10326         * tree-predcom.c (should_unroll_loop_p): Remove.
10327         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
10328
10329 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
10330
10331         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10332         Add location argument.
10333
10334 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10335
10336         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
10337         build_decl.
10338         * config/s390/s390.c (s390_build_builtin_va_list): Same.
10339         (s390_gimplify_va_arg): Pass location to create_artificial_label.
10340         * config/spu/spu-protos.h: Add location to
10341         spu_resolve_overloaded_builtin.
10342         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
10343         spu_build_builtin_va_list.
10344         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
10345         argument.  Pass location to build_function_call_vec.
10346         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
10347         build_decl.
10348         (emit_fpu_switch): Same.
10349         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
10350         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
10351         to build_decl and create_artificial_label.
10352         (xtensa_gimplify_va_arg_expr): Same.
10353         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
10354         (xstormy16_gimplify_va_arg_expr): Same.
10355         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
10356         * config/arm/arm.c (arm_build_builtin_va_list): Same.
10357         * config/mips/mips.c (mips_build_builtin_va_list): Same.
10358         (mips16_build_function_stub): Same.
10359         (mips16_build_call_stub): Same.
10360
10361 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
10362
10363         PR target/40327
10364         * arm/constraints.md (Pa, Pb): New constraints.
10365         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
10366         split pattern to deal with them.
10367
10368 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
10369
10370         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
10371         fix index entry for -Xpreprocessor.
10372
10373 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
10374
10375         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10376         Add location argument to build_decl call.
10377         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
10378         (rs6000_init_builtins): Same.
10379         (spe_init_builtins): Same.
10380         (rs6000_gimplify_va_arg): Add location argument to
10381         create_artificial_label call.
10382
10383 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
10384
10385         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
10386         * combine-stack-adj.c (pass_stack_adjustments): Use it.
10387         * Makefile.in: Fix GGC dependency for gcse.o.
10388
10389 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
10390
10391         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
10392         * gimple-pretty-print.c (dump_gimple_stmt): Same.
10393         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
10394         created.
10395         * c-parser.c (c_parser_binary_expression): Use current column while
10396         building binary operations.
10397         * common.opt (fshow-column): Enable by default.
10398         * tree-vrp.c (check_array_ref): Use warning_at.
10399         (check_array_bounds): Use location from call back if expr has no
10400         location.
10401         * tree.h: Add location argument to maybe_fold_*.
10402         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
10403         (maybe_fold_offset_to_array_ref): Add location argument and use it.
10404         (maybe_fold_offset_to_component_ref): Same.
10405         (maybe_fold_offset_to_reference): Same.
10406         (maybe_fold_offset_to_address): Same.
10407         (maybe_fold_stmt_indirect): Same.
10408         (maybe_fold_stmt_addition): Same.
10409         (fold_stmt_r): Pass location to maybe_fold_*.
10410         (fold_gimple_assign): Same.
10411         * c-tree.h: Add location argument to finish_decl,
10412         default_function_array_conversion, store_init_value.
10413         * c-decl.c (define_label): Use error_at.
10414         (c_make_fname_decl): Pass location to finish_decl.
10415         (finish_decl): New location argument.
10416         (build_compound_literal): Pass location to store_init_value.
10417         (grokdeclarator): Pass location to finish_decl.
10418         (grokfield): Same.
10419         * c-typeck.c (array_to_pointer_conversion): New location argument.
10420         (function_to_pointer_conversion): Same.
10421         (default_function_array_conversion): Same.
10422         (parser_build_unary_op): Pass location to overflow_warning.
10423         (parser_build_binary_op): Same.  Use warning_at.
10424         (build_unary_op): Pass location to array_to_pointer_conversion.
10425         (build_c_cast): Pass location to digest_init.
10426         (build_modify_expr): New location argument.
10427         (convert_for_assignment): Same.
10428         (store_init_value): Same.
10429         (digest_init): Same.
10430         (output_init_element): Pass location to digest_init and
10431         array_to_pointer_conversion.
10432         (c_finish_return): Pass location to convert_for_assignment.
10433         * gimplify.c (gimplify_conversion): Pass location to
10434         maybe_fold_offset_to_address.
10435         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
10436         to maybe_fold_stmt_addition.
10437         * c-omp.c (c_finish_omp_atomic): Pass new location to
10438         build_modify_expr.
10439         (c_finish_omp_for): Same.
10440         * c-common.c (overflow_warning): New argument.
10441         * c-common.h: New argument to build_modify_expr, overflow_warning.
10442         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
10443         finish_decl.
10444         (c_parser_initializer): Pass location to
10445         default_function_array_conversion.
10446         (c_parser_initelt): Same.
10447         (c_parser_initval): Same.
10448         (c_parser_asm_operands): Same.
10449         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
10450         (c_parser_conditional_expression): Same.
10451         (c_parser_binary_expression): Add location info to stack.  Use it.
10452         (c_parser_unary_expression): Pass location to
10453         default_function_array_conversion, parser_build_unary_op,
10454         build_indirect_ref, c_parser_postfix_expression_after_primary.
10455         (c_parser_postfix_expression_after_primary): New location argument.
10456         Use it.
10457         (c_parser_expression_conv): Pass location to
10458         default_function_array_conversion.
10459         (c_parser_expr_list): Same.
10460         (c_parser_omp_atomic): Same.
10461         (c_parser_omp_for_loop): Same.
10462         * c-tree.h: (struct c_declarator): Add comment to id_loc.
10463         (build_array_declarator): New argument.
10464         * c-decl.c (build_array_declarator): Add location argument.
10465         (grokdeclarator): Set id_loc for cdk_array.
10466         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
10467         build_array_declarator.
10468         * tree.c (build_omp_clause): Add location argument.
10469         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
10470         (OMP_CLAUSE_LOCATION): New macro.
10471         (struct tree_omp_clause): Add location field.
10472         (build_omp_clause): Add argument.
10473         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
10474         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
10475         build_omp_clause.
10476         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
10477         (cp_parser_omp_clause_collapse): Same.
10478         (cp_parser_omp_clause_default): Same.
10479         (cp_parser_omp_clause_if): Same.
10480         (cp_parser_omp_clause_nowait): Same.
10481         (cp_parser_omp_clause_num_threads): Same.
10482         (cp_parser_omp_clause_ordered): Same.
10483         (cp_parser_omp_clause_schedule): Same.
10484         (cp_parser_omp_clause_untied): Same.
10485         (cp_parser_omp_for_loop): Same.
10486         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
10487         * c-tree.h (c_start_case): Add location argument.
10488         (c_process_expr_stmt): Same.
10489         (c_finish_goto_*): Same.
10490         * tree-parloops.c (initialize_reductions): Pass location to
10491         build_omp_clause.
10492         (create_parallel_loop): Same.
10493         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
10494         (gfc_trans_omp_reduction_list): Same.
10495         (gfc_trans_omp_clauses): Same.
10496         (gfc_trans_omp_do): Same.
10497         * c-typeck.c (c_finish_goto_label): Same.
10498         (c_finish_goto_ptr): New location argument.
10499         (c_start_case): Same.
10500         (emit_side_effect_warnings): Same.
10501         (c_process_expr_stmt): Same.
10502         (c_finish_stmt_expr): Same.
10503         (c_finish_omp_clauses): Use error_at instead of error.
10504         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
10505         build_omp_clause.
10506         * c-omp.c (c_split_parallel_clauses): New location argument.
10507         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
10508         to build_omp_clause.
10509         (convert_local_reference_stmt): Same.
10510         (convert_gimple_call): Same.
10511         * c-common.h (c_split_parallel_clauses): New argument.
10512         * c-parser.c (c_parser_statement_after_labels): Pass location to
10513         c_finish_goto_label.
10514         (c_parser_switch_statement): Pass location to c_start_case.
10515         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
10516         and c_process_expr_stmt.
10517         (c_parser_omp_variable_list): Add location argument.
10518         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
10519         (c_parser_omp_clause_default): Same.
10520         (c_parser_omp_clause_if): Same.
10521         (c_parser_omp_clause_num_threads): Same.
10522         (-c_parser_omp_clause_ordered): Same.
10523         (c_parser_omp_clause_reduction): Pass location to
10524         c_parser_omp_variable_list.
10525         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
10526         (c_parser_omp_clause_untied): Same.
10527         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
10528         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
10529
10530         * c-tree.h (check_for_loop_decls, undeclared_variable,
10531         build_component_ref, build_array_ref, build_external_ref,
10532         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
10533         build_conditional_expr, build_compound_expr, c_cast_expr,
10534         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
10535         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
10536         argument.
10537         * c-semantics.c (build_stmt): Same.
10538         (build_case_label): Same.
10539         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
10540         (undeclared_variable): New argument.
10541         (make_label): Same.
10542         (lookup_label): Pass location on down.
10543         (define_label): Same.
10544         (finish_decl): Same.
10545         (build_compound_literal): Same.
10546         (finish_struct): Same.
10547         (finish_function): Do not set location here.
10548         (check_for_loop_decls): New argument.
10549         * tree.c (save_expr): Set location.
10550         (build_empty_stmt): New argument.
10551         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
10552         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
10553         * builtins.c (gimplify_va_arg_expr): Use locations.
10554         (expand_builtin_sync_operation): Same.
10555         * c-typeck.c (build_component_ref): New argument.
10556         (build_array_ref): Same.
10557         (build_external_ref): Same.
10558         (c_expr_sizeof_expr): Same.
10559         (c_expr_sizeof_type): Same.
10560         (parser_build_unary_op): Same.
10561         (build_conditional_expr): Same.
10562         (build_compound_expr): Pass location on down.
10563         (build_compound_expr): New argument.
10564         (build_c_cast): Same.
10565         (c_cast_expr): Same.
10566         (build_asm_expr): Same.
10567         (c_finish_return): Same.
10568         (c_process_expr_stmt): Pass location on down.
10569         (c_finish_stmt_expr): New argument.
10570         (push_clenaup): Same.
10571         (c_finish_omp_parallel): Same.
10572         (c_finish_omp_task): Same.
10573         * gimplify.c (gimplify_call_expr): Pass location on down.
10574         * c-omp.c (c_finish_omp_master): New argument.
10575         (c_finish_omp_critical): Same.
10576         (c_finish_omp_ordered): Same.
10577         (c_finish_omp_barrier): Same.
10578         (-c_finish_omp_taskwait): Same.
10579         (c_finish_omp_atomic): Same.
10580         (c_finish_omp_flush): Same.
10581         * tree-inline.c (copy_tree_body_r): Pass location on down.
10582         (inline_forbidden_p): Remove use of input_location.
10583         * c-gimplify.c (c_build_bind_expr): New argument.
10584         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
10585         (c_sizeof_or_alignof_type): New argument.
10586         (c_alignof_expr): Same.
10587         (build_va_arg): Same.
10588         (c_add_case_label): Same.
10589         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
10590         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
10591         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
10592         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
10593         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
10594         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
10595         New argument.
10596         * stub-objc.c (objc_build_selector_expr): Same.
10597         (objc_build_throw_stmt): Same.
10598         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
10599         (c_parser_initelt): Same.
10600         (c_parser_compound_statement): Same.
10601         (c_parser_compound_statement_nostart): Same.
10602         (c_parser_label): Same.
10603         (c_parser_statement_after_labels): Same.
10604         (c_parser_if_body): Same.
10605         (c_parser_else_body): Same.
10606         (c_parser_if_statement): Same.
10607         (c_parser_switch_statement): Same.
10608         (c_parser_while_statement): Same.
10609         (c_parser_do_statement): Same.
10610         (c_parser_for_statement): Same.
10611         (c_parser_asm_statement): Same.
10612         (c_parser_conditional_expression): Same.
10613         (c_parser_binary_expression): Same.
10614         (c_parser_cast_expression): Same.
10615         (c_parser_unary_expression): Same.
10616         (c_parser_sizeof_expression): Same.
10617         (c_parser_alignof_expression): Same.
10618         (c_parser_postfix_expression): Same.
10619         (c_parser_expression): Same.
10620         (c_parser_objc_receiver): Same.
10621         (c_parser_omp_variable_list): Same.
10622         (c_parser_omp_structured_block): Same.
10623         (c_parser_omp_atomic): New argument.
10624         (c_parser_omp_barrier): Same.
10625         (c_parser_omp_critical): Same.
10626         (c_parser_omp_flush): Pass location on down.
10627         (c_parser_omp_for_loop): New argument.
10628         (c_parser_omp_for): Same.
10629         (c_parser_omp_master): Same.
10630         (c_parser_omp_ordered): Same.
10631         (c_parser_omp_sections_scope): Same.
10632         (c_parser_omp_sections): Same.
10633         (c_parser_omp_parallel): Same.
10634         (c_parser_omp_single): Same.
10635         (c_parser_omp_task): Same.
10636         (c_parser_omp_taskwait): Pass location on down.
10637         (c_parser_omp_construct): Same.
10638         (c_parser_omp_threadprivate): Same.
10639         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
10640         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
10641         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
10642         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
10643         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
10644         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
10645         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
10646         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
10647         config/i386/i386.c, stmt.c:
10648         Add location argument to the following function definitions and/or
10649         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
10650         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
10651         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
10652         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
10653         do_case, c_finish_bc_stmt, build_compound_literal,
10654         build_function_call.
10655         * c-decl.c (build_compound_literal): Add location argument.
10656         Make all diagnostic calls use location.
10657         (start_struct): Same.
10658         (finish_struct): Same.
10659         (start_enum): Same.
10660         (build_enumerator): Same.
10661         (start_function): Same.
10662         (grokdeclarator): Make all diagnostic calls use location.
10663         (store_parm_decls_oldstyle): Same.
10664         * c-typeck.c (build_function_call): Add location argument.
10665         Make all diagnostic calls use location.
10666         (do_case): Same.
10667         (c_finish_bc_stmt): Same.
10668         * tree-nested.c (get_trampoline_type): Add argument.
10669         Pass location to build_decl.
10670         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
10671         * rtl.h (RTL_LOCATION): New.
10672         * c-common.c (c_add_case_label): Add location argument.
10673         Make all diagnostic calls use location.
10674         * c-common.h: Add location argument to make_fname_decl, do_case,
10675         c_add_case_label, build_function_call, resolve_overloaded_builtin.
10676         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
10677         Set it appropriately for every case.  Pass enum_loc to start_enum
10678         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
10679         parser_xref_tag.
10680         (c_parser_struct_or_union_specifier): Save location.  Use it for
10681         start_struct, finish_struct, and parser_xref_tag.
10682
10683 2009-06-12  Ian Lance Taylor  <iant@google.com>
10684
10685         * fold-const.c (fold_unary): Rename local variable and to and_expr.
10686
10687         * c-opts.c (c_common_handle_option): For -Wc++-compat set
10688         cpp_opts->warn_cxx_operator_names.
10689
10690 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10691
10692         PR tree-opt/38865
10693         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
10694         is returns NULL and OP is a VCE, look through the VCE.
10695
10696 2009-06-12  Ian Lance Taylor  <iant@google.com>
10697
10698         PR bootstrap/40430
10699         * collect2.c (main): Use CONST_CAST2 in code inside #if
10700         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
10701
10702 2009-06-12  Joey Ye  <joey.ye@intel.com>
10703
10704         PR middle-end/39146
10705         * cfgexpand.c (get_decl_align_unit): Update
10706         max_used_stack_slot_alignment with align instead of
10707         stack_alignment_needed.
10708
10709         * function.c (assign_stack_local_1): Update
10710         max_used_stack_slot_alignment with alignment_in_bits instead
10711         of stack_alignment_needed.
10712         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
10713         here.
10714
10715 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
10716
10717         * dwarf2out.c (last_var_location_insn): New variable.
10718         (dwarf2out_end_epilogue): Clear last_var_location_insn.
10719         (dwarf2out_var_location): Don't record anything after last real
10720         insn.  Only change labels if there were any real instructions
10721         in between last note and this one, or if changed sections.
10722
10723 2009-06-11  Richard Henderson  <rth@redhat.com>
10724
10725         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
10726         note when storing the frame pointer in a register.
10727         (FRP): Don't redefine to nothing for epilogue.
10728         (alpha_expand_epilogue): Mark register and sp restores.
10729         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
10730
10731         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
10732         when gen_lowpart is needed.
10733
10734 2009-06-11  Richard Henderson  <rth@redhat.com>
10735
10736         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
10737
10738         * dwarf2out.c (need_data_align_sf_opcode): New.
10739         (div_data_align): Move earlier.
10740         (def_cfa_1, reg_save): Use it.
10741
10742 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
10743
10744         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
10745         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
10746         (ix86_handle_option): Handle OPT_mcrc32.
10747         (ix86_target_string): Add -mcrc32.
10748         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
10749
10750         * config/i386/i386.h (TARGET_CRC32): New.
10751
10752         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
10753         (sse4_2_crc32di): Likewise.
10754
10755         * config/i386/i386.opt (mcrc32): New.
10756
10757         * doc/invoke.texi: Document -mcrc32.
10758
10759 2009-06-11  Richard Henderson  <rth@redhat.com>
10760
10761         * common.opt (gdwarf-): Accept a version number.
10762         * doc/invoke.texi (gdwarf-): Update docs.
10763         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
10764         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
10765         version level, and record it.
10766
10767         * dwarf2.h (DW_CIE_VERSION): Remove.
10768         * dwarf2out.c (DWARF_VERSION): Remove.
10769         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
10770         (output_call_frame_info): Use CIE version 3 for dwarf3,
10771         or if the return register column is out of range for version 1.
10772         (dwarf_stack_op_name): Add all dwarf3 values.
10773         (DEBUG_PUBTYPES_SECTION): New.
10774         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
10775         encoding change for dwarf3.
10776         (output_die) [dw_val_class_die_ref]: Likewise.
10777         (output_compilation_unit_header): Emit correct version for dwarf3.
10778         (output_line_info): Likewise.
10779         (output_pubnames): Update for DWARF_VERSION removal.
10780         (output_aranges): Likewise.
10781         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
10782         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
10783         (dwarf2out_finish): Likewise.
10784
10785 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
10786
10787         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
10788         in r148403.
10789
10790 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
10791
10792         PR c/39252
10793         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
10794         * builtins.c (expand_builtin_unreachable): New function.
10795         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
10796         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
10797         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
10798         successors.
10799         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
10800         searching for missing barriers.
10801
10802 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10803
10804         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
10805         when -fprofile-generate* was passed.
10806         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
10807
10808 2009-06-11  Anthony Green  <green@moxielogic.com>
10809
10810         * config/moxie/moxie.md: Define length attribute for all instructions.
10811         (rCC): Define.
10812         (*b<cond:code>): Support limited branch ranges for new PC-relative
10813         branch instructions.
10814         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
10815
10816 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
10817
10818         * config/i386/i386.c (min_insn_size): Use get_attr_length
10819         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
10820         For __asm return 0.
10821
10822         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
10823         instead of emit_insn_before.
10824
10825 2009-06-10  Ian Lance Taylor  <iant@google.com>
10826
10827         PR bootstrap/40408
10828         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
10829         GIMPLE_SWITCH.
10830
10831 2009-06-10  Revital Eres  <eres@il.ibm.com>
10832
10833         * passes.c (init_optimization_passes): Reschedule
10834         predictive-commoning pass before complete unroll pass.
10835
10836 2009-06-10  Martin Jambor  <mjambor@suse.cz>
10837
10838         * cgraph.c (cgraph_node_can_be_local_p): New function.
10839         (cgraph_make_node_local): New function.
10840         * cgraph.h (cgraph_node_can_be_local_p): Declare.
10841         (cgraph_make_node_local): Declare.
10842
10843 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
10844
10845         * tree.h (tree_base): Add packed_flag and user_align fields.
10846         Decrease size of spare field.
10847         (TYPE_USER_ALIGN): Use user_align from tree_base.
10848         (DECL_USER_ALIGN): Likewise.
10849         (TYPE_PACKED): Use packed_flag from tree_base.
10850         (DECL_PACKED): Likewise.
10851         (tree_type): Delete packed_flag and user_align fields.  Widen
10852         precision field.  Widen mode field and shuffle fields to align
10853         mode on an 8-bit boundary.
10854         (tree_decl_common): Delete decl_flag_1 and user_align fields.
10855         Renumber decl_flag_* fields.  Fix comments.  Widen
10856         decl_common_unused field.
10857         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
10858         (DECL_EXTERNAL): Likewise.
10859         (DECL_BIT_FIELD): Likewise.
10860         (DECL_NONADDRESSABLE_P): Likewise.
10861         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
10862         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
10863
10864 2009-06-10  Ian Lance Taylor  <iant@google.com>
10865
10866         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
10867         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
10868         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
10869         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
10870         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
10871         DEF_VEC_ALLOC_FUNC_P.
10872         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
10873         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
10874         DEF_VEC_ALLOC_FUNC_O.
10875         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
10876         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
10877         DEF_VEC_ALLOC_FUNC_I.
10878         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
10879         (vec_stack_p_reserve_exact_1): Declare.
10880         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
10881         (vec_stack_free): Declare.
10882         (VEC_stack_alloc): Define.
10883         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
10884         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
10885         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
10886         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
10887         for void_p.
10888         (stack_vecs): New static variable.
10889         (vec_stack_p_reserve_exact_1): New function.
10890         (vec_stack_o_reserve_1): New static function.
10891         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
10892         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
10893         (vec_stack_free): New function.
10894         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
10895         (VEC_df_ref_stack_alloc): Define.
10896         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
10897         DEF_VEC_ALLOC_P_STACK.
10898         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
10899         (struct df_collection_rec): Change _vec fields to VEC.  Remove
10900         _use fields.
10901         (df_free_collection_rec): Adjust for new fields.
10902         (df_insn_rescan): Use new df_collection_rec fields.
10903         (df_notes_rescan, df_canonize_collection_rec): Likewise.
10904         (df_ref_create_structure, df_ref_record): Likewise.
10905         (df_get_conditional_uses, df_get_call_refs): Likewise.
10906         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
10907         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
10908         (df_record_exit_block_uses, df_bb_verify): Likewise.
10909         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
10910         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
10911         Remove count parameter.  Change return type to void.  Change all
10912         callers.
10913         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
10914         Remove count parameter.  Change return type to void.  Change all
10915         callers.
10916         (df_install_refs): Change old_vec parameter to VEC.  Remove count
10917         parameter.  Change all callers.
10918         (df_install_mws): Change old_vec parameter to VEC.  Remove count
10919         parameter.  Change all callers.
10920         (df_refs_verify): Change new_rec parameter to VEC.  Change call
10921         callers.
10922         (df_mws_verify): Likewise.
10923
10924 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
10925
10926         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
10927
10928 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
10929
10930         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
10931
10932 2009-06-10  Anthony Green  <green@moxielogic.com>
10933
10934         * config/moxie/crti.asm: New file.
10935         * config/moxie/crtn.asm: New file.
10936         * config/moxie/moxie.c: New file.
10937         * config/moxie/moxie.h: New file.
10938         * config/moxie/sfp-machine.h: New file.
10939         * config/moxie/moxie-protos.h: New file.
10940         * config/moxie/t-moxie: Created.
10941         * config/moxie/t-moxie-softfp: Created.
10942         * config/moxie/moxie.md: Created.
10943         * config/moxie/constraints.md: Created.
10944         * config.gcc: Add moxie support.
10945         * doc/md.texi (Machine Constraints): Add moxie constraints.
10946         * doc/contrib.texi (Contributors): Mention moxie port.
10947         * doc/install.texi (Specific): Mention the moxie port.
10948
10949 2009-06-09  Ian Lance Taylor  <iant@google.com>
10950
10951         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
10952         compiling with C++.
10953         * optabs.c (optab_table): Only use designated initializers if
10954         HAVE_DESIGNATED_INITIALIZERS is defined.
10955         (convert_optab_table): Likewise.
10956         (init_optabs): Always call init_insn_codes if
10957         HAVE_DESIGNATED_INITIALIZERS is not defined.
10958
10959 2009-06-09  Ian Lance Taylor  <iant@google.com>
10960
10961         * targhooks.c (default_builtin_vectorized_function): Change fn
10962         parameter to unsigned int.
10963         (default_builtin_vectorized_conversion): Change code parameter to
10964         unsigned int.
10965         (default_builtin_reciprocal): Change fn parameter to unsigned int.
10966         * targhooks.h: Update declarations.
10967         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
10968         parameter to unsigned int.
10969
10970         * c-typeck.c (comptypes_check_enum_int): New static function.
10971         (comptypes_internal): Add enum_and_int_p parameter.  Change all
10972         callers.
10973         (comp_target_types): Add location parameter.  Change all callers.
10974         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
10975         Change all callers.
10976         (function_types_compatible_p, type_lists_compatible_p): Likewise.
10977         (build_conditional_expr): Add colon_loc parameter.  Change all
10978         callers.
10979         (convert_for_assignment): Add location parameter.  Change all callers.
10980         * c-parser.c (c_parser_conditional_expression): Pass location of
10981         colon to build_conditional_expr.
10982         * c-tree.h (build_conditional_expr): Update declaration.
10983
10984 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
10985
10986         * graphite.c: Revert previous patch.
10987
10988 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
10989
10990         PR bootstrap/40103
10991         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
10992
10993 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10994
10995         * tree-ssa-loop-prefetch.c
10996         (loop_prefetch_arrays): Fixed a portability problem in printf format
10997         string.
10998
10999 2009-06-09  Martin Jambor  <mjambor@suse.cz>
11000
11001         PR tree-optimization/40351
11002         * tree-sra.c (propagate_subacesses_accross_link): Check that a
11003         refrence to a potential artifical subaccess can be constructed.
11004
11005 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11006
11007         * config/sh/sh-protos.h (sh_optimization_options): Declare.
11008         (sh_override_options): Likewise.
11009         * config/sh/sh.c: Include params.h.
11010         (sh_optimization_options): New.
11011         (sh_override_options): Likewise.
11012         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
11013         (OVERRIDE_OPTIONS): Use sh_override_options.
11014
11015 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11016
11017         * dwarf2out.c (emit_cfa_remember): New variable.
11018         (add_fde_cfi): If emit_cfa_remember, recurse to add
11019         DW_CFA_remember_state first.
11020         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
11021         instead just set emit_cfa_remember.
11022
11023 2009-06-08  Jan Hubicka  <jh@suse.cz>
11024
11025         PR debug/40126
11026         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
11027
11028 2009-06-08  Jan Hubicka  <jh@suse.cz>
11029
11030         PR middle-end/39834
11031         * cgraphunit.c (save_inline_function_body): Do not copy transform
11032         hooks for saved inline bodies.
11033         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
11034         for given function.
11035
11036 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
11037
11038         * jump.c (returnjump_p): Handle delayed branches.  Add missing
11039         function comment.
11040
11041 2009-06-08  Jan Hubicka  <jh@suse.cz>
11042
11043         PR middle-end/40102
11044         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
11045         original node might've been modified.
11046         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
11047
11048 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11049
11050         * tree-object-size.c (addr_object_size): Add OSI argument.
11051         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
11052         (compute_builtin_object_size, expr_object_size): Adjust callers.
11053         (plus_stmt_object_size): Call addr_object_size instead of
11054         compute_builtin_object_size.
11055
11056 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11057             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11058
11059         * tree-ssa-loop-prefetch.c
11060         (gather_memory_references): Introduced a counter for the number of
11061         memory references.
11062         (anything_to_prefetch_p): Introduced a counter for the number of
11063         prefetches.
11064         (is_loop_prefetching_profitable): New function with a cost model
11065         for prefetching.
11066         (loop_prefetch_arrays): Use the new cost model to determine if
11067         prefetching is profitable.
11068         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
11069         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11070         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
11071         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11072         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
11073         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11074
11075 2009-06-08  Michael Matz  <matz@suse.de>
11076
11077         PR debug/40012
11078         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
11079         partitions use the same.
11080         (expand_one_var): Deal with DECL_RTL sometimes begin set also
11081         for basevars of SSA_NAMEs.
11082         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
11083         to not expand them twice.
11084         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
11085         multiple places.
11086
11087 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
11088
11089         * common.opt (fcompare-debug=, fcompare-debug-second): New.
11090         (fdump-final-insns=, gtoggle): New.
11091         * doc/invoke.texi: Document them.
11092         * final.c (rest_of_clean_state): Dump final insn stream.
11093         * gcc.c (invoke_as): Hook in -fcompare-debug.
11094         (static_spec_functions): Add compare-debug-dump-opt,
11095         compare-debug-self-opt and compare-debug-auxbase-opt.
11096         (compare_debug, compare_debug_second, compare_debug_opt): New.
11097         (switches_debug_check, n_switches_debug_check): New.
11098         (debug_auxbase_opt, debug_check_temp_file): New.
11099         (process_command): Handle -fno-compare-debug, -fcompare-debug and
11100         -fcompare-debug=*.
11101         (do_self_spec): Handle arguments after switches.
11102         (do_spec_1): Add .gk extension to temp file basenames for compare.
11103         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
11104         (cc1_options): Use it instead of normal auxbase computation for
11105         the second compare-debug compilation.
11106         (compare_files): New.
11107         (main): Set up and implement compare debug mode.
11108         (compare_debug_dump_opt_spec_function): New.
11109         (compare_debug_self_opt_spec_function): New.
11110         (compare_debug_auxbase_opt_spec_function): New.
11111         * toplev.c (process_options): Handle flag_gtoggle,
11112         flag_dump_final_insns.
11113         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
11114         during -fcompare-debug-second compilation.
11115
11116 2009-06-07  Ian Lance Taylor  <iant@google.com>
11117
11118         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
11119         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
11120
11121         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
11122         with no default node.  Change warning with %H to warning_at.
11123         Don't clear warn_switch around case checking.
11124         * doc/invoke.texi (Warning Options): Clarify distinction between
11125         -Wswitch and -Wswitch-enum.
11126
11127 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11128
11129         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
11130
11131 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11132
11133         * gbl-ctors.h: Add header guard.
11134
11135 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11136
11137         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
11138         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
11139         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
11140         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
11141         prototypes for removed functions.
11142         (expressions_equal_p): Move to ...
11143         * tree-ssa-sccvn.h: ... here and ...
11144         * matrix-reorg.c: ... adjust includes.
11145
11146 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11147
11148         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
11149
11150 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11151
11152         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
11153         (finish_function): Remove erroneous whitespace.
11154
11155 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11156
11157         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
11158         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
11159
11160 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11161
11162         * errors.c (internal_error): Commentary typo fix.
11163         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
11164         * tree-ssa-pre.c: Ditto.
11165
11166 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11167
11168         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
11169         them is supposed to hold actual statements.
11170
11171 2009-06-06  Ian Lance Taylor  <iant@google.com>
11172
11173         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
11174         empty statements can now have attributes.
11175
11176 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
11177
11178         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
11179         * config/mips/mips.md: Ditto.
11180
11181 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11182
11183         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
11184         _RELOCATABLE.
11185         (__eabi_uconvert): Likewise.
11186
11187 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11188
11189         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
11190         CFI_* definitions with IN_GCC.
11191
11192 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
11193
11194         * xcoffout.h (xcoffout_source_line): Update prototype.
11195
11196 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11197
11198         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
11199         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
11200
11201 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11202
11203         PR middle-end/40340
11204         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
11205         inlined_function_outer_scope_p blocks for artificial inlines
11206         even at -g0/-g1.
11207         * tree.c (tree_nonartificial_location): Rewrite using
11208         block_nonartificial_location.
11209
11210 2009-06-05  Revital Eres  <eres@il.ibm.com>
11211             Leehod Baruch  <leehod@il.ibm.com>
11212
11213         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
11214         (expand_expr_real_1): Remove comment.
11215         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
11216         Vectorize misaligned access when the target supports it.
11217         (vect_supportable_dr_alignment): Check for unaligned access support.
11218         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
11219         and remove asset.
11220
11221 2009-06-05  Julian Brown  <julian@codesourcery.com>
11222
11223         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
11224         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
11225
11226 2009-06-05  Richard Guenther  <rguenther@suse.de>
11227
11228         PR bootstrap/40350
11229         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
11230         as possibly unused.
11231
11232 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11233
11234         * config/s390/s390.c (global_not_special_regno_p): New static inline.
11235         (save_gprs): Don't tell unwinder when a global register is saved.
11236         (s390_emit_epilogue): Emit needed epilogue unwind info.
11237
11238 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11239
11240         * dwarf2out.c (deferred_asm_name): New.
11241         (add_name_and_src_coords_attributes): Defer creation of
11242         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
11243         computed yet.
11244         (move_linkage_attr): New.
11245         (dwarf2out_finish): Revisit deferrals and emit attributes at the
11246         right place.
11247
11248 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11249
11250         * tree-nested.c (finalize_nesting_tree_1): Declare the
11251         frame_decl in the binding tree.
11252
11253 2009-06-04  Cary Coutant  <ccoutant@google.com>
11254
11255         * basic-block.h (struct basic_block_def): Add discriminator field.
11256         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
11257         callers.
11258         * debug.c (do_nothing_debug_hooks): Add additional entry.
11259         (debug_nothing_int_charstar_int): New function.
11260         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
11261         (debug_nothing_int_charstar_int): New declaration.
11262         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
11263         discriminator value in .loc directive.
11264         * final.c (last_discriminator): New variable.
11265         (discriminator): New variable.
11266         (final_start_function): Initialize above variables, pass current
11267         discriminator to debug hook.
11268         (notice_source_line): Check for discriminator change.
11269         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
11270         * sdbout.c (sdbout_source_line): New parameter.
11271         * tree-cfg.c (struct locus_discrim_map): New structure type.
11272         (discriminator_per_locus): New hash table.
11273         (build_gimple_cfg): Allocate and free discriminator hash table.
11274         (make_edges): Call assign_discriminator.
11275         (locus_map_hash): New function.
11276         (locus_map_eq): New function.
11277         (next_discriminator_for_locus): New function.
11278         (same_line_p): New function.
11279         (assign_discriminator): New function.
11280         (make_cond_expr_edges): Call assign_discriminator.
11281         (make_gimple_switch_edges): Likewise.
11282         (first_non_label_stmt): New function.
11283         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
11284         all callers.
11285         * xcoffout.c (xcoffout_source_line): Add new parameter.
11286
11287         * configure.ac (gcc_cv_as_discriminator): New configury check for
11288         gas support for discriminator.
11289         * configure: Regenerate.
11290         * config.in: Regenerate.
11291
11292 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11293
11294         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
11295         val after checking for integers.
11296
11297 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
11298
11299         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
11300         X64_REGPARM_MAX.
11301         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
11302         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
11303         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
11304         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
11305         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
11306         X64_SSE_REGPARM_MAX.
11307         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
11308         X64_SSE_REGPARM_MAX.
11309
11310 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11311
11312         * gcc.c (report_times_to_file): New.
11313         (execute): Implement it.
11314         (process_command): Support -time=.
11315         * doc/invoke.texi: Document it.
11316
11317 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11318
11319         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
11320         that have value exprs.
11321
11322 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11323
11324         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
11325         declarations for constants until...
11326         (dw2_output_indirect_constant_1): ... this point.
11327
11328 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
11329
11330         PR target/10242
11331         * arm.md (arm_addsi3): Don't try to split an add with an
11332         eliminable register until after reload has completed.
11333
11334 2009-06-03  Ian Lance Taylor  <iant@google.com>
11335
11336         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
11337         * genattrtab.c (write_length_unit_log): Likewise.
11338         * genchecksum.c (dosum): Likewise.
11339         * gengtype.c (write_rtx_next): Likewise.
11340         (finish_root_table, write_roots): Likewise.
11341         * gimple.c (gimple_ops_offset_): Likewise.
11342         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
11343         * config/arc/arc.c (arc_attribute_table): Likewise.
11344         * config/arm/arm.c (arm_attribute_table): Likewise.
11345         * config/avr/avr.c (avr_attribute_table): Likewise.
11346         * config/crx/crx.c (crx_attribute_table): Likewise.
11347         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
11348         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
11349         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
11350         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
11351         * config/sh/sh.c (sh_attribute_table): Likewise.
11352         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
11353         * config/spu/spu.c (spu_attribute_table): Likewise.
11354         * config/v850/v850.c (v850_attribute_table): Likewise.
11355
11356         * config/alpha/alpha.c (vms_attribute_table): Make static.
11357         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
11358         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
11359         * config/mips/mips.c (mips_attribute_table): Likewise.
11360
11361         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
11362         $(SYSTEM_H).
11363         (cc1-checksum.o): Likewise.
11364
11365 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
11366
11367         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
11368
11369 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
11370
11371         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
11372         insn if it is changing sp.  Use gen_add3_insn instead of
11373         conditionally gen_addsi3 and gen_adddi3.
11374         (offset_below_red_zone_p): New static inline function.
11375         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
11376         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
11377         * config/rs6000/ppc-asm.h: Include auto-host.h.
11378         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
11379         CFI_RESTORE): Define.
11380         * config/rs6000/crtresxgpr.asm: Add unwind info.
11381         * config/rs6000/crtresxfpr.asm: Likewise.
11382         * config/rs6000/crtresgpr.asm: Likewise.
11383         * config/rs6000/crtresfpr.asm: Likewise.
11384         * config/rs6000/crtsavgpr.asm: Likewise.
11385         * config/rs6000/crtsavfpr.asm: Likewise.
11386
11387         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
11388         argument of DWARF2_FRAME_REG_OUT macros.
11389
11390 2009-06-03  Julian Brown  <julian@codesourcery.com>
11391
11392         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
11393         words or less (including TImode) in core registers.
11394
11395 2009-06-03  Richard Guenther  <rguenther@suse.de>
11396
11397         PR middle-end/40328
11398         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
11399
11400 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
11401
11402         * statistics.c (statistics_counter_event): Do not record event
11403         in pass dump if its number == -1.
11404         (curr_statistics_hash): Add assert that we never get passes
11405         with static number == -1.
11406
11407 2009-06-03  Richard Guenther  <rguenther@suse.de>
11408             Andrey Belevantsev  <abel@ispras.ru>
11409
11410         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
11411         non-BLKmode arrays addressable.
11412
11413 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
11414
11415         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
11416         * config/m68k/m68k.h: ... here.
11417         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
11418         m68k and fido.
11419
11420 2009-06-03  Martin Jambor  <mjambor@suse.cz>
11421
11422         PR tree-optimization/40323
11423         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
11424         assignment.
11425
11426 2009-06-03  Richard Guenther  <rguenther@suse.de>
11427
11428         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
11429         consistently.
11430
11431 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
11432
11433         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
11434         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
11435         JUMP_TABLE_DATA_P where applicable.
11436         * config/sh/sh.c: Ditto.
11437         * config/sh/sh.h: Ditto.
11438         * config/sh/sh.md: Ditto.
11439         * config/sh/symbian.c: Ditto.
11440
11441 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
11442
11443         * config/i386/driver-i386.c (describe_cache): Optimize
11444         concatenation of strings.  Use snprintf instead of sprintf.
11445         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
11446         target when not compiling with GCC.
11447
11448 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
11449
11450         * config/sh/sh.c: Revert last change.
11451         (sh_expand_epilogue): Emit a blockage insn before the frame
11452         pointer adjustment unconditionally.
11453
11454 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11455
11456         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
11457         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
11458         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
11459         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
11460         to COLLECT_GCC_OPTIONS.
11461
11462 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11463
11464         * collect2.c (target_system_root): New variable.
11465         (main): Handle --sysroot=.
11466         (ignore_library): Strip the sysroot from the library path.
11467
11468 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11469
11470         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
11471         (collect2.o): Depend on collect2-aix.h.
11472         (collect2-aix.o): New rule.
11473         * collect2-aix.h: New file.
11474         * collect2-aix.c: Likewise.
11475         * collect2.c: Include collect2-aix.h.  Don't undefine
11476         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
11477         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
11478         Use TARGET_AIX_VERSION instead of _AIX51.
11479         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
11480         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
11481         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
11482         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
11483         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
11484
11485 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11486
11487         * collect2.c (ignore_library): Avoid premature post-increment
11488         and null deference.
11489
11490 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11491
11492         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
11493         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
11494         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
11495         CROSS_DIRECTORY_STRUCTURE too.
11496         (LINK_LIBG_SPEC): Likewise.
11497         (LIB_SPEC): Add %R to sysroot paths.
11498         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
11499         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
11500         * config/rs6000/aix51.h: As for aix43.h.
11501         * config/rs6000/aix52.h: Likewise.
11502         * config/rs6000/aix53.h: Likewise.
11503         * config/rs6000/aix61.h: Likewise.
11504         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
11505         to the beginning of sysroot paths.
11506
11507 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11508
11509         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
11510         INSN_LISTs that are out of the REG_NOTE range.
11511
11512 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11513
11514         * loop-unroll.c (struct iv_to_split): Add pointer to next.
11515         (struct var_to_expand): Likewise.
11516         (struct opt_info): Add head and tail for linked lists of the above.
11517         (analyze_insn_to_expand_var): Initialize next.
11518         (analyze_iv_to_split_insn): Likewise.
11519         (analyze_insns_in_loop): Create linked lists.
11520         (allocate_basic_variable): Simplify for use without hash table.
11521         (insert_var_expansion_initialization): Likewise, make it type-safer.
11522         (combine_var_copies_in_loop_exit): Likewise.
11523         (apply_opt_in_copies): Walk lists rather than hash tables.
11524         (release_var_copies): Simplified and inlined by hand into...
11525         (free_opt_info): ... this function.
11526
11527 2009-06-02  Richard Guenther  <rguenther@suse.de>
11528
11529         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
11530         for field decls.
11531
11532 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11533
11534         * cfgexpand.c (gimple_expand_cfg): Discard the source location
11535         only for builtins that are not overridden.
11536
11537 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11538
11539         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
11540         label string.
11541
11542 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11543
11544         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
11545
11546 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11547
11548         * combine.c (move_deaths): Compare LUIDs within the same BB only.
11549
11550 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11551
11552         * common.opt (fdump-unnumbered-links): New.
11553         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
11554         * print-rtl.c (flag_dump_unnumbered_links): New.
11555         (print_rtx): Test it.
11556
11557 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
11558
11559         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
11560         push/pop multiple to 8-byte alignment.
11561
11562 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
11563
11564         * config/i386/i386.c (queued_cfa_restores): New static variable.
11565         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
11566         functions.
11567         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
11568         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
11569         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
11570         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
11571         note unconditionally.
11572         (ix86_emit_restore_regs_using_mov): Likewise.
11573         (ix86_emit_restore_sse_regs_using_mov): Likewise.
11574         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
11575         it through to ix86_emit_restore_reg_using_pop.
11576         (ix86_emit_leave): Add RED_OFFSET argument.  Call
11577         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
11578         instead of adding REG_CFA_OFFSET note unconditionally.
11579         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
11580         the above functions.  Call ix86_add_queued_cfa_restore_notes when
11581         needed.
11582
11583         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
11584         force output of the label even for dwarf2out_do_cfi_asm.
11585         (add_fde_cfi): If -g2 and above and cfi might change CFA,
11586         force creation of CFI label and chain DW_CFA_set_loc jumping to it
11587         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
11588         caller.
11589         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
11590         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
11591         dwarf2out_cfi_label callers.
11592         * tree.h (dwarf2out_cfi_label): Adjust prototype.
11593         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
11594         Adjust dwarf2out_cfi_label callers.
11595         * config/vax/vax.c (vax_output_function_prologue): Likewise.
11596
11597         * config/i386/i386.h (struct machine_cfa_state,
11598         struct machine_function): Guard with ifndef USED_FOR_TARGET
11599         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
11600
11601         PR other/40024
11602         * emutls.c (__emutls_get_address): Change arr->size to mean number
11603         of allocated arr->data entries instead of # of slots + 1.
11604
11605         PR middle-end/40316
11606         * recog.c (peep2_reinit_state): New function.
11607         (peephole2_init_state): Use it at the end of a basic block and also
11608         when seeing a RTX_FRAME_RELATED_P insn.
11609
11610 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
11611
11612         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
11613         fixuns_truncrfdi2): New.
11614         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
11615         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
11616         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
11617         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
11618         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
11619         *recip_approx): Remove.
11620         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
11621         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
11622         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
11623         move to div.md.
11624         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
11625         setf_exp_rf): New.
11626
11627 2009-06-01  Ian Lance Taylor  <iant@google.com>
11628
11629         * attribs.c (register_attribute): Use CONST_CAST.
11630         * collect2.c (main): Use CONST_CAST2.
11631         (scan_prog_file): Likewise.
11632         * gcc.c (process_command, main): Likewise.
11633         * toplev.c (toplev_main): Likewise.
11634
11635         * c-typeck.c (handle_warn_cast_qual): New static function,
11636         partially broken out of build_c_cast.
11637         (build_c_cast): Call handle_warn_cast_qual.
11638         * doc/invoke.texi (Warning Options): Document new effect of
11639         -Wcast-qual.
11640
11641 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
11642
11643         * diagnostic.c (diagnostic_build_prefix): Always print columns.
11644         (diagnostic_report_current_module): Print columns.
11645         * common.opt (flag_show_column): Enable by default.
11646
11647 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
11648
11649         * alias.c (find_base_term): Check for NULL term before returning.
11650
11651 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11652
11653         Revert due to PR40320:
11654         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11655         * calls.c (emit_library_call_value_1): Don't force_operand for move
11656         and push insns.
11657
11658 2009-06-01  Olivier Hainque  <hainque@adacore.com>
11659             Eric Botcazou  <ebotcazou@adacore.com>
11660
11661         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
11662         to be processed as a bitfield for constructor output purposes.
11663         * output.h (initializer_constant_valid_for_bitfield_p): Declare
11664         new function.
11665         * varasm.c (oc_local_state): New type, output_constructor
11666         local state to support communication with helpers.
11667         (oc_outer_state): New type, output_constructor outer state of
11668         relevance in recursive calls.
11669         (output_constructor_array_range): New output_constructor helper,
11670         extracted code for an array range element.
11671         (output_constructor_regular_field): New output_constructor helper,
11672         extracted code for an element that is not a bitfield.
11673         (output_constructor_bitfield): New output_constructor helper,
11674         extracted code for a bitfield element.  Accept an OUTER state
11675         argument for recursive processing.  Recurse on record or array
11676         CONSTRUCTOR values, possibly past noop conversions.
11677         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
11678         VALUE is a valid constant-valued expression for use in a static
11679         bit-field initializer.
11680         (output_constructor): Rework to use helpers.  Accept and honor an
11681         OUTER state argument for recursive calls.  Return total size.  Be
11682         prepared for nested constructors initializing bitfields.
11683         (output_constant): Feed OUTER in calls to output_constructor.
11684
11685 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11686
11687         * calls.c (emit_library_call_value_1): Don't force_operand for move
11688         and push insns.
11689
11690 2009-06-01  Nick Clifton  <nickc@redhat.com>
11691
11692         * doc/invoke.texi (IA-64 Options): Fix typo.
11693
11694 2009-06-01  Ira Rosen  <irar@il.ibm.com>
11695
11696         PR tree-optimization/39129
11697         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
11698         printed message.
11699         (vect_do_peeling_for_loop_bound): Use
11700         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
11701         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
11702         (vect_loop_versioning): Likewise.
11703         (vect_create_cond_for_alias_checks): Fix indentation.
11704         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
11705         macros.
11706         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
11707         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
11708         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
11709         "control flow in loop".
11710         (vect_estimate_min_profitable_iters): Use
11711         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
11712         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
11713         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
11714         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
11715         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
11716         statement belongs to a group of strided accesses with the exact code
11717         check.
11718         (vectorizable_load): Likewise.
11719         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
11720         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
11721
11722 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
11723
11724         * config/freebsd-stdint.h: New file.
11725         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
11726         Add freebsd-stdint.h to tm_file.
11727
11728 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
11729
11730         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
11731         (thumb2_extendhidi2): Likewise.
11732
11733 2009-05-31  Ian Lance Taylor  <iant@google.com>
11734
11735         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
11736
11737 2009-05-31  Ian Lance Taylor  <iant@google.com>
11738
11739         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
11740         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
11741         (ipa-reference.o): Depend upon gt-ipa-reference.h.
11742
11743 2009-05-31  Jason Merrill  <jason@redhat.com>
11744
11745         * tree-pretty-print.c (print_call_name): Take the callee, not the
11746         call itself.  Make non-static.  Use dump_function_name for functions.
11747         (dump_generic_node): Adjust.
11748         * diagnostic.h: Declare print_call_name.
11749         * gimple-pretty-print.c (dump_gimple_call): Use it.
11750
11751 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11752
11753         * config/sh/sh.md (ashldi3_std): New define_expand.
11754         (ashldi3): Use it.
11755
11756 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11757
11758         PR target/40313
11759         * config/sh/sh.c: Include debug.h.
11760         (sh_expand_epilogue): Emit a blockage insn before the frame
11761         pointer adjustment also when dwarf2out_do_frame returns true.
11762
11763 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
11764
11765         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
11766         (thumb2_extendqidi2): New pattern.
11767
11768 2009-05-31  Ira Rosen  <irar@il.ibm.com>
11769
11770         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
11771         mark phis for renaming.
11772         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
11773         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
11774         Call mark_sym_for_renaming.
11775         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
11776         * tree-vect-loop.c (vect_transform_loop): Remove
11777         vect_memsyms_to_rename initialization and a call to
11778         mark_set_for_renaming.
11779
11780 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
11781
11782         PR middle-end/40304
11783         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
11784         frame related even if !set_cfa && style < 0.
11785
11786 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
11787
11788         * config/i386/mingw-tls.c: New file.
11789         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
11790         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
11791         defining _WIN32 but not __CYGWIN__.
11792
11793 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11794
11795         * configure.ac: Add MPC support.
11796
11797         * config.in, configure: Regenerate.
11798
11799 2009-05-29  Richard Henderson  <rth@redhat.com>
11800
11801         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
11802         NOTE_INSN_BASIC_BLOCK.
11803         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
11804         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
11805         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
11806         to be deleted.
11807         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
11808         add in_use field.
11809         (add_cfi): Disable check redefining cfa away from drap.
11810         (lookup_cfa_1): Add remember argument; handle remember/restore.
11811         (lookup_cfa): Pass remember argument.
11812         (cfa_remember): New.
11813         (compute_barrier_args_size_1): Remove sibcall check.
11814         (dwarf2out_frame_debug_def_cfa): New.
11815         (dwarf2out_frame_debug_adjust_cfa): New.
11816         (dwarf2out_frame_debug_cfa_offset): New.
11817         (dwarf2out_frame_debug_cfa_register): New.
11818         (dwarf2out_frame_debug_cfa_restore): New.
11819         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
11820         (dwarf2out_begin_epilogue): New.
11821         (dwarf2out_frame_debug_restore_state): New.
11822         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
11823         DW_CFA_restore_state.
11824         (output_cfi_directive): Likewise.
11825         (convert_cfa_to_fb_loc_list): Likewise.
11826         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
11827         * dwarf2out.h: Update.
11828         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
11829         (copy_insn_1): Early out for null.
11830         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
11831         and dwarf2out_frame_debug_restore_state.
11832         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
11833         (prologue_insn_hash, epilogue_insn_hash): New.
11834         (free_after_compilation): Adjust freeing accordingly.
11835         (record_insns): Create hash table if needed; push insns into
11836         hash instead of array.
11837         (maybe_copy_epilogue_insn): New.
11838         (contains): Search hash table instead of array.
11839         (sibcall_epilogue_contains): Remove.
11840         (thread_prologue_and_epilogue_insns): Split eh_return insns
11841         and mark them as epilogues.
11842         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
11843         scanning in terms of basic blocks.
11844         * insn-notes.def (CFA_RESTORE_STATE): New.
11845         * jump.c (returnjump_p_1): Accept EH_RETURN.
11846         (eh_returnjump_p_1, eh_returnjump_p): New.
11847         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
11848         CFA_REGISTER, CFA_RESTORE): New.
11849         * rtl.def (EH_RETURN): New.
11850         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
11851
11852         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
11853         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
11854
11855         * config/i386/i386.c (gen_push): Update cfa state.
11856         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
11857         add a CFA_ADJUST_CFA note.
11858         (ix86_dwarf_handle_frame_unspec): Remove.
11859         (ix86_expand_prologue): Update cfa state.
11860         (ix86_emit_restore_reg_using_pop): New.
11861         (ix86_emit_restore_regs_using_pop): New.
11862         (ix86_emit_leave): New.
11863         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
11864         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
11865         * config/i386/i386.h (struct machine_cfa_state): New.
11866         (ix86_cfa_state): New.
11867         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
11868         (eh_return_internal): Merge from eh_return_<mode>,
11869         use eh_return rtx, split w/ epilogue.
11870
11871 2009-05-29  Ian Lance Taylor  <iant@google.com>
11872
11873         * builtins.c (validate_gimple_arglist): Don't use va_arg with
11874         enum type.
11875         * calls.c (emit_library_call_value_1): Likewise.
11876
11877         * c-typeck.c (c_build_va_arg): New function.
11878         * c-tree.h (c_build_va_arg): Declare.
11879         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
11880         instead of build_va_arg.
11881
11882 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
11883
11884         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
11885         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
11886         (ptr_difference_cost): Use affine combinations to compute it.
11887         (difference_cost): Likewise.
11888         (get_computation_cost_at): Compute more accurate cost for addresses
11889         if the ratio is a multiplier allowed in addresses.
11890         For non-addresses, consider that an additional offset or symbol is
11891         added only once.
11892
11893 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
11894
11895         * config/i386/i386.c (ix86_decompose_address): Avoid useless
11896         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
11897
11898         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
11899         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
11900         (prefix_rex): For UNIT_MMX don't imply the prefix by default
11901         if MODE_DI.
11902         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
11903         to 1 for TYPE_SSE{IADD1,CVT1}.
11904         (prefix_vex_imm8): Removed.
11905         (length_vex): Only pass 1 as second argument to
11906         ix86_attr_length_vex_default if prefix_extra is 0.
11907         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
11908         (length): For prefix vex computation use length_immediate
11909         attribute instead of prefix_vex_imm8.
11910         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
11911         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
11912         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
11913         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
11914         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
11915         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
11916         a space in between the operands.
11917         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
11918         if one operand is 0xff and the other one si, di, bp or sp.
11919         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
11920         other one si, di, bp or sp.
11921         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
11922         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
11923         type and mode attributes.
11924         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
11925         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
11926         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
11927         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
11928         prefix_data16 attribute iff MODE_DF.
11929         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
11930         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
11931         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
11932         constm128_operand in length_immediate computation.
11933         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
11934         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
11935         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
11936         length_immediate attribute to 1.
11937         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
11938         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
11939         for certain alternatives.
11940         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
11941         prefix_data16 attribute if MODE_V1DF.
11942         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
11943         length_immediate to 1.
11944         (set_got_rex64, set_rip_rex64): Remove length attribute, set
11945         length_address to 4, set mode attribute to MODE_DI.
11946         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
11947         (fxam<mode>2_i387): Set length attribute to 4.
11948         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
11949         *prefetch_3dnow_rex): Override length_address attribute.
11950         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
11951         attributes.
11952         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
11953         (constm128_operand): Removed.
11954         * config/i386/i386.c (memory_address_length): For
11955         disp && !index && !base in 64-bit mode account for SIB byte if
11956         print_operand_address can't optimize disp32 into disp32(%rip)
11957         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
11958         for fs: or gs: segment.
11959         (ix86_attr_length_immediate_default): When checking if shortform
11960         is possible, truncate immediate to the length of the non-shortened
11961         immediate.
11962         (ix86_attr_length_address_default): Ignore MEM_P operands
11963         with X constraint.
11964         (ix86_attr_length_vex_default): Only check for DImode on
11965         GENERAL_REG_P operands.
11966         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
11967         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
11968         (sse_cvttps2pi): Clear prefix_rep attribute.
11969         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
11970         attribute.
11971         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
11972         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
11973         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
11974         iff operand 2 is const_int_operand.
11975         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
11976         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
11977         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
11978         instead of vex.
11979         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
11980         prefix_data16.
11981         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
11982         prefix_data16 attribute for movlpd and movhpd instructions.
11983         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
11984         length_immediate for shufpd instruction.
11985         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
11986         (avx_cmpp<avxmodesuffixf2c><mode>3,
11987         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
11988         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
11989         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
11990         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
11991         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
11992         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
11993         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
11994         prefix_data16 attribute for the first alternative to 1.
11995         (*avx_loadlps): Override length_immediate for the first alternative.
11996         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
11997         attributes for second alternative.
11998         (*vec_concatv2sf_sse4_1): Override length_immediate and
11999         prefix_data16 attributes for second alternative.
12000         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
12001         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
12002         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
12003         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
12004         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
12005         prefix_data16 and length_immediate to 1.
12006         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
12007         to 1.
12008         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
12009         prefix_extra attribute for variants that don't have 0f prefix alone.
12010         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
12011         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
12012         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
12013         *sse4_1_pextrd): Set length_immediate to 1.
12014         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
12015         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
12016         to 1.
12017         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
12018         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
12019         length_immediate to 1 for second alternative.
12020         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
12021         prefix_extra and length_immediate attributes for the first
12022         alternative.
12023         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
12024         first alternative.
12025         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
12026         to 1 for the first and third alternative.
12027         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
12028         alternative.
12029         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
12030         attribute.
12031         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
12032         attribute to 0.
12033         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
12034         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
12035         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
12036         *avx_psign<mode>3): Set prefix_extra attribute to 1.
12037         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
12038         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
12039         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
12040         ssse3_psign<mode>3): Override prefix_rex attribute.
12041         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
12042         (ssse3_palignrti): Override length_immediate to 1.
12043         (ssse3_palignrdi): Override length_immediate to 1, override
12044         prefix_rex attribute.
12045         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
12046         (sse4a_extrqi): Override length_immediate to 2.
12047         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
12048         (sse4a_insertq): Override prefix_data16 to 0.
12049         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
12050         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
12051         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
12052         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
12053         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
12054         and length_immediate to 1.
12055         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
12056         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
12057         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
12058         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
12059         and length_immediate to 1.
12060         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
12061         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
12062         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
12063         avx_ptest256): Override prefix_extra to 1.
12064         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
12065         Override prefix_data16 and length_immediate to 1.
12066         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
12067         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
12068         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
12069         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
12070         prefix_data16 to 0 and prefix_extra to 2.
12071         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
12072         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
12073         attribute.
12074         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
12075         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
12076         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
12077         and prefix_extra to 2.
12078         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
12079         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
12080         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
12081         avx_vpermilvar<mode>3,
12082         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
12083         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
12084         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
12085         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
12086         Override prefix_extra to 1.
12087         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
12088         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
12089         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
12090         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
12091         prefix_extra and length_immediate to 1.
12092         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
12093         modrm to 0.
12094         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
12095         to 1 for the first alternative.
12096         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
12097         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
12098         cases.
12099         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
12100         *movv2sf_internal_avx, *movv2sf_internal): Override
12101         prefix_rep attribute for certain alternatives.
12102         (*mov<mode>_internal): Override prefix_rep or prefix_data16
12103         attributes for certain alternatives.
12104         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
12105         attributes for certain alternatives.
12106         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
12107         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
12108         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
12109         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
12110         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
12111         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
12112         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
12113         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
12114         length_immediate to 1 if operand 2 is const_int_operand.
12115         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
12116         *vec_extractv2si_1): Set length_immediate attribute to 1.
12117         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
12118         using old 3DNOW insn rather than SSE/3DNOW_A.
12119         (mmx_emms, mmx_femms): Clear modrm attribute.
12120
12121 2009-05-29  Martin Jambor  <mjambor@suse.cz>
12122
12123         * tree-sra.c:  New implementation of SRA.
12124
12125         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
12126         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
12127         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
12128         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
12129         (SRA_MAX_STRUCTURE_COUNT): Removed.
12130         (SRA_FIELD_STRUCTURE_RATIO): Removed.
12131         * doc/invoke.texi (sra-max-structure-size): Removed.
12132         (sra-field-structure-ratio): Removed.
12133
12134 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12135
12136         PR middle-end/40291
12137         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
12138         before expansion.
12139
12140 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
12141
12142         PR rtl-optimization/40101
12143         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
12144         seqno.  Adjust comment.
12145         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
12146         inserting bookkeeping before a jump, the jump is not scheduled.
12147         When no positive seqno found, provide a value.  Add comment.
12148
12149 2009-05-29  Richard Guenther  <rguenther@suse.de>
12150
12151         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
12152         short-cutting on the first component.
12153
12154 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12155
12156         PR middle-end/39958
12157         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
12158         for trees other than decls/types.
12159
12160 2009-05-29  Richard Guenther  <rguenther@suse.de>
12161
12162         * tree-ssa-operands.c (get_expr_operands): Do not handle
12163         INDIRECT_REFs in the handled-component case.  Remove
12164         unused get_ref_base_and_extent case.
12165         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
12166         tree_low_cst and host_integerp where possible.
12167         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
12168         codes for equivalence.
12169         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
12170
12171 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
12172
12173         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
12174         to tmake_file for i[34567]86-*-cygwin*.
12175
12176 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12177
12178         PR target/40017
12179         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
12180         (altivec_categorize_keyword, init_vector_keywords,
12181         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
12182         similar to bool.
12183
12184 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
12185
12186         * tree.c (handle_dll_attribute): Check if node is
12187         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
12188
12189 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
12190
12191         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
12192         component.
12193         (thumb2_zero_extendqidi2): Likewise.
12194
12195 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
12196
12197         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
12198         instead of gen_movrt.
12199         * config/sh/sh.md (movrt): Remove.
12200
12201 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
12202
12203         * doc/invoke.texi (IA-64 Options):
12204         Add -msdata, -mfused-madd, -mno-inline-float-divide,
12205         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
12206         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
12207         -msched-prefer-non-control-spec-insns,
12208         -msched-stop-bits-after-every-cycle,
12209         -msched-count-spec-in-critical-path,
12210         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
12211         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
12212         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
12213         and -msched-spec-verbose.
12214
12215 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
12216
12217         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
12218         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
12219         error if used.
12220         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
12221
12222 2009-05-28  Richard Guenther  <rguenther@suse.de>
12223
12224         * tree-ssa-alias.c (ao_ref_init): New function.
12225         (ao_ref_base): Likewise.
12226         (ao_ref_base_alias_set): Likewise.
12227         (ao_ref_alias_set): Likewise.
12228         (refs_may_alias_p_1): Change signature.
12229         (refs_may_alias_p): Adjust.
12230         (refs_anti_dependent_p): Likewise.
12231         (refs_output_dependent_p): Likewise.
12232         (call_may_clobber_ref_p_1): Change signature.
12233         (call_may_clobber_ref_p): Adjust.
12234         (stmt_may_clobber_ref_p_1): New function split out from ...
12235         (stmt_may_clobber_ref_p): ... here.
12236         (maybe_skip_until): Adjust signature.
12237         (get_continuation_for_phi): Likewise.
12238         (walk_non_aliased_vuses): Likewise.
12239         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
12240         (ao_ref_init): Declare.
12241         (ao_ref_base): Likewise.
12242         (ao_ref_alias_set): Likewise.
12243         (stmt_may_clobber_ref_p_1): Likewise.
12244         (walk_non_aliased_vuses): Adjust.
12245         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
12246         (get_ref_from_reference_ops): remove.
12247         (vn_reference_lookup_2): Adjust signature.
12248         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
12249         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
12250         (vn_reference_lookup): Adjust.
12251         (vn_reference_insert): Likewise.
12252         (vn_reference_insert_pieces): Adjust signature.
12253         (visit_reference_op_call): Adjust.
12254         * tree-ssa-pre.c (get_expr_type): Simplify.
12255         (phi_translate_1): Adjust.
12256         (compute_avail): Likewise.
12257         (translate_vuse_through_block): Do not re-build trees.
12258         (value_dies_in_block_x): Likewise.
12259         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
12260         fields.
12261         (vn_reference_lookup_pieces): Adjust declaration.
12262         (vn_reference_insert_pieces): Likewise.
12263
12264 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
12265
12266         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
12267         with checking disabled.
12268
12269 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
12270
12271         PR target/37216
12272
12273         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
12274         macro definition for support of three-operand format aligned
12275         .comm directive in assembler on cygwin/pe/mingw target OS.
12276         * configure:  Regenerate.
12277         * config.h:  Regenerate.
12278
12279         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
12280         aligned form of .comm directive if -mpe-aligned-commons is in effect.
12281         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
12282
12283         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
12284         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
12285
12286 2009-05-28  Ira Rosen  <irar@il.ibm.com>
12287
12288         PR tree-optimization/40254
12289         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
12290         in analysis of basic blocks.
12291
12292 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
12293
12294         PR middle-end/33699
12295         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
12296         * target-def.h (TARGET_CONST_ANCHOR): New macro.
12297         (TARGET_INITIALIZER): Use it.
12298         * cse.c (CHEAPER): Move it up to the other macros.
12299         (insert): Rename this ...
12300         (insert_with_costs): ... to this.  Add cost parameters.  Update
12301         function comment.
12302         (insert): New function.  Call insert_with_costs.
12303         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
12304         find_reg_offset_for_const, try_const_anchors): New functions.
12305         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
12306         when using a const-anchor.  Call insert_const_anchors.
12307         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
12308         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
12309
12310 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12311
12312         * tree-inline.c (remap_decls): Enable nonlocalized variables
12313         when not optimizing.
12314
12315 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12316
12317         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
12318         Simplify other tests involving optimize.
12319
12320 2009-05-27  Tom Tromey  <tromey@redhat.com>
12321
12322         * unwind-dw2.c (_Unwind_DebugHook): New function.
12323         (uw_install_context): Call _Unwind_DebugHook.
12324
12325 2009-05-27  Tom Tromey  <tromey@redhat.com>
12326
12327         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
12328
12329 2009-05-27  Ian Lance Taylor  <iant@google.com>
12330
12331         * Makefile.in (LINKER, LINKER_FLAGS): Define.
12332         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
12333         (ALL_LINKERFLAGS): Define.
12334         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
12335         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12336         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
12337         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12338         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
12339         $(LINKER_FOR_BUILD).
12340         (build/gcov-iov$(build_exeext)): Likewise.
12341
12342 2009-05-27  Julian Brown  <julian@codesourcery.com>
12343
12344         * gcse.c (target.h): Include.
12345         (can_assign_to_reg_without_clobbers_p): Check that the target allows
12346         copy of argument to a pseudo register.
12347
12348 2009-05-27  Diego Novillo  <dnovillo@google.com>
12349
12350         * tree-ssa-live.c (dump_scope_block): Document arguments.
12351         (dump_scope_blocks): Document.
12352         (debug_scope_blocks): New.
12353         * tree-flow.h (debug_scope_blocks): Declare.
12354
12355 2009-05-21  Denis Chertykov  <denisc@overta.ru>
12356
12357         * doc/contrib.texi (Contributors): Add myself to the list.
12358
12359 2009-05-27  Olivier Hainque  <hainque@adacore.com>
12360
12361         * expr.c (target_align): New function.  Alignment the TARGET of an
12362         assignment may be assume to have.
12363         (highest_pow2_factor_for_target): Use it instead of relying on
12364         immediate tree attributes of TARGET, not necessarily honored when
12365         intermediate bitfields are involved.
12366
12367 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
12368
12369         PR target/40266
12370         * config/i386/driver-i386.c (host_detect_local_cpu): Support
12371         AVX, SSE4, AES, PCLMUL and POPCNT.
12372
12373 2009-05-27  Diego Novillo  <dnovillo@google.com>
12374
12375         * tree-pretty-print.c (dump_location): New.
12376         (dump_generic_node): Call it.
12377         Factor code to handle BLOCK nodes ...
12378         (dump_block_node): ... here.
12379
12380 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
12381
12382         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
12383         with it.
12384         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
12385         included.
12386         * gcc-plugin.h: Include config.h and system.h.
12387         (IN_GCC): Define if not defined.
12388
12389 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
12390
12391         PR middle-end/40249
12392         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
12393         with -fno-inline.
12394
12395 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
12396
12397         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
12398         applicable.
12399         * config/m32r/m32r.h: Ditto.
12400         * config/m32r/m32r.md: Ditto.
12401         * config/m32r/predicates.md: Ditto.
12402
12403 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
12404
12405         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
12406
12407 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
12408
12409         * doc/plugins.texi
12410         (Loading plugins): typo.
12411         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
12412         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12413         (Interacting with the GCC Garbage Collector): Added new section.
12414         (Giving information about a plugin): Added new section for
12415         PLUGIN_INFO.
12416         * ggc.h (ggc_register_root_tab): Added declaration.
12417         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
12418         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
12419         (register_callback): Improved comment in declaration.
12420         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
12421         (extra_root_vec) Added static variable for dynamic roots registration.
12422         (ggc_register_root_tab) Added new routine.
12423         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
12424         PLUGIN_GGC_MARKING event.
12425         * ggc-zone.c: Include plugin.h.
12426         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
12427         * ggc-page.c: Include plugin.h.
12428         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
12429         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
12430         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
12431         (register_callback): check lack of callbacks for
12432         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
12433         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
12434         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
12435         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12436         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
12437         dependency on plugin.h.
12438         (plugin.o): Added dependency on ggc.h...
12439
12440 2009-05-26  Richard Guenther  <rguenther@suse.de>
12441
12442         PR middle-end/40248
12443         Revert
12444         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
12445         with mismatched comparison modes.
12446
12447         * expr.c (expand_expr_real_1): Expand the operand of a
12448         VIEW_CONVERT_EXPR in its natural mode.
12449
12450 2009-05-26  Ian Lance Taylor  <iant@google.com>
12451
12452         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
12453         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
12454         (ALL_COMPILERFLAGS): Define.
12455         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
12456         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12457         (collect2$(exeext), collect2.o): Likewise.
12458         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
12459         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
12460         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
12461         (libbackend.o, intl.o, cppdefault.o): Likewise.
12462         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12463         (build/%.o): Use $(COMPILER_FOR_BUILD).
12464         (build/gen%$(build_exeext)): Likewise.
12465         (build/gcov-iov$(build_exeext)): LIkewise.
12466         * config/t-darwin (darwin.o): Use $(COMPILER).
12467         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
12468         * config/t-sol2 (sol2-c.o): Likewise.
12469         (sol2.o): Likewise.
12470         * config/t-vxworks (vxworks.o): Likewise.
12471         * config/x-darwin (host-darwin.o): Likewise.
12472         * config/x-hpux (host-hpux.o): Likewise.
12473         * config/x-linux (host-linux.o): Likewise.
12474         * config/x-solaris (host-solaris.o): Likewise.
12475         * config/alpha/x-alpha (driver-alpha.o): Likewise.
12476         * config/arm/t-arm (arm-c.o): Likewise.
12477         * config/arm/t-pe (pe.o): Likewise.
12478         * config/arm/t-wince-pe (pe.o): Likewise.
12479         * config/i386/t-cygming (winnt.o): Likewise.
12480         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
12481         * config/i386/t-cygwin (cygwin1.o): Likewise.
12482         (cygwin2.o): Likewise.
12483         * config/i386/t-i386 (i386-c.o): Likewise.
12484         * config/i386/t-interix (winnt.o): Likewise.
12485         * config/i386/t-netware (netware.o): Likewise.
12486         * config/i386/t-nwld (nwld.o): Likewise.
12487         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
12488         * config/i386/x-i386 (driver-i386.o): Likewise.
12489         * config/i386/x-cygwin (host-cygwin.o): Likewise.
12490         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
12491         * config/ia64/t-ia64 (ia64-c.o): Likewise.
12492         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
12493         * config/mips/x-native (driver-native.o): Likewise.
12494         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
12495         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
12496         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
12497         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
12498         * config/score/t-score-elf (score7.o): Likewise.
12499         (score3.o): Likewise.
12500         * config/sh/t-sh (sh-c.o): Likewise.
12501         * config/sh/t-symbian (sh-c.o): Likewise.
12502         (symbian.o): Likewise.
12503         * config/spu/t-spu-elf (spu-c.o): Likewise.
12504         * config/v850/t-v850 (v850-c.o): Likewise.
12505         * config/v850/t-v850e (v850-c.o): Likewise.
12506
12507 2009-05-26  Richard Guenther  <rguenther@suse.de>
12508
12509         PR tree-optimization/40122
12510         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
12511         VECTOR_CSTs if possible.
12512         (fold_gimple_assign): Likewise.
12513
12514 2009-05-26  Richard Guenther  <rguenther@suse.de>
12515
12516         PR middle-end/40252
12517         * fold-const.c (fold_binary): Use the correct types for building
12518         rotates.
12519
12520 2009-05-26  Richard Guenther  <rguenther@suse.de>
12521
12522         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
12523         redundant calls to merge_alias_info.
12524         (bump_vector_ptr): Likewise.
12525         * tree-ssa-copy.c (merge_alias_info): Remove.
12526         (replace_exp_1): Remove call to merge_alias_info.
12527         (propagate_tree_value): Likewise.
12528         (fini_copy_prop): Propagate points-to info.
12529         * tree-flow.h (merge_alias_info): Remove.
12530
12531 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
12532
12533         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
12534
12535 2009-05-25  Jan Hubicka  <jh@suse.cz>
12536
12537         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
12538         * cgraph.h (struct inline_summary): New filed self_wize,
12539         size_inlining_benefit, self_time and time_inlining_benefit.
12540         (struct cgraph_global_info): Replace insns by time ans size fields.
12541         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
12542         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
12543         (ipcp_update_callgraph): Do not touch function bodies.
12544         * ipa-inline.c: Include except.h
12545         (MAX_TIME): New constant.
12546         (overall_insns): Remove.
12547         (leaf_node_p): New.
12548         (overall_size, max_benefit): New static variables.
12549         (cgraph_estimate_time_after_inlining): New function.
12550         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
12551         (cgraph_clone_inlined_nodes): Update size.
12552         (cgraph_mark_inline_edge): Update size.
12553         (cgraph_estimate_growth): Use size info.
12554         (cgraph_check_inline_limits): Check size.
12555         (cgraph_default_inline_p): Likewise.
12556         (cgraph_edge_badness): Compute badness based on benefit and size cost.
12557         (cgraph_decide_recursive_inlining): Check size.
12558         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
12559         and times.
12560         (cgraph_decide_inlining): Likewise.
12561         (cgraph_decide_inlining_incrementally): Likewise; honor
12562         PARAM_EARLY_INLINING_INSNS.
12563         (likely_eliminated_by_inlining_p): New predicate.
12564         (estimate_function_body_sizes): New function.
12565         (compute_inline_parameters): Use it.
12566         * except.c (must_not_throw_labels): New function.
12567         * except.h (must_not_throw_labels): Declare.
12568         * tree-inline.c (init_inline_once): Kill inlining_weigths
12569         * tree-ssa-structalias.c: Avoid uninitialized warning.
12570         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
12571         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
12572         (PARAM_INLINE_CALL_COST): Remove.
12573         (PARAM_EARLY_INLINING_INSNS): New.
12574
12575 2009-05-25  Richard Guenther  <rguenther@suse.de>
12576
12577         PR tree-optimization/36327
12578         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
12579         callback for reference translation or lookup at the point of may-defs.
12580         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
12581         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
12582         for union COMPONENT_REFs.
12583         (vn_reference_lookup_3): New callback.  Lookup from memset
12584         and CONSTRUCTOR assignment, translate through struct copies.
12585         (vn_reference_lookup_pieces): Make sure to not free the
12586         passed operands array.  Adjust walk_non_aliased_vuses call.
12587         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
12588         make sure we do not leak memory.
12589
12590 2009-05-25  Richard Guenther  <rguenther@suse.de>
12591
12592         * tree-ssa-alias.h (dump_points_to_solution): Declare.
12593         * tree-inline.c (expand_call_inline): Reset the escaped and
12594         callused solutions.
12595         * tree-ssa-structalias.c (pass_build_ealias): New.
12596         * tree-pass.h (pass_build_ealias): Declare.
12597         * passes.c (init_optimization_passes): Add PTA during
12598         early optimizations.
12599         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
12600         and CALLUSED solutions.
12601         (dump_points_to_solution): New function, split out from ...
12602         (dump_points_to_info_for): ... here.
12603         * tree-parloops.c (parallelize_loops): Reset the escaped and
12604         callused solutions.
12605
12606 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12607
12608         PR bootstrap/40027
12609         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
12610         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
12611
12612 2009-05-25  Ira Rosen  <irar@il.ibm.com>
12613
12614         PR tree-optimization/40238
12615         * tree-vect-stmts.c (vect_init_vector): Insert initialization
12616         statements after basic block's labels.
12617         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
12618         to free the allocated memory.
12619
12620 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
12621
12622         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
12623         return address with a USE.
12624
12625 2009-05-24  Richard Guenther  <rguenther@suse.de>
12626
12627         PR middle-end/40233
12628         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
12629         array type from the main variant of the inner type.
12630
12631 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
12632
12633         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
12634         definition to bool (from int) to un-break build.
12635         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
12636
12637 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
12638
12639         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
12640         discard_stmt_changes): Delete.
12641         * tree-ssa-operands.c (scb_stack): Delete.
12642         (init_ssa_operands): Do not initialize it.
12643         (fini_ssa_operands): Do not free it.
12644         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
12645
12646         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
12647         update_stmt, remove the others.  Fix comments.
12648         * tree-dfa.c (optimize_stack_restore): Likewise.
12649         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
12650         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
12651         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
12652         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
12653         Likewise.
12654         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
12655         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
12656         (dom_opt_finalize_block): Likewise, adjusting access to
12657         stmts_to_rescan.
12658         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
12659         (stmts_to_rescan): Change item type to gimple.
12660         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
12661
12662 2009-05-24  Ira Rosen  <irar@il.ibm.com>
12663
12664         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
12665         * tree-pass.h (pass_slp_vectorize): New pass.
12666         * params.h (SLP_MAX_INSNS_IN_BB): Define.
12667         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
12668         * tree-vectorizer.c (timevar.h): Include.
12669         (user_vect_verbosity_level): Declare.
12670         (vect_location): Fix comment.
12671         (vect_set_verbosity_level): Update user_vect_verbosity_level
12672         instead of vect_verbosity_level.
12673         (vect_set_dump_settings): Add an argument. Ignore user defined
12674         verbosity if dump flags require higher level of verbosity. Print to
12675         stderr only for loop vectorization.
12676         (vectorize_loops): Update call to vect_set_dump_settings.
12677         (execute_vect_slp): New function.
12678         (gate_vect_slp): Likewise.
12679         (struct gimple_opt_pass pass_slp_vectorize): New.
12680         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
12681         access its members.
12682         (vec_info_for_bb): New function.
12683         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
12684         (VECTORIZATION_ENABLED): New macro.
12685         (SLP_ENABLED, SLP_DISABLED): Likewise.
12686         (vect_is_simple_use): Add bb_vec_info argument.
12687         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
12688         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
12689         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
12690         vect_schedule_slp, vect_analyze_slp): Likewise.
12691         (vect_analyze_stmt): Add slp_tree argument.
12692         (find_bb_location): Declare.
12693         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12694         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
12695         (vect_analyze_loop_operations, vect_analyze_loop,
12696         get_initial_def_for_induction, vect_create_epilog_for_reduction,
12697         vect_finalize_reduction, vectorizable_reduction,
12698         vectorizable_live_operation, vect_transform_loop): Likewise.
12699         * tree-data-ref.c (dr_analyze_innermost): Update comment,
12700         skip evolution analysis if analyzing a basic block.
12701         (dr_analyze_indices): Likewise.
12702         (initialize_data_dependence_relation): Skip the test whether the
12703         object is invariant for basic blocks.
12704         (compute_all_dependences): Skip dependence analysis for data
12705         references in basic blocks.
12706         (find_data_references_in_stmt): Don't fail in case of invariant
12707         access in basic block.
12708         (find_data_references_in_bb): New function.
12709         (find_data_references_in_loop): Move code to
12710         find_data_references_in_bb and add a call to it.
12711         (compute_data_dependences_for_bb): New function.
12712         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
12713         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
12714         that STEP is 0.
12715         (vect_analyze_data_ref_dependence): Check for interleaving in case of
12716         unknown dependence in basic block and fail in case of dependence in
12717         basic block.
12718         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
12719         dependence instances from either loop or basic block vectorization
12720         info.
12721         (vect_compute_data_ref_alignment): Check if it is loop vectorization
12722         before calling nested_in_vect_loop_p.
12723         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
12724         dependence instances from either loop or basic block vectorization
12725         info.
12726         (vect_verify_datarefs_alignment): Likewise.
12727         (vect_enhance_data_refs_alignment): Adjust function calls.
12728         (vect_analyze_data_refs_alignment): Likewise.
12729         (vect_analyze_group_access): Fix printing. Skip different checks if
12730         DR_STEP is 0. Keep strided stores either in loop or basic block
12731         vectorization data structure. Fix indentation.
12732         (vect_analyze_data_ref_access): Fix comments, allow zero step in
12733         basic blocks.
12734         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
12735         dependence instances from either loop or basic block vectorization
12736         info.
12737         (vect_analyze_data_refs): Update comment. Call
12738         compute_data_dependences_for_bb to analyze basic blocks.
12739         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
12740         case of loop vectorization. In case of basic block vectorization use
12741         data-ref itself as a base.
12742         (vect_create_data_ref_ptr): In case of basic block vectorization:
12743         don't advance the pointer, add new statements before the current
12744         statement.  Adjust function calls.
12745         (vect_supportable_dr_alignment): Support only aligned accesses in
12746         basic block vectorization.
12747         * common.opt (ftree-slp-vectorize): New flag.
12748         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
12749         (vect_pattern_recog_1): Likewise.
12750         * tree-vect-stmts.c (process_use): Likewise.
12751         (vect_init_vector): Add new statements in the beginning of the basic
12752         block in case of basic block SLP.
12753         (vect_get_vec_def_for_operand): Adjust function calls.
12754         (vect_finish_stmt_generation): Likewise.
12755         (vectorizable_call): Add assert that it is loop vectorization, adjust
12756         function calls.
12757         (vectorizable_conversion, vectorizable_assignment): Likewise.
12758         (vectorizable_operation): In case of basic block SLP, take
12759         vectorization factor from statement's type and skip the relevance
12760         check. Adjust function calls.
12761         (vectorizable_type_demotion): Add assert that it is loop
12762         vectorization, adjust function calls.
12763         (vectorizable_type_promotion): Likewise.
12764         (vectorizable_store): Check for outer loop only in case of loop
12765         vectorization. Adjust function calls. For basic blocks, skip the
12766         relevance check and don't advance pointers.
12767         (vectorizable_load): Likewise.
12768         (vectorizable_condition): Add assert that it is loop vectorization,
12769         adjust function calls.
12770         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
12771         that it is not reduction, get vector type, call only supported
12772         functions, skip loop specific parts.
12773         (vect_transform_stmt): Check for outer loop only in case of loop
12774         vectorization.
12775         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
12776         (vect_is_simple_use): Fix comment, add new argument, fix conditions
12777         for external definition.
12778         * passes.c (pass_slp_vectorize): New pass.
12779         * tree-vect-slp.c (find_bb_location): New function.
12780         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
12781         check for patterns only in loops.
12782         (vect_build_slp_tree): Add argument, adjust function calls, fail in
12783         case of multiple types in basic block SLP.
12784         (vect_mark_slp_stmts_relevant): New function.
12785         (vect_supported_load_permutation_p): Fix comment.
12786         (vect_analyze_slp_instance): Add argument. In case of basic block
12787         SLP, take vectorization factor from statement's type, check that
12788         unrolling factor is 1. Adjust function call. Save SLP instance in
12789         either loop or basic block vectorization structure. Return FALSE,
12790         if SLP failed.
12791         (vect_analyze_slp): Add argument. Get strided stores groups from
12792         either loop or basic block vectorization structure. Return FALSE
12793         if basic block SLP failed.
12794         (new_bb_vec_info): New function.
12795         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
12796         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
12797         (vect_schedule_slp): Add argument. Get SLP instances from either
12798         loop or basic block vectorization structure. Set vectorization factor
12799         to be 1 for basic block SLP.
12800         (vect_slp_transform_bb): New function.
12801         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
12802
12803 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
12804
12805         * final.c (shorten_branches): Do not align labels for jump tables.
12806         (final_scan_insn): Use JUMP_TABLE_DATA_P.
12807
12808 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
12809
12810         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
12811         Remove outdated reference to flow.c and fix nits.
12812         * doc/gccint.texi: Tweak RTL description.
12813         * doc/rtl.texi: Likewise.
12814
12815 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
12816
12817         * config/avr/avr.c: Change my email address.
12818         * config/avr/avr.h: Likewise.
12819         * config/avr/avr.md: Likewise.
12820         * config/avr/avr-protos.h: Likewise.
12821         * config/avr/libgcc.S: Likewise.
12822
12823 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
12824
12825         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
12826         (spu_split_load, spu_split_store): Change return type to int.
12827         (spu_split_convert): Declare.
12828         * config/spu/predicates.md (spu_mem_operand): Remove.
12829         (spu_mov_operand): Update.
12830         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
12831         * config/spu/spu.c (regno_aligned_for_load): Remove.
12832         (reg_aligned_for_addr, spu_expand_load): Define.
12833         (spu_expand_extv): Reimplement and handle MEM.
12834         (spu_expand_insv): Handle MEM.
12835         (spu_sched_reorder): Handle insn's with length 0.
12836         (spu_legitimate_address_p): Reimplement.
12837         (store_with_one_insn_p): Return TRUE for any mode with size
12838         larger than 16 bytes.
12839         (address_needs_split): Define.
12840         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
12841         operands.
12842         (spu_convert_move): Define.
12843         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
12844         (spu_split_store): Change all MEM's to TImode.
12845         (spu_init_expanders): Preallocate registers that correspond to
12846         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
12847         mark_reg_pointer.
12848         (spu_split_convert): Define.
12849         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
12850         (_move<mode>, _movdi, _movti): Update predicate and condition.
12851         (load, store): Change to define_split.
12852         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
12853         extend<mode>ti2.
12854         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
12855         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
12856         define_insn_and_split of lshr<mode>3.
12857         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
12858         (<v>ashr<mode>3_imm): Define.
12859         (extv, extzv, insv): Allow MEM operands.
12860         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
12861         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
12862         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
12863         (_spu_convert2): Change to define_insn_and_split and remove the
12864         corresponding define_peephole2.
12865         (stack_protect_set, stack_protect_test, stack_protect_test_si):
12866         Change predicates to memory_operand.
12867
12868 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
12869
12870         * config/arm/thumb2.md: Add 16-bit multiply instructions.
12871
12872 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12873
12874         PR tree-optimization/40219
12875         * tree.c (iterative_hash_expr): Make sure the builtin function is
12876         a normal builtin function and not a front end or back end builtin
12877         before indexing into the built_in_decls array.
12878
12879 2009-05-22  Richard Guenther  <rguenther@suse.de>
12880
12881         PR middle-end/38964
12882         * alias.c (write_dependence_p): Do not use TBAA for answering
12883         anti-dependence or output-dependence.
12884         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
12885         (emit_pointer_definition): Remove.
12886         (emit_alias_warning): Likewise.
12887         (find_what_var_points_to): Remove TBAA pruning code.
12888         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
12889         violations.
12890         (compute_points_to_sets): Remove code computing the set of
12891         dereferenced pointers.
12892         * tree-data-ref.c (dr_may_alias_p): Properly use the split
12893         oracle for querying anti and output dependencies.
12894         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
12895         if TBAA may be applied.
12896         (refs_anti_dependent_p): New function.
12897         (refs_output_dependent_p): Likewise.
12898         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
12899         (refs_output_dependent_p): Likewise.
12900         * doc/tree-ssa.texi (Memory model): New section.
12901         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
12902         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
12903         * cfgexpand.c (expand_gimple_basic_block): Do not handle
12904         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
12905         * expr.c (expand_expr_real_1): Likewise.
12906         * gimple-low.c (lower_stmt): Likewise.
12907         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
12908         (dump_gimple_cdt): Remove.
12909         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
12910         (gimple_size): Likewise.
12911         (walk_gimple_op): Likewise.
12912         (is_gimple_stmt): Likewise.
12913         (walk_stmt_load_store_addr_ops): Likewise.
12914         (gimple_build_cdt): Remove.
12915         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
12916         * gimple.h (gimple_cdt_new_type): Remove.
12917         (gimple_cdt_new_type_ptr): Likewise.
12918         (gimple_cdt_set_new_type): Likewise.
12919         (gimple_cdt_location): Likewise.
12920         (gimple_cdt_location_ptr): Likewise.
12921         (gimple_cdt_set_location): Likewise.
12922         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
12923         * tree-cfg.c (remove_useless_stmts_1): Do not handle
12924         GIMPLE_CHANGE_DYNAMIC_TYPE.
12925         (verify_types_in_gimple_stmt): Likewise.
12926         * tree-inline.c (estimate_num_insns): Likewise.
12927         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
12928         (copy_decl_to_var): Likewise.
12929         (copy_result_decl_to_var): Likewise.
12930         * tree-pretty-print.c (dump_generic_node): Do not handle
12931         CHANGE_DYNAMIC_TYPE_EXPR.
12932         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
12933         * tree-ssa-operands.c (get_expr_operands): Likewise.
12934         * tree-ssa-structalias.c (struct variable_info): Remove
12935         no_tbaa_pruning member.
12936         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
12937         (unify_nodes): Do not copy it.
12938         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
12939         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
12940         (set_uids_in_ptset): Do not check it.
12941         (find_what_var_points_to): Likewise.
12942         (compute_tbaa_pruning): Remove.
12943         (compute_points_to_sets): Do not call it.
12944         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
12945         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
12946         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
12947         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
12948         (DECL_NO_TBAA_P): Likewise.
12949         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
12950         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
12951         (expand_omp_atomic_pipeline): Do not set it.
12952         * print-tree.c (print_node): Do not dump it.
12953         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
12954         redundant check.
12955
12956 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
12957
12958         PR target/39856
12959         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
12960         for clobber.
12961
12962 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
12963
12964         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
12965         non-external.
12966
12967 2009-05-22  Ben Elliston  <bje@au.ibm.com>
12968
12969         * Makefile.in (bversion.h, s-bversion): New targets.
12970         (TOPLEV_H): Add bversion.h.
12971         * toplev.h: Include "bversion.h".
12972         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
12973         the __format__ attribute only if compiling with the same version
12974         of GCC as the sources (the "build version").
12975
12976 2009-05-22  Ben Elliston  <bje@au.ibm.com>
12977
12978         * c-format.c (handle_format_attribute): Fix comment typo.
12979
12980 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
12981
12982         PR target/37846
12983         * config/ia64/ia64.opt (mfused-madd): New.
12984         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
12985         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
12986         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
12987         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
12988         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
12989         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
12990         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
12991         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
12992         instruction if !TARGET_FUSED_MADD.
12993         (fpma, fpms): Remove colon from name.
12994
12995 2009-05-22  Richard Guenther  <rguenther@suse.de>
12996
12997         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
12998         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
12999         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
13000         TARGET_MEM_REF.
13001         (create_expression_by_pieces): Only convert if necessary.
13002         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
13003         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
13004
13005 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
13006
13007         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
13008         regular pattern from a template and rename it ...
13009         (*extzv_truncsi_exts): ... to this.
13010
13011 2009-05-21  Richard Guenther  <rguenther@suse.de>
13012
13013         * cgraph.h (struct cgraph_node): Remove inline_decl member.
13014         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
13015         (cgraph_default_inline_p): Likewise.
13016         (cgraph_decide_inlining_incrementally): Likewise.
13017
13018 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13019             Uros Bizjak  <ubizjak@gmail.com>
13020
13021         * config/i386/cpuid.h (bit_MOVBE): New.
13022
13023         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
13024
13025         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
13026         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
13027         (ix86_handle_option): Handle OPT_mmovbe.
13028         (ix86_target_string): Add -mmovbe.
13029         (pta_flags): Add PTA_MOVBE.
13030         (processor_alias_table): Add PTA_MOVBE to "atom".
13031         (override_options): Handle PTA_MOVBE.
13032
13033         * config/i386/i386.h (TARGET_MOVBE): New.
13034
13035         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
13036         (*bswapsi_movbe): New.
13037         (*bswapdi_movbe): Likewise.
13038         (bswapdi2): Renamed to ...
13039         (*bswapdi_1): This.
13040         (bswapdi2): New expander.
13041
13042         * config/i386/i386.opt (mmovbe): New.
13043
13044         * doc/invoke.texi: Document -mmovbe.
13045
13046 2009-05-21  Taras Glek  <tglek@mozilla.com>
13047
13048         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
13049         * gcc-plugin.h (plugin_init): Updated signature.
13050         * gcc-plugin.h (plugin_name_args): Moved to this header.
13051         * doc/plugins.texi (plugin_init): Updated documention to reflect
13052         API change.
13053         * doc/plugins.texi (plugin_name_args): Added to documention.
13054
13055 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
13056
13057         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
13058         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
13059
13060 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
13061
13062         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
13063         JUMP_TABLE_DATA_P predicates where applicable.
13064         * config/i386/predicates.md: Ditto.
13065         * config/i386/sse.md: Ditto.
13066
13067 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
13068
13069         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
13070         operand2 -128 override length_immediate attribute to 1.
13071         * config/i386/predicates.md (constm128_operand): New predicate.
13072
13073         * config/i386/i386.c (memory_address_length): Handle %r12
13074         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
13075         also check REGNO.
13076         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
13077         mode look through optional ZERO_EXTEND and SUBREG.
13078         * config/i386/i386.md (R12_REG): New define_constant.
13079         (prefix_data16): For sse unit set also for MODE_TI insns.
13080         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
13081         insns set if operand 1 is ext_QIreg_operand.
13082         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
13083         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
13084         immediate.
13085         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
13086         mode from MODE_DI to MODE_SI.
13087         (movdi_1_rex64): Override modrm and length_immediate attributes
13088         only for movabs (TYPE_IMOV, alternative 2).
13089         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
13090         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
13091         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
13092         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
13093         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
13094         prefix_rex attribute if DImode.
13095         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
13096         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
13097         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
13098         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
13099         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
13100         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
13101         Likewise.  For TYPE_IMOV clear length_immediate attribute.
13102         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
13103         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
13104         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
13105         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
13106         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
13107         or one operand TYPE_ISHIFT.
13108         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
13109         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
13110         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
13111         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
13112         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
13113         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
13114         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
13115         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
13116         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
13117         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
13118         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
13119         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
13120         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
13121         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
13122         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
13123         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
13124         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
13125         set mode attribute, don't override length attribute.
13126         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
13127         to 1.
13128         (return_internal_long): Set length attribute to 2 instead of 1.
13129         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
13130         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
13131         prefix_rex attribute.
13132         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
13133         New predicates.
13134         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
13135
13136 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13137
13138         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
13139
13140 2009-05-20  Ian Lance Taylor  <iant@google.com>
13141
13142         * tree.c (build_tree_list_vec_stat): New function.
13143         (ctor_to_vec): New function.
13144         (build_nt_call_vec): New function.
13145         (build_call_array): Change args to be a const pointer.
13146         (build_call_vec): New function.
13147         * tree.h (build_nt_call_vec): Declare.
13148         (build_tree_list_vec_stat): Declare.
13149         (build_tree_list_vec): Define.
13150         (build_call_array): Update declaration.
13151         (build_call_vec): Declare.
13152         (ctor_to_vec): Declare.
13153         * c-common.c (tree_vector_cache): New static variable.
13154         (make_tree_vector): New function.
13155         (release_tree_vector): New function.
13156         (make_tree_vector_single): New function.
13157         (make_tree_vector_copy): New function.
13158         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
13159         (make_tree_vector_single, make_tree_vector_copy): Declare.
13160         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
13161         (c_parser_expr_list): Don't manage cache here, instead call
13162         make_tree_vector.
13163         (c_parser_release_expr_list): Remove static function.
13164         (c_parser_vec_to_tree_list): Remove static function.
13165         (c_parser_attributes): Call build_tree_list_vec instead of
13166         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
13167         c_parser_release_expr_list.
13168         (c_parser_postfix_expression_after_primary): Likewise.
13169         (c_parser_objc_keywordexpr): Likewise.
13170
13171 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
13172
13173         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
13174         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
13175         TARGET_CONVERT_TO_TYPE.
13176         * hooks.c (hook_tree_const_tree_null): Define.
13177         * hooks.h (hook_tree_const_tree_null): Declare.
13178         * target.h (struct gcc_target):  Add invalid_parameter_type,
13179         invalid_return_type, promoted_type, and convert_to_type fields.
13180         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
13181         (TARGET_INVALID_RETURN_TYPE): Define.
13182         (TARGET_PROMOTED_TYPE): Define.
13183         (TARGET_CONVERT_TO_TYPE): Define.
13184         (TARGET_INITIALIZER): Update for new fields.
13185         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
13186         (grokparms): Check targetm.invalid_parameter_type.
13187         * c-typeck.c (default_conversion): Check targetm.promoted_type.
13188         * c-convert.c (convert): Check targetm.convert_to_type.
13189
13190 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
13191
13192         * config/mips/mips.md (*extenddi_truncate<mode>,
13193         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
13194         defintions.
13195         (*extendhi_truncateqi): New define_insn_and_sptit.
13196
13197 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
13198
13199         PR middle-end/40204
13200         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
13201         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
13202
13203 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
13204
13205         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
13206         the operand of VIEW_CONVERT_EXPR.
13207
13208 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
13209
13210         * config/i386/driver-i386.c (host_detect_local_cpu): Check
13211         extended family and model for Intel processors.  Support Intel Atom.
13212
13213 2009-05-20  Olivier Hainque  <hainque@adacore.com>
13214
13215         * gstab.h (stab_code_type): Define, to be used instead of the
13216         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
13217         notice.
13218         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
13219         occurrences by stab_code_type.
13220         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
13221
13222 2009-05-20  Martin Jambor  <mjambor@suse.cz>
13223
13224         * tree-flow.h (insert_edge_copies_seq): Undeclare.
13225         (sra_insert_before): Likewise.
13226         (sra_insert_after): Likewise.
13227         (sra_init_cache): Likewise.
13228         (sra_type_can_be_decomposed_p): Likewise.
13229         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
13230         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
13231         (sra_insert_before): Likewise.
13232         (sra_insert_after): Likewise.
13233         (sra_init_cache): Likewise.
13234         (insert_edge_copies_seq): Made static and moved upwards.
13235
13236         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
13237         case.
13238
13239         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
13240
13241         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
13242         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
13243         simple copies.
13244
13245 2009-05-20  Richard Guenther  <rguenther@suse.de>
13246
13247         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13248         with mismatched comparison modes.
13249
13250 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13251
13252         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
13253         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
13254         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
13255         with shifts for Thumb2.
13256         (orsi_notsi): New for orn.
13257         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
13258         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
13259         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
13260         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
13261         Don't invert remainder for IOR.
13262
13263 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
13264
13265         PR tree-optimization/40087
13266         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
13267         number_of_iterations_ne): Rename never_infinite argument.
13268         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
13269         number_of_iterations_le): Handle pointer-type ivs when
13270         exit_must_be_taken is false.
13271         (number_of_iterations_cond):  Do not always assume that
13272         exit_must_be_taken if the control variable is a pointer.
13273
13274 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13275
13276         * c-typeck.c (build_binary_op): Allow % on integal vectors.
13277         * doc/extend.texi (Vector Extension): Document that % is allowed too.
13278
13279 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13280
13281         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
13282         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
13283
13284 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13285
13286         PR c/40172
13287         * c.opt (Wlogical-op): Disabled by default.
13288         * c-opt (c_common_post_options): Do not enable Wlogical-op with
13289         Wextra.
13290         * doc/invoke.texi (Wlogical-op): Likewise.
13291
13292 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
13293
13294         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
13295         into CASE_CONVERT.
13296         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
13297         Propagate the type of the first operand.
13298         <ASSERT_EXPR>: Simplify.
13299         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
13300         Rewrite using the RHS code as discriminant.
13301         <NOP_EXPR>: Turn into CASE_CONVERT.
13302         <PLUS_EXPR>: Propagate the type of the first operand.
13303
13304 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
13305
13306         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
13307         (ia64_dconst_0_375): New.
13308         * config/ia64/ia64.c (ia64_override_options): Remove
13309         -minline-sqrt-min-latency warning.
13310         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
13311         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
13312         * config/ia64/ia64.md (*sqrt_approx): Remove.
13313         (sqrtsf2): Remove #if 0.
13314         (sqrtsf2_internal_thr): Rewrite and move to div.md.
13315         (sqrtdf): Remove assert.
13316         (sqrtdf2_internal_thr): Rewrite and move to div.md.
13317         (sqrtxf2): Remove #if 0.
13318         (sqrtxf2_internal_thr): Rewrite and move to div.md.
13319         * div.md (sqrt_approx_rf): New.
13320         (sqrtsf2_internal_thr): New implementation.
13321         (sqrtsf2_internal_lat): New.
13322         (sqrtdf2_internal_thr: New implementation.
13323         (sqrtxf2_internal): New implementation.
13324
13325 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13326             Hans-Peter Nilsson  <hp@axis.com>
13327
13328         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
13329         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
13330         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
13331         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
13332         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
13333         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
13334         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
13335         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
13336         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
13337         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
13338         * c-common.c: ...from here.
13339
13340 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13341
13342         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
13343
13344 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13345
13346         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
13347
13348 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13349
13350         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
13351         assignments with memcpy calls.
13352         (add_fdes): Likewise.
13353         (binary_search_unencoded_fdes): Likewise.
13354         (linear_search_fdes): Eliminate type puns.
13355
13356 2009-05-19  Richard Guenther  <rguenther@suse.de>
13357
13358         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
13359         not falsely claim to have propagated into all uses.
13360
13361 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13362
13363         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
13364         version to v3.0.
13365
13366 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13367
13368         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
13369         * config/sh/sh.c (sh_legitimate_address_p): Make static.
13370         (TARGET_LEGITIMATE_ADDRESS_P): New.
13371         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13372         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
13373
13374 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
13375
13376         PR debug/40109
13377         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
13378         child of the containing namespace's DIE.
13379
13380 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
13381
13382         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
13383         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
13384         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
13385         extend patterns.
13386
13387 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
13388
13389         PR target/39942
13390         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
13391         gen_align with gen_pad.
13392         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
13393         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
13394
13395         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
13396         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
13397
13398         * config/i386/i386.md (align): Renamed to ...
13399         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
13400         ASM_OUTPUT_MAX_SKIP_PAD.
13401
13402 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
13403
13404         * config.gcc: Fix variable syntax.
13405
13406         PR target/39531
13407         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
13408         before calling exact_log2.
13409         (output_iorsi3): Likewise.
13410         (output_xorsi3): Likewise.
13411
13412 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13413
13414         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
13415         for the none zero constant operand except for EQ and NE
13416         comprisons even when the first operand is R0.
13417
13418 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
13419
13420         * config/s390/2064.md: Remove trailing whitespaces.
13421         * config/s390/2084.md: Likewise.
13422         * config/s390/constraints.md: Likewise.
13423         * config/s390/fixdfdi.h: Likewise.
13424         * config/s390/libgcc-glibc.ver: Likewise.
13425         * config/s390/s390-modes.def: Likewise.
13426         * config/s390/s390-protos.h: Likewise.
13427         * config/s390/s390.c: Likewise.
13428         * config/s390/s390.h: Likewise.
13429         * config/s390/s390.md: Likewise.
13430         * config/s390/tpf-unwind.h: Likewise.
13431
13432 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13433
13434         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
13435
13436 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13437
13438         M68K TLS support.
13439         * configure.ac (m68k-*-*): Check if binutils support TLS.
13440         * configure: Regenerate.
13441         * config/m68k/predicates.md (symbolic_operand): Extend comment.
13442         * config/m68k/constraints.md (Cu): New constraint.
13443         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
13444         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
13445         (movsi): Handle TLS symbols.
13446         (addsi3_5200): Handle XTLS symbols, indent.
13447         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
13448         (m68k_tls_reference_p): Declare.
13449         (m68k_legitimize_address): Declare.
13450         (m68k_unwrap_symbol): Declare.
13451         * config/m68k/m68k.opt (mxtls): New option.
13452         * config/m68k/m68k.c (ggc.h): Include.
13453         (m68k_output_dwarf_dtprel): Implement hook.
13454         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
13455         (m68k_expand_prologue): Load GOT pointer when function needs it.
13456         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
13457         (m68k_legitimate_constant_address_p): Same.
13458         (m68k_decompose_address): Handle TLS references.
13459         (m68k_get_gp): New static function.
13460         (enum m68k_reloc): New contants.
13461         (TLS_RELOC_P): New macro.
13462         (m68k_wrap_symbol): New static function.
13463         (m68k_unwrap_symbol): New function.
13464         (m68k_final_prescan_insn_1): New static function.
13465         (m68k_final_prescan_insn): New function.
13466         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
13467         functions.
13468         (legitimize_pic_address): Handle TLS references..
13469         (m68k_tls_get_addr, m68k_get_tls_get_addr)
13470         (m68k_libcall_value_in_a0_p)
13471         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
13472         (m68k_call_m68k_read_tp): Helper variables and functions for ...
13473         (m68k_legitimize_tls_address): Handle TLS references.
13474         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
13475         New functions.
13476         (m68k_legitimize_address): Handle TLS symbols.
13477         (m68k_get_reloc_decoration): New static function.
13478         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
13479         UNSPEC_RELOC32.
13480         (m68k_output_dwarf_dtprel): Implement hook.
13481         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
13482         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
13483         m68k_call_* routines.
13484         (sched_attr_op_type): Handle TLS symbols.
13485         (gt-m68k.h): Include.
13486         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
13487         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
13488
13489 2009-05-18  Martin Jambor  <mjambor@suse.cz>
13490
13491         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
13492         (visit_store_addr_for_mod_analysis): New function.
13493         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
13494         (determine_cst_member_ptr): Use gimple_assign_single_p.
13495         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
13496         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
13497         operands.  Don't check number of operands of a NOP_EXPR.
13498
13499 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
13500
13501         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
13502
13503 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13504
13505         PR c/40172
13506         * c-common.c (warn_logical_operator): Don't warn if one of
13507         expression isn't always true or false.
13508
13509 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
13510
13511         * config/i386/biarch32.h: New file.
13512         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
13513
13514 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
13515
13516         * config/mips/mips.md (*zero_extend<mode>_trunchi,
13517         *zero_extend<mode>_truncqi): Merge these into ...
13518         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
13519         Name the pattern following this as *zero_extendhi_truncqi.
13520
13521 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
13522
13523         PR middle-end/39301
13524         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
13525         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
13526         (output_info): Make field HOST_WIDEST_INT.
13527         (print_statistics): Use HOST_WIDEST_INT_PRINT.
13528         (dump_bitmat_statistics): Same.
13529
13530 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13531
13532         * config.gcc (use_gcc_stdint):  Set to wrap.
13533         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
13534         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
13535         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13536         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13537         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13538         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13539         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13540         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13541
13542 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
13543
13544         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
13545         tune_64.
13546         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
13547         Move definitions earlier.
13548         (OPT_ARCH64, OPT_ARCH32): Define.
13549         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
13550         and tune_64.
13551
13552 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
13553
13554         PR target/40153
13555         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
13556         implies.
13557
13558 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
13559
13560         * arm.md (movdi2): Copy non-reg values to DImode registers.
13561
13562 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
13563
13564         PR target/39942
13565         * final.c (label_to_max_skip): New function.
13566         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
13567         CODE_LABEL_NUMBER <= max_labelno.
13568         * output.h (label_to_max_skip): New prototype.
13569         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
13570         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
13571         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
13572         Handle CODE_LABELs with >= 16 byte alignment or with
13573         max_skip == (1 << align) - 1.
13574         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
13575         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
13576
13577         PR target/39942
13578         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
13579         .p2align 3 if MAX_SKIP is smaller than 7.
13580         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
13581
13582 2009-05-15  Ian Lance Taylor  <iant@google.com>
13583
13584         * alias.c (struct alias_set_entry_d): Rename from struct
13585         alias_set_entry.  Change all uses.
13586         * except.c (struct call_site_record_d): Rename from struct
13587         call_site_record.  Change all uses.
13588         * except.h (struct eh_region_d): Rename from struct eh_region.
13589         Change all uses.
13590         * gcse.c (struct hash_table_d): Rename from struct hash_table.
13591         Change all uses.
13592         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
13593         ivtype_map_elt.  Change all uses.
13594         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
13595         Change all uses.
13596         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
13597         * graphite.h (struct name_tree_d): Rename from struct name_tree.
13598         Change all uses.
13599         (struct sese_d): Rename from struct sese.  Change all uses.
13600         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
13601         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
13602         * optabs.h (struct optab_d): Rename from struct optab.  Change all
13603         uses.
13604         (struct convert_optab_d): Rename from struct convert_optab.
13605         Change all uses.
13606         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
13607         ipa_opt_pass.  Change all uses.
13608         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
13609         all uses.
13610
13611         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
13612         defined as a typedef.
13613         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
13614         defined as a tag.
13615
13616 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13617
13618         PR 16302
13619         * fold-const.c (make_range,build_range_check,merge_ranges): Move
13620         declaration to...
13621         (merge_ranges): Returns bool.
13622         * tree.h (make_range): .. to here.
13623         (build_range_check): Likewise.
13624         (merge_ranges): Likewise. Renamed from merge_ranges.
13625         * c-typeck.c (parser_build_binary_op): Update calls to
13626         warn_logical_operator.
13627         * c-common.c (warn_logical_operator): Add new warning.
13628         * c-common.h (warn_logical_operator): Update declaration.
13629
13630 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13631
13632         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
13633
13634 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13635
13636         * doc/install.texi: Document MPC requirements, flags etc.
13637
13638         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
13639         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
13640         Evaluate constant arguments.
13641         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
13642         (fold_builtin_1): Likewise, also evaluate constant arguments.
13643         Remove superfluous break.
13644         (do_mpc_ckconv): New.
13645         * real.h: Include mpc.h.
13646         * toplev.c (print_version): Output MPC version info if available.
13647
13648 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13649
13650         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
13651
13652 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
13653
13654         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
13655         only once.
13656
13657 2009-05-15  Jan Hubicka  <jh@suse.cz>
13658
13659         * doc/invoke.texi (max-early-inliner-iterations): New flag.
13660         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
13661         (try_inline): Fix return value.
13662         (cgraph_decide_inlining_incrementally): Honor new value.
13663         (cgraph_early_inlining): Handle indirect inlining.
13664         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
13665
13666 2009-05-15  Jan Hubicka  <jh@suse.cz>
13667
13668         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
13669         * cgraphunit.c (cgraph_finalize_function): Set it.
13670         (cgraph_expand_function): Use it.
13671
13672 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13673
13674         * real.c (encode_ieee_half): Define.
13675         (decode_ieee_half): Define.
13676         (ieee_half_format): Define.
13677         (arm_half_format): Define.
13678         * real.h (ieee_half_format): Declare.
13679         (arm_half_format): Declare.
13680
13681 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13682
13683         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
13684         swapped, and reversed optabs exist before trying to use them.
13685
13686 2009-05-15  Paul Brook  <paul@codesourcery.com>
13687             Sandra Loosemore  <sandra@codesourcery.com>
13688
13689         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
13690         loads.  Allow PRE_DEC.
13691         (output_move_neon): Handle PRE_DEC.
13692         (arm_print_operand): Add 'A' for neon structure loads.
13693         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
13694         * config/arm/neon.md (neon_mov): Update comment.
13695         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
13696         calls.
13697         (Um): New constraint.
13698
13699 2009-05-15  Jan Hubicka  <jh@suse.cz>
13700
13701         Revert the following patch until testsuite fallout is fixed:
13702         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13703         * cgraph.h (struct inline_summary): New filed self_wize,
13704         size_inlining_benefit, self_time and time_inlining_benefit.
13705         (struct cgraph_global_info): Replace insns by time ans size fields.
13706         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13707         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13708         (ipcp_update_callgraph): Do not touch function bodies.
13709         * ipa-inline.c: Include except.h
13710         (MAX_TIME): New constant.
13711         (overall_insns): Remove
13712         (overall_size, max_benefit): New static variables.
13713         (cgraph_estimate_time_after_inlining): New function.
13714         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13715         (cgraph_clone_inlined_nodes): Update size.
13716         (cgraph_mark_inline_edge): Update size.
13717         (cgraph_estimate_growth): Use size info.
13718         (cgraph_check_inline_limits): Check size.
13719         (cgraph_default_inline_p): Likewise.
13720         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13721         (cgraph_decide_recursive_inlining): Check size.
13722         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13723         and times.
13724         (cgraph_decide_inlining): Likewise.
13725         (cgraph_decide_inlining_incrementally): Likewise; honor
13726         PARAM_EARLY_INLINING_INSNS.
13727         (likely_eliminated_by_inlining_p): New predicate.
13728         (estimate_function_body_sizes): New function.
13729         (compute_inline_parameters): Use it.
13730         * except.c (must_not_throw_labels): New function.
13731         * except.h (must_not_throw_labels): Declare.
13732         * tree-inline.c (init_inline_once): Kill inlining_weigths
13733         * tree-ssa-structalias.c: Avoid uninitialized warning.
13734         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13735         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13736         (PARAM_INLINE_CALL_COST): Remove.
13737         (PARAM_EARLY_INLINING_INSNS): New.
13738
13739 2009-05-15  Richard Guenther  <rguenther@suse.de>
13740
13741         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
13742         not TODO_update_ssa.
13743
13744 2009-05-15  Richard Guenther  <rguenther@suse.de>
13745
13746         PR tree-optimization/39999
13747         * gimple.h (gimple_expr_type): Use the expression type looking
13748         through useless conversions.
13749         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
13750         (vn_nary_op_insert_stmt): Likewise.
13751         (simplify_binary_expression): Likewise.
13752
13753 2009-05-15  Richard Guenther  <rguenther@suse.de>
13754
13755         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
13756         New options, enabled by default.
13757         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
13758         Document.
13759         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
13760         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
13761         * tree-ssa-structalias.c (gate_tree_pta): New function.
13762         (pass_build_alias): Use it.
13763
13764 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
13765
13766         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
13767         recurse on an invariant address if a conversion from a pointer
13768         type to a wider integer type is involved.
13769
13770 2009-05-15  Jan Hubicka  <jh@suse.cz>
13771
13772         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13773         * cgraph.h (struct inline_summary): New filed self_wize,
13774         size_inlining_benefit, self_time and time_inlining_benefit.
13775         (struct cgraph_global_info): Replace insns by time ans size fields.
13776         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13777         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13778         (ipcp_update_callgraph): Do not touch function bodies.
13779         * ipa-inline.c: Include except.h
13780         (MAX_TIME): New constant.
13781         (overall_insns): Remove
13782         (overall_size, max_benefit): New static variables.
13783         (cgraph_estimate_time_after_inlining): New function.
13784         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13785         (cgraph_clone_inlined_nodes): Update size.
13786         (cgraph_mark_inline_edge): Update size.
13787         (cgraph_estimate_growth): Use size info.
13788         (cgraph_check_inline_limits): Check size.
13789         (cgraph_default_inline_p): Likewise.
13790         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13791         (cgraph_decide_recursive_inlining): Check size.
13792         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13793         and times.
13794         (cgraph_decide_inlining): Likewise.
13795         (cgraph_decide_inlining_incrementally): Likewise; honor
13796         PARAM_EARLY_INLINING_INSNS.
13797         (likely_eliminated_by_inlining_p): New predicate.
13798         (estimate_function_body_sizes): New function.
13799         (compute_inline_parameters): Use it.
13800         * except.c (must_not_throw_labels): New function.
13801         * except.h (must_not_throw_labels): Declare.
13802         * tree-inline.c (init_inline_once): Kill inlining_weigths
13803         * tree-ssa-structalias.c: Avoid uninitialized warning.
13804         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13805         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13806         (PARAM_INLINE_CALL_COST): Remove.
13807         (PARAM_EARLY_INLINING_INSNS): New.
13808         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
13809         (inline-call-cost): Remove.
13810         (early-inlining-insns): New.
13811
13812 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
13813
13814         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
13815         for bounds.
13816         (print_int_cst_bounds_in_octal_p): Likewise.
13817         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
13818         with subtypes.
13819         * dwarf2out.c (base_type_die): Likewise.
13820         (is_subrange_type): Delete.
13821         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
13822         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
13823         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
13824         if the destination type is boolean.
13825         (build_range_check): Do not special-case subtypes.
13826         (fold_sign_changed_comparison): Likewise.
13827         (fold_unary): Likewise.
13828         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
13829         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
13830         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
13831         * tree.c (subrange_type_for_debug_p): New predicate based on the
13832         former is_subrange_type.
13833         * tree.h (subrange_type_for_debug_p): Declare.
13834         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
13835         (convert_affine_scev): Remove call to above function.
13836         (chrec_convert_aggressive): Likewise.
13837         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
13838         false for conversions involving subtypes.
13839         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
13840         (vrp_val_min): Likewise.
13841         (needs_overflow_infinity): Likewise.
13842         (extract_range_from_unary_expr): Likewise.
13843
13844 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
13845
13846         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
13847         * config/frv/frv.c: Likewise.
13848         * config/s390/s390.c: Likewise.
13849         * config/sparc/sparc.h: Likewise.
13850         * config/i386/i386.h: Likewise.
13851         * config/i386/i386.c: Likewise.
13852         * config/crx/crx.c: Likewise.
13853         * config/m68hc11/m68hc11.h: Likewise.
13854         * config/iq2000/iq2000.c: Likewise.
13855         * config/mn10300/mn10300.h: Likewise.
13856         * config/mn10300/mn10300.c: Likewise.
13857         * config/m68k/m68k.c: Likewise.
13858         * config/rs6000/rs6000.c: Likewise.
13859         * config/rs6000/xcoff.h: Likewise.
13860         * config/rs6000/linux64.h: Likewise.
13861         * config/rs6000/sysv4.h: Likewise.
13862         * config/score/score3.c: Likewise.
13863         * config/score/score7.c: Likewise.
13864         * config/score/score.c: Likewise.
13865         * config/arm/arm.md: Likewise.
13866         * config/mips/mips.c: Likewise.
13867         * config/mips/mips.md: Likewise.
13868         * config/bfin/bfin.h: Likewise.
13869         * config/pa/pa.c: Likewise.
13870         * config/pa/constraints.md: Likewise.
13871
13872         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
13873         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
13874         * config/pdp11/pdp11.h: Use memory_address_p instead.
13875
13876 2009-05-14  Ian Lance Taylor  <iant@google.com>
13877
13878         * passes.c (finish_optimization_passes): Change i to int.
13879         * plugin.c (plugins_active_p): Change event to int.
13880         (dump_active_plugins): Likewise.
13881         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
13882         Add cast.
13883         * tree.c (tree_range_check_failed): Change c to unsigned int.
13884         (omp_clause_range_check_failed): Likewise.
13885         (build_common_builtin_nodes): Change mode to int.  Add cast.
13886         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
13887         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
13888
13889         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
13890         ++ or -- with a variable of enum type.
13891
13892 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
13893
13894         PR driver/40144
13895         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
13896
13897 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
13898
13899         * store-motion.c: Do not include params.h
13900         * Makefile.in: Fix dependencies for various files.
13901
13902 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
13903
13904         * auto-inc-dec.c: Fix pass description, remove apparent
13905         accidental duplication.
13906
13907 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
13908
13909         PR middle-end/40147
13910         * ipa-utils.h (memory_identifier_string): Moved to ...
13911         * tree.h (memory_identifier_string): Here.  Add GTY(()).
13912
13913 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
13914
13915         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
13916         in the former documentation of...
13917         (GO_IF_LEGITIMATE_ADDRESS): ... this.
13918         * ira-conflicts.c (get_dup_num): Use address_operand.
13919         * targhooks.c (default_legitimate_address_p): New.
13920         * targhooks.h (default_legitimate_address_p): New.
13921         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
13922         Call hook.
13923         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
13924         * target.h (struct target): Add legitimate_address_p.
13925         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
13926         (TARGET_INITIALIZER): Include it.
13927
13928         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13929         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
13930         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
13931         (TARGET_LEGITIMATE_ADDRESS_P): New.
13932
13933         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13934         (REG_OK_STRICT_P): Delete.
13935         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
13936         (frv_legitimate_address_p_1): ... this.
13937         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
13938         (frv_legitimate_address_p_1): ... the renamed old
13939         frv_legitimate_address_p.
13940         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
13941         (TARGET_LEGITIMATE_ADDRESS_P): New.
13942
13943         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13944         * config/s390/s390-protos.h (legitimate_address_p): Remove.
13945         * config/s390/s390.c (legitimate_address_p): Rename to...
13946         (s390_legitimate_address_p): ... this, make static.
13947         (legitimize_address): Adjust call.
13948         (TARGET_LEGITIMATE_ADDRESS_P): New.
13949         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
13950
13951         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13952         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
13953         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
13954         (TARGET_LEGITIMATE_ADDRESS_P): New.
13955
13956         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13957         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
13958         * config/spu/spu.c (spu_legitimate_address): Rename to...
13959         (spu_legitimate_address_p): ... this, make static.
13960         (TARGET_LEGITIMATE_ADDRESS_P): New.
13961
13962         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13963         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
13964         * config/sparc/sparc.c (legitimate_address_p): Rename to...
13965         (sparc_legitimate_address_p): ... this, make static and return bool.
13966         (legitimize_address): Adjust call.
13967         (TARGET_LEGITIMATE_ADDRESS_P): New.
13968
13969         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13970         * config/i386/i386-protos.h (legitimate_address_p): Remove.
13971         * config/i386/i386.c (legitimate_address_p): Rename to...
13972         (ix86_legitimate_address_p): ... this, make static.
13973         (constant_address_p): Move after it, adjust call.
13974         (TARGET_LEGITIMATE_ADDRESS_P): New.
13975
13976         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13977         * config/avr/avr-protos.h (legitimate_address_p): Remove.
13978         * config/avr/avr.c (legitimate_address_p): Rename to...
13979         (avr_legitimate_address_p): ... this, make static.
13980         (legitimize_address): Adjust call.
13981         (TARGET_LEGITIMATE_ADDRESS_P): New.
13982
13983         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13984         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
13985         * config/crx/crx.c (crx_legitimate_address_p): Make static.
13986         (TARGET_LEGITIMATE_ADDRESS_P): New.
13987
13988         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13989         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
13990         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
13991         (TARGET_LEGITIMATE_ADDRESS_P): New.
13992
13993         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13994         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
13995         Remove.
13996         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
13997         Make static.
13998         (TARGET_LEGITIMATE_ADDRESS_P): New.
13999
14000         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14001         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
14002         Remove.
14003         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
14004         Rename to...
14005         (m68hc11_legitimate_address_p): ... this, make static.
14006         (go_if_legitimate_address_internal): Rename to...
14007         (m68hc11_legitimate_address_p_1): ... this.
14008         (legitimize_address): Adjust call.
14009         (TARGET_LEGITIMATE_ADDRESS_P): New.
14010
14011         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14012         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
14013         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
14014         (TARGET_LEGITIMATE_ADDRESS_P): New.
14015
14016         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14017         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
14018         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
14019         (mn10300_legitimate_address_p): ... this, make static.
14020         (TARGET_LEGITIMATE_ADDRESS_P): New.
14021
14022         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14023         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
14024         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
14025         (TARGET_LEGITIMATE_ADDRESS_P): New.
14026
14027         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14028         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
14029         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
14030         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14031         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
14032         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
14033         (rs6000_legitimate_address_p): ... this, make static.
14034         (TARGET_LEGITIMATE_ADDRESS_P): New.
14035         (REG_MODE_OK_FOR_BASE_P): Delete.
14036         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
14037
14038         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14039         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
14040         Delete.
14041         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
14042         static, adjust types.
14043         (TARGET_LEGITIMATE_ADDRESS_P): New.
14044
14045         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14046         * config/score/score.c (score_address_p): Rename to...
14047         (score_legitimate_address_p): ... this.
14048         (TARGET_LEGITIMATE_ADDRESS_P): New.
14049         * config/score/score3.c (score3_address_p): Rename to...
14050         (score3_legitimate_address_p): ... this.
14051         * config/score/score7.c (score7_address_p): Rename to...
14052         (score7_legitimate_address_p): ... this.
14053
14054         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
14055         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
14056         GO_IF_LEGITIMATE_ADDRESS): Delete.
14057         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
14058         thumb2_legitimate_address_p): Delete.
14059         (arm_legitimate_address_p): Rename to...
14060         (arm_legitimate_address_outer_p): ... this.
14061         * config/arm/constraints.md ("Uq"): Adjust call.
14062         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
14063         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
14064         to...
14065         (arm_legitimate_address_outer_p): ... this.
14066         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
14067         static.
14068         (TARGET_LEGITIMATE_ADDRESS_P): New.
14069
14070         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14071         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
14072         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
14073         (TARGET_LEGITIMATE_ADDRESS_P): New.
14074
14075         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14076         * config/vax/vax-protos.h (legitimate_address_p): Remove.
14077         * config/vax/vax.c (legitimate_address_p): Rename to...
14078         (vax_legitimate_address_p): ... this, make static.
14079         (TARGET_LEGITIMATE_ADDRESS_P): New.
14080
14081         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14082         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
14083         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
14084         (TARGET_LEGITIMATE_ADDRESS_P): New.
14085
14086         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14087         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
14088         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
14089         (mmix_legitimate_address_p): ... this, make static.
14090         (TARGET_LEGITIMATE_ADDRESS_P): New.
14091
14092         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14093         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
14094         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
14095         (TARGET_LEGITIMATE_ADDRESS_P): New.
14096
14097 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14098
14099         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
14100         of MODE_COMPLEX_INT.
14101
14102 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14103
14104         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
14105         LCT_NORMAL in function call.
14106         * mips-tdump.c (print_file_desc): Add cast to enum type.
14107         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
14108         (mark_stabs): Add casts to enum types.
14109         (parse_stabs_common): Add casts to enum types.
14110
14111 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14112
14113         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
14114         Check for invalid values of LETTER.
14115
14116 2009-05-13  Taras Glek  <tglek@mozilla.com>
14117
14118         * attribs.c (register_attribute): moved out attribute registration
14119         into register_attribute.
14120         * doc/plugins.texi: Documented register_attribute and
14121         PLUGIN_ATTRIBUTES.
14122         * gcc-plugin.h: Added forward decl for register_attribute.
14123         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
14124         * plugin.c (register_callback, invoke_plugin_callbacks): Added
14125         PLUGIN_ATTRIBUTES boilerplate.
14126
14127 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
14128
14129         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
14130         values even in sentinel and empty entries.
14131         (ms_printf_flag_specs):  Likewise.
14132         (ms_scanf_flag_specs):  Likewise.
14133         (ms_strftime_flag_specs):  Likewise.
14134         (ms_print_char_table):  Likewise.
14135         (ms_scan_char_table):  Likewise.
14136         (ms_time_char_table):  Likewise.
14137
14138 2009-05-13  Doug Kwan  <dougkwan@google.com>
14139
14140         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
14141
14142 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14143
14144         * config/mips/mips.md (store): Add attributes for QI and HI.
14145         Update comment.
14146         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
14147         (truncdi<mode>2): ... this new pattern.
14148
14149 2009-05-13  Brad Hards  <bradh@kde.org>
14150
14151         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
14152
14153 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
14154             Ben Elliston <bje@au.ibm.com>
14155
14156         PR middle-end/40035
14157         * dse.c (check_mem_read_rtx): Guard against width == -1.
14158
14159 2009-05-13  Michael Matz  <matz@suse.de>
14160
14161         PR middle-end/39976
14162         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
14163         (trivially_conflicts_p): New function.
14164         (insert_backedge_copies): Use it.
14165
14166 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
14167
14168         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
14169         (handle_stdc_pragma): Use new enum constant names.
14170         (handle_pragma_float_const_decimal64): Ditto.
14171
14172 2009-05-13  Ian Lance Taylor  <iant@google.com>
14173
14174         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
14175         tree.def.
14176
14177 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
14178
14179         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
14180         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
14181         multilibs.
14182         * config/m68k/m68k.h (FL_UCLINUX): Define.
14183
14184 2009-05-13  Jan Hubicka  <jh@suse.cz>
14185
14186         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
14187
14188 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14189
14190         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
14191         unless -fschedule-insns is specified.
14192
14193 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14194
14195         PR target/39561
14196         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
14197         TARGET_EXPAND_CBRANCHDI4.
14198         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
14199         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
14200         (cmpeqdi): Fix comment.
14201
14202 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14203
14204         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
14205         (sh_legitimate_address_p): Likewise.
14206         * config/sh/sh.c (sh_legitimate_index_p): New.
14207         (sh_legitimate_address_p): Likewise.
14208         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
14209         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
14210         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
14211         (MAYBE_BASE_REGISTER_RTX_P): New macro.
14212         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14213         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
14214         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
14215         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
14216         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
14217
14218 2009-05-12  Jan Hubicka  <jh@suse.cz>
14219
14220         * tree-inline.c (estimate_operator_cost): Add operands;
14221         when division happens by constant, it is cheap.
14222         (estimate_num_insns): Loads and stores are not having cost of 0;
14223         EH magic stuff is cheap; when computing runtime cost of switch,
14224         use log2 base of amount of its cases; builtin_expect has cost of 0;
14225         compute cost for moving return value of call.
14226         (init_inline_once): Initialize time_based flags.
14227         * tree-inline.h (eni_weights_d): Add time_based flag.
14228
14229 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14230
14231         * df-core.c: Update head documentation.
14232
14233 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
14234
14235         PR bootstrap/40118
14236         * rs6000.c (rs6000_generate_compare): Use op1b instead of
14237         shadowing exisiting variable op1.
14238
14239 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
14240
14241         PR target/37179
14242         * config/i386/driver-i386.c (processor_signatures): New enum.
14243         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
14244         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
14245         processor signature to detect geode processor.
14246
14247 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14248
14249         Revert:
14250
14251         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14252
14253         * optabs.c (prepare_cmp_insn): Temporarily disable test that
14254         causes spurious differences between trunk and cond-optab branch.
14255
14256 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14257
14258         * dojump.c (compare_from_rtx): Delete.
14259         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
14260         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
14261         if the comparison does not satisfy the predicate; test predicates for
14262         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
14263         further if one existing pattern fails.
14264         * expr.h (compare_from_rtx): Delete.
14265         (prepare_operand): Declare it.
14266         * optabs.c: Change "lib call" to "libcall" throughout.
14267         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
14268         HAVE_conditional_trap, emit_cmp_insn): Delete.
14269         (can_compare_p): Delete cmp_optab case.
14270         (prepare_float_lib_cmp): Return an rtx and a machine mode.
14271         Accept other parameters by value.
14272         (prepare_operand): Make non-static.
14273         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
14274         other parameters by value.  Try to widen operands here based on
14275         an optab_methods argument and looking at cbranch_optab.
14276         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
14277         loop.  Use cbranch_optab directly.
14278         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
14279         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
14280         assertion.
14281         (emit_conditional_move, emit_conditional_add): Inline what's needed
14282         of compare_from_rtx, using new prepare_cmp_insn for the rest.
14283         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
14284         with COMPARE.  Move cmov_optab and cstore_optab above
14285         with cbranch_optab, move cmp_optab down with ucmp_optab,
14286         remove tst_otpab.  Do not initialize trap_rtx.
14287         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
14288         for trap code.  Do not check HAVE_conditional_trap.  Use
14289         prepare_cmp_insn.  Accept no predicate for operand 3.
14290         * optabs.h (OTI_cmp): Mark as used only for libcalls.
14291         (OTI_ctrap, ctrap_optab): New.
14292         (tst_optab): Delete.
14293         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
14294         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
14295         with lookup of ctrap_optab.
14296         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
14297         Delete.
14298         (ctrap_optab): New.
14299
14300         * combine.c (combine_simplify_rtx, simplify_set): Do not
14301         special case comparing against zero for cc0 machines.
14302         * simplify-rtx.c (simplify_binary_operation_1): Never remove
14303         COMPARE on cc0 machines.
14304         (simplify_relational_operation): Return a new expression when
14305         a COMPARE could be removed.
14306         * final.c (final_scan_insn): Compare cc_status values
14307         against LHS of a (compare FOO (const_int 0)) cc0 source.
14308         Also check if cc_status.value is the full compare.
14309
14310         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
14311         (cstoreMM4): Document.
14312         (conditional_trap): Document ctrapMM4 instead.
14313         (sync_compare_and_swapMM): Refer to cbranchcc4.
14314         (Dependent Patterns): Eliminate obsolete information referring to
14315         the old jump optimization phase.
14316         (Canonicalization): Include cbranchcc4 case, omit canonicalization
14317         of compares with 0 on cc0 machines.
14318         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
14319         avoiding references to cc0.  Remove text about storing operands
14320         in cmpMM.
14321         * doc/tm.texi (Condition Codes): Include blurb on different
14322         condition code representations, separate into subsections for
14323         CC0, MODE_CC and conditional execution.
14324
14325         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
14326         alpha_emit_setcc): Accept operands and a machine mode.
14327         * config/alpha/alpha.c (alpha_emit_conditional_branch):
14328         Get code/op0/op1 from operands, use machine mode argument
14329         instead of alpha_compare.fp_p.  Emit the branch here.
14330         (alpha_emit_setcc): Likewise, and return boolean.
14331         (alpha_emit_conditional_move): Likewise.  Assert that
14332         cmp_op_mode == cmp_mode, and simplify accordingly.
14333         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
14334         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
14335         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
14336         Delete.
14337         (stack probe test): Use cbranchdi4.
14338         * config/alpha/predicates.md (alpha_cbranch_operator): New.
14339
14340         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
14341         * config/arc/arc.h (movsicc, movsfcc): Use it.
14342         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
14343         (cbranchsi4, cstoresi4): New.
14344         (cmpsi, bCC and sCC expanders): Remove.
14345
14346         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
14347         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
14348         * config/arm/predicates.md (arm_comparison_operator): Only include
14349         floating-point operators if there is a hardware floating-point unit.
14350         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
14351         deferring to cbranch_cc and cstore_cc respectively.
14352         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
14353         cbranch_cc, cstore_cc): New.
14354         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
14355         arm_compare_op1.
14356         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
14357
14358         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
14359         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
14360         as an argument.
14361         (adjust_insn_length): Adjust calls.
14362         (avr_reorg): Handle (compare (foo) (const_int 0)).
14363         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
14364         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
14365         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
14366         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
14367         (bCC): Remove.
14368         (cbranchqi4, cbranchhi4, cbranchsi4): New.
14369         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
14370
14371         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
14372         (cbranchsi4, cstorebi4, cstoresi4): New.
14373         (movbisi): This insn is duplicate, split it to zero_extend.
14374         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
14375         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
14376         (bfin_optimize_loop): Use cbranch expander.
14377         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
14378         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
14379         (bfin_bimode_comparison_operator): ... this.
14380         (bfin_direct_comparison_operator): New.
14381
14382         * config/cris/cris.c (cris_normal_notice_update_cc): Look
14383         inside (compare FOO (const_int 0)).
14384         (cris_rtx_costs): Handle ZERO_EXTRACT.
14385         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
14386         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
14387         (*tstdi_v32): Delete.
14388         (*cmpdi_non_v32): Add M alternative for operand 1.
14389         (cmpsi, cmp<mode>): Make private.
14390         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
14391         with COMPARE.
14392         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
14393
14394         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
14395         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
14396         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
14397         (cc_reg_operand): New.
14398         (any_cond): Delete.
14399         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
14400         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
14401         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
14402         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
14403         crx_expand_scond): Delete.
14404
14405         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
14406         (cbranchsi4): New.
14407         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
14408         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
14409
14410         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
14411         cstoresi4, cstoresf4, cstoredf4): New.
14412         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
14413         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14414         Receive the entire operands array.
14415         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
14416         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
14417         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14418         Get test/op0/op1 from the operands array.
14419         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
14420
14421         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
14422         (h8300_expand_store): New.
14423         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
14424         (const_int 0)).
14425         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
14426         (h8300_expand_store): New.
14427         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
14428         or do not try to produce (set (cc0) REG).
14429         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
14430         change a compare into a move to a scratch register.  Disable some
14431         peepholes when comparing with zero.
14432         (tstsi, tsthi, tstsi, cmpqi): Make private.
14433         (cmphi): Delete.
14434         (bCC, sCC): Delete.
14435         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
14436         cstoresi4): New.
14437
14438         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
14439         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
14440         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
14441         (ix86_emit_i387_log1p): Use cbranchxf2.
14442         (ix86_expand_setcc): Return void.
14443         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
14444         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
14445         cmp<MODEF>, cmpcc): Remove.
14446         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
14447         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
14448         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
14449         (sCC and bCC expanders): Remove.
14450         (stack_protect_test): Use cbranchcc4.
14451
14452         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
14453         Delete.
14454         (ia64_expand_compare): Accept three rtx by reference and return void.
14455         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
14456         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
14457         from *expr.  Update *expr with the BImode comparison to do.
14458         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
14459         cmptf, bCC, sCC, conditional_trap): Delete.
14460         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
14461         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
14462         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
14463         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
14464         * config/ia64/predicates.md (ia64_cbranch_operator): New.
14465
14466         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
14467         type of last argument.
14468         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
14469         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
14470         use machine mode argument instead of branch_type.  Remove dead
14471         code for floating-point comparisons.
14472         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
14473         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
14474         Remove.
14475         (cbranchsi4, cstoresi4): New.
14476         * config/iq2000/predicates.md (reg_or_const_operand): New.
14477
14478         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
14479         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
14480         (b<code>_op): Rewrite to...
14481         (bcc_op): ... this, using match_operator.
14482         (s<code>_op): Rewrite to...
14483         (scc_op): ... this, using match_operator.
14484         (s<code>_24_op): Rewrite to...
14485         (scc_op_24): ... this, using match_operator.
14486         (s<code>_<mode>): Rewrite to...
14487         (cstore<mode>4): ... this, using match_operator.
14488         (s<code>_<mode>_24): Rewrite to...
14489         (cstore<mode>4_24): ... this, using match_operator.
14490         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
14491         m32c_unpend_compare, m32c_expand_scc): Delete.
14492         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
14493         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
14494         (m32c_expand_movcc): Change NE to EQ if necessary.
14495         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
14496
14497         * config/m32r/m32r-protos.h (gen_cond_store): New.
14498         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
14499         (gen_cond_store): New, from sCC patterns.
14500         (m32r_expand_block_move): Use cbranchsi4.
14501         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
14502         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
14503         (cbranchsi4, cstoresi4): New.
14504
14505         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
14506         Delete.
14507         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
14508         (m68hc11_notice_update_cc): Look into a compare with 0.
14509         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
14510         Delete.
14511         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
14512         cmphi, cmpqi, bCC): Delete.
14513         (cbranchsi4, cbranchhi4, cbranchqi4): New.
14514         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
14515         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
14516         sets with COMPARE.
14517
14518         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
14519         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
14520         * config/m68k/constraints.md (H): New.
14521         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
14522         the define_insn below.
14523         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
14524         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
14525         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
14526         patterns): Wrap RHS with COMPARE.
14527         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
14528         (*cmpdi_internal): Name this pattern.
14529         (cmpdi): Change to define_insn.
14530         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
14531         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
14532         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
14533         predicate.
14534         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
14535         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
14536         (conditional_trap): Change to...
14537         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
14538         (*conditional_trap): Use the ordered_comparison_operator and
14539         const1_operand predicates.
14540         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
14541         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
14542         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
14543         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
14544
14545         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
14546         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
14547         (mcore_gen_compare): New.
14548         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
14549         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
14550         (mcore_gen_compare): ... this.
14551         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
14552         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
14553         (stack probe pattern): Use cbranchsi4.
14554
14555         * config/mips/predicates.md (mips_cstore_operator): New.
14556         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
14557         * config/mips/mips.md (any_cond): Delete.
14558         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
14559         always succeed.
14560         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
14561         fixuns_truncsfdi2): Use cbranch patterns.
14562         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
14563         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
14564         Adjust call to mips_expand_conditional_branch.
14565         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
14566         cstore<GPR:mode>4.
14567         * config/mips/mips-protos.h (mips_expand_conditional_branch,
14568         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
14569         * config/mips/mips.c (cmp_operands): Delete.
14570         (mips_emit_compare): Get comparison operands from *op0/*op1.
14571         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
14572         that it succeeds.  Use op0/op1 instead of cmp_operands.
14573         (mips_expand_conditional_branch, mips_expand_conditional_move,
14574         mips_expand_conditional_trap): Likewise.
14575         (mips_block_move_loop): Use cbranch patterns.
14576         * config/mips/mips.h (cmp_operands): Delete.
14577
14578         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
14579         (mmix_gen_compare_reg): Just return a register in the right CC mode.
14580         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
14581         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
14582         (*cmpcc_folded): Rename to...
14583         (*cmpdi_folded): this.
14584         (*cmpcc): Rename to...
14585         (*cmps): ... this.
14586         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
14587         (bCC): Remove.
14588         (cbranchdi4): New.
14589         (cbranchdf4): New.  Handle invalid comparisons here.
14590         * config/mmix/predicates.md (float_comparison_operator): New.
14591
14592         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
14593         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
14594         * config/mn10300/mn10300.md (tst): Delete.
14595         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
14596         Name these patterns and wrap RHS in a compare.
14597         (*cmpsi): Make this pattern private.  Include tst.
14598         (*cmpsf): Make this pattern private.
14599         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
14600         (compare with zero peepholes): Likewise.
14601         (bCC): Remove.
14602         (cbranchsi4, cbranchsf4): New.
14603         (casesi): Use cbranchsi4.
14604
14605         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
14606         hppa_branch_type): Delete.
14607         (return_addr_rtx): Use cbranchsi4.
14608         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
14609         Emit CCFPmode comparison here.
14610         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
14611         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
14612         hppa_branch_type): Delete.
14613         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
14614         (movsicc, movdicc): Remove references to hppa_compare_op0,
14615         hppa_compare_op1 and compare_from_rtx.
14616         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
14617         (casesi): Use cbranchsi4.
14618
14619         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
14620         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
14621         * config/pdp11/pdp11.md (register_or_const0_operand): New.
14622         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
14623         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
14624         (bCC): Delete.
14625         (cbranchdf4, cbranchhi4, cbranchqi4): New.
14626         (*branch, *branch_inverted): New.
14627
14628         * config/picochip/picochip.md (cbranchhi4): Use
14629         ordered_comparison_operator.
14630         (cmphi, bCC): Remove.
14631
14632         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
14633         (trap_comparison_operator): Delete.
14634         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
14635         rs6000_emit_cbranch): Accept mode and operands.
14636         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
14637         rs6000_compare_fp_p): Delete.
14638         (rs6000_generate_compare): Accept mode and comparison.  Extract code
14639         and op0/op1 from there.  Replace references to rs6000_compare_op0
14640         and rs6000_compare_op1.
14641         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
14642         extract result from passed operands.
14643         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
14644         extract loc from passed operands.
14645         (rs6000_emit_cmove): Likewise.
14646         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
14647         rs6000_compare_fp_p): Delete.
14648         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
14649         (cbranch<GPR>4, cbranch<FP>4): New.
14650         (cstore<mode>4): New.  Consolidate here all choices about when to use
14651         portable or specialized sCC sequences.
14652         (stack_protect_test): Use cbranchsi4.
14653         (conditional_trap): Replace with ctrap<GPR>4.
14654         (conditional trap insn): Replace trap_comparison_operator with
14655         ordered_comparison_operator.
14656
14657         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
14658         (s390_emit_prologue): Use ctrap.
14659         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
14660         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
14661         New predicates replacing...
14662         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
14663         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
14664         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
14665         (add<mode>cc): Do not use s390_compare_op0/op1.
14666         (s<code>): Change to...
14667         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
14668         (seq): Change to...
14669         (cstorecc4): ... this.  Handle EQ or NE equally.
14670         (*sne): Un-privatize for use in cstorecc4.
14671         (b<code>): Change to...
14672         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
14673         (conditional_trap): Replace with...
14674         (ctrap<GPR>4, ctrap<FP>4): ... these.
14675         (stack_protect): Use cbranchcc4.
14676
14677         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
14678         * config/score/score-protos.h (score_gen_cmp): Delete.
14679         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
14680         (score_block_move-loop): Use cbranchsi4.
14681         * config/score/score.md (cbranchsi4): New.
14682         (cmpsi, bCC): Delete.
14683         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
14684         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
14685         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
14686         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
14687         * config/score/score3.h (score3_gen_cmp): Delete.
14688         * config/score/score7.h (score7_gen_cmp): Delete.
14689
14690         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
14691         (sh_emit_scc_to_t): ... this.  Return void.
14692         (from_compare): Rename to...
14693         (sh_emit_compare_and_branch): ... this.
14694         (sh_emit_compare_and_set): New.
14695         (sh_expand_t_scc): Accept operands.
14696         * config/sh/predicates.md (sh_float_comparison_operator): New.
14697         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
14698         (prepare_scc_operands): Rename to...
14699         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
14700         arguments.
14701         (sh_emit_cheap_store_flag): New.
14702         (sh_emit_set_t_insn): New.
14703         (from_compare): Rename to...
14704         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
14705         handling of TARGET_SH2E floating point to avoid recursive call.
14706         Generate branch here.
14707         (sh_emit_compare_and_set): New.
14708         (sh_expand_t_scc): Get op0/op1 from arguments.
14709         (sh_emit_cheap_store_flag): New.
14710         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
14711         cases.
14712         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
14713         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
14714         (movsicc, movdicc): Do nothing when it recreated operands from
14715         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
14716         prepare_scc_operands (now sh_emit_scc_to_t).
14717         (udivdi3): Use cstoresi4.
14718         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
14719         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
14720         (cbranchint4_media, cbranchfp4_media): New.
14721         (casesi): Use cbranchdi4.
14722         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
14723         Delete.
14724         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
14725         (movnegt): Remove second operand.
14726         (cbranchsf4, cbranchdf4): New.
14727         (stack_protect): Use cbranchdi4/cbranchsi4.
14728
14729         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
14730         (gen_compare_reg): Accept comparison, extract part of it to...
14731         (gen_compare_reg_1): ... this.
14732         (gen_compare_operator): Delete.
14733         (gen_v9_scc): Accept separate destination, comparison code and arms.
14734         Do not use sparc_compare_op0/sparc_compare_op1.
14735         (emit_scc_insn, emit_conditional_branch_insn): New.
14736         (emit_v9_brxx): Make static.  Remove useless assertion.
14737         (sparc_emit_float_lib_cmp): Return RTL instead of calling
14738         emit_cmp_insn.
14739         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
14740         * config/sparc/sparc-protos.h (gen_compare_reg,
14741         sparc_emit_float_lib_cmp): Adjust prototype.
14742         (emit_scc_insn, emit_conditional_branch_insn): New.
14743         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
14744         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
14745         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
14746         iterators to the top.
14747         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
14748         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
14749         snedi_special_trunc): Delete.
14750         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
14751         and snedi_special_trunc.
14752         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
14753         cbranchdi4, cbranch<F:mode>4): New.
14754         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
14755         here.  Use gen_compare_reg instead of gen_compare_operator.
14756         (conditional_trap): Replace with...
14757         (ctrapsi4, ctrapdi4): ... this.
14758         (stack_protect_test): Use cbranchcc4.
14759
14760         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
14761         argument to rtx.
14762         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
14763         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
14764         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
14765         from operands[0] or operands[3] depending on is_set.
14766         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
14767         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
14768         cmpdf, bCC), sCC: Remove.
14769         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
14770         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
14771         cstoredf4): New.
14772         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
14773         spu_emit_branch_or_set.
14774
14775         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
14776         Add two arguments.
14777         * config/stormy16/stormy16.h (xstormy16_compare_op0,
14778         xstormy16_compare_op1): Delete.
14779         * config/stormy16/stormy16.c (xstormy16_compare_op0,
14780         xstormy16_compare_op1): Delete.
14781         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
14782         Adjust calls.
14783         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
14784         (cmphi, cmpsi, bCC): Remove.
14785
14786         * config/v850/v850.md (tstsi, cmpsi): Fold into...
14787         (*cmpsi): ... this one.
14788         (cbranchsi4, cstoresi4): New.
14789         (bCC expanders): Delete.
14790         (sCC insns): Fold into...
14791         (*setcc): ... this one.
14792         (casesi): Do not use gen_cmpsi and gen_bgtu.
14793         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
14794         (movsicc): Simplify.
14795         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
14796
14797         * config/vax/vax-protos.h (cond_name): New.
14798         (vax_output_conditional_branch): Remove.
14799         * config/vax/vax.c (cond_name): New.
14800         (vax_output_conditional_branch): Remove.
14801         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
14802         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
14803         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
14804         (bit<VAXint>): Wrap source with (compare).
14805         (b<code> and following unnamed pattern): Rename to *branch and
14806         *branch_reversed.  Change macroization to match_operator.
14807         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
14808
14809         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
14810         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
14811         Change last argument to machine_mode.
14812         (xtensa_expand_scc): Add machine_mode argument.
14813         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
14814         (gen_conditional_move, xtensa_expand_conditional_branch,
14815         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
14816         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
14817         Adjust operand numbers.
14818         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
14819         Delete.
14820         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
14821         (cmpsi, cmpsf, b<code>, s<code>): Delete.
14822         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
14823
14824 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14825
14826         * optabs.c (prepare_cmp_insn): Temporarily disable test that
14827         causes spurious differences between trunk and cond-optab branch.
14828
14829 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
14830
14831         PR target/37137
14832         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
14833
14834 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
14835
14836         * tree.c (iterative_hash_pointer): Delete.
14837         (iterative_hash_expr): Short-circuit handling of NULL pointer.
14838         Hash UIDs and versions of SSA names.  Don't special-case built-in
14839         function declarations.
14840
14841 2009-05-11  Ian Lance Taylor  <iant@google.com>
14842
14843         PR bootstrap/40103
14844         * graphite.c: Force -Wc++-compat to only be a warning before
14845         #including "cloog/cloog.h".
14846
14847 2009-05-11  Martin Jambor  <mjambor@suse.cz>
14848
14849         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
14850
14851 2009-05-11  Jan Hubicka  <jh@suse.cz>
14852
14853         * tree-ssa-loop-ivcanon.c: Include target.h
14854         (struct loop_size): new structure.
14855         (constant_after_peeling): New predicate.
14856         (tree_estimate_loop_size): New function.
14857         (estimated_unrolled_size): Rewrite for new estimates.
14858         (try_unroll_loop_completely): Use new estimates.
14859         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
14860
14861 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14862
14863         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
14864         libcpp interface change.
14865         (spu_macro_to_expand): Likewise.
14866
14867 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
14868
14869         PR tree-optimization/40026
14870         * gimplify.c (gimplify_init_constructor): Change initial conditional
14871         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
14872         optimize_compound_literals_in_ctor.
14873
14874 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
14875
14876         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
14877         New devices.
14878         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
14879
14880 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
14881
14882         * tree-vect-data-refs.c (vect_analyze_group_access): Use
14883         HOST_WIDE_INT for gap.
14884
14885 2009-05-11  Ira Rosen  <irar@il.ibm.com>
14886
14887         PR tree-optimization/40074
14888         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
14889         account in group size and step comparison.
14890
14891 2009-05-11  Richard Guenther  <rguenther@suse.de>
14892
14893         * passes.c (init_optimization_passes): Strip now incorrect comment.
14894         (execute_function_todo): Do not set PROP_alias.
14895         * tree-pass.h (PROP_alias): Remove.
14896         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
14897         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
14898         * tree-nrv.c (pass_return_slot): Likewise.
14899         * tree-object-size.c (pass_object_sizes): Likewise.
14900         * tree-ssa-dom.c (pass_dominator): Likewise.
14901         (pass_phi_only_cprop): Likewise.
14902         * tree-ssa-dse.c (pass_dse): Likewise.
14903         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
14904         (pass_cselim): Likewise.
14905         * tree-ssa-pre.c (pass_pre): Likewise.
14906         (pass_fre): Likewise.
14907         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
14908         * tree-ssa-sink.c (pass_sink_code): Likewise.
14909         * tree-stdarg.c (pass_stdarg): Likewise.
14910         * tree-tailcall.c (pass_tail_calls): Likewise.
14911         * tree-vrp.c (pass_vrp): Likewise.
14912
14913 2009-05-10  Ian Lance Taylor  <iant@google.com>
14914
14915         * basic-block.h (enum profile_status): Break out of struct
14916         control_flow_graph.
14917         * cgraph.h (struct inline_summary): Break out of struct
14918         cgraph_local_info.
14919         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
14920         of struct cgraph_order_sort.
14921         * combine.c (enum undo_kind): New enum, broken out of struct undo.
14922         * cse.c (struct branch_path): Break out of struct
14923         cse_basic_block_data.
14924         * except.h (enum eh_region_type): Break out of struct eh_region.
14925         * gcc.c (enum add_del): Break out of struct modify_target.
14926         * genrecog.c (enum decision_type): Break out of struct decision_test.
14927         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
14928         ggc_pch_data.
14929         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
14930         * regmove.c (enum match_use): New enum, broken out of struct match.
14931         * sched-int.h (enum post_call_group): New enum, broken out of
14932         struct deps.
14933         (struct deps_reg): Break out of struct deps.
14934         * target.h (struct asm_int_op): Break out of struct gcc_target.
14935         * tree-eh.c (struct goto_queue_node): Break out of struct
14936         leh_tf_state.
14937         * tree-inline.h (enum copy_body_cge_which): Break out of
14938         copy_body_data.
14939         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
14940
14941         * c-decl.c (in_struct, struct_types): New static variables.
14942         (pushtag): Add loc parameter.  Change all callers.
14943         (lookup_tag): Add ploc parameter.  Change all callers.
14944         (check_compound_literal_type): New function.
14945         (parser_xref_tag): Add loc parameter.  Change all callers.  If
14946         -Wc++-compat, warn about struct/union/enum types defined within a
14947         struct or union.
14948         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
14949         and loc parameters.  Change all callers.  Change error calls to
14950         error_at, using loc.  For a redefinition, if the location of the
14951         original definition is known, report it.  Set in_struct and
14952         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
14953         (finish_struct): Add new parameters enclosing_in_struct and
14954         enclosing_struct_types.  Change all callers.  Set
14955         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
14956         in the struct.  If in a struct, add this struct to struct_types.
14957         (start_enum): Add loc parameter.  Change all callers.  Use
14958         error_at for errors, using loc.  For a redefinition, if the
14959         location of the original definition is known, report it.  If in a
14960         struct, add this enum type to struct_types.  If -Wc++-compat warn
14961         if in sizeof, typeof, or alignof.
14962         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
14963         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
14964         (c_parser_enum_specifier): Get enum location for start_enum.
14965         (c_parser_struct_or_union_specifier): Get struct location for
14966         start_struct.  Save in_struct and struct_types status between
14967         start_struct and finish_struct.
14968         (c_parser_cast_expression): Get location of cast.
14969         (c_parser_alignof_expression): Get location of type.
14970         (c_parser_postfix_expression): Likewise.
14971         (c_parser_postfix_expression_after_paren_type): Add type_loc
14972         parameter.  Change all callers.  Call check_compound_literal_type.
14973         Use type_loc for error about variable size type.
14974         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
14975         of an enum constant from an enum type defined in a struct or union.
14976         (c_cast_expr): Add loc parameter.  Change all callers.  If
14977         -Wc++-compat, warn about defining a type in a cast.
14978         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
14979         (start_enum, start_struct, finish_struct): Update declarations.
14980         (parser_xref_tag, c_cast_expr): Update declarations.
14981         (check_compound_literal_type): Declare.
14982
14983 2009-05-11  Ben Elliston  <bje@au.ibm.com>
14984
14985         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
14986         for recent libcpp interface change.
14987         (rs6000_macro_to_expand): Likewise.
14988
14989 2009-05-10  Michael Matz  <matz@suse.de>
14990
14991         PR target/40031
14992         * config/arm/arm.c (require_pic_register): Emit on entry edge,
14993         not at entry of function.
14994
14995 2009-05-10  Richard Guenther  <rguenther@suse.de>
14996
14997         PR tree-optimization/40081
14998         Revert
14999         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15000         using the main variant of the element type.  Do not fiddle with
15001         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15002
15003         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
15004         structs with volatile fields.
15005
15006 2009-05-10  Jan Hubicka  <jh@suse.cz>
15007
15008         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
15009         (estimate_move_cost): Assert that it does not get called for
15010         VOID_TYPE_P.
15011         (estimate_num_insns): Skip VOID types in argument handling.
15012         (optimize_inline_calls): Delete unreachable blocks and verify that
15013         callgraph is valid.
15014
15015 2009-05-10  Jan Hubicka  <jh@suse.cz>
15016
15017         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
15018         * cgraph.c (cgraph_mark_address_taken_node): New function.
15019         (dump_cgraph_node): Dump new flag.
15020         * cgraph.h (struct cgraph_node): Add address_taken.
15021         (cgraph_mark_address_taken_node): New function.
15022         * ipa.c (cgraph_postorder): Prioritize functions with address taken
15023         since new direct calls can be born.
15024
15025 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15026
15027         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
15028         tok->val.node.node.
15029
15030 2009-05-10  Jan Hubicka  <jh@suse.cz>
15031
15032         PR middle-end/40084
15033         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
15034         argument; rewrite.
15035         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
15036         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
15037         * tree-inline.c (copy_bb): Set frequency correctly.
15038         (fold_marked_statements): Update call to
15039         cgraph_update_edges_for_call_stmt.
15040
15041 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15042
15043         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
15044         identifiers in diagnostics.
15045         * config/arm/arm.c (arm_handle_fndecl_attribute,
15046         arm_handle_isr_attribute): Likewise.
15047         * config/avr/avr.c (avr_handle_progmem_attribute,
15048         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
15049         * config/bfin/bfin.c (handle_int_attribute,
15050         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
15051         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
15052         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
15053         Likewise.
15054         * config/darwin.c (darwin_handle_kext_attribute,
15055         darwin_handle_weak_import_attribute): Likewise.
15056         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
15057         h8300_handle_eightbit_data_attribute,
15058         h8300_handle_tiny_data_attribute): Likewise.
15059         * config/i386/i386.c (ix86_handle_cconv_attribute,
15060         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
15061         * config/i386/winnt.c (ix86_handle_shared_attribute,
15062         ix86_handle_selectany_attribute): Likewise.
15063         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
15064         * config/m32c/m32c.c (function_vector_handler): Likewise.
15065         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
15066         m68hc11_handle_fntype_attribute): Likewise.
15067         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
15068         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
15069         * config/mips/mips.c (mips_insert_attributes,
15070         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
15071         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
15072         rs6000_handle_struct_attribute): Likewise.
15073         * config/sh/sh.c (sh_insert_attributes,
15074         sh_handle_resbank_handler_attribute,
15075         sh_handle_interrupt_handler_attribute,
15076         sh2a_handle_function_vector_handler_attribute,
15077         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
15078         Likewise.
15079         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
15080         * config/spu/spu.c (spu_handle_fndecl_attribute,
15081         spu_handle_vector_attribute): Likewise.
15082         * config/stormy16/stormy16.c
15083         (xstormy16_handle_interrupt_attribute): Likewise.
15084         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
15085         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
15086
15087 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15088
15089         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
15090         (pp_translate_identifiers): New.
15091         (pp_identifier): Only conditionally translate identifier to locale
15092         character set.
15093         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
15094         (pp_base_tree_identifier): Only conditionally translate identifier
15095         to locale character set.
15096         * c-pretty-print.c (M_): Define.
15097         (pp_c_type_specifier, pp_c_primary_expression): Mark English
15098         fragments for conditional translation with M_.
15099         * tree-pretty-print.c (maybe_init_pretty_print): Disable
15100         identifier translation.
15101
15102 2009-05-10  Richard Guenther  <rguenther@suse.de>
15103
15104         PR tree-optimization/40081
15105         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15106         using the main variant of the element type.  Do not fiddle with
15107         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15108
15109 2009-05-09  Jan Hubicka  <jh@suse.cz>
15110
15111         PR middle-end/40080
15112         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
15113         indirect calls; verify cgraph afterwards.
15114
15115 2009-05-09  Jan Hubicka  <jh@suse.cz>
15116
15117         PR bootstrap/40082
15118         * ipa.c (update_inlined_to_pointer): New function.
15119         (cgraph_remove_unreachable_nodes): Use it.
15120
15121 2009-05-09  Jan Hubicka  <jh@suse.cz>
15122
15123         * tree-eh.c (struct leh_state): Remove prev_try.
15124         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
15125         not track prev_try.
15126         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
15127         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
15128         remove_eh_handler_and_replace, foreach_reachable_handler,
15129         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
15130         * except.h (struct eh_region): Remove eh_region_u_cleanup.
15131         (gen_eh_region_cleanup): Update prototype.
15132
15133 2009-05-09  Jan Hubicka  <jh@suse.cz>
15134
15135         PR middle-end/40043
15136         * except.c (copy_eh_region): Always set prev_try.
15137         (redirect_eh_edge_to_label): Find outer try.
15138         (foreach_reachable_handler): When looking for prev try
15139         handle case where previous try is not going to be taken.
15140
15141 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15142
15143         PR tree-optimization/40049
15144         * tree-vect-stmts.c (vectorizable_operation): If the machine has
15145         only vector/vector shifts, convert the type of the constant to the
15146         appropriate type to avoid building incorrect trees, which
15147         eventually have problems with garbage collection.
15148
15149 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15150
15151         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
15152         -1 for complex floating-point types if honoring signed zeros.
15153
15154 2009-05-08  Jan Hubicka  <jh@suse.cz>
15155
15156         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
15157         argument; handle correctly when profile is absent.
15158         (build_cgraph_edges): Update.
15159         (rebuild_cgraph_edges): Update.
15160         * cgraph.c: Do not include varray.h.
15161         (cgraph_set_call_stmt_including_clones): New function.
15162         (cgraph_create_edge_including_clones): Likewise
15163         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
15164         (cgraph_update_edges_for_call_stmt): Handle clones.
15165         (cgraph_remove_node): Handle clone tree.
15166         (cgraph_remove_node_and_inline_clones): New function.
15167         (dump_cgraph_node): Dump clone tree.
15168         (cgraph_clone_node): Handle clone tree.
15169         (clone_function_name): Bring here from tree-inline.c.
15170         (cgraph_create_virtual_clone): New function.
15171         * cgraph.h (ipa_replace_map): Move here from ipa.h.
15172         (cgraph_clone_info): New function.
15173         (strut cgraph_node): Add clone_info and new clone tree pointers.
15174         (cgraph_remove_node_and_inline_clones,
15175         cgraph_set_call_stmt_including_clones,
15176         cgraph_create_edge_including_clones,
15177         cgraph_create_virtual_clone): Declare.
15178         (cgraph_function_versioning): Use VEC argument.
15179         (compute_call_stmt_bb_frequency): Update prototype.
15180         (cgraph_materialize_all_clones): New function.
15181         * ipa-cp.c (ipcp_update_cloned_node): Remove.
15182         (ipcp_create_replace_map): Update to VECtors.
15183         (ipcp_update_callgraph): Use virtual clones.
15184         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
15185         (ipcp_update_profiling): Do not update local profiling.
15186         (ipcp_insert_stage): Use VECtors and virtual clones.
15187         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
15188         (clone_of_p): New function.
15189         (cgraph_preserve_function_body_p): Use clone tree.
15190         (cgraph_optimize): Materialize clones.
15191         (cgraph_function_versioning): Update for VECtors.
15192         (save_inline_function_body): Use clone tree.
15193         (cgraph_materialize_clone): New function.
15194         (cgraph_materialize_all_clones): Likewise.
15195         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
15196         * ipa.c: Include gimple.h.
15197         (cgraph_remove_unreachable_nodes): Use clone tree.
15198         * ipa-prop.c (ipa_note_param_call): Update call to
15199         compute_call_stmt_bb_frequencycall.
15200         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
15201         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
15202         (copy_bb): Handle updating of clone tree; add new edge when new call
15203         appears.
15204         (expand_call_inline): Be strict about every call having edge.
15205         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
15206         (delete_unreachable_blocks_update_callgraph): New function.
15207         (tree_function_versioning): Use VECtors; always remove unreachable
15208         blocks and fold conditionals.
15209         * tree-inline.h: Do not include varray.h.
15210         (tree_function_versioning): Remove.
15211         * Makefile.in (GTFILES): Remove tree-inline.c
15212         * passes.c (do_per_function): Do only functions having body.
15213         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
15214         tree.
15215
15216 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
15217             Andrew Morrow  <acm@google.com>
15218
15219         PR c/36892
15220         * c-common.c (c_common_attribute_table): Permit deprecated
15221         attribute to take an optional argument.
15222         (handle_deprecated_attribute): If the optional argument to
15223         __attribute__((deprecated)) is not a string ignore the attribute
15224         and emit a warning.
15225
15226         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
15227         * c-typeck.c (build_component_ref): Likewise.
15228         (build_external_ref): Likewise.
15229
15230         * toplev.c (warn_deprecated_use): Add an attribute argument.
15231         Emit the message associated with __attribute__((deprecated)).
15232
15233         * toplev.h (warn_deprecated_use): Updated.
15234
15235         * doc/extend.texi: Document new optional parameter to
15236         __attribute__((deprecated))
15237
15238 2009-05-08  Michael Eager <eager@eagercon.com>
15239
15240         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
15241         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
15242
15243 2009-05-08  Richard Guenther  <rguenther@suse.de>
15244
15245         PR tree-optimization/40062
15246         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
15247         Avoid exponential behavior.
15248
15249 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15250
15251         PR rtl-optimization/33928
15252         PR 26854
15253         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
15254         process_uses, build_single_def_use_links): New.
15255         (update_df): Update use_def_ref.
15256         (forward_propagate_into): Use get_def_for_use instead of use-def
15257         chains.
15258         (fwprop_init): Call build_single_def_use_links and let it initialize
15259         dataflow.
15260         (fwprop_done): Free use_def_ref.
15261         (fwprop_addr): Eliminate duplicate call to df_set_flags.
15262         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
15263         df_rd_simulate_one_insn): New.
15264         (df_rd_bb_local_compute_process_def): Update head comment.
15265         (df_chain_create_bb): Use the new RD simulation functions.
15266         * df.h (df_rd_simulate_artificial_defs_at_top,
15267         df_rd_simulate_one_insn): New.
15268         * opts.c (decode_options): Enable fwprop at -O1.
15269         * doc/invoke.texi (-fforward-propagate): Document this.
15270
15271 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15272
15273         PR c/24581
15274         * c-typeck.c (build_binary_op): Handle arithmetic between one real
15275         and one complex operand specially.
15276         * tree-complex.c (some_nonzerop): Do not identify a real value as
15277         zero if flag_signed_zeros.
15278
15279 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15280
15281         PR rtl-optimization/33928
15282         * loop-invariant.c (record_use): Fix && vs. || mishap.
15283
15284 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15285
15286         PR rtl-optimization/33928
15287         * loop-invariant.c (struct use): Add addr_use_p.
15288         (struct def): Add n_addr_uses.
15289         (struct invariant): Add cheap_address.
15290         (create_new_invariant): Set cheap_address.
15291         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
15292         (record_uses): Pass df_ref to record_use.
15293         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
15294         used only as such.
15295
15296 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
15297
15298         * config/sh/sh.c: Do not include c-pragma.h.
15299
15300 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15301
15302         * config/spu/spu.c: Remove include of c-common.h.
15303
15304 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
15305
15306         PR c/39037
15307         * c-common.h (mark_valid_location_for_stdc_pragma,
15308         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
15309         clear_float_const_decimal64, float_const_decimal64_p): New.
15310         * c.opt (Wunsuffixed-float-constants): New.
15311         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
15312         unsuffixed float constant, handle new warning.
15313         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
15314         * c-decl.c (c_scope): New flag float_const_decimal64.
15315         (set_float_const_decimal64, clear_float_const_decimal64,
15316         float_const_decimal64_p): New.
15317         (push_scope): Set new flag.
15318         * c-parser.c (c_parser_translation_unit): Mark when it's valid
15319         to use STDC pragmas.
15320         (c_parser_external_declaration): Ditto.
15321         (c_parser_compound_statement_nostart): Ditto.
15322         * c-pragma.c (valid_location_for_stdc_pragma,
15323         mark_valid_location_for_stdc_pragma,
15324         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
15325         handle_pragma_float_const_decimal64): New.
15326         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
15327         * cp/semantics.c (valid_location_for_stdc_pragma_p,
15328         set_float_const_decimal64, clear_float_const_decimal64,
15329         float_const_decimal64_p): New dummy functions.
15330         * doc/extend.texi (Decimal Float): Remove statement that the
15331         pragma, and suffix for double constants, are not supported.
15332         * doc/invoke.texi (Warning Options): List new option.
15333         (-Wunsuffixed-float-constants): New.
15334
15335 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
15336
15337         * config/i386/i386.c: Do not include c-common.h.
15338
15339 2009-05-07  Mark Heffernan  <meheff@google.com>
15340
15341         * doc/invoke.texi (Debugging Options): Document change of debugging
15342         dump location.
15343         * opts.c (decode_options): Make dump_base_name relative to
15344         aux_base_name directory.
15345
15346 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
15347
15348         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
15349         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
15350
15351 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
15352
15353         * Makefile.in (install-plugin): Simplify a bit.
15354
15355 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
15356
15357         * Makefile.in (OBJS-common): Add regcprop.o.
15358         (regcprop.o): New.
15359         * timevar.def (TV_CPROP_REGISTERS): New.
15360         * regrename.c (regrename_optimize): Return 0.
15361         (rest_of_handle_regrename): Delete.
15362         (pass_rename_registers): Point to regrename_optimize.
15363         (struct value_data_entry, struct value_data,
15364         kill_value_one_regno, kill_value_regno, kill_value,
15365         set_value_regno, init_value_data, kill_clobbered_value,
15366         kill_set_value, kill_autoinc_value, copy_value,
15367         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
15368         replace_oldest_value_reg, replace_oldest_value_addr,
15369         replace_oldest_value_mem, copyprop_hardreg_forward_1,
15370         debug_value_data, validate_value_data): Move...
15371         * regcprop.c: ... here.
15372         (rest_of_handle_cprop): Delete.
15373         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
15374
15375 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
15376
15377         PR middle-end/40057
15378         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
15379         GEN_INT for 1 << bitnum.
15380         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
15381         build_int_cst_type.
15382
15383 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
15384
15385         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
15386         Remove wrong description of "nand" operation.
15387
15388 2009-05-06  Richard Guenther  <rguenther@suse.de>
15389             Adam Nemet  <anemet@caviumnetworks.com>
15390
15391         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
15392         comment.  Add that if LHS is not a gimple register, then RHS1 has
15393         to be a single object (GIMPLE_SINGLE_RHS).
15394
15395 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
15396
15397         * expr.c (get_def_for_expr): Move it up in the file.
15398         (store_field): When expanding a bit-field store, look at the
15399         defining gimple stmt for the masking conversion.
15400
15401 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
15402
15403         PR middle-end/39986
15404         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
15405         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
15406         32-bit memcpy into long.
15407
15408 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
15409
15410         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
15411         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
15412         new_reg_loc_descr.
15413         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
15414         instead of appending DW_OP_deref*.
15415
15416 2009-05-06  Michael Matz  <matz@suse.de>
15417
15418         PR middle-end/40021
15419         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
15420         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
15421
15422 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
15423
15424         * Makefile.in (install-plugin): Fix srcdir handling.
15425
15426 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
15427
15428         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
15429         when processing for not_regs_needed bitmap.
15430         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
15431         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
15432         handling it for rhs.
15433
15434 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15435
15436         * config/i386/i386.md (unnamed inc/dec peephole): Use
15437         optimize_insn_for_size_p instead of optimize_size.
15438         * config/i386/predicates.md (incdec_operand): Likewise.
15439         (aligned_operand): Likewise.
15440         * config/i386/sse.md (divv8sf3): Likewise.
15441         (sqrtv8sf2): Likewise.
15442
15443 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15444
15445         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
15446
15447         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
15448
15449 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15450
15451         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
15452         ssemodesuffixf2c with avxmodesuffixf2c.
15453
15454 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
15455
15456         PR c/40032
15457         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
15458
15459 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
15460
15461         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
15462         (struct tree_base): Adjust spacing for 8 bit boundaries.
15463         (struct tree_decl_common): Add decl_by_reference_flag bit.
15464         (DECL_BY_REFERENCE): Adjust.
15465         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
15466         print DECL_BY_REFERENCE bit.
15467         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
15468         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
15469         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
15470         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
15471         unconditionally.
15472
15473         PR middle-end/39666
15474         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
15475         range of the type, but default label is missing, add it with one
15476         of the existing labels instead of adding a new label for it.
15477
15478 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
15479
15480         * dwarf.h: Remove.
15481
15482 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
15483
15484         * Makefile.in (enable_plugin, plugin_includedir): New.
15485         (install): Depend on install-plugin.
15486         (PLUGIN_HEADERS): New.
15487         (install-plugin): New.
15488         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
15489
15490 2009-05-05  Richard Guenther  <rguenther@suse.de>
15491
15492         PR tree-optimization/40022
15493         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
15494         the only vuse.
15495         (phivn_valid_p): Fix tuplification error, simplify.
15496         (phiprop_insert_phi): Add dumps.
15497         (propagate_with_phi): Simplify.
15498
15499 2009-05-05  Richard Guenther  <rguenther@suse.de>
15500
15501         PR middle-end/40023
15502         * builtins.c (gimplify_va_arg_expr): Properly build the address.
15503
15504 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
15505
15506         * tree.h (strip_float_extensions): Remove duplicate declaration.
15507         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
15508         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
15509         block_ultimate_origin): Rearrange the declarations line to match the
15510         comment that indicates the .c file which the functions are defined.
15511         (dwarf2out_*, set_decl_rtl): Add comment.
15512         (get_base_address): Adjust comment.
15513         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
15514         declarations line and add comment.
15515         (is_builtin_name): Add blank after function name, for clarity.
15516
15517 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15518
15519         * attribs.c (decl_attributes): Use %qE for identifiers in
15520         diagnostics.
15521         * cgraphunit.c (verify_cgraph_node): Translate function names to
15522         locale character set in diagnostics.
15523         * coverage.c (get_coverage_counts): Use %qE for identifiers in
15524         diagnostics.
15525         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
15526         Document that functions are named in UTF-8.
15527         * expr.c (expand_expr_real_1): Translate function names to locale
15528         character set in diagnostics.
15529         * gimplify.c (omp_notice_variable, omp_is_private,
15530         gimplify_scan_omp_clauses): Use %qE for identifiers in
15531         diagnostics.
15532         * langhooks.c (lhd_print_error_function): Translate function names
15533         to locale character set.
15534         * langhooks.h (decl_printable_name): Document that return value is
15535         in internal character set.
15536         * stmt.c: Include pretty-print.h
15537         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
15538         diagnostics.
15539         (resolve_operand_name_1): Translate named operand name to locale
15540         character set.
15541         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
15542         diagnostics.
15543         * toplev.c (announce_function): Translate function names to locale
15544         character set.
15545         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
15546         (default_tree_printer): Use pp_identifier or translate identifiers
15547         to locale character set.  Mark "<anonymous>" for translation.
15548         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
15549         for identifiers in diagnostics.
15550         * tree.c (handle_dll_attribute): Use %qE for identifiers in
15551         diagnostics.
15552         * varasm.c (output_constructor): Use %qE for identifiers in
15553         diagnostics.
15554
15555 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
15556
15557         * configure.ac: use ` ` instead of $()
15558         * configure: Regenerate.
15559
15560 2009-05-05  Ben Elliston  <bje@au.ibm.com>
15561
15562         * config/pa/linux-atomic.c: Eliminate conditional include of
15563         errno.h on non-LP64 systems to simplify build requirements.
15564
15565 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15566
15567         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
15568         diagnostics.
15569         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
15570         and pass value to identifier_to_locale.
15571         (warn_variable_length_array): Make name a tree.
15572         (grokdeclarator): Separate diagnostic texts for named and unnamed
15573         declarators.  Use %qE for named declarators.
15574         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
15575         diagnostics.
15576         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
15577         identifiers in diagnostics.
15578         * c-typeck.c (push_member_name, start_init): Pass identifiers to
15579         identifier_to_locale.  Mark "anonymous" strings for translation.
15580
15581 2009-05-04  Michael Eager <eager@eagercon.com>
15582
15583         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
15584         address for DImode/DFmode only if double-precision FP regs.
15585
15586 2009-05-04  Michael Eager <eager@eagercon.com>
15587
15588         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
15589         TARGET_SINGLE_FLOAT check.
15590
15591 2009-05-04  Michael Eager <eager@eagercon.com>
15592
15593         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
15594
15595 2009-05-04  Michael Eager <eager@eagercon.com>
15596
15597         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
15598         * config/rs6000/t-xilinx: New
15599
15600 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
15601
15602         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
15603         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
15604         * gcc/explow.c (memory_address): Use target hook.
15605         * gcc/targhooks.c (default_legitimize_address): New.
15606         * gcc/targhooks.h (default_legitimize_address): New.
15607         * gcc/target.h (legitimize_address): New.
15608         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
15609         (TARGET_INITIALIZER): Include it.
15610         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
15611
15612         * config/bfin/bfin-protos.h (legitimize_address): Remove.
15613         * config/bfin/bfin.c (legitimize_address): Remove.
15614         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
15615         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
15616         Remove.
15617         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
15618         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
15619
15620         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
15621         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
15622         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
15623         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
15624         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
15625         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
15626         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
15627         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
15628         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
15629         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
15630         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
15631         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
15632         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
15633         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
15634         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
15635         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
15636         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
15637         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
15638         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
15639         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
15640         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
15641         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
15642         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
15643
15644         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
15645         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
15646         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
15647         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
15648         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
15649         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
15650         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
15651         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
15652         (thumb_legitimize_address): Delete.
15653         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
15654         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
15655         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
15656         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
15657         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
15658         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
15659         Delete.
15660         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
15661         Delete.
15662
15663         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
15664         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
15665         * config/m32r/m32r.c (m32r_legitimize_address): New.
15666         * config/m68k/m68k.c (m68k_legitimize_address): New.
15667         * config/score/score.c (score_legitimize_address): Standardize.
15668         * config/score/score3.c (score3_legitimize_address): Standardize.
15669         * config/score/score3.h (score3_legitimize_address): Adjust.
15670         * config/score/score7.c (score7_legitimize_address): Standardize.
15671         * config/score/score7.h (score7_legitimize_address): Adjust.
15672         * config/sh/sh.c (sh_legitimize_address): New.
15673         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
15674
15675         * gcc/config/s390/s390.c (legitimize_address): Rename to...
15676         (s390_legitimize_address): ... this.
15677         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
15678         (sparc_legitimize_address): ... this.
15679         * gcc/config/i386/i386.c (legitimize_address): Rename to...
15680         (ix86_legitimize_address): ... this.
15681         * gcc/config/avr/avr.c (legitimize_address): Rename to...
15682         (avr_legitimize_address): ... this.
15683         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
15684         (mn10300_legitimize_address): ... this.
15685         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
15686         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
15687         (alpha_expand_mov): Adjust call.
15688
15689         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
15690         * config/spu/spu.c (spu_legitimize_address): Likewise.
15691         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
15692         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
15693
15694 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15695
15696         * intl.c (locale_encoding, locale_utf8): New.
15697         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
15698         * intl.h (locale_encoding, locale_utf8): Declare.
15699         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
15700         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
15701         New.
15702         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
15703         argument.
15704         (pp_tree_identifier): Define to call pp_base_tree_identifier.
15705         (pp_base_tree_identifier): Declare as function.
15706         (identifier_to_locale): Declare.
15707         * Makefile.in (pretty-print.o): Update dependencies.
15708         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
15709
15710 2009-05-04  Richard Guenther  <rguenther@suse.de>
15711
15712         PR middle-end/40015
15713         * builtins.c (fold_builtin_memory_op): Do not decay to element
15714         type if the size matches the whole array.
15715
15716 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
15717
15718         * expmed.c (synth_mult): When trying out a shift, pass the result
15719         of a signed shift.
15720
15721 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
15722
15723         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
15724         (shiftsub1_cost): New.
15725         (init_expmed): Compute shiftsub1_cost.
15726         (synth_mult): Optimize multiplications by constants of the form
15727         -(2^^m-1) for some constant positive integer m.
15728
15729 2009-05-03  Richard Guenther  <rguenther@suse.de>
15730
15731         PR c/39983
15732         * c-typeck.c (array_to_pointer_conversion): Do not built
15733         ADDR_EXPRs of arrays of pointer-to-element type.
15734         * c-gimplify.c (c_gimplify_expr): Revert change fixing
15735         up wrong ADDR_EXPRs after-the-fact.
15736         * c-common.c (strict_aliasing_warning): Strip pointer
15737         conversions for obtaining the original type.
15738         * builtins.c (fold_builtin_memset): Handle array types.
15739         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
15740         and array types
15741
15742 2009-05-03  Richard Guenther  <rguenther@suse.de>
15743
15744         PR middle-end/23329
15745         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
15746         Do not lose casts from array types with unknown extent to array
15747         types with known extent.
15748         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
15749         alias set compatibility.
15750
15751 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15752
15753         * flags.h (extra_warnings): Delete.
15754         * toplev.c (process_options): Handle Wuninitialized here.
15755         * opts.c (extra_warnings): Delete.
15756         (set_Wextra): Delete.
15757         (common_handle_option): -Wextra can be handled automatically.
15758         * c-opts.c (c_common_handle_option): Delete obsolete code.
15759         (c_common_post_options): Simplify comment.
15760         * common.opt (W): Add Var.
15761         (Wextra): Add Var.
15762         (Wuninitialized): Initialize to -1.
15763
15764 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
15765             Richard Guenther  <rguenther@suse.de>
15766
15767         * expr.c (get_def_for_expr): New function.
15768         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
15769         SSA rather than trees.
15770         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
15771         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
15772
15773 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
15774
15775         * c-common.c (reswords): Add _Imaginary.
15776         * c-common.c (enum rid): Add RID_IMAGINARY.
15777
15778 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
15779
15780         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
15781         Patch by Richard Guenther.
15782
15783 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
15784
15785         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
15786         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
15787         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
15788         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
15789         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
15790         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
15791         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
15792         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
15793         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
15794         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
15795         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
15796         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
15797         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
15798         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
15799         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
15800         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
15801         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
15802         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
15803
15804 2009-05-02  Richard Guenther  <rguenther@suse.de>
15805
15806         PR tree-optimization/39940
15807         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
15808         doing so.
15809
15810 2009-05-02  Richard Guenther  <rguenther@suse.de>
15811
15812         PR middle-end/40001
15813         * tree-ssa.c (execute_update_addresses_taken): Properly check
15814         if we can mark a variable DECL_GIMPLE_REG_P.
15815         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
15816         back to the end of the function.
15817         (is_gimple_reg_type): Remove complex type special casing.
15818         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
15819         if not optimizing.
15820
15821 2009-05-02  Ben Elliston  <bje@au.ibm.com>
15822
15823         * doc/collect2.texi (Collect2): Document search path behaviour
15824         when configured with --with-ld.
15825
15826 2009-05-02  Jan Hubicka  <jh@suse.cz>
15827
15828         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
15829         parameter; update callers.
15830         (coalesce_cost_edge): EH edges are costier because they needs
15831         splitting even if not critical and even more costier when there are
15832         multiple EH predecestors.
15833
15834 2009-05-02  Jan Hubicka  <jh@suse.cz>
15835
15836         * except.c (remove_eh_handler_and_replace): Handle updating after
15837         removing TRY blocks.
15838
15839 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
15840
15841         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
15842
15843 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
15844
15845         * varasm.c: Do not include c-pragma.h.
15846         * attribs.c: Do not incude c-common.h.
15847
15848 2009-05-01  Michael Matz  <matz@suse.de>
15849
15850         * calls.c (initialize_argument_information): Handle SSA names like
15851         decls with a non MEM_P DECL_RTL.
15852
15853 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
15854
15855         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
15856         * ipa-utils.c: Likewise.
15857         * ipa-type-escape.c: Likewise.
15858         * cgraphunit.c Do not include c-common.h.
15859         * ipa-pure-const.c: Likewise.
15860         * tree-if-conv.c: Likewise.
15861         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
15862         * ipa-struct-reorg.c: Likewise.
15863         * tree-nomudflap.c: Likewise.
15864         * tree-ssa-structalias.c: Likewise.
15865
15866 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
15867
15868         * store-motion.c: Many cleanups to make this pass a first-class
15869         citizen instead of an appendix to gcse load motion.  Add TODO list
15870         to make this pass faster/cleaner/better.
15871
15872         (struct ls_expr): Post gcse.c-split cleanups.
15873         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
15874         "stores" field to "avail_stores".
15875         (pre_ldst_mems): Rename to store_motion_mems.
15876         (pre_ldst_table): Rename to store_motion_mems_table.
15877         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
15878         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
15879         (ldst_entry): Rename to st_expr_entry, update users.
15880         (free_ldst_entry): Rename to free_st_expr_entry, update users.
15881         (free_ldst_mems): Rename to free_store_motion_mems, update users.
15882         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
15883         update caller.
15884         (first_ls_expr): Rename to first_st_expr, update users.
15885         (next_ls_expr): Rename to next_st_expr, update users.
15886         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
15887         fields properly for store motion instead of names inherited from load
15888         motion in gcse.c.
15889         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
15890         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
15891         are done with it.
15892
15893         (ae_kill): Rename to st_kill, update users.
15894         (ae_gen): Rename to st_avloc, update users.
15895         (transp): Rename to st_transp, update users.
15896         (pre_insert_map): Rename to st_insert_map, update users.
15897         (pre_delete_map): Rename to st_delete_map, update users.
15898         (insert_store, build_store_vectors, free_store_memory,
15899         one_store_motion_pass): Update for abovementioned changes.
15900
15901         (gcse_subst_count, gcse_create_count): Remove.
15902         (one_store_motion_pass): New statistics counters "n_stores_deleted"
15903         and "n_stores_created", local variables.
15904
15905         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
15906         use for_each_rtx.
15907
15908         (regvec, compute_store_table_current_insn): Remove.
15909         (reg_set_info, reg_clear_last_set): Remove.
15910         (compute_store_table): Use DF caches instead of local dataflow
15911         solvers.
15912
15913 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
15914
15915         * c-objc-common.c (c_tree_printer): Print identifiers with
15916         pp_identifier, not pp_string.  Mark "({anonymous})" for
15917         translation.
15918         * c-pretty-print.c (pp_c_ws_string): New.
15919         (pp_c_cv_qualifier, pp_c_type_specifier,
15920         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
15921         pp_c_storage_class_specifier, pp_c_function_specifier,
15922         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
15923         pp_c_primary_expression, pp_c_postfix_expression,
15924         pp_c_unary_expression, pp_c_shift_expression,
15925         pp_c_relational_expression, pp_c_equality_expression,
15926         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
15927         use pp_string and pp_c_ws_string in place of pp_identifier and
15928         pp_c_identifier for non-identifiers.  Mark English strings for
15929         translation.
15930         * c-pretty-print.h (pp_c_ws_string): Declare.
15931
15932 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
15933             Roland McGrath <roland@redhat.com>
15934
15935         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
15936         (ENABLE_LD_BUILDID): New configuration option.
15937         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
15938         (LINK_BUILDID_SPEC): New macro.
15939         (init_spec): If defined, prepend it between LINK_EH_SPEC and
15940         link_spec.
15941         * doc/install.texi: Document --enable-linker-build-id option.
15942         * configure: Rebuild.
15943         * config.in: Rebuild.
15944
15945 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
15946
15947         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
15948         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
15949         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
15950         MIPS_GP_SAVE_AREA_SIZE.
15951         * config/mips/mips.c (struct mips_frame_info): Update comment
15952         before arg_pointer_offset and hard_frame_pointer_offset.
15953         (mips_compute_frame_info): Update diagram before function: to
15954         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
15955         indicate the position of frame_pointer_rtx with -fstack-protector and
15956         to show args_size.  Don't allocate cprestore area for leaf functions
15957         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
15958         cprestore_size.
15959         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
15960
15961 2009-04-30  Michael Matz  <matz@suse.de>
15962
15963         PR tree-optimization/39955
15964         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
15965
15966 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
15967
15968         * ira.c (setup_cover_and_important_classes):  Use safe macro
15969         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
15970         directly.
15971         * genpreds.c (write_tm_preds_h):  Output suitable definition of
15972         REG_CLASS_FOR_CONSTRAINT.
15973
15974 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
15975
15976         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
15977         instead of an int.
15978         * bitmap.c (bitmap_descriptor): Likewise.
15979         * ggc-common.c (loc_descriptor): Likewise.
15980         * varray.c (varray_descriptor): Likewise.
15981         * vec.c (vec_descriptor): Likewise.
15982
15983 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
15984
15985         * Makefile.in (dce.o): Add $(EXCEPT_H).
15986         * dce.c: Include except.h and delete redundant vector definitions.
15987         (deletable_insn_p): Return false for non-call insns that can throw
15988         if DF is running.
15989
15990 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
15991
15992         * gcse.c (ae_gen): Remove.
15993         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
15994         and make non-static function to make it available in store-motion.c.
15995         Update call sites with search-and-replace.
15996         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
15997         extract_mentioned_regs, extract_mentioned_regs_helper,
15998         find_moveable_store, compute_store_table, load_kills_store, find_loads,
15999         store_killed_in_insn, store_killed_after, store_killed_before,
16000         build_store_vectors, insert_insn_start_basic_block, insert-store,
16001         remove_reachable_equiv_notes, replace_store_insn, delete_store,
16002         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
16003         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
16004         * store-motion.c: ...new file.  Also copy data structures from gcse.c
16005         and clean up to remove parts not used by store motion.
16006         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
16007         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
16008
16009 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16010
16011         PR target/38571
16012         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
16013         when optimizing for size.
16014
16015 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
16016
16017         * gcse.c (gcse_constant_p): Fix typo in last change.
16018
16019 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16020
16021         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
16022
16023 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
16024
16025         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
16026
16027 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
16028
16029         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
16030         CONST_HIGH_PART result.
16031
16032 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
16033
16034         * config/avr/avr.c (initial_elimination_offset): Rename to
16035         avr_initial_elimination_offset.
16036         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
16037         change return type to bool.
16038         (avr_can_eliminate): New function.
16039         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
16040         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
16041         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
16042         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
16043         avr_initial_elimination_offset.
16044         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
16045         (avr_initial_elimination_offset): Define.
16046
16047 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
16048             Steven Bosscher  <steven@gcc.gnu.org>
16049
16050         PR rtl-optimization/39938
16051         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
16052         * cfgrtl.c: Include insn-attr.h.
16053         (rest_of_pass_free_cfg): New function.
16054         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
16055         * resource.c (init_resource_info): Remove call to df_analyze.
16056
16057 2009-04-29  Richard Guenther  <rguenther@suse.de>
16058
16059         PR target/39943
16060         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
16061         allow conversion to signed integers.
16062
16063 2009-04-29  Richard Guenther  <rguenther@suse.de>
16064
16065         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
16066         shifts of floating point vectors if the shift amount is
16067         a constant multiple of the element size.
16068
16069 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16070             Michael Matz  <matz@suse.de>
16071
16072         PR middle-end/39927
16073         PR bootstrap/39929
16074         * tree-outof-ssa.c (emit_partition_copy): New function.
16075         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
16076         insert_part_to_rtx_on_edge): Perform the partition base var
16077         copy using emit_partition_copy.
16078         (insert_value_copy_on_edge): Convert constants to the right mode.
16079         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
16080         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
16081
16082 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16083
16084         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
16085         scan backwards to try to find a constant to initialize it.
16086
16087         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
16088         insn before the loop_end instruction, don't look past labels.
16089
16090 2009-04-29  Richard Guenther  <rguenther@suse.de>
16091
16092         PR middle-end/39937
16093         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
16094         loose type conversions.
16095         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
16096         stmts only if there are no uses of its definition.
16097
16098 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16099
16100         * config/bfin/bfin.h (splitting_loops): Declare.
16101         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
16102         Reorder bit definitions to be ascending.
16103         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
16104         * config/bfin/bfin.c (splitting_loops): New variable.
16105         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
16106         (struct loop_info): Remove members INIT and LOOP_INIT.
16107         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
16108         the LSETUP sequence.  Allow LC to be loaded from any register, but
16109         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
16110         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
16111         set to 1.
16112         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
16113         of reload_completed.
16114
16115         From Jie Zhang:
16116         * config/bfin/bfin.md (movsi_insn): Refine constraints.
16117
16118 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
16119
16120         * Makefile.in (PLUGIN_VERSION_H): New.
16121         (OBJS-common): Remove plugin-version.o.
16122         (plugin.o): Depend on (PLUGIN_VERSION_H).
16123         (plugin-version.o): Remove.
16124         * configure: Regenerate
16125         * configure.ac: Create plugin-version.h.
16126         * gcc-plugin.h (plugin_gcc_version): Remove.
16127         (plugin_default_version_check): Change signature.
16128         * plugin-version.c: Remove.
16129         * plugin.c: Include plugin-version.h.
16130         (str_plugin_gcc_version_name): Remove.
16131         (try_init_one_plugin): Pass gcc version to plugin_init.
16132         (plugin_default_version_check): Both gcc and plugin versions are now
16133         arguments.
16134
16135 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16136
16137         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
16138         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
16139         Remove special case testing for last insn of inner loops. Don't fail
16140         if the loop ends with a jump, emit an extra nop instead.
16141
16142         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
16143         DREGS rather than comparing directly.  Remove code that tries to
16144         account for latencies.
16145
16146 2009-04-29  Richard Guenther  <rguenther@suse.de>
16147
16148         PR tree-optimization/39941
16149         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
16150         eliminating an indirect call.
16151
16152 2009-04-29  Richard Guenther  <rguenther@suse.de>
16153
16154         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
16155         parameter.  Allow invariants as base if !require_lvalue.
16156         (verify_gimple_assign_single): Adjust.
16157
16158 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16159
16160         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
16161         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
16162         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
16163         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
16164         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
16165         a VEC_SELECT.
16166         * config/bfin/bfin.c (bfin_expand_builtin,
16167         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
16168
16169 2009-04-28  Richard Guenther  <rguenther@suse.de>
16170
16171         * tree-vect-loop.c (get_initial_def_for_induction): Use
16172         correct types for pointer increment.
16173
16174 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16175
16176         * toplev.c (print_version): Update GMP version string calculation.
16177
16178 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
16179
16180         PR rtl-optimization/39938
16181         * resource.c (init_resource_info): Add call to df_analyze.
16182
16183 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16184
16185         * config/alpha/alpha.md (usegp): Cast the result of
16186         alpha_find_lo_sum_using_gp to enum attr_usegp.
16187         * config/alpha/alpha.c (override_options): Remove end-of-structure
16188         marker element from cpu_table.  Use array size of cpu_table to handle
16189         -mcpu and -mtune options.
16190         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
16191
16192 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
16193
16194         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
16195         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
16196         tune_32 and tune_64.
16197         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
16198         support on PowerPC.
16199         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
16200         * config/rs6000/option-defaults.h: ... here.  New file.
16201         (OPT_64, OPT_32): Define.
16202         (MASK_64BIT): Define to 0 if not already defined.
16203         (OPT_ARCH64, OPT_ARCH32): Define.
16204         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
16205         and tune_64.
16206
16207 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16208
16209         * config/arm/arm.c (arm_override_options): Emit error on using
16210         fpa with AAPCS.
16211
16212 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16213
16214         PR rtl-optimization/39914
16215         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
16216         registers for allocnos created from user-defined variables only
16217         when not optimizing.
16218
16219 2009-04-28  Richard Guenther  <rguenther@suse.de>
16220
16221         PR middle-end/39937
16222         * fold-const.c (fold_binary): Use distribute_real_division only
16223         on float types.
16224
16225 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
16226
16227         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
16228         add hpux-stdint.h to tm_file.
16229         (hppa[12]*-*-hpux11*): Ditto.
16230         (ia64*-*-hpux*): Ditto.
16231         * config/hpux-stdint.h: New.
16232         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
16233         __STDC_EXT__ for all compiles.
16234         * config/pa/pa-hpux.h: Ditto.
16235         * config/pa/pa-hpux10.h: Ditto.
16236         * config/pa/pa-hpux11.h: Ditto.
16237
16238 2009-04-28  Catherine Moore  <clm@codesourcery.com>
16239
16240         * debug.h (set_name): Add comment.
16241
16242 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
16243
16244         PR target/39929
16245         * config/darwin.c (machopic_gen_offset): Check
16246         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
16247         * config/arm/arm.c (require_pic_register): Likewise.
16248
16249 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
16250
16251         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
16252         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
16253         m32c_promote_prototypes): Delete.
16254
16255 2009-04-28  Michael Matz  <matz@suse.de>
16256
16257         PR middle-end/39922
16258         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
16259         constants.
16260
16261 2009-04-28  Richard Guenther  <rguenther@suse.de>
16262
16263         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
16264
16265 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16266
16267         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
16268         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
16269         * config/arm/arm-tune.md: Regenerate.
16270
16271 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
16272
16273         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
16274         block if there are complex incoming edges.
16275         (sel_merge_blocks): Remove useless assert.
16276         (sel_redirect_edge_and_branch): Check that edge was redirected.
16277         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
16278         (sel_find_rgns): Delete declaration.
16279         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
16280         the region when it is not a preheader.
16281
16282 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16283
16284         PR c/39323
16285         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
16286
16287 2009-04-28  Richard Guenther  <rguenther@suse.de>
16288
16289         * tree.h (SSA_NAME_VALUE): Remove.
16290         (struct tree_ssa_name): Remove value_handle member.
16291         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
16292         array for jump threading.
16293         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
16294         SSA_NAME_VALUEs.
16295         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
16296         * tree-flow.h (threadedge_initialize_values): Declare.
16297         (threadedge_finalize_values): Likewise.
16298         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
16299         (SSA_NAME_VALUE): Define.
16300         (threadedge_initialize_values): New function.
16301         (threadedge_finalize_values): Likewise.
16302         * tree-ssa-dom.c (ssa_name_values): New global variable.
16303         (SSA_NAME_VALUE): Define.
16304         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
16305
16306 2009-04-28  Ira Rosen  <irar@il.ibm.com>
16307
16308         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
16309         Use REPORT_VECTORIZED_LOCATIONS instead
16310         REPORT_VECTORIZED_LOOPS.
16311         * tree-vectorizer.c (vect_verbosity_level): Make static.
16312         (vect_loop_location): Rename to vect_location.
16313         (vect_set_verbosity_level): Update comment.
16314         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
16315         and vect_location.
16316         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
16317         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
16318         instead REPORT_UNVECTORIZED_LOOPS.
16319         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
16320         and vect_loop_def to vect_external_def and vect_internal_def.
16321         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
16322         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
16323         REPORT_UNVECTORIZED_LOCATIONS.
16324         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
16325         and vect_used_in_loop and to vect_unused_in_scope and
16326         vect_used_in_scope.
16327         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
16328         (vect_verbosity_level): Remove declaration.
16329         (vect_analyze_operations): Likewise.
16330         (vect_analyze_stmt): Declare.
16331         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
16332         REPORT_UNVECTORIZED_LOCATIONS.
16333         (vect_get_loop_niters): Fix indentation.
16334         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
16335         (vect_analyze_loop_operations): New function.
16336         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
16337         vect_analyze_operations.
16338         (vect_is_simple_reduction): Use new names.
16339         (vectorizable_live_operation, vect_transform_loop): Likewise.
16340         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
16341         to specify whether the data references can be a part of interleaving
16342         chain.
16343         (vect_analyze_data_ref_dependence): Use new names.
16344         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
16345         (vect_create_addr_base_for_vector_ref): Remove redundant code.
16346         * tree-vect-patterns.c (widened_name_p): Use new names.
16347         (vect_recog_dot_prod_pattern): Likewise.
16348         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
16349         (process_use, vect_mark_stmts_to_be_vectorized,
16350         vect_model_simple_cost, vect_model_store_cost,
16351         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
16352         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
16353         vectorizable_operation, vectorizable_type_demotion,
16354         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
16355         vectorizable_condition): Likewise.
16356         (vect_analyze_operations): Split into vect_analyze_loop_operations
16357         and ...
16358         (vect_analyze_stmt): ... new function.
16359         (new_stmt_vec_info): Use new names.
16360         (vect_is_simple_use): Use new names and fix comment.
16361         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
16362         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
16363
16364 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16365
16366         PR target/39911
16367         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
16368         and integer modes for x87 operands.  Do not ICE for unsupported size,
16369         generate error instead.  Generate error for unsupported operand types.
16370         ['z']: Do not handle HImode memory operands specially.  Warning
16371         for floating-point operands.  Fallthru to 'Z' for unsupported operand
16372         types.  Do not ICE for unsupported size, generate error instead.
16373         (output_387_binary_op): Use %Z to output operands.
16374         (output_fp_compare): Ditto.
16375         (output_387_reg_move): Ditto.
16376
16377 2009-04-28  Ben Elliston  <bje@au.ibm.com>
16378
16379         PR c++/35652
16380         Revert:
16381
16382         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16383
16384         * builtins.c (c_strlen): Do not warn here.
16385         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
16386         * c-common.c (pointer_int_sum): Take an explicit location.
16387         Warn about offsets out of bounds.
16388         * c-common.h (pointer_int_sum): Adjust declaration.
16389
16390 2009-04-27  Ian Lance Taylor  <iant@google.com>
16391
16392         * collect2.c (is_ctor_dtor): Change type of ret field in struct
16393         names to symkind.
16394         * dce.c (run_fast_df_dce): Change type of old_flags to int.
16395         * df-core.c (df_set_flags): Change return type to int.  Change
16396         type of old_flags to int.
16397         (df_clear_flags): Likewise.
16398         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
16399         (df_get_conditional_uses): Likewise.
16400         * df.h (df_set_flags, df_clear_flags): Update declarations.
16401         * dwarf2out.c (struct indirect_string_node): Change type of form
16402         field to enum dwarf_form.
16403         (AT_string_form): Change return type to enum dwarf_form.
16404         * fixed-value.c (fixed_compare): Add cast to enum type.
16405         * fwprop.c (update_df): Change 0 to VOIDmode.
16406         * gensupport.c: Change 0 to UNKNOWN.
16407         * gimple.h (gimple_cond_code): Add cast to enum type.
16408         * haifa-sched.c (reemit_notes): Add cast to enum type.
16409         * hooks.c (hook_int_void_no_regs): Remove function.
16410         * hooks.h (hook_int_void_no_regs): Remove declaration.
16411         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
16412         * predict.c (combine_predictions_for_insn): Add casts to enum type.
16413         * real.c (real_arithmetic): Add cast to enum type.
16414         (real_compare): Likewise.
16415         * target.h (struct gcc_target): Change return type of
16416         branch_target_register_class to enum reg_class.
16417         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
16418         default_branch_target_register_class.
16419         * targhooks.c (default_branch_target_register_class): New function.
16420         * targhooks.h (default_branch_target_register_class): Declare.
16421         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
16422         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
16423         cast to int.
16424         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
16425         ERROR_MARK.
16426         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
16427         vect_uninitialized_def.  Change 0 to ERROR_MARK.
16428         * tree-vect-stmts.c (supportable_widening_operation): Don't
16429         initialize icode1 and icode2.
16430         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
16431         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
16432         and to STD_C89.
16433         (cmn_err_flag_specs): Change 0 to STD_C89.
16434         (cmn_err_char_table): Likewise.
16435         * config/arm/arm.c (get_arm_condition_code): Change type of code
16436         to enum arm_cond_code.
16437         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
16438         (IWMMXT_BUILTIN2): Likewise.
16439         (neon_builtin_type_bits): Don't define typedef.
16440         (neon_builtin_datum): Change type of bits field to int.
16441         (arm_expand_neon_args): Add cast to enum type.
16442         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
16443         TLS_MODEL_NONE.
16444         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
16445         casts to enum type.
16446         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
16447         MIPS_FP_COND_f.
16448         * config/mips/mips.md (jal_macro): Return enum constant.
16449         (single_insn): Likewise.
16450         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
16451         CODE_FOR_nothing.
16452         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
16453         casts to enum type.
16454         * config/s390/s390.c (s390_tune_flags): Change type to int.
16455         (s390_arch_flags): Likewise.
16456         (s390_handle_arch_option): Change flags field of struct pta to int.
16457         * config/s390/s390.h (s390_tune_flags): Update declaration.
16458         (s390_arch_flags): Likewise.
16459         * config/sh/sh.c (prepare_move_operands): Compare
16460         tls_symbolic_operand result with enum constant.
16461         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
16462         (sh_expand_prologue): Add cast to enum type.
16463         (sh_expand_epilogue): Likewise.
16464         (tls_symbolic_operand): Change return type to enum tls_model.
16465         (fpscr_set_from_mem): Add cast to enum type.
16466         (legitimize_pic_address): Compare tls_symbolic_operand result with
16467         enum constant.
16468         (sh_target_reg_class): Change return type to enum reg_class.
16469         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
16470         PROCESSOR_xxx.
16471         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
16472         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
16473         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
16474         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
16475         (delayed_branch, tls_call_delay): Likewise.
16476         (eligible_for_sibcall_delay): Likewise.
16477         (eligible_for_return_delay): Likewise.
16478         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
16479         (spu_expand_builtin_1): Likewise.
16480
16481         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
16482         for all types of conversions.
16483         (output_init_element): Issue -Wc++-compat warning if needed when
16484         initializing a bitfield with enum type.
16485         * c-parser.c (c_parser_expression): Set original_type to
16486         original_type of right hand operand of comma operator.
16487
16488 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16489
16490         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
16491         grammar nits.
16492         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
16493         * doc/cpp.texi (Standard Predefined Macros)
16494         (Implementation-defined behavior): Likewise.
16495         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
16496         * doc/gimple.texi (GIMPLE Exception Handling)
16497         (@code{GIMPLE_ASSIGN}): Likewise.
16498         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
16499         * doc/invoke.texi (Warning Options, Optimize Options)
16500         (AVR Options, Darwin Options): Likewise.
16501         (Optimize Options): Reformulate -fwhole-program description.
16502         * doc/loop.texi (Lambda): Likewise.
16503         * doc/md.texi (Output Template, Define Constraints)
16504         (Standard Names, Insn Splitting): Likewise.
16505         * doc/options.texi (Option properties): Likewise.
16506         * doc/passes.texi (Tree-SSA passes): Likewise.
16507         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
16508         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
16509         (File Names and DBX): Likewise.
16510         * doc/trouble.texi (Incompatibilities): Likewise.
16511
16512 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16513
16514         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
16515         instruction is correct.
16516
16517 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16518
16519         Allow non-constant arguments to conversion intrinsics.
16520         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
16521         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
16522         * spu.c (print_operand): Handle 'v' and 'w'.
16523         (exp2_immediate_p, spu_gen_exp2): Define.
16524         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
16525         spu_convtf_1): Update parameter descriptions.
16526         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
16527         * constraints.md ('v', 'w'): New.
16528         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
16529         Remove.
16530         (i2f, I2F): New define_mode_attr.
16531         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
16532         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
16533         fixuns_truncv4sfv4si2):  Update to use mode attribute.
16534         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
16535         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
16536         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
16537         patterns for combine.
16538
16539 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
16540
16541         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
16542         (cprop, hoist, pre, store_motion): New debug counters.
16543         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
16544         is not an RTL pass anymore.
16545         (pass_profiling): Remove extern decl for pass removed in 2005.
16546         (pass_gcse, pass_jump_bypass): Remove.
16547         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
16548         to 0 for clean state.
16549         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
16550         * cse.c (gate_handle_cse_after_global_opts,
16551         rest_of_handle_cse_after_global_opts): New functions.
16552         (pass_cse_after_global_opts): New pass, does local CSE.
16553         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
16554         (TV_CPROP): New timevar.
16555         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
16556         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
16557         (gcse_main, recompute_all_luids): Remove.
16558         (compute_hash_table_work): Call max_reg_num instead of reading
16559         max_gcse_regno.
16560         (cprop_jump): Don't set run_jump_opt_after_gcse.
16561         (constprop_register): Always allow to alter jumps.
16562         (cprop_insn): Likewise.
16563         (do_local_cprop): Likewise.
16564         (local_cprop_pass): Likewise.  Return non-zero if something changed.
16565         (cprop): Remove function, fold interesting bits into one_cprop_pass.
16566         (find_implicit_sets): Add note about missed optimization opportunity.
16567         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
16568         pass_rtl_cprop execute function.
16569         Don't bother tracking the pass number, each pass gets its own dumpfile
16570         now anyway.
16571         Always allow to alter jumpsand bypass jumps.
16572         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
16573         will just find no suitable set.
16574         (pre_edge_insert): Fix dumping, this function is for PRE only.
16575         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
16576         pass_rtl_pre execute function.
16577         (hoist_code): Return non-zero if something changed.  Keep track of
16578         substitutions and insertions for statistics gathering similar to PRE.
16579         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
16580         called from the pass_rtl_hoist execute function.  Show pass statistics.
16581         (compute_store_table): Use max_reg_num directly instead of using the
16582         formerly global max_gcse_regno.
16583         (build_store_vectors): Likewise.
16584         (replace_store_insn): Fix dumping.
16585         (store_motion): Rename to ...
16586         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
16587         pass, called from the pass_rtl_store_motion execute function.  Keep
16588         track of substitutions and insertions for statistics gathering similar
16589         to PRE.
16590         (bypass_jumps): Remove, fold interesting bits into ...
16591         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
16592         from the pass_rtl_cprop execute function.
16593         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
16594         pass_jump_bypass): Remove.
16595         (gate_handle_gcse, rest_of_handle_gcse): Remove.
16596         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
16597         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
16598         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
16599         (gate_rtl_store_motion, execute_rtl_store_motion,
16600         pass_rtl_store_motion): New.
16601         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
16602         make it clear that -fcse-skip-blocks is a no-op for backward compat.
16603         * passes.c (init_optimization_passes): Remove pass_gcse and
16604         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
16605         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
16606         instead of pass_jump_bypass.
16607
16608 2009-04-27  Richard Guenther  <rguenther@suse.de>
16609
16610         PR middle-end/39928
16611         * gimplify.c (gimplify_expr): If we are required to create
16612         a temporary make sure it ends up as register.
16613
16614 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
16615
16616         PR target/39903
16617         * config/i386/i386.c (construct_container): Don't call
16618         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
16619         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
16620
16621 2009-04-27  Michael Matz  <matz@suse.de>
16622
16623         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
16624         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
16625         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
16626         (dump_replaceable_exprs): Take a bitmap.
16627         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
16628         array.
16629         (expand_gimple_basic_block): Likewise.
16630         * tree-ssa-ter.c (struct temp_expr_table_d): Make
16631         replaceable_expressions member a bitmap.
16632         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
16633         (mark_replaceable): Likewise.
16634         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
16635         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
16636
16637 2009-04-27  Richard Guenther  <rguenther@suse.de>
16638
16639         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
16640         (verify_stmts): Dispatch to gimple/type verification code.
16641         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
16642         issue with call argument types.
16643
16644 2009-04-27  Michael Matz  <matz@suse.de>
16645
16646         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
16647         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
16648         to above.
16649
16650 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
16651             Eric Botcazou  <ebotcazou@adacore.com>
16652
16653         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
16654         a label's basic block.
16655         (mark_target_live_regs): Tidy and rework obsolete comments.
16656         Change back DF problem to LIVE.  If a label starts a basic block,
16657         assume that all registers that used to be live then still are.
16658         (init_resource_info): If a label starts a basic block, set its
16659         BLOCK_FOR_INSN accordingly.
16660         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
16661
16662 2009-04-27  Richard Guenther  <rguenther@suse.de>
16663
16664         * tree-flow-inline.h (function_ann): Remove.
16665         (get_function_ann): Likewise.
16666         * tree-dfa.c (create_function_ann): Remove.
16667         * tree-flow.h (struct static_var_ann_d): Remove.
16668         (struct function_ann_d): Likewise.
16669         (union tree_ann_d): Remove fdecl member.
16670         (function_ann_t): Remove.
16671         (function_ann, get_function_ann, create_function_ann): Remove
16672         declarations.
16673
16674 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
16675
16676         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
16677
16678 2009-04-27  Jan Hubicka  <jh@suse.cz>
16679
16680         * ipa-pure-const.c (struct funct_state_d): New fields
16681         state_previously_known, looping_previously_known; remove
16682         state_set_in_source.
16683         (analyze_function): Use new fields.
16684         (propagate): Avoid assumption that state_set_in_source imply
16685         nonlooping.
16686
16687         * tree-ssa-loop-niter.c (finite_loop_p): New function.
16688         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
16689         * cfgloop.h (finite_loop_p): Declare.
16690
16691 2009-04-26  Michael Matz  <matz@suse.de>
16692
16693         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
16694
16695 2009-04-26  Michael Matz  <matz@suse.de>
16696
16697         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
16698         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
16699         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
16700         pass_mark_used_blocks): Remove.
16701         * tree-optimize.c (pass_free_datastructures,
16702         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
16703         * passes.c (init_optimization_passes): Don't call
16704         pass_mark_used_blocks, remove dead code.
16705
16706 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
16707
16708         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
16709         * tree-ssa-live.h (register_ssa_partition): Likewise.
16710
16711 2009-04-26  Michael Matz  <matz@suse.de>
16712
16713         Expand from SSA.
16714         * builtins.c (fold_builtin_next_arg): Handle SSA names.
16715         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
16716         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
16717         SSA names.
16718         (compare_pairs): Swap cost comparison.
16719         (coalesce_ssa_name): Don't use change_partition_var.
16720         * tree-nrv.c (struct nrv_data): Add modified member.
16721         (finalize_nrv_r): Set it.
16722         (tree_nrv): Use it to update statements.
16723         (pass_nrv): Require PROP_ssa.
16724         * tree-mudflap.c (mf_decl_cache_locals,
16725         mf_build_check_statement_for): Use make_rename_temp.
16726         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
16727         * alias.c (find_base_decl): Handle SSA names.
16728         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
16729         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
16730         * rtl.h (set_reg_attrs_for_parm): Declare.
16731         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
16732         to "optimized", remove unused locals at finish.
16733         (execute_free_datastructures): Make global, call
16734         delete_tree_cfg_annotations.
16735         (execute_free_cfg_annotations): Don't call
16736         delete_tree_cfg_annotations.
16737
16738         * ssaexpand.h: New file.
16739         * expr.c (toplevel): Include ssaexpand.h.
16740         (expand_assignment): Handle SSA names the same as register variables.
16741         (expand_expr_real_1): Expand SSA names.
16742         * cfgexpand.c (toplevel): Include ssaexpand.h.
16743         (SA): New global variable.
16744         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
16745         (SSAVAR): New macro.
16746         (set_rtl): New helper function.
16747         (add_stack_var): Deal with SSA names, use set_rtl.
16748         (expand_one_stack_var_at): Likewise.
16749         (expand_one_stack_var): Deal with SSA names.
16750         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
16751         before unique numbers.
16752         (expand_stack_vars): Use set_rtl.
16753         (expand_one_var): Accept SSA names, add asserts for them, feed them
16754         to above subroutines.
16755         (expand_used_vars): Expand all partitions (without default defs),
16756         then only the local decls (ignoring those expanded already).
16757         (expand_gimple_cond): Remove edges when jumpif() expands an
16758         unconditional jump.
16759         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
16760         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
16761         SSA name.
16762         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
16763         members of SA; deal with PARM_DECL partitions here; expand
16764         all PHI nodes, free tree datastructures and SA.  Commit instructions
16765         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
16766         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
16767         info and statements at start, collect garbage at finish.
16768         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
16769         (VAR_ANN_PARTITION) Remove.
16770         (change_partition_var): Don't declare.
16771         (partition_to_var): Always return SSA names.
16772         (var_to_partition): Only accept SSA names.
16773         (register_ssa_partition): Only check argument.
16774         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
16775         member.
16776         (delete_var_map): Don't free it.
16777         (var_union): Only accept SSA names, simplify.
16778         (partition_view_init): Mark only useful SSA names as used.
16779         (partition_view_fini): Only deal with SSA names.
16780         (change_partition_var): Remove.
16781         (dump_var_map): Use ssa_name instead of partition_to_var member.
16782         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
16783         basic blocks.
16784         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
16785         (struct _elim_graph): New member const_dests; nodes member vector of
16786         ints.
16787         (set_location_for_edge): New static helper.
16788         (create_temp): Remove.
16789         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
16790         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
16791         (new_elim_graph): Allocate const_dests member.
16792         (clean_elim_graph): Truncate const_dests member.
16793         (delete_elim_graph): Free const_dests member.
16794         (elim_graph_size): Adapt to new type of nodes member.
16795         (elim_graph_add_node): Likewise.
16796         (eliminate_name): Likewise.
16797         (eliminate_build): Don't take basic block argument, deal only with
16798         partition numbers, not variables.
16799         (get_temp_reg): New static helper.
16800         (elim_create): Use it, deal with RTL temporaries instead of trees.
16801         (eliminate_phi): Adjust all calls to new signature.
16802         (assign_vars, replace_use_variable, replace_def_variable): Remove.
16803         (rewrite_trees): Only do checking.
16804         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
16805         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
16806         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
16807         contains_tree_r, MAX_STMTS_IN_LATCH,
16808         process_single_block_loop_latch, analyze_edges_for_bb,
16809         perform_edge_inserts): Remove.
16810         (expand_phi_nodes): New global function.
16811         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
16812         functions, initialize new parameter, remember partitions having a
16813         default def.
16814         (finish_out_of_ssa): New global function.
16815         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
16816         don't reset in_ssa_p here, don't disable TER when mudflap.
16817         (pass_del_ssa): Remove.
16818         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
16819         partition members.
16820         (execute_free_datastructures): Declare.
16821         * Makefile.in (SSAEXPAND_H): New variable.
16822         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
16823         * basic-block.h (commit_one_edge_insertion): Declare.
16824         * passes.c (init_optimization_passes): Move pass_nrv and
16825         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
16826         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
16827         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
16828         (redirect_branch_edge): Deal with super block when expanding, split
16829         out jump patching itself into ...
16830         (patch_jump_insn): ... here, new static helper.
16831
16832 2009-04-26  Michael Matz  <matz@suse.de>
16833
16834         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
16835         beyond num_ssa_names.
16836         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
16837         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
16838
16839 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
16840
16841         PR inline-asm/39543
16842         * fwprop.c (forward_propagate_asm): New function.
16843         (forward_propagate_and_simplify): Propagate also into __asm, if it
16844         doesn't increase the number of referenced registers.
16845
16846         PR c/39889
16847         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
16848
16849 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
16850
16851         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
16852         note_nonlocal_vla_type for nonlocal VLAs.
16853         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
16854         contains_remapped_vars, remap_vla_decls): New functions.
16855         (convert_nonlocal_reference_stmt): If not optimizing, call
16856         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
16857         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
16858         if it wasn't found in var_map.
16859         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
16860         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
16861         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
16862         declare_vars.
16863         * gimplify.c (nonlocal_vlas): New variable.
16864         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
16865         referenced VLAs.
16866         (gimplify_body): Create and destroy nonlocal_vlas.
16867
16868         * dwarf2out.c (loc_descr_plus_const): New function.
16869         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
16870         mem_loc_descriptor, loc_descriptor_from_tree_1,
16871         descr_info_loc, gen_variable_die): Use it.
16872
16873         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
16874         !TREE_STATIC VAR_DECLs.
16875         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
16876         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
16877         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
16878         DECL_BY_REFERENCE is valid.
16879         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
16880         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
16881         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
16882         Copy DECL_BY_REFERENCE.
16883         (struct nesting_copy_body_data): New type.
16884         (nesting_copy_decl): New function.
16885         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
16886         if they have variable length.
16887
16888 2009-04-26  Michael Matz  <matz@suse.de>
16889
16890         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
16891         mark new temporaries for renaming.
16892
16893 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
16894
16895         PR c/39581
16896         * c-decl.c (global_bindings_p): Return negative value.
16897         (c_variable_size): New.  Based on variable_size from
16898         stor-layout.c.
16899         (grokdeclarator): Call c_variable_size not variable_size.
16900
16901 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
16902
16903         * config/i386/i386.c (print_operand) ['z']: Fix typo.
16904
16905 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
16906
16907         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
16908         Redefine it to just use mingw/include.
16909         (ASM_SPEC): Rules for -m32 and -m64.
16910         (LINK_SPEC): Use Likewise.
16911         (SPEC_32): New define.
16912         (SPEC_64): Likewise.
16913         (SUB_LINK_SPEC): Likewise.
16914         (MULTILIB_DEFAULTS): New define.
16915         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
16916         Add multilib options.
16917         (MULTILIB_DIRNAMES): Likewise.
16918         (MULTILIB_OSDIRNAMES): Likewise.
16919         (LIBGCC): Likewise.
16920         (INSTALL_LIBGCC): Likewise.
16921
16922 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
16923
16924         PR c/39556
16925         * c-tree.h (enum c_inline_static_type): New.
16926         (record_inline_static): Declare.
16927         * c-decl.c (struct c_inline_static, c_inline_statics,
16928         record_inline_static, check_inline_statics): New.
16929         (pop_file_scope): Call check_inline_statics.
16930         (start_decl): Call record_inline_static instead of pedwarning
16931         directly for static in inline function.
16932         * c-typeck.c (build_external_ref): Call record_inline_static
16933         instead of pedwarning directly for static referenced in inline
16934         function.
16935
16936 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
16937
16938         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
16939         not new but only being rescanned.
16940         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
16941         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
16942         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
16943         record_set_info, compute_set, grealloc): Remove.
16944         (recompute_all_luids): New function.
16945         (gcse_main): Don't compute sets, and don't do related memory
16946         allocations/free-ing.  If something changed before the end of the
16947         pass, update LUIDs using recompute_all_luids.
16948         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
16949         (free_gcse_mem): Don't free it either.
16950         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
16951         Use the df insn LUIDs.
16952         (load_killed_in_block): Likewise.
16953         (compute_hash_table_work): Don't compute reg_set_in_block.
16954         (compute_transp): Use DF_REG_DEF_CHAINs.
16955         (local_cprop_pass): Don't use compute_sets and related functions.
16956         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
16957         Use get_max_uid() instead of max_cuid.
16958         (insert_insn_end_basic_block, pre_insert_copy_insn,
16959         update_ld_motion_stores): Don't try to
16960         keep reg_set tables up to date.
16961         (pre_insert_copies): Use df insn LUIDs.
16962         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
16963         (reg_set_info): Don't use extra bitmap argument.
16964         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
16965         information to compute regs_set_in_block.
16966         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
16967         (bypass_jumps): Don't use compute_sets and friends.
16968
16969 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16970
16971         PR testsuite/39710
16972         * opts.c (undocumented_msg): Do not leave blank even with
16973         ENABLE_CHECKING.
16974
16975 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
16976
16977         * c-decl.c (build_enumerator): Allow values folding to integer
16978         constants but not integer constant expressions with a pedwarn if
16979         pedantic.
16980
16981 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
16982
16983         PR c/39582
16984         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
16985         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
16986         type is an integer constant.
16987
16988 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
16989
16990         PR target/39897
16991         * config/i386/i386.c (print_operand) ['z']: Revert handling of
16992         HImode operands.
16993
16994 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
16995
16996         PR c/39564
16997         * c-decl.c (grokdeclarator): Diagnose declarations of functions
16998         with variably modified return type and no storage class
16999         specifiers, except for the case of nested functions.  Distinguish
17000         extern declarations of functions with variably modified return
17001         types from those of objects with variably modified types.
17002
17003 2009-04-25  Jan Hubicka  <jh@suse.cz>
17004
17005         * tree.c (list_equal_p): New function.
17006         * tree.h (list_equal_p): Declare.
17007         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17008         basic_block_def, basic_block, const_basic_block): New.
17009         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
17010         (redirect_eh_edge): New function.
17011         (make_eh_edge_update_phi): EH edges are not abnormal.
17012         * except.c: Include tree-flow.h.
17013         (list_match): New function.
17014         (eh_region_replaceable_by_p): New function.
17015         (replace_region): New function.
17016         (hash_type_list): New function.
17017         (hash_eh_region): New function.
17018         (eh_regions_equal_p): New function.
17019         (merge_peers): New function.
17020         (remove_unreachable_regions): Verify EH tree when checking;
17021         merge peers.
17022         (copy_eh_region_1): New function.
17023         (copy_eh_region): New function.
17024         (push_reachable_handler): New function.
17025         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
17026         regions without label but with live RESX.
17027         * except.h (redirect_eh_edge_to_label): New.
17028         * tree-flow.h (redirect_eh_edge): New.
17029         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17030         basic_block_def, basic_block, const_basic_block): Remove.
17031         * Makefile.in (except.o): Add dependency on tree-flow.h
17032         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
17033         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
17034         Remove.
17035
17036 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
17037
17038         PR bootstrap/39645
17039         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
17040         on the destination of memcpy.
17041
17042 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
17043
17044         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
17045         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
17046         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
17047
17048 2009-04-25  Jan Hubicka  <jh@suse.cz>
17049
17050         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
17051         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
17052         to be reached by different label than left.
17053         (update_eh_edges): Update comment; remove edge_to_remove if possible
17054         and return true if suceeded.
17055         (cleanup_empty_eh): Accept sharing map; handle shared regions.
17056         (cleanup_eh): Compute sharing map.
17057         * except.c (remove_eh_handler_and_replace): Add argument if we should
17058         update regions.
17059         (remove_unreachable_regions): Update for label sharing.
17060         (label_to_region_map): Likewise.
17061         (get_next_region_sharing_label): New function.
17062         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
17063         prev_try pointers.
17064         (remove_eh_handler): Update.
17065         (remove_eh_region_and_replace_by_outer_of): New function.
17066         * except.h (struct eh_region): Add next_region_sharing_label.
17067         (remove_eh_region_and_replace_by_outer_of,
17068         get_next_region_sharing_label): Declare.
17069         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
17070
17071 2009-04-25  Jan Hubicka  <jh@suse.cz>
17072
17073         * tree-cfg.c (split_critical_edges): Split also edges where we can't
17074         insert code even if they are not critical.
17075
17076 2009-04-25  Jan Hubicka  <jh@suse.cz>
17077
17078         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17079         (gimple_can_remove_branch_p): EH edges won't remove branch by
17080         redirection.
17081         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
17082         updating of non-abnormal EH edges.
17083         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17084         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
17085         (split_critical_edges): Split also edges where emitting code on them
17086         will lead to splitting later.
17087
17088 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17089             H.J. Lu  <hongjiu.lu@intel.com>
17090
17091         PR target/39590
17092         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
17093         the configured assembler supports fildq and fistpq mnemonics.
17094         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
17095         * configure: Regenerated.
17096         * config.in: Ditto.
17097
17098         * config/i386/i386.c (print_operand): Handle 'Z'.
17099         ['z']: Remove handling of special fild/fist suffixes.
17100         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
17101         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
17102         suffix of fild insn.
17103         (*floatsi<mode>2_vector_mixed): Ditto.
17104         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
17105         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
17106         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17107         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
17108         * config/i386/gas.h (GAS_MNEMONICS): Remove.
17109
17110 2009-04-25  Ben Elliston  <bje@au.ibm.com>
17111
17112         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
17113         the source of a set operation.
17114
17115 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
17116
17117         * target.h (struct gcc_target): Add case_values_threshold field.
17118         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
17119         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
17120         * targhooks.c (default_case_values_threshold): New function.
17121         * targhooks.h (default_case_values_threshold): Declare function.
17122         * stmt.c (expand_case): Use case_values_threshold target hook.
17123         * expr.h (case_values_threshold): Remove declartation.
17124         * expr.c (case_values_threshold): Remove function.
17125         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
17126
17127         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
17128         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17129         (avr_case_values_threshold): Declare as static.
17130         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
17131
17132         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
17133         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17134         (mn10300_case_values_threshold): New function.
17135
17136 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17137
17138         * ira.c (setup_cover_and_important_classes): Add enum cast.
17139
17140 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
17141
17142         * genpreds.c (write_enum_constraint_num): Output definition of
17143         CONSTRAINT_NUM_DEFINED_P macro.
17144         * ira.c (setup_cover_and_important_classes): Use
17145         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
17146
17147 2009-04-24  DJ Delorie  <dj@redhat.com>
17148
17149         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
17150         __SH2A_SINGLE_ONLY__ also.
17151
17152 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
17153
17154         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
17155         (movdf_internal): Ditto.
17156         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
17157         SFmode and DFmode constants.
17158         (ia64_print_operand): Add 'G' format for printing
17159         floating point constants.
17160
17161 2009-04-24  Richard Guenther  <rguenther@suse.de>
17162
17163         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
17164         from unsigned additions.
17165
17166 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
17167
17168         * c-typeck.c (set_init_index): Allow array designators that are
17169         not integer constant expressions with a pedwarn if pedantic.
17170
17171 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17172
17173         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
17174         zero if no overlap in nonzero bits between the operands.
17175
17176 2009-04-24  Ian Lance Taylor  <iant@google.com>
17177
17178         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
17179         (record_dead_and_set_regs): Likewise.
17180         * df.h (struct df_mw_hardreg): Change flags field to int.
17181         (struct df_base_ref): Likewise.
17182         (struct df): Change changeable_flags field to int.
17183         * df-scan.c (df_defs_record): Change clobber_flags to int.
17184         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
17185         constants rather than #define macros.
17186         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
17187         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
17188         (enum dwarf_calling_convention): Likewise.
17189         (enum dwarf_line_number_x_ops): Likewise.
17190         (enum dwarf_call_frame_info): Likewise.
17191         (enum dwarf_source_language): Likewise.
17192         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
17193         (add_calling_convention_attribute): Likewise.
17194         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
17195         (combine_comparisons): Change compcode to int.  Add cast to enum type.
17196         * genrecog.c (maybe_both_true_2): Change c to int.
17197         (write_switch): Likewise.  Add cast to enum type.
17198         * gimplify.c (gimplify_omp_for): Handle return values from
17199         gimplify_expr using MIN rather than bitwise or.
17200         (gimplify_expr): Add cast to enum type.
17201         * ipa-prop.c (update_jump_functions_after_inlining): Change
17202         IPA_BOTTOM to IPA_JF_UNKNOWN.
17203         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
17204         Add casts to enum type.
17205         (setup_cover_and_important_classes): Change cl to int.  Add casts
17206         to enum type.
17207         (setup_class_translate): Change cl and mode to int.
17208         (ira_init_once): Change mode to int.
17209         (free_register_move_costs): Likewise.
17210         (setup_prohibited_mode_move_regs): Add casts to enum type.
17211         * langhooks.c (add_builtin_function_common): Rework assertion that
17212         value fits bitfield.
17213         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
17214         * omega.c (omega_do_elimination): Avoid math on enum types.
17215         * optabs.c (expand_vec_shift_expr): Remove casts to int.
17216         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
17217         int local to handle integral_argment value.
17218         * regmove.c (try_auto_increment): Change PUT_MODE to
17219         PUT_REG_NOTE_KIND.
17220         * reload.c (push_secondary_reload): Add casts to enum type.
17221         (secondary_reload_class, find_valid_class): Likewise.
17222         * reload1.c (emit_input_reload_insns): Likewise.
17223         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
17224         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
17225         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
17226         constant.
17227         * tree.c (build_common_builtin_nodes): Add casts to enum type.
17228         * tree-complex.c (complex_lattice_t): Typedef to int rather than
17229         enum type.
17230         (expand_complex_libcall): Add casts to enum type.
17231         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
17232         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
17233         with ERROR_MARK, not NUM_TREE_CODES.
17234         (vect_create_epilog_for_reduction): Likewise.
17235         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
17236         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
17237         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
17238         enum machine_mode.
17239         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
17240         vect_unused_in_loop.  Change 0 to loop_vect.
17241         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
17242         * var-tracking.c (get_init_value): Change return type to enum
17243         var_init_status.
17244         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
17245         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
17246         arm_fp_model.
17247         (arm_override_options): Add casts to enum type.
17248         (arm_emit_tls_decoration): Likewise.
17249         * config/i386/i386.c (ix86_function_specific_restore): Add casts
17250         to enum type.
17251         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
17252         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
17253         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
17254         enum type.
17255         * config/s390/s390.c (code_for_builtin_64): Change to array of
17256         enum insn_code.
17257         (code_for_builtin_31): Likewise.
17258         (s390_expand_builtin): Change code_for_builtin to enum insn_code
17259         const *.
17260         * config/sparc/sparc.c (sparc_override_options): Change value
17261         field in struct code_model to enum cmodel.  In initializer change
17262         0 to NULL and add cast to enum type.
17263
17264         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
17265         Change all callers.  Issue a -Wc++-compat warning using
17266         lhs_origtype if necessary.
17267         (convert_for_assignment): Issue -Wc++-compat warnings about
17268         invalid conversions to enum type on assignment.
17269         * c-common.h (build_modify_expr): Update declaration.
17270
17271 2009-04-24  Nick Clifton  <nickc@redhat.com>
17272
17273         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
17274         (function_arg_advance): Likewise.
17275         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
17276         5th alternative.
17277
17278 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17279
17280         * config/s390/constraints.md ('I', 'J'): Fix condition.
17281
17282 2009-04-24  Diego Novillo  <dnovillo@google.com>
17283
17284         * gengtype-parse.c (parse_error): Add newline after message.
17285
17286 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17287
17288         * config/i386/sse.md (avxmodesuffixs): Removed.
17289         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
17290         (*avx_pinsr<ssevecsize>): This.
17291
17292 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17293
17294         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
17295         follow chains of regs with a single definition, and allow expressions
17296         that are function_invariant_p.
17297         (simple_rhs_p): Allow expressions that are function_invariant_p.
17298
17299 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
17300
17301         PR middle-end/39867
17302         * fold-const.c (fold_cond_expr_with_comparison): When folding
17303         > and >= to MAX, make sure the MAX uses the same type as the
17304         comparison's operands.
17305
17306 2009-04-24  Nick Clifton  <nickc@redhat.com>
17307
17308         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
17309         addressing for DImode accesses.
17310         (frv_print_operand_address): Handle PLUS case.
17311         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
17312
17313 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
17314
17315         PR rtl-optimization/39794
17316         * alias.c (canon_true_dependence): Add x_addr argument.
17317         * rtl.h (canon_true_dependence): Adjust prototype.
17318         * cse.c (check_dependence): Adjust canon_true_dependence callers.
17319         * cselib.c (cselib_invalidate_mem): Likewise.
17320         * gcse.c (compute_transp): Likewise.
17321         * dse.c (scan_reads_nospill): Likewise.
17322         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
17323         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
17324         canon_base_addr of the group, plus optional offset.
17325         (struct group_info): Rename canon_base_mem to
17326         canon_base_addr.
17327         (get_group_info): Set canon_base_addr to canon_rtx of base, not
17328         canon_rtx of base_mem.
17329
17330 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
17331
17332         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
17333         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
17334
17335 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17336
17337         * config/spu/spu-builtins.h: Delete file.
17338
17339         * config/spu/spu.h (enum spu_builtin_type): Move here from
17340         spu-builtins.h.
17341         (struct spu_builtin_description): Likewise.  Add GTY marker.
17342         Do not use enum spu_function_code or enum insn_code.
17343         (spu_builtins): Add extern declaration.
17344
17345         * config/spu/spu.c: Do not include "spu-builtins.h".
17346         (enum spu_function_code, enum spu_builtin_type_index,
17347         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
17348         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
17349         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
17350         unsigned_V2DI_type_node): Move here from spu-builtins.h.
17351         (spu_builtin_types): Make static.  Add GTY marker.
17352         (spu_builtins): Add extern declaration with GTY marker.
17353         Include "gt-spu.h".
17354
17355         * config/spu/spu-c.c: Do not include "spu-builtins.h".
17356         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
17357         Check programmatically whether all parameters are scalar.
17358
17359         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
17360
17361 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
17362
17363         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
17364         assignment from the constructor either if the target is volatile.
17365
17366 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
17367
17368         * config/arm/arm.md (insv): Do not share operands[0].
17369
17370 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
17371
17372         * config/vxlib-tls.c (active_tls_threads): Delete.
17373         (delete_hook_installed): New.
17374         (tls_delete_hook): Don't delete the delete hook.
17375         (tls_destructor): Delete it here.
17376         (__gthread_set_specific): Adjust installing the delete hook.
17377         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
17378         __gthread_leave_tsd_dtor_context.
17379
17380 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
17381
17382         * c-format.c (gcc_tdiag_char_table): Add support for %E.
17383
17384 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
17385
17386         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
17387         enum type.
17388         (alpha_rtx_costs): Ditto.
17389         (emit_unlikely_jump): Use add_reg_note.
17390         (emit_frame_store_1): Ditto.
17391         (alpha_expand_prologue): Ditto.
17392         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17393         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
17394
17395 2009-04-23  Nick Clifton  <nickc@redhat.com>
17396
17397         * config/v850/v850.md (epilogue): Remove suppressed code.
17398         (return): Rename to return_simple and remove test of frame size.
17399         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
17400         to gen_return_simple.
17401
17402 2009-04-22  Jing Yu  <jingyu@google.com>
17403
17404         PR testsuite/39781
17405         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
17406
17407 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17408
17409         PR C/31499
17410         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
17411         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
17412         value is a VECTOR_CST, the element type is the element type of the
17413         vector.
17414
17415 2009-04-22  DJ Delorie  <dj@redhat.com>
17416
17417         * config/m32c/m32c.h: Update GTY annotations to new syntax.
17418
17419 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
17420
17421         * alias.c (find_base_term): Move around LO_SUM case, so that
17422         CONST falls through into PLUS/MINUS handling.
17423
17424         PR c/39855
17425         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
17426         into 0, use omit_one_operand.
17427
17428 2009-04-23  Ben Elliston  <bje@au.ibm.com>
17429
17430         * config/rs6000/linux-unwind.h (get_regs): Remove type
17431         puns. Change the type of `pc' to an array of unsigned ints and
17432         update all users.  Constify frame24.
17433
17434 2009-04-22  DJ Delorie  <dj@redhat.com>
17435
17436         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
17437         declarations before code.
17438         (current_function_special_page_vector): Likewise.
17439         (m32c_expand_insv): Silence a warning.
17440
17441 2009-04-21  Taras Glek  <tglek@mozilla.com>
17442
17443         * alias.c: Update GTY annotations to new syntax.
17444         * basic-block.h: Likewise.
17445         * bitmap.h: Likewise.
17446         * c-common.h: Likewise.
17447         * c-decl.c: Likewise.
17448         * c-parser.c: Likewise.
17449         * c-pragma.c: Likewise.
17450         * c-tree.h: Likewise.
17451         * cfgloop.h: Likewise.
17452         * cgraph.h: Likewise.
17453         * config/alpha/alpha.c: Likewise.
17454         * config/arm/arm.h: Likewise.
17455         * config/avr/avr.h: Likewise.
17456         * config/bfin/bfin.c: Likewise.
17457         * config/cris/cris.c: Likewise.
17458         * config/darwin.c: Likewise.
17459         * config/frv/frv.c: Likewise.
17460         * config/i386/i386.c: Likewise.
17461         * config/i386/i386.h: Likewise.
17462         * config/i386/winnt.c: Likewise.
17463         * config/ia64/ia64.h: Likewise.
17464         * config/iq2000/iq2000.c: Likewise.
17465         * config/mips/mips.c: Likewise.
17466         * config/mmix/mmix.h: Likewise.
17467         * config/pa/pa.c: Likewise.
17468         * config/pa/pa.h: Likewise.
17469         * config/rs6000/rs6000.c: Likewise.
17470         * config/s390/s390.c: Likewise.
17471         * config/sparc/sparc.c: Likewise.
17472         * config/xtensa/xtensa.c: Likewise.
17473         * cselib.h: Likewise.
17474         * dbxout.c: Likewise.
17475         * dwarf2out.c: Likewise.
17476         * except.c: Likewise.
17477         * except.h: Likewise.
17478         * fixed-value.h: Likewise.
17479         * function.c: Likewise.
17480         * function.h: Likewise.
17481         * gimple.h: Likewise.
17482         * integrate.c: Likewise.
17483         * optabs.c: Likewise.
17484         * output.h: Likewise.
17485         * real.h: Likewise.
17486         * rtl.h: Likewise.
17487         * stringpool.c: Likewise.
17488         * tree-data-ref.c: Likewise.
17489         * tree-flow.h: Likewise.
17490         * tree-scalar-evolution.c: Likewise.
17491         * tree-ssa-address.c: Likewise.
17492         * tree-ssa-alias.h: Likewise.
17493         * tree-ssa-operands.h: Likewise.
17494         * tree.c: Likewise.
17495         * tree.h: Likewise.
17496         * varasm.c: Likewise.
17497         * varray.h: Likewise.
17498         * vec.h: Likewise.
17499         * coretypes.h: Do not define GTY macro if it is already defined.
17500         * doc/gty.texi: Update GTY documentation to new syntax.
17501         * gengtype-lex.l: Enforce attribute-like syntax for GTY
17502         annotations on structs.
17503         * gengtype-parse.c: Likewise.
17504
17505 2009-04-22  Mark Heffernan  <meheff@google.com>
17506
17507         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
17508
17509 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
17510
17511         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
17512         where appropriate.
17513
17514 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
17515
17516         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
17517         the same as a PLUS without a shift.  Increase the cost of a
17518         CONST_INT in MULT.
17519
17520 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17521
17522         * Makefile.in: Update dependencies.
17523         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
17524         * errors.h: Remove bogus comment about compatibility.
17525         (warning): Update declaration.
17526         * genautomata.c: Update all calls to warning.
17527         * gimple.c: Do not include errors.h. Include toplev.h.
17528         * tree-ssa-structalias.c: Do not include errors.h.
17529         * omega.c: Likewise.
17530         * tree-ssa-reassoc.c: Likewise.
17531         * config/spu/spu-c.c: Likewise.
17532         * config/spu/t-spu-elf: Update dependencies.
17533
17534 2009-04-22  Richard Guenther  <rguenther@suse.de>
17535
17536         PR tree-optimization/39824
17537         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
17538         make sure the types are compatible.
17539
17540 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17541
17542         PR c++/14875
17543         * c-common.c (c_parse_error): Take a token_flags parameter.
17544         Use token_type for the token type instead.
17545         Pass token_flags to cpp_type2name.
17546         * c-common.h (c_parse_error): Update declaration.
17547         * c-parser.c (c_parser_error): Pass 0 as token flags.
17548
17549 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
17550
17551         PR rtl-optimization/39580
17552         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
17553
17554 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17555
17556         * function.c (expand_function_end): Do not emit a jump to the "naked"
17557         return label for fall-through returns.
17558         * except.c (sjlj_emit_function_exit): Always place the call to the
17559         unregister function at the location installed by expand_function_end.
17560
17561 2009-04-22  Richard Guenther  <rguenther@suse.de>
17562
17563         PR tree-optimization/39845
17564         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
17565         (gen_inbound_check): Likewise.
17566
17567 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
17568
17569         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
17570         padding for PPC.
17571         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
17572         * config/vxlib.c (__gthread_once): Add race guard for PPC.
17573
17574 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17575
17576         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
17577         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
17578         shift counts to avoid out-of-bounds array accesses.
17579
17580 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17581
17582         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
17583         (Pmode): Move above.
17584
17585 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
17586
17587         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
17588         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
17589         GET_CODE macro.  Use IN_RANGE macro where appropriate.
17590         * config/alpha/alpha.h: Ditto.
17591         * config/alpha/alpha.md: Ditto.
17592         * config/alpha/constraints.md: Ditto.
17593         * config/alpha/predicates.md: Ditto.
17594
17595 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17596
17597         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
17598         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17599         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17600         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17601         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17602         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17603         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17604         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17605         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17606         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17607         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17608         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17609         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17610         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17611         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17612         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17613         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17614         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17615         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17616         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17617         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17618         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17619         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17620         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17621         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17622         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17623         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17624
17625 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
17626
17627         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
17628         references from comments.
17629         * cfgbuild.c: (count_basic_blocks): Delete.
17630         (find_basic_blocks_1): Delete.
17631         (find_basic_blocks): Delete.
17632         * except.c (finish_eh_generation): Make static.  Move comment from
17633         except.h here.  Remove find_basic_blocks references from comments.
17634         * except.h (finish_eh_generation): Delete.
17635         * basic-block.h (find_basic_blocks): Delete.
17636         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
17637
17638 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
17639
17640         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
17641         (sdbout_parms):  Likewise.
17642
17643 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
17644
17645         * config/sh/sh.c (prepare_cbranch_operands): Use
17646         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
17647         (expand_cbranchdi4): Likewise.
17648         (from_compare): Add cast to enum type.
17649         (expand_cbranchsi4): Use add_reg_note.
17650         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
17651         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
17652         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
17653         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17654         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
17655         instead of CODE_FOR_nothing.
17656         (cbranchdi4): Likewise.  Fix the order of arguments for
17657         gen_rtx_fmt_ee.
17658         (push_fpscr): Use add_reg_note.
17659         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
17660         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
17661
17662 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
17663
17664         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
17665         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
17666         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
17667         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
17668         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
17669         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
17670         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
17671         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
17672         config/alpha/x-vms, config/arc/t-arc,
17673         config/arm/README-interworking, config/arm/arm-c.c,
17674         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
17675         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
17676         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
17677         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
17678         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
17679         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
17680         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
17681         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
17682         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
17683         config/cris/t-elfmulti, config/crx/t-crx,
17684         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
17685         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
17686         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
17687         config/h8300/t-h8300, config/i386/athlon.md,
17688         config/i386/darwin-libgcc.10.4.ver,
17689         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
17690         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
17691         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
17692         config/i386/t-linux64, config/i386/t-nwld,
17693         config/i386/t-rtems-i386, config/i386/t-sol2-10,
17694         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
17695         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
17696         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
17697         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
17698         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
17699         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
17700         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
17701         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
17702         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
17703         config/m68k/t-uclinux, config/mcore/t-mcore,
17704         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
17705         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
17706         config/mips/crtn.asm, config/mips/irix-crti.asm,
17707         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
17708         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
17709         config/mips/mips-fixed.md, config/mips/sb1.md,
17710         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
17711         config/mips/t-iris6, config/mips/t-isa3264,
17712         config/mips/t-libgcc-mips16, config/mips/t-linux64,
17713         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
17714         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
17715         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
17716         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
17717         config/mn10300/t-linux, config/mn10300/t-mn10300,
17718         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
17719         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
17720         config/picochip/libgccExtras/clzsi2.asm,
17721         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
17722         config/rs6000/darwin-libgcc.10.4.ver,
17723         config/rs6000/darwin-libgcc.10.5.ver,
17724         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
17725         config/rs6000/t-aix43, config/rs6000/t-aix52,
17726         config/rs6000/t-darwin, config/rs6000/t-fprules,
17727         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
17728         config/rs6000/t-lynx, config/rs6000/t-netbsd,
17729         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
17730         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
17731         config/rs6000/t-rtems, config/rs6000/t-spe,
17732         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
17733         config/score/t-score-elf, config/sh/divcost-analysis,
17734         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
17735         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
17736         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
17737         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
17738         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
17739         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
17740         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
17741         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
17742         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
17743         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
17744         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
17745         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
17746         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
17747         limitx.h, version.c, xcoff.h: Add copyright and license notices.
17748         * config/h8300/genmova.sh: Include copyright and license notices
17749         in generated output.
17750         * config/h8300/mova.md: Regenerate.
17751         * doc/install.texi2html: Include word "Copyright" in copyright
17752         notice and use name "Free Software Foundation, Inc.".
17753         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
17754         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
17755         ChangeLog-2007, ChangeLog-2008: Correct dates.
17756
17757 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
17758
17759         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
17760         NE_EXPR operations as well.
17761         * c-parser.c (c_parser_condition): Do not set location information on
17762         the condition.
17763         (c_parser_conditional_expression): Likewise.
17764         (c_parser_binary_expression): Set location information on operators.
17765         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
17766         TRUTH_NOT_EXPR has been folded.
17767         * fold-const.c (fold_truth_not_expr): Copy location information from
17768         the incoming expression to the outgoing one.
17769         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
17770         recursive calls on the LHS of the operator but pass that of the
17771         operator to recursive calls on the RHS of the operator.  Set it
17772         on the COND_EXPR.
17773         (shortcut_cond_expr): Set the locus of the operator on the second
17774         COND_EXPR and that of the expression on the first in degenerate cases.
17775         Pass the locus of the expression to calls to shortcut_cond_r.
17776         Set the locus of the 'then' block on the associated jump, if any.
17777         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
17778         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
17779         expression to call to gimplify_boolean_expr.
17780
17781 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
17782
17783         * config.gcc: Add additional configuration for
17784         i686-w64-mingw* and x86_64-w64-mingw* triplet.
17785         * config/i386/mingw-w64.h: New mingw-w64 specific header.
17786         (CPP_SPEC): Redefine for allowing -municode option.
17787         (STARTFILE_SPEC): Likewise.
17788         * config/i386/t-mingw-w64: New.
17789         * config/i386/mingw-w64.opt: New.
17790         (municode): Add new target option.
17791         * doc/invoke.texi (municode): Add documentation for new option.
17792
17793 2009-04-21  Ian Lance Taylor  <iant@google.com>
17794
17795         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17796         Correct test for number of arguments.
17797         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
17798
17799 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
17800
17801         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
17802         argument of emit_library_call.
17803
17804 2009-04-21  Richard Guenther  <rguenther@suse.de>
17805
17806         PR middle-end/39829
17807         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
17808         inside VIEW_CONVERT_EXPRs.
17809
17810 2009-04-21  Martin Jambor  <mjambor@suse.cz>
17811
17812         * tree-switch-conversion.c (build_constructors): Split a long line.
17813         (constructor_contains_same_values_p): New function.
17814         (build_one_array): Create assigns of constants if possible, do not
17815         call mark_sym_for_renaming, call update_stmt.
17816         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
17817         make_rename_temp.  Do not call mark_symbols_for_renaming, call
17818         update_stmt.
17819         (gen_def_assigns): Do not call mark_symbols_for_renaming or
17820         find_new_referenced_vars, call update_stmt.
17821         (gen_inbound_check): Use create_tmp_var and create ssa names manually
17822         instead of calling make_rename_temp.  Do not call
17823         find_new_referenced_vars or mark_symbols_for_renaming, call
17824         update_stmt.
17825
17826 2009-04-21  Richard Guenther  <rguenther@suse.de>
17827
17828         PR tree-optimization/39827
17829         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
17830         (tree_ssa_phiprop): Pass the correct array size.
17831
17832 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
17833
17834         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
17835
17836 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17837
17838         PR 16202
17839         * c-typeck.c (lvalue_p): Move declaration ...
17840         * c-common.h (lvalue_p): ... to here.
17841         * c-common.c (candidate_equal_p): New.
17842         (add_tlist): Use it.
17843         (merge_tlist): Use it.
17844         (warn_for_collisions_1): Likewise.
17845         (warning_candidate_p): Accept more candidates.
17846         (verify_tree): A warning candidate can be an expression. Use
17847         candidate_equal_p.
17848
17849 2009-04-21  Ben Elliston  <bje@au.ibm.com>
17850
17851         PR target/5267
17852         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
17853         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
17854         options.  Remove -mcall-solaris documentation.
17855
17856 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17857
17858         PR c++/13358
17859         * doc/invoke.texi (-Wlong-long): Update description.
17860         * c-lex (interpret_integer): Only warn if there was no previous
17861         overflow and -Wlong-long is enabled.
17862         * c-decl.c (declspecs_add_type): Drop redundant flags.
17863         * c.opt (Wlong-long): Init to -1.
17864         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
17865         and front-end warn_long_long. Wlong-long only depends on other
17866         flags if it is uninitialized.
17867         * c-parser.c (disable_extension_diagnostics): warn_long_long is
17868         the same for CPP and FE.
17869         (restore_extension_diagnostics): Likewise.
17870
17871 2009-04-20  Ian Lance Taylor  <iant@google.com>
17872
17873         Fix enum conversions which are invalid in C++:
17874         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
17875         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
17876         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
17877         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
17878         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
17879         (dbxout_parms): Likewise.
17880         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
17881         (df_clear_flags): Likewise.
17882         * df-problems.c (df_rd_bb_local_compute_process_def): Change
17883         top_flag parameter to int.
17884         (df_chain_create_bb_process_use): Likewise.
17885         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
17886         Remove cast.
17887         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
17888         (df_ref_create_structure, df_def_record_1): Likewise.
17889         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
17890         (df_notes_rescan): Change 0 to VOIDmode in function call.
17891         (df_get_call_refs, df_insn_refs_collect): Likewise.
17892         (df_bb_regs_collect): Likewise.
17893         (df_entry_block_defs_collect): Likewise.
17894         (df_exit_block_uses_collect): Likewise.
17895         * df.h: Update declarations.
17896         * double-int.c (double_int_divmod): Add cast to enum type.
17897         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
17898         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
17899         (based_loc_descr): Likewise.
17900         (loc_descriptor_from_tree_1): Change first_op and second_op to
17901         enum dwarf_location_atom.  Add cast to enum type.
17902         * expmed.c (init_expmed): Change 0 to SET in function call.
17903         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
17904         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
17905         (do_store_flag): Likewise.
17906         * fixed-value.h (struct fixed_value): Change mode to enum
17907         machine_mode.
17908         * function.c (assign_parms): Change 0 to VOIDmode in function call.
17909         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
17910         function call.
17911         (insert_insn_decl, insert_decl, insert_state): Likewise.
17912         (automata_list_finish): Likewise.
17913         * genrecog.c (process_define_predicate): Add cast to enum type.
17914         * gensupport.c (init_predicate_table): Add cast to enum type.
17915         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
17916         function call.
17917         (gimple_build_call_1, gimple_build_label): Likewise.
17918         (gimple_build_goto, gimple_build_asm_1): Likewise.
17919         (gimple_build_switch_1, gimple_build_cdt): Likewise.
17920         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
17921         (enum fallback): Rename from enum fallback_t.
17922         (fallback_t): Typedef as int.
17923         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
17924         GSI_SAME_STMT in function call.
17925         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
17926         enum type.
17927         (setup_reg_class_relations): Likewise.
17928         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
17929         (setup_prohibited_class_mode_regs): Add cast to enum type.
17930         (setup_prohibited_mode_move_regs): Likewise.
17931         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
17932         (record_address_regs): Change i to enum reg_class.
17933         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
17934         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
17935         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
17936         (GET_MODE_2XWIDER_MODE): Likewise.
17937         (GET_CLASS_NARROWEST_MODE): Likewise.
17938         * omp-low.c (expand_omp_for): Add cast to enum type.
17939         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
17940         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
17941         * postreload.c (reload_cse_simplify_operands): Change rclass local
17942         to enum reg_class.
17943         * predict.c (combine_predictions_for_insn): Change best_predictor
17944         and predictor to enum br_predictor.
17945         (combine_predictions_for_bb): Likewise.
17946         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
17947         use SET_PREDICT_EXPR_OUTCOME.
17948         * real.c (real_arithmetic): Change icode to code in function call.
17949         * reginfo.c (init_move_cost): Add casts to enum type.
17950         (init_reg_sets_1, init_fake_stack_mems): Likewise.
17951         * regmove.c (regclass_compatible_p): Change class0 and class1 to
17952         enum reg_class.
17953         * reload.c (find_valid_class): Add casts to enum type.
17954         (push_reload): Change 0 to NO_REGS in function call.
17955         (find_reloads): Change this_alternative to array of enum
17956         reg_class.  Remove some now-unnecessary casts.
17957         (make_memloc): Change 0 to VOIDmode in function call.
17958         * reload1.c (reload): Change 0 to VOIDmode in function call.
17959         (eliminate_regs_1, elimination_effects): Likewise.
17960         (eliminate_regs_in_insn): Likewise.
17961         (emit_input_reload_insns): Add cast to enum type.
17962         (delete_output_reload): Change 0 to VOIDmode in function call.
17963         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
17964         to enum type in function call.
17965         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
17966         (SET_PREDICT_EXPR_OUTCOME): Define.
17967         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
17968         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
17969         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
17970         (dump_function): Likewise.
17971         * tree-dump.h: Update declarations.
17972         * tree-pass.h: Update declarations.
17973         * varasm.c (assemble_integer): Change mclass to enum mode_class.
17974         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
17975         enum type.
17976         (arm_rtx_costs_1): Correct parenthesization.
17977         (arm_rtx_costs): Add casts to enum type.
17978         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
17979         (vfp_emit_fstmd): Use add_rg_note.
17980         (emit_multi_reg_push, emit_sfm): Likewise.
17981         (thumb_set_frame_pointer): Likewise.
17982         (arm_expand_prologue): Likewise.
17983         (arm_regno_class): Change return type to enum reg_class.
17984         (thumb1_expand_prologue): Use add_reg_note.
17985         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
17986         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
17987         in function call.
17988         * config/arm/gentune.sh: Add cast to enum type.
17989         * config/arm/arm-tune.md: Rebuild.
17990         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
17991         (ix86_split_fp_branch, predict_jump): Likewise.
17992         (ix86_expand_multi_arg_builtin): Change sub_code from enum
17993         insn_code to enum rtx_code.
17994         (ix86_builtin_vectorized_function): Add cast to enum type.
17995         * config/i386/i386.md (truncdfsf2): Change slot to enum
17996         ix86_stack_slot.
17997         (truncxf<mode>2, isinf<mode>2): Likewise.
17998         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
17999         enum type.
18000         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
18001         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
18002         (insert_bundle_state): Change 1 to INSERT in function call.
18003         (ia64_add_bundle_selector_before): Likewise.
18004         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
18005         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
18006         (restore_stack_nonlocal): Likewise.
18007         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
18008         function call.
18009         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
18010         function call.
18011         (mips_rtx_costs): Likewise.
18012         (mips_override_options): Add casts to enum type.
18013         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
18014         in function call.
18015         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
18016         (store_reg, set_reg_plus_d): Likewise.
18017         (hppa_expand_prologue, hppa_profile_hook): Likewise.
18018         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
18019         cast to enum type.
18020         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
18021         function call.
18022         (emit_unlikely_jump): Use add_reg_note.
18023         (rs6000_emit_allocate_stack): Likewise.
18024         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
18025         (output_toc): Change 1 to INSERT in function call.
18026         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
18027         (rs6000_initialize_trampoline): Likewise.
18028         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
18029         function call.
18030         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
18031         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
18032         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
18033         (save_gprs): Use add_reg_note.
18034         (s390_emit_prologue): Likewise.
18035         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18036         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
18037         (sparc_fold_builtin): Add cast to enum type.
18038         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
18039         enum insn_code.
18040         (spu_expand_prologue): Use add_reg_note.
18041         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
18042
18043 2009-04-20  Ian Lance Taylor  <iant@google.com>
18044
18045         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
18046         (c_parser_postfix_expression_after_primary): Get VEC for list of
18047         arguments.  Get original types of arguments.  Call
18048         build_function_call_vec.
18049         (cached_expr_list_1, cached_expr_list_2): New static variables.
18050         (c_parser_expr_list): Change return type to VEC *.  Add
18051         p_orig_types parameter.  Change all callers.
18052         (c_parser_release_expr): New static function.
18053         (c_parser_vec_to_tree_list): New static function.
18054         * c-typeck.c (build_function_call): Rewrite to build a VEC and
18055         call build_function_call_vec.
18056         (build_function_call_vec): New function, based on old
18057         build_function_call.
18058         (convert_arguments): Remove nargs and argarray parameters.  Change
18059         values to a VEC.  Add origtypes parameter.
18060         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
18061         (convert_for_assignment): Add origtype parameter.  Change all
18062         callers.  If warn_cxx_compat, check for conversion to an enum
18063         type when calling a function.
18064         (store_init_value): Add origtype parameter.  Change all callers.
18065         (digest_init): Likewise.
18066         (struct init_node): Add origtype field.
18067         (add_pending_init): Add origtype parameter.  Change all callers.
18068         (output_init_element): Likewise.
18069         (output_pending_init_elements): Pass origtype from init_node to
18070         output_init_element.
18071         (process_init_element): Pass origtype from c_expr to
18072         output_init_element.
18073         (c_finish_return): Add origtype parameter.  Change all callers.
18074         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
18075         caller.
18076         (sync_resolve_params): Likewise.
18077         (sync_resolve_return): Change params to first_param.  Change caller.
18078         (resolve_overloaded_builtins): Change params to VEC *.  Change
18079         callers.  Save first parameter around call to build_function_call_vec.
18080         * c-decl.c (finish_decl): Add origtype parameter.  Change all
18081         callers.  Call build_function_call_vec rather than
18082         build_function_call for cleanup.
18083         * c-tree.h: Update declarations.
18084         * c-common.h: Update declarations.
18085         * stub-objc.c (objc_rewrite_function_call): Change parameter from
18086         params to first_param.
18087         * target.h (struct gcc_target): Change resolve_overloaded_builtin
18088         params parameter from tree to void *.
18089         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18090         Change arglist parameter to have type void *, and to be a pointer
18091         to a VEC.
18092         * config/rs6000/rs6000-protos.h
18093         (altivec_resolve_overloaded_builtin): Update declaration.
18094         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
18095         fnargs parameter to have type void *, and to be a pointer to a
18096         VEC.  Call build_function_call_vec instead of
18097         build_function_call.
18098         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
18099
18100 2009-04-20  Joey Ye  <joey.ye@intel.com>
18101             Xuepeng Guo  <xuepeng.guo@intel.com>
18102             H.J. Lu  <hongjiu.lu@intel.com>
18103
18104         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
18105
18106         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
18107         (IX86_LEA_PRIORITY): Likewise.
18108         (distance_non_agu_define): New function.
18109         (distance_agu_use): Likewise.
18110         (ix86_lea_for_add_ok): Likewise.
18111         (ix86_dep_by_shift_count): Likewise.
18112
18113         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
18114         should split for LEA.
18115
18116         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
18117         function.
18118         (ix86_dep_by_shift_count): Likewise.
18119
18120 2009-04-20  Richard Guenther  <rguenther@suse.de>
18121
18122         * expr.c (handled_component_p): Move ...
18123         * tree.h (handled_component_p): ... here.
18124         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
18125         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
18126         and REALPART_EXPR to be in one group.
18127
18128 2009-04-20  Richard Guenther  <rguenther@suse.de>
18129
18130         * basic-block.h (get_all_dominated_blocks): Declare.
18131         * dominance.c (get_all_dominated_blocks): New function.
18132         * tree-cfg.c (get_all_dominated_blocks): Remove.
18133         (remove_edge_and_dominated_blocks): Adjust.
18134         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
18135         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
18136         instead of recursing.
18137
18138 2009-04-20  Doug Kwan  <dougkwan@google.com>
18139
18140         * cgraph.h (cgraph_node_ptr): New type for vector functions.
18141         (struct cgraph_node_set_def): New type.
18142         (cgraph_node_set) New type. Also declare vector functions.
18143         (struct cgraph_node_set_element_def): New type.
18144         (cgraph_node_set_element): Ditto.
18145         (cgraph_node_set_iterator): New iterator type.
18146         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
18147         cgraph_node_set_remove, dump_cgraph_node_set,
18148         debug_cgraph_node_set): New prototypes.
18149         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
18150         cgraph_node_set_size): New inlines.
18151         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
18152         including cgraph.h.
18153         (struct ipa_opt_pass): Add struct cgraph_node_set_def
18154         argument to function 'write_summary'.
18155         * ipa.c: Include ggc.h.
18156         (hash_cgraph_node_set_element,
18157         eq_cgraph_node_set_element, cgraph_node_set_new,
18158         cgraph_node_set_add, cgraph_node_set_remove,
18159         cgraph_node_set_find, dump_cgraph_node_set,
18160         debug_cgraph_node_set): New functions.
18161         * Makefile.in (ipa.o): Add dependency on GGC_H.
18162
18163 2009-04-20  Ira Rosen  <irar@il.ibm.com>
18164
18165         PR tree-optimization/39675
18166         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
18167         check of the return code of vect_schedule_slp. Check that
18168         stmt_vec_info still exists for the statement, before checking its
18169         vectorization type.
18170
18171 2009-04-20  Michael Matz  <matz@suse.de>
18172
18173         * Makefile.in (generated_files): Take out $(simple_generated_c).
18174
18175 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
18176
18177         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
18178         (UINTPTR_TYPE):  Likewise.
18179
18180 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18181
18182         PR c/37481
18183         * c-typeck.c (digest_init): Check for initializing an array with a
18184         string literal.
18185
18186 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18187
18188         PR c/19771
18189         * c-semantics.c (pop_stmt_list): Propagate
18190         STATEMENT_LIST_HAS_LABEL to parent statement list.
18191
18192 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
18193
18194         * config/mips/mips.h (mips_tune_attr): New macro.
18195         * config/mips/mips.md (cpu): Use it.
18196
18197 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18198
18199         PR c/38243
18200         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
18201         declaring a tag.
18202
18203 2009-04-19  Diego Novillo  <dnovillo@google.com>
18204
18205         * toplev.c (compile_file): Move call to coverage_finish ...
18206         * cgraphunit.c (ipa_passes): ... here.
18207         Call cgraph_process_new_functions.
18208         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
18209         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
18210
18211 2009-04-19  Jan Hubicka  <jh@suse.cz>
18212
18213         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
18214         cfun.
18215         (dump_cgraph_node): Dump can throw external flag.
18216         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
18217
18218 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18219
18220         PR c/32061
18221         PR c++/36954
18222         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
18223         * common.opt (Wlogical-op): Move from here...
18224         * c.opt (Wlogical-op): ... to here.
18225         * c-typeck.c (parser_build_binary_op): Update call to
18226         warn_logical_operator.
18227         * c-opts.c (c_common_post_options): Enable warn_logical_op with
18228         extra_warnings.
18229         * c-common.c (warn_logical_op): Update.
18230         * c-common.h (warn_logical_op): Update declaration.
18231
18232 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
18233
18234         * tree.c (protected_set_expr_location): Fix formatting.
18235
18236 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18237
18238         PR c/27676
18239         * c-typeck.c (readonly_warning): new.
18240         (build_unary_op, build_modify_expr): Use readonly_warning for
18241         storing into something readonly but not const-qualified.
18242
18243 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18244
18245         PR c/22367
18246         * c-typeck.c (build_unary_op): Check for taking address of
18247         expression of type void.
18248
18249 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18250
18251         PR c/35210
18252         * c-typeck.c (build_function_call): Check for calling a function
18253         with qualified void return types.  Call require_complete_type when
18254         generating a trap.
18255
18256 2009-04-18  Jan Hubicka  <jh@suse.cz>
18257
18258         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
18259         Set nothrow flag.
18260         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
18261         can_throw_external flag.
18262         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
18263         * ipa-pure-const.c (ignore_edge): New function.
18264         (propagate): Compute order for NOTHROW computation; set NOTHROWs
18265         only over can_throw_external edges.
18266         (local_pure_const): Add nothrow flag.
18267         * ipa-utils.c (searchc): Add ignore_edge callback.
18268         (ipa_utils_reduced_inorder): Add ignore_edge callback.
18269         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
18270         (set_nothrow_function_flags): Update cgraph.
18271         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
18272
18273 2009-04-18  Richard Guenther  <rguenther@suse.de>
18274
18275         PR middle-end/39804
18276         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
18277         (fold_stmt): ... this and ...
18278         (fold_stmt_inplace): ... this.
18279         (fold_stmt_1): Fold references in calls and asms.
18280         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
18281
18282 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18283
18284         * tree-vrp.c (ssa_name_nonzero_p): Remove.
18285         * tree.h: Remove the prototype for ssa_name_nonzero_p.
18286
18287 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18288
18289         * tree.c (function_args_count): Remove.
18290         * tree.h: Remove the prototype for function_args_count.
18291
18292 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18293
18294         * tree-iterator.c (expr_only): Remove.
18295         * tree.h: Remove the prototype for expr_only.
18296
18297 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18298
18299         * reginfo.c (cannot_change_mode_set_regs): Remove.
18300         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
18301
18302 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
18303
18304         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
18305         whether operands 0 and 1 overlaps.
18306
18307 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18308
18309         PR middle-end/36902
18310         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
18311         pointer. Use warning_at instead of warning.
18312         (search_for_addr_array): Likewise.
18313         (check_array_bounds): Likewise.
18314         (check_all_array_refs): Check that the incoming edge is not in the
18315         list of edges to be removed.
18316         (check_all_array_refs): Avoid the temporal pointer.
18317         (vrp_visit_cond_stmt): Fix typo.
18318         (simplify_switch_using_ranges): Handle the case where the switch
18319         index is an integer constant.
18320
18321 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
18322
18323         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
18324
18325 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18326
18327         * doc/extend.texi, doc/invoke.texi: Fix typos.
18328
18329 2009-04-17  Cary Coutant  <ccoutant@google.com>
18330
18331         * tree-flow-inline.h (get_lineno): Fix inverted test.
18332
18333 2009-04-17  Diego Novillo  <dnovillo@google.com>
18334
18335         * tree-ssa-pre.c (create_expression_by_pieces): Remove
18336         assertion for AVAIL_OUT.
18337
18338 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
18339
18340         PR target/38627
18341         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
18342         * config/sh/linux-atomic.asm: Likewise.
18343
18344 2009-04-17  Diego Novillo  <dnovillo@google.com>
18345
18346         * except.c (debug_eh_tree): New.
18347         (struct eh_region, struct eh_status): Move ...
18348         * except.h: ... here.
18349         (add_type_for_runtime): Declare extern.
18350         (lookup_type_for_runtime): Likewise.
18351         (debug_eh_tree): Declare.
18352         * Makefile.in (GTFILES): List except.h before except.c
18353
18354 2009-04-17  Diego Novillo  <dnovillo@google.com>
18355
18356         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
18357         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
18358         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
18359         (find_vars_r): ... here.
18360         * tree-flow.h (find_referenced_vars_in): Declare.
18361         * tree-ssa-pre.c (create_expression_by_pieces): Assert
18362         that AVAIL_OUT exists for BLOCK.
18363         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
18364         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
18365         (tree-parloops.o): Likewise.
18366
18367 2009-04-17  Simon Baldwin  <simonb@google.com>
18368
18369         * toplev.c (default_tree_printer): Add handling for %E format.
18370
18371 2009-04-17  Diego Novillo  <dnovillo@google.com>
18372
18373         * tree-pretty-print.c (dump_generic_node): Add break after
18374         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
18375         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
18376         FUNCTION_TYPE together.  Call print_struct_decl when printing
18377         structures and TDF_SLIM is not given.
18378         (print_struct_decl): Fix logic for detecting recursion.
18379
18380 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
18381
18382         PR 31567
18383         * gcc.c (create_at_file): New.
18384         (compile_input_file_p): New.
18385         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
18386         * main.c (main): Update call to toplev_main.
18387         * toplev.c (toplev_main): Change signature. Call expandargv.
18388         * toplev.h (toplev_main): Change signature.
18389
18390 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
18391
18392         * dwarf2out.c (field_byte_offset): Use the type size as the field size
18393         if the latter is not constant.
18394
18395 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
18396
18397         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
18398
18399 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
18400
18401         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
18402         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
18403
18404 2009-04-17  Richard Guenther  <rguenther@suse.de>
18405
18406         * tree-ssa-structalias.c (get_constraint_for_component_ref):
18407         Handle component references view-converting an invariant address.
18408
18409 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
18410
18411         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
18412         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
18413         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
18414         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
18415         Use @deftypevr rather than @deftypevar.
18416
18417 2009-04-17  Richard Guenther  <rguenther@suse.de>
18418
18419         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
18420         (get_prop_source_stmt): Likewise.
18421         (can_propagate_from): Likewise.
18422
18423 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
18424
18425         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
18426         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
18427         (--with-multilib-list): Add default value.
18428         * configure: Regenerate.
18429         * Makefile.in (TM_ENDIAN_CONFIG): Define.
18430         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
18431         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
18432         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
18433         Don't add default cpu to multilib list unnecessarily, but do enable
18434         the relevant compiler option..
18435         Add support for --with-multilib-list=<blank> and
18436         --with-multilib-list=!<somelib> to supress unwanted multilibs.
18437         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
18438         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
18439         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
18440         TM_MULTILIB_CONFIG.
18441         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
18442         (MULTILIB_OSDIRNAMES): New variable.
18443         * config/sh/t-1e: Delete file.
18444         * config/sh/t-mlib-sh1: Delete file.
18445         * config/sh/t-mlib-sh2: Delete file.
18446         * config/sh/t-mlib-sh2a: Delete file.
18447         * config/sh/t-mlib-sh2a-nofpu: Delete file.
18448         * config/sh/t-mlib-sh2a-single: Delete file.
18449         * config/sh/t-mlib-sh2a-single-only: Delete file.
18450         * config/sh/t-mlib-sh2e: Delete file.
18451         * config/sh/t-mlib-sh3e: Delete file.
18452         * config/sh/t-mlib-sh4: Delete file.
18453         * config/sh/t-mlib-sh4-nofpu: Delete file.
18454         * config/sh/t-mlib-sh4-single: Delete file.
18455         * config/sh/t-mlib-sh4-single-only: Delete file.
18456         * config/sh/t-mlib-sh4a: Delete file.
18457         * config/sh/t-mlib-sh4a-nofpu: Delete file.
18458         * config/sh/t-mlib-sh4a-single: Delete file.
18459         * config/sh/t-mlib-sh4a-single-only: Delete file.
18460         * config/sh/t-mlib-sh4al: Delete file.
18461         * config/sh/t-mlib-sh5-32media: Delete file.
18462         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
18463         * config/sh/t-mlib-sh5-64media: Delete file.
18464         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
18465         * config/sh/t-mlib-sh5-compact: Delete file.
18466         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
18467         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
18468         * doc/install.texi (Options specification): Add
18469         --with-multilib-list and --with-endian.
18470
18471 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
18472
18473         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
18474         REVISION_c.
18475         (OBJS-common): Add plugin-version.o.
18476         (plugin-version.o): New.
18477         * gcc-plugin.h (plugin_gcc_version): New.
18478         (plugin_default_version_check): New.
18479         (plugin_init_func, plugin_init): Add version argument.
18480         * plugin-version.c: New.
18481         * plugin.c (str_plugin_gcc_version_name): New.
18482         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
18483         pass it to the init function.
18484         (plugin_default_version_check): New.
18485
18486 2009-04-17  Richard Guenther  <rguenther@suse.de>
18487
18488         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
18489         for decl-vs-decl disambiguation.
18490
18491 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
18492
18493         * config/s390/s390.h (s390_tune_attr): New macro definition.
18494         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
18495
18496 2009-04-17  Richard Guenther  <rguenther@suse.de>
18497
18498         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
18499         (fold_stmt_r): Likewise.
18500         (maybe_fold_reference): New function.
18501         (fold_gimple_assign): Handle cases fold_stmt_r did.
18502         (fold_stmt): Do not use fold_stmt_r.
18503         (fold_stmt_inplace): Likewise.
18504
18505 2009-04-17  Richard Guenther  <rguenther@suse.de>
18506
18507         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
18508         (record_equivalences_from_stmt): Remove useless checks and
18509         simplifications.
18510         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
18511         the type is already suitable.
18512
18513 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
18514
18515         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
18516
18517 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
18518
18519         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
18520         (CMPtype): Define as __gcc_CMPtype.
18521
18522 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
18523
18524         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
18525         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
18526
18527 2009-04-17  Richard Guenther  <rguenther@suse.de>
18528
18529         PR tree-optimization/39746
18530         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
18531         special-casing for builtins and static variable use/def.
18532         (call_may_clobber_ref_p_1): Likewise.
18533
18534 2009-04-16  Ian Lance Taylor  <iant@google.com>
18535
18536         * df.h: Include "timevar.h".
18537         (struct df_problem): Change tv_id field to timevar_id_t.
18538         * tree-pass.h: Include "timevar.h".
18539         (struct opt_pass): Change tv_id field to timevar_id_t.
18540         * timevar.h (timevar_id_t): Define TV_NONE.
18541         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
18542         TV_NONE rather than tv_id != 0.
18543         (execute_one_pass): Likewise.
18544         * Makefile.in (DF_H): Add $(TIMEVAR_H).
18545         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
18546         dependencies to $(TREE_PASS_H).
18547         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
18548         to TV_NONE.
18549         (pass_branch_target_load_optimize2): Likewise.
18550         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
18551         (pass_outof_cfg_layout_mode): Likewise.
18552         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
18553         (pass_rebuild_cgraph_edges): Likewise.
18554         (pass_remove_cgraph_callee_edges): Likewise.
18555         * df-core.c (pass_df_initialize_opt): Likewise.
18556         (pass_df_initialize_no_opt): Likewise.
18557         (pass_df_finish): Likewise.
18558         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
18559         * except.c (pass_set_nothrow_function_flags): Likewise.
18560         (pass_convert_to_eh_region_ranges): Likewise.
18561         * final.c (pass_compute_alignments): Likewise.
18562         * function.c (pass_instantiate_virtual_regs): Likewise.
18563         (pass_init_function): Likewise.
18564         (pass_leaf_regs): Likewise.
18565         (pass_match_asm_constraints): Likewise.
18566         * gimple-low.c (pass_lower_cf): Likewise.
18567         (pass_mark_used_blocks): Likewise.
18568         * init-regs.c (pass_initialize_regs): Likewise.
18569         * integrate.c (pass_initial_value_sets): Likewise.
18570         * ira.c (pass_ira): Likewise.
18571         * jump.c (pass_cleanup_barriers): Likewise.
18572         * omp-low.c (pass_expand_omp): Likewise.
18573         (pass_lower_omp): Likewise.
18574         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
18575         * recog.c (pass_split_all_insns): Likewise.
18576         (pass_split_after_reload): Likewise.
18577         (pass_split_before_regstack): Likewise.
18578         (pass_split_before_sched2): Likewise.
18579         (pass_split_for_shorten_branches): Likewise.
18580         * reginfo.c (pass_reginfo_init): Likewise.
18581         (pass_subregs_of_mode_init): Likewise.
18582         (pass_subregs_of_mode_finish): Likewise.
18583         * passes.c (pass_postreload): Likewise.
18584         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
18585         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
18586         (pass_warn_function_return): Likewise.
18587         (pass_warn_function_noreturn): Likewise.
18588         * tree-complex.c (pass_lower_complex): Likewise.
18589         (pass_lower_complex_O0): Likewise.
18590         * tree-if-conv.c (pass_if_conversion): Likewise.
18591         * tree-into-ssa.c (pass_build_ssa): Likewise.
18592         * tree-mudflap.c (pass_mudflap_1): Likewise.
18593         (pass_mudflap_2): Likewise.
18594         * tree-nomudflap.c (pass_mudflap_1): Likewise.
18595         (pass_mudflap_2): Likewise.
18596         * tree-nrv.c (pass_return_slot): Likewise.
18597         * tree-object-size.c (pass_object_sizes): Likewise.
18598         * tree-optimize.c (pass_all_optimizations): Likewise.
18599         (pass_early_local_passes): Likewise.
18600         (pass_all_early_optimizations): Likewise.
18601         (pass_cleanup_cfg): Likewise.
18602         (pass_cleanup_cfg_post_optimizing): Likewise.
18603         (pass_free_datastructures): Likewise.
18604         (pass_free_cfg_annotations): Likewise.
18605         (pass_fixup_cfg): Likewise.
18606         (pass_init_datastructures): Likewise.
18607         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
18608         (pass_late_warn_uninitialized): Likewise.
18609         (pass_update_address_taken): Likewise.
18610         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
18611         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
18612         (pass_cse_sincos): Likewise.
18613         (pass_convert_to_rsqrt): Likewise.
18614         * tree-ssa-structalias.c (pass_build_alias): Likewise.
18615         * tree-stdarg.c (pass_stdarg): Likewise.
18616         * tree-tailcall.c (pass_tail_recursion): Likewise.
18617         (pass_tail_calls): Likewise.
18618         * tree-vect-generic.c (pass_lower_vector): Likewise.
18619         (pass_lower_vector_ssa): Likewise.
18620         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
18621
18622 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
18623
18624         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
18625         XLR entry.
18626         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
18627         Handle -march=xlr.
18628         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
18629         logical and signext.
18630
18631 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
18632
18633         PR target/39767
18634         * config/sh/predicates.md (arith_operand): Check if the operand
18635         of TRUNCATE is a REG.
18636
18637 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18638
18639         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
18640         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
18641
18642 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18643
18644         * tree-iterator.c (tsi_split_statement_list_after,
18645         tsi_split_statement_list_before): Remove.
18646         * tree-iterator.h: Remove the prototypes for
18647         tsi_split_statement_list_after and tsi_split_statement_list_before.
18648
18649 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18650
18651         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
18652         * tree-ssa-propagate.h: Remove the prototype for
18653         stmt_makes_single_load.
18654
18655 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18656
18657         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
18658         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
18659
18660 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18661
18662         * tree-iterator.c (EXPR_LAST_BODY): Remove.
18663
18664 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18665
18666         * except.c (eh_region_outer_p): Remove.
18667         * except.h: Remove the prototype for eh_region_outer_p.
18668
18669 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18670
18671         * function.c (current_function_assembler_name): Remove.
18672         * function.h: Remove the prototype for
18673         current_function_assembler_name.
18674
18675 2009-04-16  Ian Lance Taylor  <iant@google.com>
18676
18677         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
18678         (add_reg_note): Call alloc_reg_note.
18679         * rtl.h (alloc_reg_note): Declare.
18680         * combine.c (try_combine): Use alloc_reg_note.
18681         (recog_for_combine, move_deaths): Likewise.
18682         (distribute_notes): Use alloc_reg_note and add_reg_note.
18683         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
18684         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
18685         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
18686
18687 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
18688
18689         PR rtl-optimization/39762
18690         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
18691         ira_may_move_out_cost): Add comments about way of their usage.
18692         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
18693
18694         * ira-conflicts.c (process_regs_for_copy): Use function
18695         ira_get_register_move_cost instead of global
18696         ira_register_move_cost.
18697
18698         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
18699         color_pass, move_spill_restore, update_curr_costs): Ditto.
18700
18701         * ira-lives.c (process_single_reg_class_operands): Ditto.
18702
18703         * ira-emit.c (emit_move_list): Ditto.
18704
18705         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
18706         (record_reg_classes): Ditto.  Use functions
18707         ira_get_register_move_cost and ira_get_may_move_cost instead of
18708         global vars ira_register_move_cost, ira_may_move_out_cost and
18709         ira_may_move_in_cost.
18710         (record_address_regs): Don't call ira_init_register_move_cost.
18711         Use function ira_get_may_move_cost instead of global
18712         ira_may_move_in_cost.
18713         (process_bb_node_for_hard_reg_moves): Use function
18714         ira_get_register_move_cost instead of global ira_register_move_cost.
18715         (ira_costs): Don't call ira_init_register_move_cost.
18716
18717 2009-04-16  Richard Guenther  <rguenther@suse.de>
18718
18719         * tree-cfg.c (verify_gimple_assign_binary):
18720         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
18721         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
18722         (create_general_new_stmt): Note that this function is broken.
18723
18724 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
18725
18726         * common.opt (fhelp): Add Var(help_flag).
18727         * gcc-plugin.h (plugin_info): Add help.
18728         * plugin.c (plugin_name_args): Add help.
18729         (register_plugin_info): Set plugin->help.
18730         (print_help_one_plugin): New.
18731         (print_plugins_help): New.
18732         * plugin.h (print_plugins_help): New.
18733         * toplev.c (toplev_main): Call print_plugins_help if needed.
18734
18735 2009-04-16  Richard Guenther  <rguenther@suse.de>
18736
18737         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
18738         (gimple_ior_addresses_taken_1): New function.
18739         (gimple_ior_addresses_taken): Likewise.
18740         * gimple.h (struct gimple_statement_with_ops_base): Remove
18741         addresses_taken member.
18742         (gimple_ior_addresses_taken): Declare.
18743         (gimple_addresses_taken, gimple_addresses_taken_ptr,
18744         gimple_set_addresses_taken): Remove.
18745         * ipa-reference.c (mark_address): New function.
18746         (scan_stmt_for_static_refs): Use it for marking addresses taken.
18747         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
18748         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
18749         (gimple_add_to_addresses_taken): Remove.
18750         (get_tmr_operands): Call mark_address_taken.
18751         (get_asm_expr_operands): Likewise.
18752         (get_expr_operands): Likewise.
18753         (build_ssa_operands): Do not clear the addresses_taken bitmap.
18754         (free_stmt_operands): Do not free it.
18755         * tree-ssa.c (delete_tree_ssa): Likewise.
18756         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
18757
18758 2009-04-16  Richard Guenther  <rguenther@suse.de>
18759
18760         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
18761         (walk_stmt_load_store_ops): Likewise.
18762         * gimple.c (get_base_loadstore): New function.
18763         (walk_stmt_load_store_addr_ops): Likewise.
18764         (walk_stmt_load_store_ops): Likewise.
18765         * ipa-pure-const.c (check_op): Simplify.
18766         (check_load, check_store): New functions.
18767         (check_stmt): Use walk_stmt_load_store_ops.
18768         * ipa-reference.c (mark_load): Adjust signature.
18769         (mark_store): Likewise.
18770         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
18771
18772 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
18773
18774         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
18775         (plugin_info): New.
18776         * opts.c (common_handle_option): Don't call print_version.
18777         * plugin.c (plugin_name_args): Add version.
18778         (register_plugin_info): New.
18779         (register_callback): Handle PLUGIN_INFO.
18780         (try_init_one_plugin): New.
18781         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
18782         if failed to init.
18783         (finalize_one_plugin): New.
18784         (finalize_plugins): New.
18785         (print_one_plugin): New.
18786         (print_plugins_versions): New.
18787         * plugin.h (print_plugins_versions): New.
18788         (finalize_plugins): New.
18789         * toplev.c (compile_file): Don't call initialize_plugins.
18790         (print_version): Call print_plugins_versions.
18791         (toplev_main): Call initialize_plugins. Print version if needed.
18792         Call finalize_plugins.
18793
18794 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
18795
18796         * common.opt (fversion): New.
18797         * gcc.c (print_version): New.
18798         (process_command): Don't print the version. Just set print_version.
18799         (main): Print version. Call subprocesses if print_version and
18800         verbose_flag are set.
18801         * opts.c (common_handle_option): Handle OPT_fversion.
18802
18803 2009-04-16  Richard Guenther  <rguenther@suse.de>
18804             Ira Rosen  <irar@il.ibm.com>
18805
18806         PR tree-optimization/39698
18807         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
18808         type of the reduction variable.  Only generate the def if
18809         it is needed.
18810
18811         * omp-low.c (expand_omp_for_generic): When converting to a pointer
18812         make sure to first convert to an integer of the same precision.
18813         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
18814         the type of the evolution correctly in computing the new
18815         induction variable base.
18816
18817 2009-04-16  Richard Guenther  <rguenther@suse.de>
18818
18819         PR middle-end/39625
18820         * tree-cfg.c (make_blocks): Split statements with to-be
18821         abnormal SSA names on the lhs.
18822
18823 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
18824
18825         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
18826         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
18827         * c-typeck.c (really_start_incremental_init): Likewise.
18828         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
18829         (TARGET_INITIALIZER): Remove it.
18830         * target.h (struct target): Remove vector_opaque_p.
18831         * tree.c (build_opaque_vector_type): New.
18832         * tree.h (TYPE_VECTOR_OPAQUE): New.
18833         (build_opaque_vector_type): Declare.
18834         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
18835         * config/rs6000/rs6000.c (build_opaque_vector_type,
18836         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
18837         (rs6000_init_builtins): Use build_opaque_vector_type for
18838         opaque_V4SI_type_node.
18839
18840 2009-04-15  Catherine Moore  <clm@codesourcery.com>
18841
18842         * debug.h (set_name):  Declare.
18843         * dwarf2out.c (dwarf2out_set_name): Declare.
18844         (dwarf2_debug_hooks): Add set_name.
18845         (find_AT_string): New.
18846         (add_AT_string): Call find_AT_string.
18847         (dwarf2out_set_name): New.
18848         * cp/decl.c (grokdeclarator): Call set_name.
18849         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
18850         * debug.c (do_nothing_debug_hooks):  Likewise.
18851         * dbxout.c (dbx_debug_hooks): Likewise.
18852         * sdbout.c (sdb_debug_hooks): Likewise.
18853
18854 2009-04-15  Michael Eager  <eager@eagercon.com>
18855
18856         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
18857         reg for single-precision FPU.
18858         * config/rs6000/rs6000.md (movsi_internal1): Only for
18859         !TARGET_SINGLE_FPU.
18860         (movsi_internal1_single): New. Add pattern to move SI values to/from
18861         single-precision FP regs.
18862
18863 2009-04-15  Richard Guenther  <rguenther@suse.de>
18864
18865         * omp-low.c (lower_rec_input_clauses): Build correct address
18866         expressions.
18867         (expand_omp_for_generic): Fix multiplication type.
18868         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
18869         (generate_memset_zero): Fix types.
18870         * tree-profile.c (prepare_instrumented_value): Correctly
18871         widen a pointer.
18872
18873 2009-04-15  Ian Lance Taylor  <iant@google.com>
18874
18875         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
18876         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
18877         for -Wall and for -Wc++-compat.
18878         (c_common_post_options): For C++, set warn_enum_compare if not
18879         already set.
18880         * c-tree.h (struct c_expr): Add field original_type.
18881         (build_external_ref): Update declaration.
18882         * c-parser.c (c_parser_braced_init): Set original_type.
18883         (c_parser_initelt): Likewise.
18884         (c_parser_expr_no_commas): Likewise.
18885         (c_parser_conditional_expression): Likewise.
18886         (c_parser_cast_expression): Likewise.
18887         (c_parser_unary_expression): Likewise.  Pull setting of
18888         original_code to top of function.
18889         (c_parser_sizeof_expression): Set original_type.
18890         (c_parser_alignof_expression): Likewise.
18891         (c_parser_postfix_expression): Likewise.  Pull setting of
18892         original_code to top of function.
18893         (c_parser_postfix_expression_after_paren_type): Set original_type.
18894         (c_parser_postfix_expression_after_primary): Likewise.
18895         (c_parser_expression): Likewise.
18896         * c-typeck.c (build_external_ref): Add type parameter.  Change all
18897         callers.
18898         (c_expr_sizeof_expr): Set original_type field.
18899         (parser_build_unary_op): Likewise.
18900         (parser_build_binary_op): Likewise.  Optionally warn about
18901         comparisons of enums of different types.
18902         (digest_init): Set original_type field.
18903         (really_start_incremental_init): Likewise.
18904         (push_init_level, pop_init_level): Likewise.
18905         * doc/invoke.texi (Warning Options): -Wenum-compare now
18906         supported in C.
18907
18908 2009-04-15  Richard Guenther  <rguenther@suse.de>
18909
18910         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
18911         out a necessary conversion.
18912         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
18913         names we didn't value number.
18914         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
18915
18916 2009-04-15  Richard Guenther  <rguenther@suse.de>
18917
18918         PR tree-optimization/39764
18919         * tree-ssa-ccp.c (get_value): Canonicalize value with
18920         canonicalize_float_value.
18921
18922 2009-04-15  Jan Hubicka  <jh@suse.cz>
18923
18924         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
18925         Wrong version of patch.
18926
18927 2009-04-15  Jan Hubicka  <jh@suse.cz>
18928
18929         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
18930
18931 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
18932
18933         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
18934         our distinct integral and vector types.
18935
18936 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
18937
18938         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
18939         * init.c (build_vtbl_address): Remove call to assemble_external.
18940
18941 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
18942
18943         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
18944         output for other floating point modes.
18945
18946 2009-04-14  Diego Novillo  <dnovillo@google.com>
18947
18948         * diagnostic.c (diagnostic_report_diagnostic): Do not
18949         warn about loaded plugins for DK_ERROR and DK_WARNING.
18950         * c-decl.c (declspecs_add_type): Move call to
18951         invoke_plugin_callbacks ...
18952         * c-parser.c (c_parser_declspecs): ... here.
18953         * plugin.c (dump_active_plugins): Tidy output.
18954
18955 2009-04-14  Diego Novillo  <dnovillo@google.com>
18956             Le-Chun Wu  <lcwu@google.com>
18957
18958         * configure.ac: Add --enable-plugin support.
18959         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
18960         * Makefile.in (PLUGIN_H): Define.
18961         Export ENABLE_PLUGIN and GMPINC to site.exp.
18962         Add PLUGINLIBS to link command.
18963         Add/modify dependencies for plugin.o and files including plugin.h.
18964         (plugin.o): New.
18965         * config.in: Regenerate.
18966
18967         * opts.c (common_handle_option): Handle OPT_fplugin_ and
18968         OPT_fplugin_arg_.
18969
18970 2009-04-14  Le-Chun Wu  <lcwu@google.com>
18971
18972         * tree-pass.h (register_one_dump_file): Add a prototype for
18973         register_one_dump_file.
18974         * toplev.c (compile_file): Call initialize_plugins.
18975         (do_compile): Call invoke_plugin_callbacks.
18976         (toplev_main): Call invoke_plugin_callbacks.
18977         * common.opt: Add -fplugin= and -fplugin-arg-.
18978         * gcc-plugin.h: New public header file for plugins to include.
18979         * plugin.c: New source file.
18980         * plugin.h: New internal header file.
18981         * passes.c (register_one_dump_file): Make it external.
18982
18983         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
18984
18985 2009-04-14  Diego Novillo  <dnovillo@google.com>
18986
18987         * doc/plugins.texi: New.
18988         * doc/gccint.texi: Add reference to Plugins chapter.
18989         * doc/invoke.texi: Document -fplugin and -fplugin-arg
18990         * diagnostic.c (diagnostic_report_diagnostic): Warn about
18991         loaded plugins, if any.
18992         * timevar.def (TV_PLUGIN_INIT): Define.
18993         (TV_PLUGIN_RUN): Define.
18994         * plugin.c: Include timevar.h
18995         (plugins_active_p): New.
18996         (dump_active_plugins): New.
18997         (debug_active_plugins): New.
18998
18999 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
19000
19001         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
19002         library paths.
19003         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
19004
19005 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
19006
19007         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
19008         the same as a minus without a shift.
19009
19010 2009-04-14  Nick Clifton  <nickc@redhat.com>
19011
19012         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
19013         comparisons with small integers will always produce a short
19014         branch.
19015
19016 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
19017
19018         Merge:
19019         2008-12-19  Diego Novillo  <dnovillo@google.com>
19020
19021         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
19022
19023 2009-04-14  Richard Guenther  <rguenther@suse.de>
19024
19025         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
19026         verification.
19027         (verify_gimple_assign_binary): Likewise.  Handle shifts and
19028         rotates correctly.
19029         (verify_gimple_phi): Print the mismatched argument position.
19030         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
19031         Fix types.
19032         (vect_update_init_of_dr): Likewise.
19033         * matrix-reorg.c (transform_access_sites): Do what the
19034         comment suggests.
19035         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
19036
19037 2009-04-13  Michael Eager  <eager@eagercon.com>
19038
19039         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
19040         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
19041         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
19042         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
19043         remove duplicate config
19044
19045 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19046
19047         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
19048         file_name:line_number type locator of the call site.
19049
19050 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
19051
19052         * genautomata.c: Put blank after comma.
19053         (automaton_decls): New.
19054         (struct unit_usage): Add comments to member next.
19055         (store_alt_unit_usage): Keep the list ordered.
19056         (unit_present_on_list_p, equal_alternatives_p): New.
19057         (check_regexp_units_distribution): Check units distribution
19058         correctness correctly.
19059         (main): Don't write automata if error is found.  Return correct
19060         exit code.
19061
19062         * config/m68k/cf.md (cfv4_ds): Remove.
19063         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
19064         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
19065
19066         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
19067         power4-load-ext, power4-store, power4-store-update,
19068         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
19069         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
19070         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
19071         power4-sqrt, power4-isync): Modify reservation to make correct
19072         unit distribution to automata.
19073
19074         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
19075         power5-store-update, power5-two, power5-three, power5-lmul,
19076         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
19077
19078 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
19079
19080         * except.c (pass_set_nothrow_function_flags): Set name and add
19081         TODO_dump_func.
19082         (set_nothrow_function_flags): Mention in the dump file when
19083         changing a function to nothrow.
19084
19085 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
19086
19087         PR/39066
19088         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
19089         instead of unsigned long.
19090
19091 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19092
19093         * config/arm/arm.c (return_used_this_function): Remove.
19094         (arm_output_function_prologue): Remove use of
19095         return_used_this_function.
19096         (output_return_instruction): Replace use of
19097         return_used_this_function
19098         by cfun->machine->return_used_this_function.
19099         (arm_output_epilogue): Likewise.
19100         (arm_output_function_epilogue): Likewise.
19101         (thumb_unexpanded_epilogue): Likewise.
19102         * config/arm/arm.h (struct machine_function):
19103         New member return_used_this_function.
19104
19105 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
19106
19107         * doc/install.texi: Correct description of default directory for
19108         --with-gxx-include-dir.
19109
19110 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
19111
19112         * fold-const.c (build_range_check): Properly deal with enumeral and
19113         boolean base types.
19114
19115 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
19116
19117         * doc/invoke.texi (max_gcse_passes): Remove documentation.
19118         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
19119         * params.h (MAX_GCSE_PASSES): Remove.
19120         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
19121         in sequence.  Remove ability to run multiple passes.
19122         (bypass_jumps): Report run as third CPROP pass.
19123
19124 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
19125
19126         PR middle-end/39651
19127         * except.c (can_throw_external): Look at each insn in a SEQUENCE
19128         when deciding whether the whole SEQUENCE can throw.
19129
19130 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
19131
19132         PR target/39740
19133         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
19134         offseted label references.
19135
19136 2009-04-11  Jan Hubicka  <jh@suse.cz>
19137
19138         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
19139
19140 2009-04-11  Richard Guenther  <rguenther@suse.de>
19141
19142         PR middle-end/39732
19143         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
19144         return variables as TREE_ADDRESSABLE.
19145
19146 2009-04-11  Richard Guenther  <rguenther@suse.de>
19147
19148         PR tree-optimization/39713
19149         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
19150         reference trees have SSA_NAME operands.
19151
19152 2009-04-11  Richard Guenther  <rguenther@suse.de>
19153
19154         PR c/39712
19155         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
19156         address expressions.
19157
19158 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
19159
19160         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
19161         match changes in Cygwin 1.7
19162         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
19163         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
19164
19165 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19166
19167         PR tree-optimization/39701
19168         * doc/invoke.texi (Optimization Options): Document change in
19169         meaning and initialization of -fdelete-null-pointer-checks.
19170
19171 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19172
19173         PR middle-end/39701
19174         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
19175
19176         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
19177         here.
19178
19179         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
19180
19181 2009-04-10  Chao-ying Fu  <fu@mips.com>
19182
19183         * doc/tm.texi (Instruction Output): Document
19184         TARGET_ASM_FINAL_POSTSCAN_INSN.
19185         * target.h (final_postscan_insn): New field in asm_out.
19186         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19187         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
19188         * final.c (final_scan_insn): Call
19189         targetm.asm_out.final_postscan_insn after outputting
19190         an asm macro and a normal instruction.
19191
19192         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
19193         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
19194         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
19195         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
19196         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19197
19198 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19199
19200         PR middle-end/39701
19201         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
19202         variables as non-NULL even with -fdelete-null-pointer-checks.
19203
19204 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19205
19206         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
19207
19208 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19209
19210         PR target/39678
19211         * config/i386/i386.c (classify_argument): Handle SCmode with
19212         (bit_offset % 64) != 0.
19213
19214 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
19215
19216         * doc/invoke.texi (Optimize Options): Add cross-reference to
19217         -Q --help=optimizers examples.
19218
19219 2009-04-10  Ben Elliston  <bje@au.ibm.com>
19220
19221         PR target/36800
19222         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
19223         regalign for the reg == fpr and TDmode case.
19224
19225 2009-04-09  David Ayers  <ayers@fsfe.org>
19226
19227         PR objc/29200
19228         * objc/objc-act.c (warn_with_method): Remove helper function.
19229         (check_duplicates): Call warning and inform directly.
19230         (really_start_method): Likewise.
19231
19232 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19233
19234         * expmed.c (expand_divmod): Always use a comparison for a division
19235         by a large unsigned integer.
19236
19237         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
19238         for things others than variables or functions as nonzero.
19239
19240 2009-04-09  Nick Clifton  <nickc@redhat.com>
19241
19242         * unwind-compat.c: Change copyright header to refer to version
19243         3 of the GNU General Public License with version 3.1 of the
19244         GCC Runtime Library Exception and to point readers at the
19245         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
19246         * config/alpha/crtfastmath.c: Likewise.
19247         * config/alpha/linux-unwind.h: Likewise.
19248         * config/alpha/qrnnd.asm: Likewise.
19249         * config/alpha/vms-crt0-64.c: Likewise.
19250         * config/alpha/vms-crt0.c: Likewise.
19251         * config/alpha/vms-dwarf2.asm: Likewise.
19252         * config/alpha/vms-dwarf2eh.asm: Likewise.
19253         * config/alpha/vms-psxcrt0-64.c: Likewise.
19254         * config/alpha/vms-psxcrt0.c: Likewise.
19255         * config/alpha/vms_tramp.asm: Likewise.
19256         * config/arc/initfini.c: Likewise.
19257         * config/arc/lib1funcs.asm: Likewise.
19258         * config/arm/bpabi-v6m.S: Likewise.
19259         * config/arm/bpabi.S: Likewise.
19260         * config/arm/bpabi.c: Likewise.
19261         * config/arm/crti.asm: Likewise.
19262         * config/arm/crtn.asm: Likewise.
19263         * config/arm/ieee754-df.S: Likewise.
19264         * config/arm/ieee754-sf.S: Likewise.
19265         * config/arm/lib1funcs.asm: Likewise.
19266         * config/arm/libunwind.S: Likewise.
19267         * config/arm/linux-atomic.c: Likewise.
19268         * config/arm/mmintrin.h: Likewise.
19269         * config/arm/pr-support.c: Likewise.
19270         * config/arm/unaligned-funcs.c: Likewise.
19271         * config/arm/unwind-arm.c: Likewise.
19272         * config/arm/unwind-arm.h: Likewise.
19273         * config/avr/libgcc.S: Likewise.
19274         * config/bfin/crti.s: Likewise.
19275         * config/bfin/crtlibid.s: Likewise.
19276         * config/bfin/crtn.s: Likewise.
19277         * config/bfin/lib1funcs.asm: Likewise.
19278         * config/bfin/linux-unwind.h: Likewise.
19279         * config/cris/arit.c: Likewise.
19280         * config/cris/cris_abi_symbol.c: Likewise.
19281         * config/darwin-64.c: Likewise.
19282         * config/darwin-crt2.c: Likewise.
19283         * config/darwin-crt3.c: Likewise.
19284         * config/darwin.h: Likewise.
19285         * config/dbxelf.h: Likewise.
19286         * config/dfp-bit.c: Likewise.
19287         * config/dfp-bit.h: Likewise.
19288         * config/elfos.h: Likewise.
19289         * config/fixed-bit.c: Likewise.
19290         * config/fixed-bit.h: Likewise.
19291         * config/fp-bit.c: Likewise.
19292         * config/fp-bit.h: Likewise.
19293         * config/fr30/crti.asm: Likewise.
19294         * config/fr30/crtn.asm: Likewise.
19295         * config/fr30/lib1funcs.asm: Likewise.
19296         * config/freebsd-spec.h: Likewise.
19297         * config/frv/cmovd.c: Likewise.
19298         * config/frv/cmovh.c: Likewise.
19299         * config/frv/cmovw.c: Likewise.
19300         * config/frv/frvbegin.c: Likewise.
19301         * config/frv/frvend.c: Likewise.
19302         * config/frv/lib1funcs.asm: Likewise.
19303         * config/glibc-stdint.h: Likewise.
19304         * config/h8300/clzhi2.c: Likewise.
19305         * config/h8300/crti.asm: Likewise.
19306         * config/h8300/crtn.asm: Likewise.
19307         * config/h8300/ctzhi2.c: Likewise.
19308         * config/h8300/fixunssfsi.c: Likewise.
19309         * config/h8300/lib1funcs.asm: Likewise.
19310         * config/h8300/parityhi2.c: Likewise.
19311         * config/h8300/popcounthi2.c: Likewise.
19312         * config/i386/ammintrin.h: Likewise.
19313         * config/i386/att.h: Likewise.
19314         * config/i386/avxintrin.h: Likewise.
19315         * config/i386/biarch64.h: Likewise.
19316         * config/i386/bmmintrin.h: Likewise.
19317         * config/i386/cpuid.h: Likewise.
19318         * config/i386/cross-stdarg.h: Likewise.
19319         * config/i386/crtfastmath.c: Likewise.
19320         * config/i386/crtprec.c: Likewise.
19321         * config/i386/cygming-crtbegin.c: Likewise.
19322         * config/i386/cygming-crtend.c: Likewise.
19323         * config/i386/cygwin.asm: Likewise.
19324         * config/i386/emmintrin.h: Likewise.
19325         * config/i386/gmm_malloc.h: Likewise.
19326         * config/i386/gthr-win32.c: Likewise.
19327         * config/i386/i386.h: Likewise.
19328         * config/i386/immintrin.h: Likewise.
19329         * config/i386/linux-unwind.h: Likewise.
19330         * config/i386/linux64.h: Likewise.
19331         * config/i386/mm3dnow.h: Likewise.
19332         * config/i386/mmintrin-common.h: Likewise.
19333         * config/i386/mmintrin.h: Likewise.
19334         * config/i386/nmmintrin.h: Likewise.
19335         * config/i386/pmm_malloc.h: Likewise.
19336         * config/i386/pmmintrin.h: Likewise.
19337         * config/i386/smmintrin.h: Likewise.
19338         * config/i386/sol2-c1.asm: Likewise.
19339         * config/i386/sol2-ci.asm: Likewise.
19340         * config/i386/sol2-cn.asm: Likewise.
19341         * config/i386/sol2-gc1.asm: Likewise.
19342         * config/i386/tmmintrin.h: Likewise.
19343         * config/i386/unix.h: Likewise.
19344         * config/i386/w32-unwind.h: Likewise.
19345         * config/i386/wmmintrin.h: Likewise.
19346         * config/i386/x86-64.h: Likewise.
19347         * config/i386/x86intrin.h: Likewise.
19348         * config/i386/xmmintrin.h: Likewise.
19349         * config/ia64/crtbegin.asm: Likewise.
19350         * config/ia64/crtend.asm: Likewise.
19351         * config/ia64/crtfastmath.c: Likewise.
19352         * config/ia64/crti.asm: Likewise.
19353         * config/ia64/crtn.asm: Likewise.
19354         * config/ia64/fde-glibc.c: Likewise.
19355         * config/ia64/lib1funcs.asm: Likewise.
19356         * config/ia64/linux-unwind.h: Likewise.
19357         * config/ia64/quadlib.c: Likewise.
19358         * config/ia64/unwind-ia64.c: Likewise.
19359         * config/linux.h: Likewise.
19360         * config/m32c/m32c-lib1.S: Likewise.
19361         * config/m32c/m32c-lib2-trapv.c: Likewise.
19362         * config/m32c/m32c-lib2.c: Likewise.
19363         * config/m32r/initfini.c: Likewise.
19364         * config/m68hc11/larith.asm: Likewise.
19365         * config/m68hc11/m68hc11-crt0.S: Likewise.
19366         * config/m68k/cf.md: Likewise.
19367         * config/m68k/crti.s: Likewise.
19368         * config/m68k/crtn.s: Likewise.
19369         * config/m68k/lb1sf68.asm: Likewise.
19370         * config/m68k/linux-unwind.h: Likewise.
19371         * config/mcore/crti.asm: Likewise.
19372         * config/mcore/crtn.asm: Likewise.
19373         * config/mcore/lib1.asm: Likewise.
19374         * config/mips/linux-unwind.h: Likewise.
19375         * config/mips/loongson.h: Likewise.
19376         * config/mips/mips16.S: Likewise.
19377         * config/mmix/crti.asm: Likewise.
19378         * config/mmix/crtn.asm: Likewise.
19379         * config/pa/fptr.c: Likewise.
19380         * config/pa/hpux-unwind.h: Likewise.
19381         * config/pa/lib2funcs.asm: Likewise.
19382         * config/pa/linux-atomic.c: Likewise.
19383         * config/pa/linux-unwind.h: Likewise.
19384         * config/pa/milli64.S: Likewise.
19385         * config/pa/quadlib.c: Likewise.
19386         * config/pa/stublib.c: Likewise.
19387         * config/picochip/libgccExtras/adddi3.asm: Likewise.
19388         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
19389         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
19390         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
19391         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
19392         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
19393         * config/picochip/libgccExtras/divmod15.asm: Likewise.
19394         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
19395         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
19396         * config/picochip/libgccExtras/longjmp.asm: Likewise.
19397         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
19398         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
19399         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
19400         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
19401         * config/picochip/libgccExtras/setjmp.asm: Likewise.
19402         * config/picochip/libgccExtras/subdi3.asm: Likewise.
19403         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
19404         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
19405         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
19406         * config/rs6000/750cl.h: Likewise.
19407         * config/rs6000/altivec.h: Likewise.
19408         * config/rs6000/biarch64.h: Likewise.
19409         * config/rs6000/crtresfpr.asm: Likewise.
19410         * config/rs6000/crtresgpr.asm: Likewise.
19411         * config/rs6000/crtresxfpr.asm: Likewise.
19412         * config/rs6000/crtresxgpr.asm: Likewise.
19413         * config/rs6000/crtsavfpr.asm: Likewise.
19414         * config/rs6000/crtsavgpr.asm: Likewise.
19415         * config/rs6000/darwin-asm.h: Likewise.
19416         * config/rs6000/darwin-fallback.c: Likewise.
19417         * config/rs6000/darwin-fpsave.asm: Likewise.
19418         * config/rs6000/darwin-ldouble.c: Likewise.
19419         * config/rs6000/darwin-tramp.asm: Likewise.
19420         * config/rs6000/darwin-unwind.h: Likewise.
19421         * config/rs6000/darwin-vecsave.asm: Likewise.
19422         * config/rs6000/darwin-world.asm: Likewise.
19423         * config/rs6000/e500crtres32gpr.asm: Likewise.
19424         * config/rs6000/e500crtres64gpr.asm: Likewise.
19425         * config/rs6000/e500crtres64gprctr.asm: Likewise.
19426         * config/rs6000/e500crtrest32gpr.asm: Likewise.
19427         * config/rs6000/e500crtrest64gpr.asm: Likewise.
19428         * config/rs6000/e500crtresx32gpr.asm: Likewise.
19429         * config/rs6000/e500crtresx64gpr.asm: Likewise.
19430         * config/rs6000/e500crtsav32gpr.asm: Likewise.
19431         * config/rs6000/e500crtsav64gpr.asm: Likewise.
19432         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
19433         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
19434         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
19435         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
19436         * config/rs6000/eabi-ci.asm: Likewise.
19437         * config/rs6000/eabi-cn.asm: Likewise.
19438         * config/rs6000/eabi.asm: Likewise.
19439         * config/rs6000/linux-unwind.h: Likewise.
19440         * config/rs6000/linux64.h: Likewise.
19441         * config/rs6000/paired.h: Likewise.
19442         * config/rs6000/paired.md: Likewise.
19443         * config/rs6000/ppc64-fp.c: Likewise.
19444         * config/rs6000/ppu_intrinsics.h: Likewise.
19445         * config/rs6000/rs6000.h: Likewise.
19446         * config/rs6000/si2vmx.h: Likewise.
19447         * config/rs6000/sol-ci.asm: Likewise.
19448         * config/rs6000/sol-cn.asm: Likewise.
19449         * config/rs6000/spe.h: Likewise.
19450         * config/rs6000/spu2vmx.h: Likewise.
19451         * config/rs6000/sysv4.h: Likewise.
19452         * config/rs6000/tramp.asm: Likewise.
19453         * config/rs6000/vec_types.h: Likewise.
19454         * config/s390/linux-unwind.h: Likewise.
19455         * config/s390/tpf-unwind.h: Likewise.
19456         * config/score/crti.asm: Likewise.
19457         * config/score/crtn.asm: Likewise.
19458         * config/sh/crt1.asm: Likewise.
19459         * config/sh/crti.asm: Likewise.
19460         * config/sh/crtn.asm: Likewise.
19461         * config/sh/divtab-sh4-300.c: Likewise.
19462         * config/sh/divtab-sh4.c: Likewise.
19463         * config/sh/divtab.c: Likewise.
19464         * config/sh/lib1funcs-4-300.asm: Likewise.
19465         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
19466         * config/sh/lib1funcs.asm: Likewise.
19467         * config/sh/lib1funcs.h: Likewise.
19468         * config/sh/linux-atomic.asm: Likewise.
19469         * config/sh/linux-unwind.h: Likewise.
19470         * config/sh/shmedia.h: Likewise.
19471         * config/sh/sshmedia.h: Likewise.
19472         * config/sh/ushmedia.h: Likewise.
19473         * config/sparc/crtfastmath.c: Likewise.
19474         * config/sparc/linux-unwind.h: Likewise.
19475         * config/sparc/sol2-c1.asm: Likewise.
19476         * config/sparc/sol2-ci.asm: Likewise.
19477         * config/sparc/sol2-cn.asm: Likewise.
19478         * config/spu/divmodti4.c: Likewise.
19479         * config/spu/divv2df3.c: Likewise.
19480         * config/spu/float_disf.c: Likewise.
19481         * config/spu/float_unsdidf.c: Likewise.
19482         * config/spu/float_unsdisf.c: Likewise.
19483         * config/spu/float_unssidf.c: Likewise.
19484         * config/spu/mfc_multi_tag_release.c: Likewise.
19485         * config/spu/mfc_multi_tag_reserve.c: Likewise.
19486         * config/spu/mfc_tag_release.c: Likewise.
19487         * config/spu/mfc_tag_reserve.c: Likewise.
19488         * config/spu/mfc_tag_table.c: Likewise.
19489         * config/spu/multi3.c: Likewise.
19490         * config/spu/spu_internals.h: Likewise.
19491         * config/spu/spu_intrinsics.h: Likewise.
19492         * config/spu/spu_mfcio.h: Likewise.
19493         * config/spu/vec_types.h: Likewise.
19494         * config/spu/vmx2spu.h: Likewise.
19495         * config/stormy16/stormy16-lib2.c: Likewise.
19496         * config/svr4.h: Likewise.
19497         * config/sync.c: Likewise.
19498         * config/v850/lib1funcs.asm: Likewise.
19499         * config/vxlib-tls.c: Likewise.
19500         * config/vxlib.c: Likewise.
19501         * config/vxworks-dummy.h: Likewise.
19502         * config/xtensa/crti.asm: Likewise.
19503         * config/xtensa/crtn.asm: Likewise.
19504         * config/xtensa/ieee754-df.S: Likewise.
19505         * config/xtensa/ieee754-sf.S: Likewise.
19506         * config/xtensa/lib1funcs.asm: Likewise.
19507         * config/xtensa/lib2funcs.S: Likewise.
19508         * config/xtensa/linux-unwind.h: Likewise.
19509         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
19510         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
19511         * coretypes.h: Likewise.
19512         * crtstuff.c: Likewise.
19513         * defaults.h: Likewise.
19514         * dwarf2.h: Likewise.
19515         * emutls.c: Likewise.
19516         * gbl-ctors.h: Likewise.
19517         * gcov-io.h: Likewise.
19518         * ginclude/float.h: Likewise.
19519         * ginclude/iso646.h: Likewise.
19520         * ginclude/stdarg.h: Likewise.
19521         * ginclude/stdbool.h: Likewise.
19522         * ginclude/stddef.h: Likewise.
19523         * ginclude/stdfix.h: Likewise.
19524         * ginclude/stdint-gcc.h: Likewise.
19525         * ginclude/tgmath.h: Likewise.
19526         * gthr-aix.h: Likewise.
19527         * gthr-dce.h: Likewise.
19528         * gthr-gnat.c: Likewise.
19529         * gthr-gnat.h: Likewise.
19530         * gthr-lynx.h: Likewise.
19531         * gthr-mipssde.h: Likewise.
19532         * gthr-nks.h: Likewise.
19533         * gthr-posix.c: Likewise.
19534         * gthr-posix.h: Likewise.
19535         * gthr-posix95.h: Likewise.
19536         * gthr-rtems.h: Likewise.
19537         * gthr-single.h: Likewise.
19538         * gthr-solaris.h: Likewise.
19539         * gthr-tpf.h: Likewise.
19540         * gthr-vxworks.h: Likewise.
19541         * gthr-win32.h: Likewise.
19542         * gthr.h: Likewise.
19543         * libgcc2.c: Likewise.
19544         * libgcc2.h: Likewise.
19545         * libgcov.c: Likewise.
19546         * tsystem.h: Likewise.
19547         * typeclass.h: Likewise.
19548         * unwind-c.c: Likewise.
19549         * unwind-compat.h: Likewise.
19550         * unwind-dw2-fde-compat.c: Likewise.
19551         * unwind-dw2-fde-darwin.c: Likewise.
19552         * unwind-dw2-fde-glibc.c: Likewise.
19553         * unwind-dw2-fde.c: Likewise.
19554         * unwind-dw2-fde.h: Likewise.
19555         * unwind-dw2.c: Likewise.
19556         * unwind-dw2.h: Likewise.
19557         * unwind-generic.h: Likewise.
19558         * unwind-pe.h: Likewise.
19559         * unwind-sjlj.c: Likewise.
19560         * unwind.inc: Likewise.
19561         * config/arm/neon-gen.ml: Change generated copyright header to
19562         refer to version 3 of the GNU General Public License with
19563         version 3.1 of the GCC Runtime Library Exception and to point
19564         readers at the COPYING3 and COPYING3.RUNTIME files and the
19565         FSF's license web page.
19566         * config/arm/arm_neon.h: Regenerate.
19567
19568 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
19569
19570         * config/cris/cris.md: Change copyright header to refer to version
19571         3 of the GNU General Public License.
19572         * doc/install.texi2html: Change copyright header to refer to version
19573         3 of the GNU General Public License and to point readers at the
19574         COPYING3 file and the FSF's license web page.
19575         * config/vax/linux.h: Likewise.
19576
19577 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19578
19579         * config/i386/i386.md (cmpcc): New.
19580         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
19581         (sync_compare_and_swap_cc*): Delete.
19582
19583         * config/s390/s390.c (s390_compare_emitted): Remove.
19584         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
19585         s390_compare_emitted used to be handled.  Assert that modes match.
19586         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
19587         refer to sync_compare_and_swap_ccsi.
19588         * config/s390/s390.h (s390_compare_emitted): Remove.
19589         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
19590         instead of s390_compare_emitted.
19591         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
19592         instead of s390_compare_emitted.
19593         * config/s390/s390.md (cmpcc): New.
19594         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
19595         CC_REGNUM, do not pretend it's set.
19596         (sync_compare_and_swap_cc*): Delete.
19597         * config/s390/predicates.md (cc_reg_operand): New.
19598
19599         * expr.c (sync_compare_and_swap_cc): Delete.
19600         * optabs.h (sync_compare_and_swap_cc): Delete.
19601         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
19602         is being used with can_compare_p.
19603         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
19604         (find_cc_set): New.
19605         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
19606         look for a MODE_CC set instead.  Use emit_store_flag.
19607         (expand_compare_and_swap_loop): Likewise, with some additional
19608         complication to avoid a force_reg when useless.  Use
19609         emit_cmp_and_jump_insns.
19610         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
19611         * doc/md.texi (sync_compare_and_swap_cc): Merge with
19612         sync_compare_and_swap documentation.
19613
19614 2009-04-09  Jan Hubicka  <jh@suse.cz>
19615
19616         * except.c (find_prev_try): Break out from ....
19617         (duplicate_eh_regions): ... here; properly update prev_try pointers
19618         when duplication part of tree.
19619         (dump_eh_tree): Improve dumping.
19620         (verify_eh_region): New.
19621         (verify_eh_tree): Use it.
19622
19623 2009-04-06  Richard Guenther  <rguenther@suse.de>
19624
19625         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
19626         &ARRAY addresses by adjusting their types and prepending
19627         a conversion.
19628         * tree-cfg.c (verify_gimple_assign_single): Verify that
19629         addresses are correct.
19630
19631 2009-04-09  Richard Guenther  <rguenther@suse.de>
19632
19633         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
19634         indices into an array reference if possible.
19635         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
19636         Fold POINTER_PLUS_EXPR statements with invariant address.
19637
19638 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
19639
19640         PR target/39634
19641         * config.gcc (powerpc64-*-linux*): Always build biarch.
19642
19643 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
19644
19645         PR c/39613
19646         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
19647         it and pedwarn if this results in an INTEGER_CST.
19648
19649 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19650
19651         * doc/install.texi: Update minimum GMP version.  Remove obsolete
19652         text in MPFR section.
19653
19654 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
19655
19656         * dwarf2out.c (class_scope_p): New static inline.
19657         (class_or_namespace_scope_p): Use it.
19658         (gen_variable_die): Use DW_TAG_member tag for static data member
19659         declarations instead of DW_TAG_variable.
19660
19661         PR middle-end/39573
19662         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
19663         variables.
19664
19665 2009-04-08  Richard Guenther  <rguenther@suse.de>
19666
19667         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
19668         valueize random data.
19669
19670 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
19671
19672         * config.gcc (aix tm_file):  Add aix-stdint.h.
19673         (aix tm clause use_gcc_stdint):  Set to wrap.
19674         * config/rs6000/aix-stdint.h:  New file.
19675
19676 2009-04-08  Richard Guenther  <rguenther@suse.de>
19677
19678         PR middle-end/36291
19679         * tree-dfa.c (add_referenced_var): Do not recurse into
19680         global initializers.
19681         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
19682         exposed variables.
19683         (fold_const_aggregate_ref): Likewise.
19684
19685 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
19686
19687         * recog.c (ordered_comparison_operator): New.
19688         * gensupport.c (std_preds): Add it.
19689         * doc/md.texi (Machine-Independent Predicates): Document it.
19690
19691 2009-04-08  Jan Hubicka  <jh@suse.cz>
19692
19693         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
19694         * function.h (rtl_eh): Remove exception_handler_label_map.
19695         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
19696         remove_exception_handler_label, for_each_eh_label_1): Remove.
19697         (rtl_remove_unreachable_regions): Remove.
19698         (convert_from_eh_region_ranges): Do not remove unreachable regions.
19699         (find_exception_handler_labels): Don't build the hashtable.
19700         (maybe_remove_eh_handler): Remove.
19701         (for_each_eh_label): Rewrite to walk the tree.
19702         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
19703         * except.h (maybe_remove_eh_handler): Remove.
19704         * passes.c (init_optimization_passes): Schedule second EH cleanup
19705         before out-of-ssa.
19706         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
19707         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
19708
19709 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
19710
19711         * genoutput.c (validate_optab_operands): New.
19712         (gen_insn, gen_expand): Call it.
19713
19714         * genflags.c (gen_insn): Detect misused iterators.
19715         (main): Pass line_no to gen_insn, exit with status 1 on error.
19716
19717         * genextract.c (line_no): Make global.
19718         (VEC_safe_set_locstr): Change assertion to error message.
19719         (main): Exit with status 1 on error.
19720
19721 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
19722
19723         PR c/39614
19724         PR c/39673
19725         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
19726         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
19727         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
19728         * c-convert.c (convert): Do not call fold on results of conversion
19729         functions when the result is a C_MAYBE_CONST_EXPR.
19730         * c-parser.c (c_parser_postfix_expression): Do not fold condition
19731         of __builtin_choose_expr.
19732         * c-typeck.c (remove_c_maybe_const_expr): New.
19733         (build_unary_op, build_conditional_expr, build_compound_expr,
19734         build_binary_op, c_objc_common_truthvalue_conversion): Call
19735         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
19736         integer operands.
19737
19738 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
19739
19740         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
19741         CODE to produce a new one. Add a prototype to use fold_convert_const
19742
19743 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
19744
19745         PR bootstrap/39660
19746         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
19747         mix declarations and code.
19748
19749 2009-04-08  Ben Elliston  <bje@au.ibm.com>
19750
19751         * gcc.c: Replace `CC' with `GCC' throughout.
19752
19753 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
19754
19755         * doc/invoke.texi: Document Atom support.
19756
19757 2009-04-07  Jason Merrill  <jason@redhat.com>
19758
19759         PR c++/25185
19760         * c-common.h, c-common.c: Add flag_pretty_templates.
19761         * c-opts.c (c_common_handle_option): Set it.
19762         * c.opt: Add -fno-pretty-templates.
19763         * doc/invoke.texi (C++ Dialect Options): Likewise.
19764
19765 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
19766
19767         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
19768         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
19769         (ia64_expand_builtin): Likewise.
19770
19771 2009-04-07  Martin Jambor  <mjambor@suse.cz>
19772
19773         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
19774         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
19775         ADDR_EXPRS are include too.
19776
19777 2009-04-07  Richard Guenther  <rguenther@suse.de>
19778
19779         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
19780         decls are only used if passes as parameters or if they are
19781         local statics and the call is not to a builtin.
19782         (call_may_clobber_ref_p_1): Likewise.
19783
19784 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19785
19786         * expr.c (do_store_flag): Remove last argument.  Simplify code
19787         to avoid duplication of tests already done by can_compare_p.
19788         (expand_expr_real_1): Adjust caller.
19789
19790 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19791
19792         * optabs.c (can_compare_p): Test the predicate of a
19793         cbranch and cstore pattern.
19794
19795 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19796
19797         * expr.c (convert_move): Use emit_store_flag instead of
19798         "emulating" it.
19799
19800 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19801
19802         * config/i386/i386.c (ix86_compare_emitted): Remove.
19803         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
19804         ix86_compare_op0 like ix86_compare_emitted used to be handled.
19805         * config/i386/i386.h (ix86_compare_emitted): Remove.
19806         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
19807         instead of ix86_compare_emitted.
19808         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
19809
19810 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
19811
19812         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
19813         Add t-sysroot-suffix to tmake_file.
19814         * config/print-sysroot-suffix.sh: New file.
19815         * config/t-sysroot-suffix: New file.
19816
19817 2009-04-07  Ben Elliston  <bje@au.ibm.com>
19818
19819         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
19820         as the latter produces a warning when the target does not support
19821         infinity.
19822
19823 2009-04-07  Ben Elliston  <bje@au.ibm.com>
19824
19825         * dfp.c: Replace type punning assignments with memcpy throughout.
19826         * Makefile.in (dfp.o-warn): Remove.
19827
19828 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
19829
19830         PR target/39634
19831         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
19832         Include soft-fp/t-softfp after rs6000/t-linux64.
19833
19834 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
19835
19836         * stor-layout.c (set_sizetype): Use the full precision of their
19837         machine mode for bitsize types.
19838
19839 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
19840
19841         * config/i386/i386.md: Revert 2 accidental checkins.
19842
19843 2009-04-06  Joey Ye  <joey.ye@intel.com>
19844             Xuepeng Guo  <xuepeng.guo@intel.com>
19845             H.J. Lu  <hongjiu.lu@intel.com>
19846
19847         Atom pipeline model, tuning and insn selection.
19848         * config.gcc (atom): Add atom config options and target.
19849
19850         * config/i386/atom.md: New.
19851
19852         * config/i386/i386.c (atom_cost): New cost.
19853         (m_ATOM): New macro flag.
19854         (initial_ix86_tune_features): Set m_ATOM.
19855         (x86_accumulate_outgoing_args): Likewise.
19856         (x86_arch_always_fancy_math_387): Likewise.
19857         (processor_target): Add Atom cost.
19858         (cpu_names): Add Atom cpu name.
19859         (override_options): Set Atom ISA.
19860         (ix86_issue_rate): New case PROCESSOR_ATOM.
19861         (ix86_adjust_cost): Likewise.
19862
19863         * config/i386/i386.h (TARGET_ATOM): New target macro.
19864         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
19865         (TARGET_OPT_AGU): New target option.
19866         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
19867         (processor_type): Add PROCESSOR_ATOM.
19868
19869         * config/i386/i386.md (cpu): Add new value "atom".
19870         (use_carry, movu): New attr.
19871         (atom.md): Include atom.md.
19872         (adddi3_carry_rex64): Set attr "use_carry".
19873         (addqi3_carry): Likewise.
19874         (addhi3_carry): Likewise.
19875         (addsi3_carry): Likewise.
19876         (*addsi3_carry_zext): Likewise.
19877         (subdi3_carry_rex64): Likewise.
19878         (subqi3_carry): Likewise.
19879         (subhi3_carry): Likewise.
19880         (subsi3_carry): Likewise.
19881         (x86_movdicc_0_m1_rex64): Likewise.
19882         (*x86_movdicc_0_m1_se): Likewise.
19883         (x86_movsicc_0_m1): Likewise.
19884         (*x86_movsicc_0_m1_se): Likewise.
19885         (*adddi_1_rex64): Emit add insn as much as possible.
19886         (*addsi_1): Likewise.
19887         (return_internal): Set atom_unit.
19888         (return_internal_long): Likewise.
19889         (return_pop_internal): Likewise.
19890         (*rcpsf2_sse): Set atom_sse_attr attr.
19891         (*qrt<mode>2_sse): Likewise.
19892         (*prefetch_sse): Likewise.
19893
19894         * config/i386/i386-c.c (ix86_target_macros_internal): New case
19895         PROCESSOR_ATOM.
19896         (ix86_target_macros_internal): Likewise.
19897
19898         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
19899         (*prefetch_sse_rex): Likewise.
19900         (sse_rcpv4sf2): Likewise.
19901         (sse_vmrcpv4sf2): Likewise.
19902         (sse_sqrtv4sf2): Likewise.
19903         (<sse>_vmsqrt<mode>2): Likewise.
19904         (sse_ldmxcsr): Likewise.
19905         (sse_stmxcsr): Likewise.
19906         (*sse_sfence): Likewise.
19907         (sse2_clflush): Likewise.
19908         (*sse2_mfence): Likewise.
19909         (*sse2_lfence): Likewise.
19910         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
19911         (<sse>_movup<ssemodesuffixf2c>): Likewise.
19912         (avx_movdqu<avxmodesuffix>): Likewise.
19913         (avx_lddqu<avxmodesuffix>): Likewise.
19914         (sse2_movntv2di): Change attr "type" to "ssemov".
19915         (sse2_movntsi): Likewise.
19916         (rsqrtv8sf2): Change attr "type" to "sseadd".
19917         (sse3_addsubv2df3): Set attr "atom_unit".
19918         (sse3_h<plusminus_insn>v4sf3): Likewise.
19919         (*sse2_pmaddwd): Likewise.
19920         (*vec_extractv2di_1_rex64): Likewise.
19921         (*vec_extractv2di_1_avx): Likewise.
19922         (sse2_psadbw): Likewise.
19923         (ssse3_phaddwv8hi3): Likewise.
19924         (ssse3_phaddwv4hi3): Likewise.
19925         (ssse3_phadddv4si3): Likewise.
19926         (ssse3_phadddv2si3): Likewise.
19927         (ssse3_phaddswv8hi3): Likewise.
19928         (ssse3_phaddswv4hi3): Likewise.
19929         (ssse3_phsubwv8hi3): Likewise.
19930         (ssse3_phsubwv4hi3): Likewise.
19931         (ssse3_phsubdv4si3): Likewise.
19932         (ssse3_phsubdv2si3): Likewise.
19933         (ssse3_phsubswv8hi3): Likewise.
19934         (ssse3_phsubswv4hi3): Likewise.
19935         (ssse3_pmaddubsw128): Likewise.
19936         (sse3_pmaddubsw: Likewise.
19937         (ssse3_palignrti): Likewise.
19938         (ssse3_palignrdi): Likewise.
19939
19940 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
19941
19942         * doc/install.texi (Specific): Fix two cross-references to MinGW.
19943
19944 2009-04-06  Richard Guenther  <rguenther@suse.de>
19945
19946         PR tree-optimization/28868
19947         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
19948         of which PHI results we inserted.
19949         (insert_into_preds_of_block): Record inserted PHIs.
19950         (eliminate): Eliminate redundant PHI nodes.
19951         (init_pre): Init inserted_phi_names.
19952
19953 2009-04-06  Richard Guenther  <rguenther@suse.de>
19954
19955         PR tree-optimization/39643
19956         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
19957         IMAGPART_EXPRs of complex constants.
19958         (execute_fold_all_builtins): If we folded a call queue
19959         TODO_update_address_taken.
19960
19961 2009-04-06  Jan Hubicka  <jh@suse.cz>
19962
19963         PR middle-end/39659
19964         * except.c (remove_unreachable_regions): Propagate may_contain_throw
19965         flag.
19966
19967 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
19968
19969         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
19970         delay slot.
19971         (ic_invalidate_array): Likewise.
19972
19973 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
19974
19975         * calls.c (emit_library_call_value_1): Fix a problem with parameter
19976         alignment for library calls.
19977
19978 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
19979
19980         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
19981         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
19982         * config/i386/mingw-stdint.h:  New file.
19983
19984 2009-04-05  Richard Guenther  <rguenther@suse.de>
19985
19986         PR tree-optimization/39648
19987         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
19988         our &A vs. &A[0] IL deficiencies.
19989
19990 2009-04-04  Jan Hubicka  <jh@suse.cz>
19991
19992         * except.c (sjlj_find_directly_reachable_regions): Be ready for
19993         removed toplevel regions.
19994         (sjlj_mark_call_sites): Likewise.
19995
19996 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
19997
19998         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
19999         (cygwin tm clause use_gcc_stdint):  Set to wrap.
20000         * config/i386/cygwin-stdint.h:  New file.
20001
20002 2009-04-04  Richard Guenther  <rguenther@suse.de>
20003
20004         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
20005         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
20006         single-argument PHIs if we are in loop-closed SSA form.
20007         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
20008         for the pre-condition.
20009         (slpeel_tree_peel_loop_to_edge): Likewise.
20010         (vect_build_loop_niters): Take an optional sequence to append stmts.
20011         (vect_generate_tmps_on_preheader): Likewise.
20012         (vect_do_peeling_for_loop_bound): Take extra guards for the
20013         pre-condition.
20014         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
20015         the cost model check.
20016         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
20017         guards if we are going to peel.  Do not apply versioning in that case.
20018         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
20019         (vect_do_peeling_for_loop_bound): Likewise.
20020         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
20021         loop bound only record extra pre-conditions, do not apply loop
20022         versioning.
20023
20024 2009-04-04  Richard Guenther  <rguenther@suse.de>
20025
20026         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
20027         renaming code.
20028
20029 2009-04-04  Jan Hubicka  <jh@suse.cz>
20030
20031         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
20032         last_basic_block for size of bb->index indexed array.
20033         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
20034         compute_out, link_btr_uses, build_btr_def_use_webs,
20035         build_btr_def_use_webs, migrate_btr_defs): Likewise.
20036
20037 2009-04-04  Jan Hubicka  <jh@suse.cz>
20038
20039         * except.c (remove_eh_handler_and_replace): Break out from ...
20040         (remove_eh_handler): ... here.
20041         (bring_to_root): New function.
20042         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
20043         handled ones, bring others to root of tree.
20044
20045 2009-04-04  Jan Hubicka  <jh@suse.cz>
20046
20047         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
20048         (all_phis_safe_to_merge): New function.
20049         (update_info): New structure.
20050         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
20051         (cleanup_empty_eh): Update SSA if possible.
20052
20053 2009-04-04  Richard Guenther  <rguenther@suse.de>
20054
20055         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
20056         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
20057         (append_vuse): Likewise.
20058
20059 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
20060
20061         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
20062         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
20063         instead of REG_UNSAVED for DW_CFA_undefined.
20064         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
20065         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
20066         outermost frame.
20067
20068 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
20069
20070         PR target/39501
20071         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
20072         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
20073         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
20074
20075 2009-04-04  Richard Guenther  <rguenther@suse.de>
20076
20077         PR tree-optimization/8781
20078         PR tree-optimization/37892
20079         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
20080         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
20081         (valueize_refs): Call it for *& valueizations.
20082         (shared_reference_ops_from_ref): Rename to ...
20083         (valueize_shared_reference_ops_from_ref): ... this and valueize.
20084         (shared_reference_ops_from_call): Rename to ...
20085         (valueize_shared_reference_ops_from_call): ... this and valueize.
20086         (vn_reference_lookup): Update.
20087         (visit_reference_op_call): Likewise.
20088         * tree-ssa-pre.c (phi_translate_1): Fold *&.
20089         (eliminate): Value-replace the call address in call statements.
20090
20091 2009-04-04  Richard Guenther  <rguenther@suse.de>
20092
20093         PR tree-optimization/39636
20094         * tree-ssa-forwprop.c
20095         (forward_propagate_addr_into_variable_array_index): Check for
20096         GIMPLE_ASSIGN before accessing the rhs code.
20097
20098 2009-04-03  Jason Merrill  <jason@redhat.com>
20099
20100         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
20101
20102 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
20103
20104         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
20105         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
20106         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
20107         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
20108         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
20109         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
20110         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
20111         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
20112         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
20113         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
20114         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
20115         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
20116         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
20117         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
20118         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
20119         Use fr_reg_or_fp01_operand instead of fr_register_operand
20120
20121         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
20122         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
20123         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
20124
20125 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
20126
20127         PR rtl-optimization/39607
20128         PR rtl-optimization/39631
20129
20130         Revert:
20131
20132         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
20133         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
20134         instead of DF_LR_OUT.
20135         * ira-lives.c (process_bb_node_lives): Ditto.
20136         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
20137         instead of DF_LR_{OUT,IN}.
20138         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
20139         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
20140
20141 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
20142
20143         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
20144         (execute_lower_omp): Always run but take the short way out if -fopenmp
20145         is not given.
20146         (gate_lower_omp): Remove, forcing the pass manager to always run the
20147         pass and always set PROP_gimple_lomp.
20148         (pass_lower_omp): Remove gate function.
20149         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
20150         PROP_trees.  Instead, require it.
20151         * ipa-cp.c (pass_ipa_cp): Likewise.
20152         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
20153         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
20154         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
20155         and PROP_gimple_leh.
20156
20157 2009-04-03  Richard Guenther  <rguenther@suse.de>
20158
20159         PR middle-end/13146
20160         PR tree-optimization/23940
20161         PR tree-optimization/33237
20162         PR middle-end/33974
20163         PR middle-end/34093
20164         PR tree-optimization/36201
20165         PR tree-optimization/36230
20166         PR tree-optimization/38049
20167         PR tree-optimization/38207
20168         PR tree-optimization/38230
20169         PR tree-optimization/38301
20170         PR tree-optimization/38585
20171         PR middle-end/38895
20172         PR tree-optimization/38985
20173         PR tree-optimization/39299
20174         * tree-ssa-structalias.h: Remove.
20175         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
20176         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
20177         (struct vuse_element_d): Remove.
20178         (struct vuse_vec_d): Likewise.
20179         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
20180         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
20181         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
20182         VUSE_ELEMENT_VAR): Likewise.
20183         (struct voptype_d): Likewise.
20184         (NUM_VOP_FREE_BUCKETS): Likewise.
20185         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
20186         (struct stmt_operands_d): Remove.
20187         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
20188         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
20189         VDEF_NUM, VDEF_VECT): Likewise.
20190         (copy_virtual_operands): Remove.
20191         (operand_build_cmp): Likewise.
20192         (create_ssa_artificial_load_stmt): Likewise.
20193         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
20194         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
20195         vuse_index and mayuse_index members.  Pack and move done and iter_type
20196         members to the front.
20197         (SSA_OP_VMAYUSE): Remove.
20198         (SSA_OP_VIRTUAL_USES): Adjust.
20199         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
20200         (unlink_stmt_vdef): Declare.
20201         (add_to_addressable_set): Remove.
20202         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
20203         (vrp_visit_stmt): Likewise.
20204         * doc/tree-ssa.texi (Alias analysis): Update.
20205         * doc/invoke.texi (max-aliased-vops): Remove docs.
20206         (avg-aliased-vops): Likewise.
20207         * tree-into-ssa.c (syms_to_rename): Remove.
20208         (need_to_update_vops_p): Likewise.
20209         (need_to_initialize_update_ssa_p): Rename to ...
20210         (update_ssa_initialized_fn): ... this.  Track function we are
20211         initialized for.
20212         (symbol_marked_for_renaming): Simplify.
20213         (add_new_name_mapping): Do not set need_to_update_vops_p.
20214         (dump_currdefs): Use SYMS_TO_RENAME.
20215         (rewrite_update_stmt): Always walk all uses/defs.
20216         (dump_update_ssa): Adjust.
20217         (init_update_ssa): Take function argument.  Track what we are
20218         initialized for.
20219         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
20220         (create_new_def_for): Initialize for cfun, assert we are initialized
20221         for cfun.
20222         (mark_sym_for_renaming): Simplify.
20223         (mark_set_for_renaming): Do not initialize update-ssa.
20224         (need_ssa_update_p): Simplify.  Take function argument.
20225         (name_mappings_registered_p): Assert we ask for the correct function.
20226         (name_registered_for_update_p): Likewise.
20227         (ssa_names_to_replace): Likewise.
20228         (release_ssa_name_after_update_ssa): Likewise.
20229         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
20230         (dump_decl_set): Do not print a newline.
20231         (debug_decl_set): Do it here.
20232         (dump_update_ssa): And here.
20233         * tree-ssa-loop-im.c (move_computations): Adjust.
20234         (movement_possibility): Likewise.
20235         (determine_max_movement): Likewise.
20236         (gather_mem_refs_stmt): Likewise.
20237         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
20238         or NAME_MEMORY_TAG.
20239         * tree-complex.c (update_all_vops): Remove.
20240         (expand_complex_move): Adjust.
20241         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
20242         Simplify test for memory referencing statement.  Exclude
20243         non-invariant ADDR_EXPRs.
20244         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
20245         * tree-loop-distribution.c (generate_memset_zero): Adjust.
20246         (rdg_flag_uses): Likewise.
20247         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
20248         related code.
20249         (tree_optimize_tail_calls_1): Also split the
20250         edge from the entry block if we have degenerate PHI nodes in
20251         the first basic block.
20252         * tree.c (init_ttree): Remove memory-tag related code.
20253         (tree_code_size): Likewise.
20254         (tree_node_structure): Likewise.
20255         (build7_stat): Re-write to be build6_stat.
20256         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
20257         (SSA_VAR_P): Adjust.
20258         (struct tree_memory_tag): Remove.
20259         (struct tree_memory_partition_tag): Likewise.
20260         (union tree_node): Adjust.
20261         (build7): Re-write to be build6.
20262         * tree-pass.h (pass_reset_cc_flags): Remove.
20263         (TODO_update_address_taken): New flag.
20264         (pass_simple_dse): Remove.
20265         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
20266         * params.h (MAX_ALIASED_VOPS): Remove.
20267         (AVG_ALIASED_VOPS): Likewise.
20268         * omp-low.c (expand_omp_taskreg): Update SSA form.
20269         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
20270         aliases the lhs in a copy stmt.
20271         * tree-ssa-dse.c (struct address_walk_data): Remove.
20272         (memory_ssa_name_same): Likewise.
20273         (memory_address_same): Likewise.
20274         (get_kill_of_stmt_lhs): Likewise.
20275         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
20276         unused stores.  Look through PHI nodes into post-dominated regions.
20277         (dse_optimize_stmt): Simplify.  Properly remove stores.
20278         (tree_ssa_dse): Compute dominators.
20279         (execute_simple_dse): Remove.
20280         (pass_simple_dse): Likewise.
20281         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
20282         gimple_loaded_syms and gimple_stored_syms computation.
20283         * toplev.c (dump_memory_report): Dump alias and pta stats.
20284         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
20285         (vn_reference_eq): Likewise.
20286         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
20287         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
20288         valueize_vuses): Remove.
20289         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
20290         (get_def_ref_stmt_vuse): ... this.
20291         (vn_reference_lookup_2): New function.
20292         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
20293         walking equivalent vuses.  Simplify.
20294         (vn_reference_lookup): Likewise.
20295         (vn_reference_insert): Likewise.
20296         (vn_reference_insert_pieces): Likewise.
20297         (visit_reference_op_call): Simplify.
20298         (visit_reference_op_load): Likewise.
20299         (visit_reference_op_store): Likewise.
20300         (init_scc_vn): Remove shared_lookup_vuses initialization.
20301         (free_scc_vn): Remove shared_lookup_vuses freeing.
20302         (sort_vuses, sort_vuses_heap): Remove.
20303         (get_ref_from_reference_ops): Export.
20304         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
20305         vector with single vuse pointer.
20306         (vn_reference_lookup_pieces, vn_reference_lookup,
20307         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
20308         (shared_vuses_from_stmt): Remove.
20309         (get_ref_from_reference_ops): Declare.
20310         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
20311         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20312         memory-tag related code.
20313         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
20314         (likely_value): Add comment, skip static-chain of call statements.
20315         (surely_varying_stmt_p): Adjust.
20316         (gimplify_and_update_call_from_tree): Likewise.
20317         (execute_fold_all_builtins): Do not rebuild alias info.
20318         (gimplify_and_update_call_from_tree): Properly update VOPs.
20319         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
20320         (copy_ref_info): Remove memory-tag related code.
20321         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
20322         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
20323         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
20324         computation.
20325         * tree-ssa-dom.c (gimple_p): Remove typedef.
20326         (eliminate_redundant_computations): Adjust.
20327         (record_equivalences_from_stmt): Likewise.
20328         (avail_expr_hash): Likewise.
20329         (avail_expr_eq): Likewise.
20330         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
20331         (stmt_makes_single_load): Likewise.
20332         (stmt_makes_single_store): Likewise.
20333         * tree-ssa-alias.c: Rewrite completely.
20334         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
20335         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
20336         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
20337         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
20338         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
20339         Remove public functions.
20340         (pass_reset_cc_flags): Remove.
20341         (pass_build_alias): Move ...
20342         * tree-ssa-structalias.c (pass_build_alias): ... here.
20343         * tree-ssa-alias.c (may_be_aliased): Move ...
20344         * tree-flow-inline.h (may_be_aliased): ... here.
20345         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
20346         count_uses_and_derefs): Move ...
20347         * gimple.c: ... here.
20348         * gimple.h (count_uses_and_derefs): Declare.
20349         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
20350         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
20351         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
20352         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
20353         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
20354         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
20355         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
20356         New functions.
20357         * tree-dfa.c (refs_may_alias_p): Move ...
20358         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
20359         * tree-ssa-alias.h: New file.
20360         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
20361         (statement_sink_location): Likewise.
20362         * opts.c (decode_options): Do not adjust max-aliased-vops or
20363         avg-aliased-vops values.
20364         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
20365         (TV_CALL_CLOBBER): Likewise.
20366         (TV_FLOW_SENSITIVE): Likewise.
20367         (TV_FLOW_INSENSITIVE): Likewise.
20368         (TV_MEMORY_PARTITIONING): Likewise.
20369         (TV_ALIAS_STMT_WALK): New timevar.
20370         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
20371         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
20372         (get_address_description): Remove memory-tag related code.
20373         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
20374         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
20375         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
20376         and immediate uses in statements.  Document.
20377         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
20378         (dump_symbols): Remove.
20379         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
20380         * alias.c (get_deref_alias_set): New function split out from ...
20381         (get_alias_set): ... here.
20382         * alias.h (get_deref_alias_set): Declare.
20383         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
20384         type parameter.  Remove restrict pointer handling.  Create a
20385         ref-all pointer in case type-based alias sets do not conflict.
20386         (vect_analyze_data_refs): Remove SMT related code.
20387         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
20388         (vectorizable_load): Likewise.
20389         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
20390         (DR_SYMBOL_TAG, DR_VOPS): Remove.
20391         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
20392         Ignore vops and SMTs.
20393         (dr_analyze_alias): Likewise..
20394         (free_data_ref): Likewise.
20395         (create_data_ref): Likewise.
20396         (analyze_all_data_dependences): Likewise.
20397         (get_references_in_stmt): Adjust.
20398         * tree-flow-inline.h (gimple_aliases_computed_p,
20399         gimple_addressable_vars, gimple_call_clobbered_vars,
20400         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
20401         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
20402         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
20403         gimple_mem_ref_stats): Remove.
20404         (gimple_vop): New function.
20405         (op_iter_next_use): Remove vuses and mayuses cases.
20406         (op_iter_next_def): Remove vdefs case.
20407         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
20408         (clear_and_done_ssa_iter): Do not set removed fields.
20409         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
20410         Assert we are not iterating over vuses or vdefs if not also
20411         iterating over uses or defs.
20412         (op_iter_init_use): Likewise.
20413         (op_iter_init_def): Likewise.
20414         (op_iter_next_vdef): Remove.
20415         (op_iter_next_mustdef): Likewise.
20416         (op_iter_init_vdef): Likewise.
20417         (compare_ssa_operands_equal): Likewise.
20418         (link_use_stmts_after): Handle vuse operand.
20419         (is_call_used): Use is_call_clobbered.
20420         (is_call_clobbered): Global variables are always call clobbered,
20421         query the call-clobbers bitmap.
20422         (mark_call_clobbered): Ignore global variables.
20423         (clear_call_clobbered): Likewise.
20424         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
20425         virtual operands sanity check.
20426         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
20427         Remove.
20428         (TARGET_MEM_REF): Remove TMR_TAG operand.
20429         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
20430         Remove call-clobber related code.
20431         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
20432         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
20433         partitions or escape reason.
20434         (get_single_def_stmt, get_single_def_stmt_from_phi,
20435         get_single_def_stmt_with_phi): Remove.
20436         (dump_referenced_vars): Tidy.
20437         (get_ref_base_and_extent): Allow bare decls.
20438         (collect_dfa_stats): Adjust.
20439         * graphite.c (rename_variables_in_stmt): Adjust.
20440         (graphite_copy_stmts_from_block): Likewise.
20441         (translate_clast): Likewise.
20442         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
20443         (EXPR_DIES): New.
20444         (translate_vuse_through_block): Use the oracle.
20445         (phi_translate_1): Adjust.
20446         (value_dies_in_block_x): Use the oracle.  Cache the outcome
20447         in EXPR_DIES.
20448         (valid_in_sets): Check if the VUSE for
20449         a REFERENCE is available.
20450         (eliminate): Do not remove stmts during elimination,
20451         instead queue and remove them afterwards.
20452         (do_pre): Do not rebuild alias info.
20453         (pass_pre): Run TODO_rebuild_alias before PRE.
20454         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
20455         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
20456         (mark_all_v_defs_stmt): Remove.
20457         (mark_all_v_defs_seq): Adjust.
20458         (sra_replace): Likewise.
20459         (scalarize_use): Likewise.
20460         (scalarize_copy): Likewise.
20461         (scalarize_init): Likewise.
20462         (scalarize_ldst): Likewise.
20463         (todoflags): Remove.
20464         (tree_sra): Do not rebuild alias info.
20465         (tree_sra_early): Adjust.
20466         (pass_sra): Run TODO_update_address_taken before SRA.
20467         * tree-predcom.c (set_alias_info): Remove.
20468         (prepare_initializers_chain): Do not call it.
20469         (mark_virtual_ops_for_renaming): Adjust.
20470         (mark_virtual_ops_for_renaming_list): Remove.
20471         (initialize_root_vars): Adjust.
20472         (initialize_root_vars_lm): Likewise.
20473         (prepare_initializers_chain): Likewise.
20474         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
20475         (may_propagate_copy_into_stmt): Likewise.
20476         (merge_alias_info): Do nothing for now.
20477         (propagate_tree_value_into_stmt): Adjust.
20478         (stmt_may_generate_copy): Likewise.
20479         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
20480         not mark symbols for renaming.
20481         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
20482         with the same statement, make sure to update the new pointed-to one.
20483         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
20484         call statements, do not mark symbols for renaming.
20485         (mark_operand_necessary): Dump something.
20486         (ref_may_be_aliased): New function.
20487         (mark_aliased_reaching_defs_necessary_1): New helper function.
20488         (mark_aliased_reaching_defs_necessary): Likewise.
20489         (mark_all_reaching_defs_necessary_1): Likewise.
20490         (mark_all_reaching_defs_necessary): Likewise.
20491         (propagate_necessity): Do not process virtual PHIs.  For
20492         non-aliased loads mark all reaching definitions as necessary.
20493         For aliased loads and stores mark the immediate dominating
20494         aliased clobbers as necessary.
20495         (visited): New global static.
20496         (perform_tree_ssa_dce): Free visited bitmap after propagating
20497         necessity.
20498         (remove_dead_phis): Perform simple dead virtual PHI removal.
20499         (remove_dead_stmt): Properly unlink virtual operands when
20500         removing stores.
20501         (eliminate_unnecessary_stmts): Schedule PHI removal after
20502         stmt removal.
20503         * tree-ssa-ter.c (is_replaceable_p): Adjust.
20504         (process_replaceable): Likewise.
20505         (find_replaceable_in_bb): Likewise.
20506         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
20507         based on the single gimple vop.
20508         (verify_flow_insensitive_alias_info): Remove.
20509         (verify_flow_sensitive_alias_info): Likewise.
20510         (verify_call_clobbering): Likewise.
20511         (verify_memory_partitions): Likewise.
20512         (verify_alias_info): Likewise.
20513         (verify_ssa): Adjust..
20514         (execute_update_addresses_taken): Export.  Update SSA
20515         manually.  Optimize only when optimizing.  Use a local bitmap.
20516         (pass_update_address_taken): Remove TODO_update_ssa, add
20517         TODO_dump_func.
20518         (pass_update_address_taken): Just use TODO_update_address_taken.
20519         (init_tree_ssa): Do not initialize addressable_vars.
20520         (verify_ssa): Verify new VUSE / VDEF properties.
20521         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
20522         Do not call verify_alias_info.
20523         (delete_tree_ssa): Clear the VUSE, VDEF operands.
20524         Do not free the loaded and stored syms bitmaps.  Reset the escaped
20525         and callused solutions.  Do not free addressable_vars.
20526         Remove memory-tag related code.
20527         (warn_uninitialized_var): Aliases are always available.
20528         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
20529         * lambda-code.c (can_put_in_inner_loop): Adjust.
20530         (can_put_after_inner_loop): Likewise.
20531         (perfect_nestify): Likewise.
20532         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
20533         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
20534         (vectorizable_conversion): Do not mark symbols for renaming.
20535         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
20536         (expand_call_inline): Unlink the calls virtual operands before
20537         replacing it.
20538         (tree_function_versioning): Do not call update_ssa if we are not
20539         updating clones.  Simplify.
20540         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
20541         (propagate_with_phi): Likewise..
20542         * tree-outof-ssa.c (create_temp): Remove memory tag and call
20543         clobber code.  Assert we are not aliased or global.
20544         * tree-flow.h: Include tree-ssa-alias.h
20545         (enum escape_type): Remove.
20546         (struct mem_sym_stats_d): Likewise.
20547         (struct mem_ref_stats_d): Likewise.
20548         (struct gimple_df): Add vop member.  Remove global_var,
20549         call_clobbered_vars, call_used_vars, addressable_vars,
20550         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
20551         escaped and callused members.
20552         (struct ptr_info_def): Remove all members, add points-to solution
20553         member pt.
20554         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
20555         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
20556         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
20557         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
20558         (tree-ssa-alias.o): Likewise.
20559         (toplev.o): Add tree-ssa-alias.h
20560         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
20561         * gimple.c (gimple_set_bb): Fix off-by-one error.
20562         (is_gimple_reg): Do not handle memory tags.
20563         (gimple_copy): Also copy virtual operands.
20564         Delay updating the statement.  Do not reset loaded and stored syms.
20565         (gimple_set_stored_syms): Remove.
20566         (gimple_set_loaded_syms): Likewise.
20567         (gimple_call_copy_skip_args): Copy the virtual operands
20568         and mark the new statement modified.
20569         * tree-ssa-structalias.c (may_alias_p): Remove.
20570         (set_uids_in_ptset): Take the alias set to prune with as
20571         parameter.  Fold in the alias test of may_alias_p.
20572         (compute_points_to_sets): Compute whether a ptr is dereferenced
20573         in a local sbitmap.
20574         (process_constraint): Deal with &ANYTHING on the lhs, reject all
20575         other ADDRESSOF constraints on the lhs.
20576         (get_constraint_for_component_ref): Assert that we don't get
20577         ADDRESSOF constraints from the base of the reference.
20578         Properly generate UNKNOWN_OFFSET for DEREF if needed.
20579         (struct variable_info): Remove collapsed_to member.
20580         (get_varinfo_fc): Remove.
20581         (new_var_info): Do not set collapsed_to.
20582         (dump_constraint): Do not follow cycles.
20583         (dump_constraint_graph): Likewise.
20584         (build_pred_graph): Likewise.
20585         (build_succ_graph): Likewise.
20586         (rewrite_constraints): Likewise.
20587         (do_simple_structure_copy): Remove.
20588         (do_rhs_deref_structure_copy): Remove.
20589         (do_lhs_deref_structure_copy): Remove.
20590         (collapse_rest_of_var): Remove.
20591         (do_structure_copy): Re-implement.
20592         (pta_stats): New global variable.
20593         (dump_pta_stats): New function.
20594         (struct constraint_expr): Make offset signed.
20595         (UNKNOWN_OFFSET): Define special value.
20596         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
20597         (solution_set_expand): New helper function split out from ...
20598         (do_sd_constraint): ... here.
20599         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
20600         (do_ds_constraint): Likewise.
20601         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
20602         and CALLUSED = *CALLUSED.
20603         (set_union_with_increment): Make inc argument signed.
20604         (type_safe): Remove.
20605         (get_constraint_for_ptr_offset): Handle unknown and negative
20606         constant offsets.
20607         (first_vi_for_offset): Handle offsets before start.  Bail
20608         out early for offsets beyond the variable extent.
20609         (first_or_preceding_vi_for_offset): New function.
20610         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
20611         Together with ESCAPED = *ESCAPED this properly computes reachability.
20612         (find_what_var_points_to): New function.
20613         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
20614         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
20615         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
20616         pt_solutions_intersect): New functions.
20617         (compute_call_used_vars): Remove.
20618         (compute_may_aliases): New main entry into PTA computation.
20619         * gimple.h (gimple_p): New typedef.
20620         (struct gimple_statement_base): Remove references_memory_p.
20621         (struct gimple_statement_with_memory_ops_base): Remove
20622         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
20623         members.
20624         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
20625         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
20626         gimple_set_references_memory): Remove.
20627         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
20628         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
20629         New functions.
20630         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
20631         (verify_expr): Allow RESULT_DECL.
20632         (gimple_duplicate_bb): Do not copy virtual operands.
20633         (gimple_duplicate_sese_region): Adjust.
20634         (gimple_duplicate_sese_tail): Likewise.
20635         (mark_virtual_ops_in_region): Remove.
20636         (move_sese_region_to_fn): Do not call it.
20637         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
20638         and pass_simple_dse.
20639         (execute_function_todo): Handle TODO_update_address_taken,
20640         call execute_update_addresses_taken for TODO_rebuild_alias.
20641         (execute_todo): Adjust.
20642         (execute_one_pass): Init dump files early.
20643         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
20644         call-clobbered.
20645         (create_general_new_stmt): Clear vops.
20646         * tree-ssa-reassoc.c (get_rank): Adjust.
20647         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
20648         symbols for renaming.
20649         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
20650         (PARAM_AVG_ALIASED_VOPS): Likewise.
20651         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
20652         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
20653         * tree-ssa-operands.c: Simplify for new virtual operand representation.
20654         (operand_build_cmp, copy_virtual_operands,
20655         create_ssa_artificial_load_stmt, add_to_addressable_set,
20656         gimple_add_to_addresses_taken): Remove public functions.
20657         (unlink_stmt_vdef): New function.
20658
20659 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
20660
20661         * config.gcc (powerpc-*-linux*): Merge variants.
20662
20663 2009-04-02  Chao-ying Fu  <fu@mips.com>
20664             James Grosbach  <james.grosbach@microchip.com>
20665
20666         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
20667         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
20668         cop0_sp_offset.
20669         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
20670         keep_interrupts_masked_p, use_debug_exception_return_p.
20671         (mips_attribute_table): Add interrupt, use_shadow_register_set,
20672         keep_interrupts_masked, use_debug_exception_return.
20673         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
20674         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
20675         New functions.
20676         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
20677         (mips_print_operand): Process COP0 registers to print $0 .. $31
20678         correctly for GAS to process.
20679         (mips_interrupt_extra_call_saved_reg_p): New function.
20680         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
20681         extra registers.
20682         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
20683         (mips_compute_frame_info): Add supports for interrupt context that
20684         includes doubleword accumulators and COP0 registers.
20685         (mips_for_each_saved_acc): New function.
20686         (mips_for_each_saved_gpr_and_fpr): Change the function name from
20687         mips_for_each_saved_reg.
20688         (mips_save_reg): Save accumulators.
20689         (mips_kernel_reg_p): A new for_each_rtx callback.
20690         (mips_expand_prologue): Support interrupt handlers.
20691         (mips_restore_reg): Restore accumulators.
20692         (mips_expand_epilogue): Support interrupt handlers.
20693         (mips_can_use_return_insn): Return false for interrupt handlers.
20694         (mips_epilogue_uses): New function.
20695         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
20696         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
20697         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
20698         cop0_move): New instructions.
20699         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
20700         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
20701         defines.
20702         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
20703         New defines.
20704         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
20705         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
20706         interrupt handlers, we use K0 as the temporary register.
20707         (EPILOGUE_USES): Change to a function call.
20708         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
20709         handlers, we use K0 as the temporary register.
20710
20711         * doc/extend.texi (Function Attributes): Document interrupt,
20712         use_shadow_register_set, keep_interrupts_masked,
20713         use_debug_exception_return for MIPS attributes.
20714
20715 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
20716
20717         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
20718         Remove a number of t-files from tmake_file.
20719         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
20720         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
20721         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
20722         target_prototype, not TARGET_PROTOTYPE.
20723         (LINK_OS_GNU_SPEC): Define.
20724         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
20725         and darwin-ldoubdle.c.
20726
20727 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
20728
20729         PR driver/39293
20730         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
20731         (cpp_options): Ditto.
20732         (default_compilers): Ditto.
20733         (display_help): Ditto.
20734         (process_command): Ditto.
20735         (do_spec_1): Ditto.
20736         (set_input): Use lbasename instead of duplicate code.
20737         (save_temps_prefix): New static for -save-temps=obj.
20738         (save_temps_length): Ditto.
20739
20740         * doc/invoke.texi (-save-temps=obj): Document new variant to
20741         -save-temps switch.
20742
20743 2009-04-02  Jeff Law  <law@redhat.com>
20744
20745         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
20746         variable.
20747
20748 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20749
20750         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
20751         * configure: Regenerated.
20752
20753 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
20754
20755         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
20756         share the argument list.
20757
20758 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
20759
20760         Merge
20761
20762         2009-02-12  Diego Novillo  <dnovillo@google.com>
20763
20764         * varpool.c (debug_varpool): New.
20765         * cgraph.h (debug_varpool): Declare.
20766
20767 2009-04-02  Jan Hubicka  <jh@suse.cz>
20768
20769         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
20770         pass.
20771
20772 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20773
20774         * config/i386/i386.c (ix86_abi): Move initialization to ...
20775         (override_options): Here.
20776
20777 2009-04-02  Christian Bruel  <christian.bruel@st.com>
20778
20779         * config/sh/sh.c (sh_dwarf_register_span): New function.
20780         (TARGET_DWARF_REGISTER_SPAN): Define.
20781         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
20782
20783 2009-04-02  Ira Rosen  <irar@il.ibm.com>
20784
20785         PR tree-optimization/39595
20786         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
20787         interleaved loads group is not  greater than the SLP group size.
20788
20789 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
20790
20791         * builtins.c (is_builtin_name): New.
20792         (called_as_built_in): Use is_builtin_name.
20793         * tree.h (is_builtin_name): New.
20794         * varasm.c (incorporeal_function_p): Use is_builtin_name
20795
20796 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
20797
20798         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
20799
20800 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
20801
20802         PR c++/26693
20803         * c-decl.c (clone_underlying_type): Move this ...
20804         * c-common.c (set_underlying_type): ... here.
20805         Also, make sure the function properly sets TYPE_STUB_DECL() on
20806         the newly created typedef variant type.
20807         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
20808         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
20809         points.
20810
20811 2009-04-02  Richard Guenther  <rguenther@suse.de>
20812
20813         PR tree-optimization/37221
20814         * tree-flow.h (degenerate_phi_result): Declare.
20815         * tree-ssa-dom.c (degenerate_phi_result): Export.
20816         * tree-scalar-evolution.c (analyze_initial_condition): If
20817         the initial condition is defined by a degenerate PHI node
20818         use the degenerate value.
20819
20820 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
20821
20822         PR rtl-optimization/39588
20823         * combine.c (merge_outer_ops): Do not set the constant when this
20824         is not necessary.
20825         (simplify_shift_const_1): Do not modify it either in this case.
20826
20827 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
20828
20829         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
20830         tuning is deprecated if -mtune value is set to an Itanium1 variant.
20831
20832 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
20833
20834         PR c/29027
20835         * c-lex.c (interpret_float): Default (no suffix) is double.
20836
20837 2009-04-1  Xinliang David Li  <davidxl@google.com>
20838
20839         * config/i386/i386.c (legitimate_constant_p): Recognize
20840         all one vector constant.
20841
20842 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20843
20844         * config/vax/vax.c: Add #includes to silence warnings.
20845         Change #include order to silence two warnings.
20846
20847 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20848
20849         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
20850         (ASM_SPEC): Pass -k to the assembler for PIC code.
20851
20852 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20853
20854         * config.gcc: Add vax-*-linux* to the switch.
20855         * config/vax/linux.h: New file. (TARGET_VERSION,
20856         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
20857
20858 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20859
20860         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
20861         Use predicate macros instead of GET_CODE() == foo.
20862         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
20863         ashlsi3, rotrsi3, <unnamed>): Likewise.
20864
20865 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20866
20867         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
20868         jbbccihi, jbbccisi): Remova trailing whitespace.
20869         * config/vax/constraints.md: Likewise.
20870         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
20871         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
20872         * config/vax/predicates.md: Likewise.
20873         * config/vax/vax.c (print_operand_address, vax_output_int_move,
20874         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
20875         * config/vax/vax.h: Likewise.
20876         * config/vax/vax.md (nonlocal_goto): Likewise.
20877
20878 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20879
20880         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
20881         (indirectable_address_p, adjacent_operands_p): Add spaces around
20882         braces.
20883         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
20884
20885 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20886
20887         * config/vax/vax.c (legitimate_constant_address_p,
20888         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
20889         index_term_p, reg_plus_index_p, legitimate_address_p,
20890         vax_mode_dependent_address_p): Update comments to match functions
20891         modified by the recent int->bool conversion.
20892
20893 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20894
20895         * config/vax/builtins.md: Update copyright message.
20896         * config/vax/constraints.md: Likewise.
20897         * config/vax/netbsd-elf.h: Likewise.
20898         * config/vax/predicates.md: Likewise.
20899         * config/vax/vax-protos.h: Likewise.
20900         * config/vax/vax.c: Likewise.
20901         * config/vax/vax.h: Likewise.
20902         * config/vax/vax.md: Likewise.
20903         * config/vax/vax.opt: Likewise.
20904
20905 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20906
20907         * config/vax/builtins.md (ffssi2, ffssi2_internal,
20908         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
20909         * config/vax/constraints.md (B, R): Likewise.
20910         * config/vax/predicates.md (external_memory_operand,
20911         nonimmediate_addsub_di_operand): Likewise.
20912         * config/vax/vax.c (vax_output_int_add): Likewise.
20913         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
20914         untyped_call): Likewise.
20915
20916 2009-04-01  Matt Thomas  <matt@3am-software.com>
20917
20918         * config/vax/predicates.md: New file.
20919         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
20920         external_const_operand, nonsymbolic_operand, external_memory_operand,
20921         indirect_memory_operand, indexed_memory_operand,
20922         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
20923         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
20924         predicate.
20925         * config/vax/constraints.md: New file.
20926         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
20927         New constraint.
20928         * config/vax/builtins.md: New file.
20929         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
20930         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
20931         jbbccisi): Define.
20932         * config/vax/vax.opt (mqmath): Add option.
20933         * config/vax/vax.md (isfx): Extend with DI.
20934         (VAXintQH, VAXintQHSD): Define.
20935         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
20936         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
20937         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
20938         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
20939         (movdi): Update constraints and use vax_output_int_move().
20940         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
20941         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
20942         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
20943         nonlocal_goto): New.
20944         (mov<mode>): Extend accepted operand types.
20945         (subdi3_old): Rename from subdi3, change update constraints and use
20946         a new implementation.
20947         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
20948         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
20949         MOVE_RATIO, CLEAR_RATIO): Define.
20950         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
20951         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
20952         (PRINT_OPERAND): Redefine using a function instead of inlined code.
20953         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
20954         (split_quadword_operands): Make static and really allow variable
20955         splitting.
20956         (print_operand_address): Update for PIC generation.
20957         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
20958         indexable_address_p, fixup_mathdi_operand,
20959         vax_expand_addsub_di_operands, adjacent_operands_p): New.
20960         (vax_float_literal, legitimate_constant_p,
20961         indirectable_constant_address_p, index_term_p,
20962         reg_plus_index_p): Return bool instead of int.
20963         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
20964         where needed.
20965         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
20966         generation.
20967         (vax_output_conditional_branch): Indent.
20968         (legitimate_constant_address_p, indirectable_constant_address_p,
20969         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
20970         vax_mode_dependent_address_p): Return bool instead of int, update for
20971         PIC generation.
20972         * config/vax/vax-protos.h (legitimate_constant_address_p,
20973         legitimate_constant_p, legitimate_address_p,
20974         vax_mode_dependent_address_p): Change declaration to bool.
20975         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
20976         vax_expand_addsub_di_operands, vax_output_int_subtract,
20977         vax_output_movmemsi): Declare.
20978         (split_quadword_operands, vax_float_literal): Delete declaration.
20979         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
20980         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
20981         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
20982         ASM_OUTPUT_DWARF_PCREL): Define.
20983         (ASM_SPEC): Change definition to allow PIC generation.
20984
20985 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
20986
20987         * doc/sourcebuild.texi: Update front-end requirements.
20988
20989 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
20990
20991         PR target/39226
20992         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
20993         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
20994         (booldi3_internal3): Use boolean_or_operator instead of
20995         boolean_operator.
20996
20997 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
20998
20999         PR c/39605
21000         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
21001         declarator whose size is not an integer constant expression but
21002         folds to an integer constant, then treat it as a constant
21003         subsequently.
21004
21005 2009-04-01  Richard Guenther  <rguenther@suse.de>
21006
21007         * fold-const.c (fold_plusminus_mult_expr): Do not fold
21008         i * 4 + 2 to (i * 2 + 1) * 2.
21009
21010 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21011
21012         PR c/37772
21013         * c-parser.c (c_parser_asm_statement): Skip until close paren and
21014         return if c_parser_asm_string_literal returned NULL.
21015
21016 2009-04-01  Nick Clifton  <nickc@redhat.com>
21017
21018         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
21019         already defined.
21020         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
21021         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
21022         other typedefs to avoid conflicts with libgcc2.c.  Define labels
21023         to gain 16-bit bit-manipulation functions from libgcc2.c and then
21024         include it.
21025         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
21026         to gain 16-bit trapping arithmetic functions from libgcc2.c and
21027         then include it.
21028
21029 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
21030
21031         * varasm.c (default_function_rodata_section): Declare DOT as
21032         const char*.
21033
21034 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
21035             Andrey Galkin  <agalkin@hypercom.com>
21036
21037         PR/39492
21038         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
21039         Make object_name unique for each process.
21040
21041 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21042
21043         PR other/39591
21044         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
21045         addressable variables in the parallel that could go out of scope while
21046         running queued tasks.
21047
21048 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
21049
21050         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
21051         (CASE_VALUES_THRESHOLD): Redefine.
21052         * config/avr/avr.c (avr_override_options): Remove initialization of
21053         avr_case_values_threshold variable.
21054         (avr_case_values_threshold): Remove variable. Add new function.
21055         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
21056         * config/avr/avr.opt (mno-tablejump): Remove option.
21057         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
21058
21059 2009-04-01  DJ Delorie  <dj@redhat.com>
21060
21061         * varasm.c (default_function_rodata_section): Don't assume
21062         anything about where the first '.' in the section name is.
21063
21064 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
21065
21066         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
21067         rs6000_emit_stack_tie.
21068
21069 2009-03-31  Ian Lance Taylor  <iant@google.com>
21070
21071         * tree-eh.c (tree_remove_unreachable_handlers): Compare
21072         gimple_code with GIMPLE_RESX, not RESX.
21073
21074 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21075
21076         * c-common.c (c_get_ident): New.
21077         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
21078
21079 2009-04-01  Ben Elliston  <bje@au.ibm.com>
21080
21081         * config/rs6000/sysv4.opt (msdata): Improve option description.
21082
21083 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
21084
21085         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
21086         (divdf3_internal_lat): Remove.
21087         (divxf3_internal_lat): Remove.
21088         (divxf3_internal_thr): Remove.
21089         (divxf): Use divxf3_internal.
21090         * config/ia64/div.md (divsf3_internal_lat): New.
21091         (divdf3_internal_lat): New.
21092         (divxf3_internal): New.
21093
21094 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21095
21096         PR c/448
21097         * Makefile.in (USE_GCC_STDINT): Define.
21098         (stmp-int-hdrs): Install stdint.h if applicable.
21099         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
21100         if known.
21101         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
21102         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
21103         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21104         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21105         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21106         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21107         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21108         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21109         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21110         (c_common_nodes_and_builtins): Initialize
21111         underlying_wchar_type_node.  Do not initialize
21112         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
21113         nodes for new types.
21114         (c_stddef_cpp_builtins): Define macros for new types.
21115         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
21116         Remove.
21117         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
21118         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
21119         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
21120         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
21121         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
21122         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
21123         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
21124         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
21125         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
21126         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
21127         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
21128         int16_type_node, int32_type_node, int64_type_node,
21129         uint8_type_node, uint16_type_node, c_uint32_type_node,
21130         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
21131         int_least32_type_node, int_least64_type_node,
21132         uint_least8_type_node, uint_least16_type_node,
21133         uint_least32_type_node, uint_least64_type_node,
21134         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
21135         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
21136         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
21137         uintptr_type_node): Define.
21138         * c-cppbuiltin.c (builtin_define_constants,
21139         builtin_define_type_minmax): New.
21140         (builtin_define_stdint_macros): Define more macros.
21141         (c_cpp_builtins): Define more limit macros.
21142         (type_suffix): New.
21143         (builtin_define_type_max): Define in terms of
21144         builtin_define_type_minmax.  Remove is_long parameter.  All
21145         callers changed.
21146         * config.gcc (use_gcc_stdint): Define.
21147         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
21148         Add newlib-stdint.h for generic targets.
21149         * config/glibc-stdint.h, config/newlib-stdint.h,
21150         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
21151         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
21152         * config/score/score.h (UINTPTR_TYPE): Define.
21153         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21154         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21155         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21156         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21157         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21158         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21159         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21160         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21161         * config/spu/spu.h (STDINT_LONG32): Define.
21162         * configure.ac (use_gcc_stdint): Substitute.
21163         * configure: Regenerate.
21164         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
21165         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
21166         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
21167         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
21168         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
21169         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
21170         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
21171         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
21172         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
21173         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
21174         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
21175         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
21176         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
21177         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
21178         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
21179         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
21180         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
21181         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
21182         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
21183         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
21184         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
21185         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
21186         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21187         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21188         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21189         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21190         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21191         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21192         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
21193
21194 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
21195
21196         * loop-iv.c (suitable_set_for_replacement): Renamed from
21197         simplify_using_assignment; changed to return bool and to accept new
21198         args DEST and SRC.  Return true iff we find a source/destination pair
21199         that can be used to make a replacement, and fill SRC and DEST if so.
21200         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
21201         changed.
21202         (simplify_using_initial_values): Deal with altered regs here and track
21203         more precisely the effect they have on the validity of our expression.
21204
21205         * loop-iv.c (simplify_using_condition): A condition of the form
21206         (EQ REG CONST) can be used to simply make a substitution.
21207         (simplify_using_initial_values): Keep track of conditions we have seen
21208         and keep using them to simplify new expressions, while applying the
21209         same substitutions to them as to the expression.
21210
21211         * simplify-rtx.c (simplify_relational_operation_1): Simplify
21212         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
21213         GEU/LTU reversed.
21214
21215         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
21216         changed.  Use this when trying to improve the upper bound.
21217         Generate the comparison by using simplify_gen_relational.
21218
21219         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
21220
21221         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
21222         functions.
21223         (simplify_using_assignment, simplify_using_initial_values): Call
21224         replace_in_expr to make replacements.  Call replace_single_def_regs
21225         once on the initial version of the expression.
21226
21227 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21228
21229         PR target/27237
21230         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
21231
21232 2009-03-31  Richard Guenther  <rguenther@suse.de>
21233
21234         PR middle-end/31029
21235         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
21236         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
21237
21238 2009-03-31  Richard Guenther  <rguenther@suse.de>
21239
21240         * tree.h (div_if_zero_remainder): Declare.
21241         * fold-const.c (div_if_zero_remainder): Export.
21242         * tree-ssa-forwprop.c
21243         (forward_propagate_addr_into_variable_array_index): Handle
21244         constant array index addition outside of the variable index.
21245
21246 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21247
21248         PR target/39592
21249         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
21250         define_splits, floatunssi<mode>2): Require x87 conversions from
21251         DImode to be permitted.
21252
21253 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21254
21255         PR preprocessor/15638
21256         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
21257
21258 2009-03-31  Richard Guenther  <rguenther@suse.de>
21259
21260         PR middle-end/23401
21261         PR middle-end/27810
21262         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
21263         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
21264         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
21265         a separate statement.
21266         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
21267         (lookup_tmp_var): Likewise.
21268         (is_gimple_formal_tmp_or_call_rhs): Remove.
21269         (is_gimple_reg_or_call_rhs): Rename to ...
21270         (is_gimple_reg_rhs_or_call): ... this.
21271         (is_gimple_mem_or_call_rhs): Rename to ...
21272         (is_gimple_mem_rhs_or_call): ... this.
21273         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
21274         DECL_GIMPLE_REG_P only if is_formal is true.
21275         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
21276         for non-proper post-modify expression gimplification.
21277         (gimplify_self_mod_expr): For post-modify expressions gimplify
21278         the lvalue to a minimal lvalue.
21279         (rhs_predicate_for): Remove formal temp case.
21280         (gimplify_modify_expr_rhs): Likewise.
21281         (gimplify_addr_expr): Use is_gimple_reg.
21282         (gimplify_expr): Remove formal temp cases.
21283         (gimple_regimplify_operands): Likewise.
21284         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
21285         and FILTER_EXPR like constants.
21286         * gimple.c (walk_gimple_op): Fix val_only initialization, use
21287         is_gimple_reg.
21288         (is_gimple_formal_tmp_rhs): Remove.
21289         (is_gimple_reg_rhs): Remove special casing.
21290         (is_gimple_mem_rhs): Fix.
21291         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
21292         (is_gimple_formal_tmp_var): Remove.
21293         (is_gimple_formal_tmp_reg): Likewise.
21294         (is_gimple_min_lval): Allow invariant component ref parts.
21295         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
21296         is_gimple_formal_tmp_reg): Remove declarations.
21297         * tree-cfg.c (verify_expr): Verify that variables with address
21298         taken do not have DECL_GIMPLE_REG_P set.
21299         * tree-mudflap.c (mf_build_check_statement_for): Use
21300         force_gimple_operand instead of gimplify_expr.
21301
21302 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
21303
21304         * modulo-sched.c (sms_schedule_by_order): Pass the actual
21305         schedulable rows to compute_split_row.
21306
21307 2009-03-31  Ben Elliston  <bje@au.ibm.com>
21308
21309         PR target/31635
21310         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
21311         OPT_mvrsave.
21312
21313 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21314
21315         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
21316         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
21317         * configure: Regenerate.
21318         * config.in: Regenerate.
21319         * config/rs6000/rs6000.opt (mtls-markers): Add.
21320         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
21321         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
21322         (tls_ld_aix, tls_ld_sysv): Likewise.
21323         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
21324         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
21325
21326 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21327
21328         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
21329
21330 2009-03-30  Jan Hubicka  <jh@suse.cz>
21331
21332         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
21333         out of RESX.
21334         (tree_remove_unreachable_handlers): Cleanup EH predecestor
21335         detection and label handling.
21336
21337 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21338
21339         * ira-int.h (ira_allocno): Rename left_conflicts_num to
21340         left_conflicts_size.
21341         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
21342         ALLOCNO_LEFT_CONFLICTS_SIZE.
21343
21344         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
21345         remove_allocno_from_bucket_and_push,
21346         allocno_spill_priority_compare, push_allocnos_to_stack,
21347         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21348         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
21349         (setup_allocno_left_conflicts_num): Ditto.  Rename to
21350         setup_allocno_left_conflicts_size.
21351         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21352         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
21353         setup_allocno_left_conflicts_size instead of
21354         setup_allocno_left_conflicts_num.
21355
21356         * ira-build.c (ira_create_allocno): Use
21357         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
21358         ALLOCNO_LEFT_CONFLICTS_NUM.
21359
21360 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21361
21362         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
21363         instead of DF_LR_OUT.
21364
21365         * ira-lives.c (process_bb_node_lives): Ditto.
21366
21367         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
21368         instead of DF_LR_{OUT,IN}.
21369
21370         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
21371
21372         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
21373
21374 2009-03-30  Jan Hubicka  <jh@suse.cz>
21375
21376         * except.c (label_to_region_map): Fix thinko.
21377
21378 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
21379
21380         PR middle-end/38237
21381         * tree.h (tree_find_value): New declaration.
21382         * tree.c (tree_find_value): New function.
21383         * varasm.c (assemble_external): Avoid duplicate entries on lists.
21384
21385 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
21386
21387         PR debug/39563
21388         * c-decl.c (struct c_binding): Add locus field.
21389         (bind): Add locus argument, set locus field from it.
21390         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
21391         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
21392         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
21393         implicitly_declare, undeclared_variable, lookup_label,
21394         declare_label, c_make_fname_decl, c_builtin_function,
21395         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
21396         bind callers.
21397
21398 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
21399
21400         PR target/38781
21401         * config/i386/i386.c (classify_argument): Check total size of
21402         structure.
21403
21404 2009-03-30  Martin Jambor  <mjambor@suse.cz>
21405
21406         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
21407         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
21408         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
21409         respectively.
21410
21411         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
21412         seen_variable_array_ref while also traversing a union.
21413
21414         * tree-inline.c (optimize_inline_calls): Do not call
21415         cgraph_node_remove_callees.
21416         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
21417         (pass_remove_cgraph_callee_edges): New variable.
21418         * passes.c (init_optimization_passes): Add
21419         pass_remove_cgraph_callee_edges after early inlining and before all
21420         late intraprocedural passes.
21421
21422         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
21423
21424 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21425
21426         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
21427         Fix typos in names.
21428
21429 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21430
21431         * combine.c (simplify_comparison): Use have_insn_for.
21432         * dojump.c (do_jump): Likewise.
21433
21434 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21435
21436         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
21437         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
21438         sparc_compare_op0 like sparc_compare_emitted used to be handled.
21439         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
21440         instead of sparc_compare_emitted.
21441         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
21442         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
21443         instead of sparc_compare_emitted.
21444
21445 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21446
21447         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
21448         enter/exit cfglayout mode.
21449         (pass_partition_block): Require it.
21450         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
21451         (combine_instructions): Track basic blocks instead of labels.
21452         (update_cfg_for_uncondjump): New.
21453         (try_combine): Use it.  Update jumps after rescanning.
21454         (pass_combine): Require PROP_cfglayout.
21455         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
21456
21457 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21458
21459         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
21460         Provide/destroy PROP_cfglayout respectively.
21461         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
21462         * tree-pass.h (PROP_cfglayout): New.
21463
21464 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21465
21466         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
21467         fold_convert_const_fixed_from_fixed,
21468         fold_convert_const_fixed_from_int,
21469         fold_convert_const_fixed_from_real, fold_negate_const): Do not
21470         set TREE_CONSTANT_OVERFLOW.
21471         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
21472         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
21473
21474 2009-03-30  Ira Rosen  <irar@il.ibm.com>
21475
21476         * tree-vect-loop-manip.c: New file.
21477         * tree-vectorizer.c: Update documentation and included files.
21478         (vect_loop_location): Make extern.
21479         (rename_use_op): Move to tree-vect-loop-manip.c
21480         (rename_variables_in_bb, rename_variables_in_loop,
21481         slpeel_update_phis_for_duplicate_loop,
21482         slpeel_update_phi_nodes_for_guard1,
21483         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
21484         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
21485         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
21486         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
21487         find_loop_location): Likewise.
21488         (new_stmt_vec_info): Move to tree-vect-stmts.c.
21489         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
21490         get_vectype_for_scalar_type, vect_is_simple_use,
21491         supportable_widening_operation, supportable_narrowing_operation):
21492         Likewise.
21493         (bb_in_loop_p): Move to tree-vect-loop.c.
21494         (new_loop_vec_info, destroy_loop_vec_info,
21495         reduction_code_for_scalar_code, report_vect_op,
21496         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
21497         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
21498         (vect_supportable_dr_alignment): Likewise.
21499         * tree-vectorizer.h (tree-data-ref.h): Include.
21500         (vect_loop_location): Declare.
21501         Reorganize function declarations according to the new file structure.
21502         * tree-vect-loop.c: New file.
21503         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
21504         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
21505         * tree-vect-data-refs.c: New file.
21506         * tree-vect-patterns.c (timevar.h): Don't include.
21507         * tree-vect-stmts.c: New file.
21508         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
21509         tree-vect-slp.c, tree-vect-loop.c.
21510         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
21511         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
21512         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
21513         (tree-vect-analyze.o): Remove.
21514         (tree-vect-transform.o): Likewise.
21515         (tree-vect-data-refs.o): Add rule.
21516         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
21517         tree-vect-slp.o): Likewise.
21518         (tree-vect-patterns.o): Remove redundant dependencies.
21519         (tree-vectorizer.o): Likewise.
21520         * tree-vect-slp.c: New file.
21521
21522 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21523
21524         * optc-gen.awk: Warn if an option flag has multiple different
21525         help strings.
21526
21527 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
21528
21529         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
21530         -floop-block): Document dependences on PPL, CLooG and Graphite.
21531
21532 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
21533
21534         PR rtl-optimization/323
21535         * c-common.c (c_fully_fold, convert_and_check,
21536         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
21537         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
21538         * c-common.def (EXCESS_PRECISION_EXPR): New.
21539         * c-cppbuiltin.c (builtin_define_float_constants): Define
21540         constants with enough digits for long double.
21541         * c-lex.c (interpret_float): Interpret constant with excess
21542         precision where appropriate.
21543         * c-opts.c (c_common_post_options): Set
21544         flag_excess_precision_cmdline.  Give an error for
21545         -fexcess-precision=standard for C++ for processors where the
21546         option is significant.
21547         * c-parser.c (c_parser_conditional_expression): Handle excess
21548         precision in condition.
21549         * c-typeck.c (convert_arguments): Handle arguments with excess
21550         precision.
21551         (build_unary_op): Move excess precision outside operation.
21552         (build_conditional_expr): Likewise.
21553         (build_compound_expr): Likewise.
21554         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
21555         (build_modify_expr): Handle excess precision in RHS.
21556         (convert_for_assignment): Handle excess precision in converted
21557         value.
21558         (digest_init, output_init_element, process_init_element): Handle
21559         excess precision in initializer.
21560         (c_finish_return): Handle excess precision in return value.
21561         (build_binary_op): Handle excess precision in operands and add
21562         excess precision as needed for operation.
21563         * common.opt (-fexcess-precision=): New option.
21564         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
21565         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
21566         For standard excess precision, output explicit conversion to and
21567         truncation from XFmode.
21568         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
21569         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
21570         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
21571         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
21572         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
21573         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
21574         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
21575         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
21576         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
21577         define_splits, sqrt<mode>2): Disable where appropriate for
21578         standard excess precision.
21579         * convert.c (convert_to_real): Do not shorten arithmetic to type
21580         for which excess precision would be used.
21581         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
21582         * doc/invoke.texi (-fexcess-precision=): Document option.
21583         (-mfpmath=): Correct index entry.
21584         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
21585         flag_excess_precision): New.
21586         * langhooks.c (lhd_post_options): Set
21587         flag_excess_precision_cmdline.
21588         * opts.c (common_handle_option): Handle -fexcess-precision=.
21589         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
21590         init_excess_precision): New.
21591         (lang_dependent_init_target): Call init_excess_precision.
21592         * tree.c (excess_precision_type): New.
21593         * tree.h (excess_precision_type): Declare.
21594
21595 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
21596
21597         PR c/35235
21598         * c-typeck.c (build_component_ref): Do not copy qualifiers from
21599         non-lvalue to component.
21600
21601 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
21602
21603         PR preprocessor/34695
21604         * Makefile.in (c-opts.o): Depend on c-tree.h.
21605         * c-common.c: Move down include of diagnostic.h.
21606         (done_lexing, c_cpp_error): New.
21607         * c-common.h (done_lexing): Declare.
21608         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
21609         (parse_in).
21610         * c-opts.c: Include c-tree.h.
21611         (c_common_init_options): Set preprocessor error callback.
21612         (c_common_handle_option): Do not set preprocessor
21613         inhibit_warnings, warnings_are_errors, warn_system_headers,
21614         pedantic_errors or inhibit_warnings flags.
21615         (c_common_post_options): Do not check cpp_errors (parse_in).
21616         (c_common_finish): Do not output dependencies if there were
21617         errors.  Do not check return value of cpp_finish.
21618         * c-ppoutput.c (pp_file_change): Set input_location.
21619         * c-tree.h (c_cpp_error): Declare.
21620         * diagnostic.c (diagnostic_set_info_translated): Also initialize
21621         override_column.
21622         (diagnostic_build_prefix): Check override_column.
21623         * diagnostic.h (diagnostic_info): Add override_column field.
21624         (diagnostic_override_column): Define.
21625
21626 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
21627
21628         * c-common.c (c_expand_expr, c_staticp): Remove.
21629         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
21630         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
21631         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
21632         * c-gimplify.c (gimplify_compound_literal_expr,
21633         optimize_compound_literals_in_ctor): Remove.
21634         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
21635         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
21636         * c-semantics.c (emit_local_var): Remove.
21637
21638         * langhooks-def.h (lhd_expand_expr): Remove.
21639         * langhooks.c (lhd_expand_expr): Remove.
21640         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
21641
21642         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
21643         handling from c-semantics.c; don't call into langhook.
21644         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
21645         * gimplify.c (gimplify_compound_literal_expr,
21646         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
21647         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
21648         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
21649         as was done in c-gimplify.c.
21650         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
21651         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
21652         Move from c-common.h.
21653         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
21654
21655         * tree.c (staticp): Do not call langhook.
21656         * langhooks.c (lhd_staticp): Delete.
21657         * langhooks-def.h (lhd_staticp): Delete prototype.
21658         (LANG_HOOKS_STATICP): Delete.
21659         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
21660
21661         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
21662         instead of DECL_STMTs.
21663
21664 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
21665
21666         PR c/456
21667         PR c/5675
21668         PR c/19976
21669         PR c/29116
21670         PR c/31871
21671         PR c/35198
21672         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
21673         void_type_node.
21674         (fold_call_expr): Return a NOP_EXPR from folding rather than the
21675         contained expression.
21676         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
21677         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
21678         conditional expressions for C.
21679         (decl_constant_value_for_optimization): Move from
21680         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
21681         whether optimizing and that the expression is a VAR_DECL not of
21682         array type instead of doing such checks in the caller.  Do not
21683         check pedantic.  Call gcc_unreachable for C++.
21684         * c-common.def (C_MAYBE_CONST_EXPR): New.
21685         * c-common.h (c_fully_fold, c_save_expr,
21686         decl_constant_value_for_optimization): New prototypes.
21687         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
21688         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
21689         EXPR_INT_CONST_OPERANDS): Define.
21690         * c-convert.c (convert): Strip nops from expression.
21691         * c-decl.c (groktypename): Take extra parameters expr and
21692         expr_const_operands.  Update call to grokdeclarator.
21693         (start_decl): Update call to grokdeclarator.  Add statement for
21694         expressions used in type of decl.
21695         (grokparm): Update call to grokdeclarator.
21696         (push_parm_decl): Update call to grokdeclarator.
21697         (build_compound_literal): Add parameter non_const and build a
21698         C_MAYBE_COSNT_EXPR if applicable.
21699         (grokdeclarator): Take extra parameters expr and
21700         expr_const_operands.  Track expressions used in declaration
21701         specifiers and declarators.  Fold array sizes and track whether
21702         they are constant expressions and whether they are integer
21703         constant expressions.
21704         (parser_xref_tag): Set expr and expr_const_operands fields in
21705         return value.
21706         (grokfield): Update call to grokdeclarator.
21707         (start_function): Update call to grokdeclarator.
21708         (build_null_declspecs): Set expr and expr_const_operands fields in
21709         return value.
21710         (declspecs_add_type): Handle expressions in typeof specifiers.
21711         * c-parser.c (c_parser_declspecs): Set expr and
21712         expr_const_operands fields for declaration specifiers.
21713         (c_parser_enum_specifier): Likewise.
21714         (c_parser_struct_or_union_specifier): Likewise.
21715         (c_parser_typeof_specifier): Likewise.  Update call to
21716         groktypename.  Fold expression as needed.  Return expressions with
21717         type instead of adding statements.
21718         (c_parser_attributes): Update calls to c_parser_expr_list.
21719         (c_parser_statement_after_labels): Fold expression before passing
21720         to objc_build_throw_stmt.
21721         (c_parser_condition): Fold expression.
21722         (c_parser_asm_operands): Fold expression.
21723         (c_parser_conditional_expression): Use c_save_expr.  Update call
21724         to build_conditional_expr.
21725         (c_parser_alignof_expression): Update call to groktypename.
21726         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
21727         original_code.  Fold expression argument of va_arg.  Create
21728         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
21729         argument to va_arg.  Update calls to groktypename.  Fold array
21730         index for offsetof.  Verify that first argument to
21731         __builtin_choose_expr has integer type.
21732         (c_parser_postfix_expression_after_paren_type): Update calls to
21733         groktypename and build_compound_literal.  Handle expressions with
21734         side effects in type name.
21735         (c_parser_postfix_expression_after_primary): Update call to
21736         c_parser_expr_list.  Set original_code for calls to
21737         __builtin_constant_p.
21738         (c_parser_expr_list): Take extra parameter fold_p.  Fold
21739         expressions if requested.
21740         (c_parser_objc_type_name): Update call to groktypename.
21741         (c_parser_objc_synchronized_statement): Fold expression.
21742         (c_parser_objc_receiver): Fold expression.
21743         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
21744         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
21745         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
21746         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
21747         (struct c_typespec): Add elements expr and expr_const_operands.
21748         (struct c_declspecs): Add elements expr and expr_const_operands.
21749         (groktypename, build_conditional_expr, build_compound_literal):
21750         Update prototypes.
21751         (in_late_binary_op): Declare.
21752         * c-typeck.c (note_integer_operands): New function.
21753         (in_late_binary_op): New variable.
21754         (decl_constant_value_for_broken_optimization): Move to c-common.c
21755         and rename to decl_constant_value_for_optimization.
21756         (default_function_array_conversion): Do not strip nops.
21757         (default_conversion): Do not call
21758         decl_constant_value_for_broken_optimization.
21759         (build_array_ref): Do not fold result.
21760         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
21761         result when operand is a VLA.
21762         (c_expr_sizeof_type): Update call to groktypename.  Handle
21763         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
21764         result when operand names a VLA type.
21765         (build_function_call): Update call to build_compound_literal.
21766         Only fold result for calls to __builtin_* functions.  Strip
21767         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
21768         the function designator.
21769         (convert_arguments): Fold arguments.  Update call to
21770         convert_for_assignment.
21771         (build_unary_op): Handle increment and decrement of
21772         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
21773         decrement earlier.  Fold operand of increment and decrement.
21774         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
21775         built for integer operand.  Wrap returns that are INTEGER_CSTs
21776         without being integer constant expressions or that have integer
21777         constant operands without being INTEGER_CSTs.
21778         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
21779         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
21780         result is an integer constant expression or can be used in
21781         unevaluated parts of one and avoid folding and wrap as
21782         appropriate.  Fold operands before possibly doing -Wsign-compare
21783         warnings.
21784         (build_compound_expr): Wrap result for C99 if operands can be used
21785         in integer constant expressions.
21786         (build_c_cast): Update call to digest_init.  Do not ignore
21787         overflow from casting floating-point constants to integers.  Wrap
21788         results that could be confused with integer constant expressions,
21789         null pointer constants or floating-point constants.
21790         (c_cast_expr): Update call to groktypename.  Handle expressions
21791         included in type name.
21792         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
21793         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
21794         Update calls to convert_for_assignment.
21795         (convert_for_assignment): Take new parameter
21796         null_pointer_constant.  Do not strip nops or call
21797         decl_constant_value_for_broken_optimization.  Set
21798         in_late_binary_op for conversions to boolean.
21799         (store_init_value): Update call to digest_init.
21800         (digest_init): Take new parameter null_pointer_constant.  Do not
21801         call decl_constant_value_for_broken_optimization.  pedwarn for
21802         initializers not constant expressions.  Update calls to
21803         convert_for_assignment.
21804         (constructor_nonconst): New.
21805         (struct constructor_stack): Add nonconst element.
21806         (really_start_incremental_init, push_init_level, pop_init_level):
21807         Handle constructor_nonconst and nonconst element.
21808         (set_init_index): Call constant_expression_warning for array
21809         designators.
21810         (output_init_element): Fold value.  Set constructor_nonconst as
21811         applicable.  pedwarn for initializers not constant expressions.
21812         Update call to digest_init.  Call constant_expression_warning
21813         where constant initializers are required.
21814         (process_init_element): Use c_save_expr.
21815         (c_finish_goto_ptr): Fold expression.
21816         (c_finish_return): Fold return value.  Update call to
21817         convert_for_assignment.
21818         (c_start_case): Fold switch expression.
21819         (c_process_expr_stmt): Fold expression.
21820         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
21821         ensure statement expression is not evaluated in constant expression.
21822         (build_binary_op): Track whether results are integer constant
21823         expressions or may occur in such, disable folding and wrap results
21824         as applicable.  Fold operands for -Wsign-compare warnings unless
21825         in_late_binary_op.
21826         (c_objc_common_truthvalue_conversion): Handle results folded to
21827         integer constants that are not integer constant expressions.
21828         * doc/extend.texi: Document when typeof operands are evaluated,
21829         that condition of __builtin_choose_expr is an integer constant
21830         expression, and more about use of __builtin_constant_p in
21831         initializers.
21832
21833 2009-03-29  Richard Guenther  <rguenther@suse.de>
21834
21835         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
21836         propagate addresses of array references.
21837
21838 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
21839
21840         * regmove.c (perhaps_ends_bb_p): Remove.
21841         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
21842         from INSN and check that the main loop stays within that basic block.
21843         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
21844         (regmove_forward_pass): Split out from regmove_optimize.  Use
21845         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
21846         (regmove_backward_pass): Split out from regmove_optimize.  Use
21847         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
21848         (regmove_optimize): Simplify.
21849
21850 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
21851
21852         PR target/39545
21853         * config/i386/i386.c (classify_argument): Ignore flexible array
21854         member in struct and warn ABI change.
21855
21856 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
21857
21858         * config/i386/i386-protos.h (ix86_agi_dependent): New.
21859
21860         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
21861         (ix86_adjust_cost): Updated.
21862
21863 2009-03-29  Jan Hubicka  <jh@suse.cz>
21864
21865         PR middle-end/28850
21866         * tree-pass.h (pass_cleanup_eh): New function.
21867         (remove_unreachable_regions): Break code handling RTL
21868         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
21869         that can not be reached by runtime.
21870         (can_be_reached_by_runtime): New function.
21871         (label_to_region_map): New function.
21872         (num_eh_regions): New function.
21873         (rtl_remove_unreachable_regions): New function.
21874         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
21875         (remove_eh_region): New function.
21876         * except.h: Include sbitmap and vecprim.
21877         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
21878         num_eh_regions): Declare.
21879         * passes.c (init_optimization_passes): Schedule cleanup_eh.
21880         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
21881         * tree-eh.c (tree_remove_unreachable_handlers): New function.
21882         (tree_empty_eh_handler_p): New function.
21883         (cleanup_empty_eh): New function.
21884         (cleanup_eh): New function.
21885         (pass_cleanup_eh): New function.
21886
21887 2009-03-29  Jan Hubicka  <jh@suse.cz>
21888
21889         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
21890         for removed regions.
21891
21892 2009-03-29  Jan Hubicka  <jh@suse.cz>
21893
21894         * except.c (dump_eh_tree): Dump all datastructures.
21895
21896 2009-03-29  Jan Hubicka  <jh@suse.cz>
21897
21898         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
21899         (duplicate_eh_regions_1): Likewise.
21900         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
21901         vector; call EH verification.
21902         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
21903         Be ready for region being removed.
21904
21905 2009-03-29  Jan Hubicka  <jh@suse.cz>
21906
21907         * bitmap.c (bitmap_last_set_bit): New function.
21908         * bitmap.h (bitmap_last_set_bit): Declare.
21909
21910 2009-03-29  David Ayers  <ayers@fsfe.org>
21911
21912         PR objc/27377
21913         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
21914         by calling objc_compare_types and surpress warnings about
21915         incompatible C pointers that are compatible ObjC pointers.
21916
21917 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
21918
21919         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
21920         call initialize_inline_failed.
21921         (initialize_inline_failed): Move it from here ...
21922         * cgraph.c (initialize_inline_failed): ... to here.
21923         (cgraph_create_edge): Call initialize_inline_failed rather than
21924         setting inline_failed directly.
21925
21926 2009-03-29  Ben Elliston  <bje@au.ibm.com>
21927
21928         PR target/32542
21929         * sysv4.opt (msdata): Improve comment.
21930         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
21931         * sysv4.h (SVR4_ASM_SPEC): Likewise.
21932
21933 2009-03-29  Ben Elliston  <bje@au.ibm.com>
21934
21935         PR target/30451
21936         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
21937         load and store attributes.
21938
21939 2009-03-29  Ben Elliston  <bje@au.ibm.com>
21940
21941         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
21942         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
21943         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
21944         * doc/extend.texi (X86 Built-in Functions): Add index entries for
21945         __builtin_infq and __builtin_huge_valq.
21946
21947 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
21948
21949         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
21950         atmega8m1 devices.
21951         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
21952         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
21953
21954 2009-03-28  Xinliang David Li  <davidxl@google.com>
21955
21956         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
21957         (do_dbg_cnt): New function.
21958
21959 2009-03-28  Jan Hubicka  <jh@suse.cz>
21960
21961         Merge from pretty-ipa:
21962
21963         2009-03-27  Jan Hubicka  <jh@suse.cz>
21964
21965         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
21966         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
21967         * passes.c (function_called_by_processed_nodes_p): New.
21968         * ipa-pure-const.c (check_call): Fix handling of operands.
21969         (analyze_function): Dump debug output for skipped bodies.
21970         (local_pure_const): Use function_called_by_processed_nodes_p.
21971         * dwarf2out.c (reference_to_unused): Use output.
21972         * passes.c (do_per_function_toporder): Likewise.
21973
21974         2008-11-12  Jan Hubicka  <jh@suse.cz>
21975
21976         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
21977         * ipa-pure-const.c (funct_state_d): Add can throw field; make
21978         state_set_in_source enum
21979         (check_decl): Ignore memory tags; do not set fake looping flags;
21980         dump diagnostics.
21981         (check_operand, check_tree, check_rhs_var, check_lhs_var,
21982         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
21983         (check_call, analyze_function): Rewrite.
21984         (check_stmt): New.
21985         (add_new_function): Update call of analyze_function.
21986         (generate_summary): Add call of analyze_function.
21987         (propagate): Propagate can_throw; handle state_set_in_source correctly.
21988         (local_pure_const): New function.
21989         (pass_local_pure_const): New pass.
21990         * ipa-inline.c (inline_transform): Set after_inlining.
21991         * tree-eh.c (stmt_can_throw_external): New.
21992         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
21993         work with aliasing built.
21994         * tree-flow.h (stmt_can_throw_external): New.
21995         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
21996         and local pure/const pass in early and late optimization queue.
21997
21998 2009-03-28  Martin Jambor  <mjambor@suse.cz>
21999
22000         * fold-const.c (get_pointer_modulus_and_residue): New parameter
22001         allow_func_align.
22002         (fold_binary): Allow function decl aligment consideration is the
22003         second argument is integer constant one.
22004         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
22005         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
22006         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
22007
22008 2009-03-28  Jan Hubicka  <jh@suse.cz>
22009
22010         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
22011         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
22012         * function.h (rtl_data): Add nothrow flag.
22013         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
22014         set DECL_NOTHROW for AVAILABLE functions.
22015
22016 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
22017
22018         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
22019         following vector keyword has expansion starting with pixel or bool
22020         keyword, expand vector to __vector and pixel or bool to __pixel or
22021         __bool.
22022
22023         PR c++/39554
22024         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
22025         warn_if_disallowed_function_p): Removed.
22026         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
22027         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
22028         warning_if_disallowed_function_p.
22029         * flags.h (warn_if_disallowed_function_p,
22030         warn_disallowed_functions): Removed.
22031         * common.opt (Wdisallowed-function-list=): Removed.
22032         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
22033
22034 2009-03-28  Richard Guenther  <rguenther@suse.de>
22035
22036         PR tree-optimization/38723
22037         * tree-ssa-pre.c (compute_avail): Add all default definitions to
22038         the entry block.
22039
22040 2009-03-28  Jan Hubicka  <jh@suse.cz>
22041
22042         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
22043         test introduced by my previous patch.
22044
22045 2009-03-28  Richard Guenther  <rguenther@suse.de>
22046
22047         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
22048         the PHIs value undefined.
22049
22050 2009-03-28  Jan Hubicka  <jh@suse.cz>
22051
22052         * tree-pass.h (pass_fixup_cfg): New pass.
22053         * ipa-inline.c (inline_transform): Set
22054         always_inline_functions_inlined/after_inlining.
22055         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
22056         (pass_fixup_cfg): New pass.
22057         * passes.c (init_optimization_passes): Add fixup_cfg.
22058
22059 2009-03-28  Richard Guenther  <rguenther@suse.de>
22060
22061         PR tree-optimization/38458
22062         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
22063         argument use the arguments copy-of value.
22064
22065 2009-03-28  Richard Guenther  <rguenther@suse.de>
22066
22067         PR tree-optimization/38180
22068         * tree-ssa-ccp.c (get_default_value): Simplify.
22069         (likely_value): Likewise.
22070         (surely_varying_stmt_p): Properly handle VOP case.
22071         (ccp_initialize): Likewise.
22072         (ccp_fold): Handle propagating through *&.
22073         (fold_const_aggregate_ref): Also handle decls.
22074
22075 2009-03-28  Jan Hubicka  <jh@suse.cz>
22076
22077         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22078         * cgraph.h (cgraph_node): Likewise.
22079         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
22080         (cgraph_reset_node): Use process flag.
22081         (cgraph_mark_functions_to_output): Likewise.
22082         (cgraph_expand_function): Likewise.
22083         (cgraph_expand_all_functions): Likewise.
22084         (cgraph_output_in_order): Likewise.
22085         * dwarf2out.c (reference_to_unused): Likewise.
22086         * passes.c do_per_function_toporder): Likewise.
22087
22088 2009-03-28  Jan Hubicka  <jh@suse.cz>
22089
22090         Bring from lto-branch:
22091
22092         2008-09-03  Doug Kwan  <dougkwan@google.com>
22093
22094         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
22095         enums instead of reason strings.
22096         * cgraph.c (cgraph_create_edge): Same.
22097         (cgraph_inline_failed_string): New function.
22098         * cgraph.h (cgraph_inline_failed_t): New enum type.
22099         (cgraph_inline_failed_string): New prototype.
22100         (struct cgraph_edge): Change type of INLINED_FAILED from constant
22101         char pointer to cgraph_inline_failed_t.
22102         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
22103         (cgraph_default_inline_p): Ditto.
22104         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
22105         to cgraph_inline_failed_t pointer.
22106         * cif-code.def: New file.
22107         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
22108         reason string.
22109         (cgraph_check_inline_limits): Change type of REASON to pointer to
22110         cgraph_inline_failed_t.  Replace reason strings with enums.
22111         (cgraph_default_inline_p): Ditto.
22112         (cgraph_recursive_inlining_p): Ditto.
22113         (update_caller_keys): Change type of FAILED_REASON to
22114         cgraph_inline_failed_t.
22115         (cgraph_set_inline_failed): Change type of REASON to pointer to
22116         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
22117         convert enums to strings for text output.
22118         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
22119         to be of type cgraph_inline_failed_t.  Replace reason strings with
22120         enums.  Call cgraph_inline_failed_string to covert enums
22121         to strings for text output.
22122         (cgraph_decide_inlining): Replace reason strings with enums.
22123         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
22124         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
22125         for text output.
22126         * tree-inline.c (expand_call_inline): Change type of REASON
22127         to cgraph_inline_failed_t.  Replace reason strings with enums.
22128         Call cgraph_inline_failed_string for text output.
22129         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
22130         (cgraph.o): Ditto.
22131
22132 2009-03-28  Jan Hubicka  <jh@suse.cz>
22133
22134         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
22135         cgraph_clone_node): Remove master clone handling.
22136         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22137         * cgraph.h (master_clone): Remove.
22138         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22139         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
22140         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
22141
22142 2009-03-28  Jan Hubicka  <jh@suse.cz>
22143
22144         * cgraph.c (cgraph_function_body_availability): Functions declared
22145         inline are always safe to assume that it is not going to be replaced.
22146
22147 2009-03-28  Richard Guenther  <rguenther@suse.de>
22148
22149         PR tree-optimization/38513
22150         * tree-ssa-pre.c (eliminate): Remove redundant stores.
22151         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
22152         EXC_PTR_EXPR and FILTER_EXPR.
22153         (get_ref_from_reference_ops): Likewise.
22154
22155 2009-03-28  Richard Guenther  <rguenther@suse.de>
22156
22157         PR tree-optimization/38968
22158         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
22159         Use FLOOR_MOD_EXPR to compute misalignment.
22160
22161 2009-03-28  Richard Guenther  <rguenther@suse.de>
22162
22163         PR tree-optimization/37795
22164         * tree.h (combine_comparisons): Declare.
22165         * fold-const.c (combine_comparisons): Export.
22166         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
22167         comparisons.
22168         (ifcombine_iforif): Use combine_comparisons.
22169
22170 2009-03-28  Jan Hubicka  <jh@suse.cz>
22171
22172         * tree-eh.c (inlinable_call_p): New function.
22173         (make_eh_edges): Use it.
22174         (verify_eh_edges): Use it.
22175         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
22176         * except.c (reachable_next_level): Add inlinable_function argument
22177         (sjlj_find_directly_reachable_regions): Update.
22178         (add_reachable_handler): Do not set saw_any_handlers.
22179         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
22180         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22181         Add new inlinable call parameter.
22182         (can_throw_internal, can_throw_external): Update.
22183         * except.h (can_throw_internal_1, can_throw_external_1,
22184         foreach_reachable_handler): Update declaration.
22185
22186 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
22187
22188         * config/arm/t-arm-coff, config/h8300/coff.h,
22189         config/i386/i386-aout.h, config/i386/i386-coff.h,
22190         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
22191         config/pdp11/2bsd.h, config/rs6000/aix41.h,
22192         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
22193         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
22194         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
22195         sys-types.h: Remove.
22196         * Makefile.in: Remove protoize and fixproto support and references
22197         in comments.
22198         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
22199         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
22200         Remove.
22201         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
22202         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
22203         unprotoize$(exeext).
22204         (rest.encap): Don't depend on $(STMP_FIXPROTO)
22205         (.PHONY): Don't depend on proto.
22206         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
22207         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
22208         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
22209         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
22210         build/gen-protos.o, build/scan.o, xsys-protos.h,
22211         build/fix-header$(build_exeext), build/fix-header.o,
22212         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
22213         stmp-install-fixproto): Remove.
22214         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
22215         SYSCALLS.c or fixproto files.
22216         (install-common): Don't install protoize.
22217         (install-headers-tar, install-headers-cpio, install-headers-cp):
22218         Don't depend on $(STMP_FIXPROTO).
22219         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
22220         install fixproto files or write out fixproto settings.
22221         (uninstall): Don't uninstall protoize.
22222         * config.gcc (use_fixproto): Remove.
22223         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
22224         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
22225         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
22226         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
22227         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
22228         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
22229         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
22230         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
22231         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
22232         * config/t-vxworks (STMP_FIXPROTO): Remove.
22233         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
22234         STMP_FIXPROTO): Remove.
22235         * config.in, configure: Regenerate.
22236         * crtstuff.c (gid_t, uid_t): Don't undefine.
22237         * doc/install.texi: Change m68k-coff to m68k-elf in example.
22238         (arm-*-coff, arm-*-aout: Remove target entries.
22239         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
22240         Remove mention of AIX 4.1.
22241         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
22242         * doc/invoke.texi (Running Protoize): Remove.
22243         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
22244         (Protoize Caveats): Remove.
22245         * tsystem.h: Update comments on headers assumed to exist.
22246
22247 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
22248
22249         * genautomata.c: Add a new year to the copyright.  Add a new
22250         reference.
22251         (struct insn_reserv_decl): Add comments for member bypass_list.
22252         (find_bypass): Remove.
22253         (insert_bypass): New.
22254         (process_decls): Use insert_bypass.
22255         (output_internal_insn_latency_func): Output all bypasses with the
22256         same input insn in one switch case.
22257
22258         * rtl.def (define_bypass): Describe bypass choice.
22259         * doc/md.texi (define_bypass): Ditto.
22260
22261 2009-03-27  Richard Guenther  <rguenther@suse.de>
22262
22263         * gimplify.c (mark_addressable): Export.
22264         * tree-flow.h (mark_addressable): Declare.
22265         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
22266         * tree-ssa.c (verify_phi_args): Verify that address taken
22267         variables have TREE_ADDRESSABLE set.
22268
22269 2009-03-27  Richard Guenther  <rguenther@suse.de>
22270
22271         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
22272         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
22273         Do not mark decls TREE_ADDRESSABLE.
22274         (build_fold_addr_expr): Adjust.
22275         (fold_addr_expr): Remove.
22276         (fold_unary): Use build_fold_addr_expr.
22277         (fold_comparison): Likewise.
22278         (split_address_to_core_and_offset): Likewise.
22279         * coverage.c (tree_coverage_counter_addr): Mark the array decl
22280         TREE_ADDRESSABLE.
22281         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
22282         (gimplify_modify_expr_to_memcpy): Mark source and destination
22283         addressable.
22284         * omp-low.c (create_omp_child_function): Mark the object decl
22285         TREE_ADDRESSABLE.
22286         (lower_rec_input_clauses): Mark the var we take the address of
22287         TREE_ADDRESSABLE.
22288         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
22289
22290 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22291
22292         PR middle-end/39315
22293         * cfgexpand.c (expand_one_stack_var_at): Change alignment
22294         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
22295
22296 2009-03-27  Richard Guenther  <rguenther@suse.de>
22297
22298         PR tree-optimization/39120
22299         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
22300         constraints.
22301         (handle_lhs_call): Process return constraints.  Add escape
22302         constraints if necessary.
22303         (handle_const_call): Fill out return constraints.  Make nested
22304         case more precise.  Avoid consttmp if possible.
22305         (handle_pure_call): Fill out return constraints.  Avoid
22306         callused if possible.
22307         (find_func_aliases): Simplify call handling.
22308
22309 2009-03-27  Richard Guenther  <rguenther@suse.de>
22310
22311         PR tree-optimization/39120
22312         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
22313         as a representative.
22314         (solve_graph): Do propagate CALLUSED.
22315         (handle_pure_call): Use a scalar constraint from CALLUSED for
22316         the return value.
22317         (find_what_p_points_to): CALLUSED shall not appear in poins-to
22318         solutions.
22319
22320 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22321
22322         PR c/39323
22323         * c-common.c (handle_aligned_attribute): Properly check alignment
22324         overflow.  Use (1U << i) instead of (1 << i).
22325
22326         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
22327
22328         * expr.h (get_mem_align_offset): Updated.
22329
22330         * tree.h (tree_decl_common): Change align to "unsigned int" and
22331         move it before pointer_alias_set.
22332
22333 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22334             Jakub Jelinek  <jakub@redhat.com>
22335
22336         PR target/38034
22337         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
22338         gr_register_operand with gr_reg_or_0_operand.
22339         (cmpxchg_rel_di): Likewise.
22340         (sync_lock_test_and_set<mode>): Likewise.
22341
22342 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22343
22344         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
22345         (true_regnum): Likewise.
22346
22347         * rtlanal.c (subreg_info): Moved to ...
22348         * rtl.h (subreg_info): Here.  New.
22349         (subreg_get_info): New.
22350
22351         * rtlanal.c (subreg_get_info): Make it extern.
22352
22353 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22354
22355         PR target/39472
22356         * config/i386/i386.c (ix86_abi): New.
22357         (override_options): Handle -mabi=.
22358         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
22359         (ix86_call_abi_override): Likewise.
22360         (init_cumulative_args): Likewise.
22361         (function_arg_advance): Likewise.
22362         (function_arg_64): Likewise.
22363         (function_arg): Likewise.
22364         (ix86_pass_by_reference): Likewise.
22365         (ix86_function_value_regno_p): Likewise.
22366         (ix86_build_builtin_va_list_abi): Likewise.
22367         (setup_incoming_varargs_64): Likewise.
22368         (is_va_list_char_pointer): Likewise.
22369         (ix86_init_machine_status): Likewise.
22370         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
22371         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
22372         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
22373         (ix86_function_abi): Make it static and return enum calling_abi.
22374         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
22375         with ix86_abi.
22376         (ix86_fn_abi_va_list): Updated.
22377
22378         * config/i386/i386.h (ix86_abi): New.
22379         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
22380         (CONDITIONAL_REGISTER_USAGE): Likewise.
22381         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
22382         (machine_function): Likewise.
22383
22384         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
22385         with ix86_abi.
22386         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
22387         (STACK_BOUNDARY): Likewise.
22388         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
22389
22390         * config/i386/i386.opt (mabi=): New.
22391
22392         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
22393         return enum calling_abi.
22394         (ix86_function_type_abi): Likewise.
22395         (ix86_function_abi): Removed.
22396
22397         * doc/invoke.texi: Document -mabi= option for x86.
22398
22399 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22400
22401         * builtins.c (real_dconstp): Delete.
22402         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
22403
22404 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
22405             Jakub Jelinek  <jakub@redhat.com>
22406
22407         PR debug/37959
22408         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
22409         (gen_subprogram_die): When a function is explicit, generate the
22410         DW_AT_explicit attribute.
22411         * langhooks.h (struct lang_hooks_for_decls): Add
22412         function_decl_explicit_p langhook.
22413         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
22414         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
22415
22416 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
22417
22418         * builtins.c (fold_builtin_memory_op): Optimize memmove
22419         into memcpy if we can prove source and destination don't overlap.
22420
22421         * tree-inline.c: Include gt-tree-inline.h.
22422         (clone_fn_id_num): New variable.
22423         (clone_function_name): New function.
22424         (tree_function_versioning): Use it.
22425         * Makefile.in (GTFILES): Add tree-inline.c.
22426
22427 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
22428
22429         * BASE-VER: Change to 4.5.0.
22430
22431 2009-03-27  Xinliang David Li  <davidxl@google.com>
22432
22433         PR tree-optimization/39557
22434         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
22435
22436 2009-03-27  Xinliang David Li  <davidxl@google.com>
22437
22438         PR tree-optimization/39548
22439         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
22440         candidate check.
22441
22442 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22443
22444         * c-common.c (pointer_int_sum): Use %wd on return from
22445         tree_low_cst.
22446
22447 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22448
22449         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
22450         on return from tree_low_cst.
22451
22452 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22453
22454         PR c++/36799
22455         * ginclude/stdarg.h (va_copy): Define also for
22456         __GXX_EXPERIMENTAL_CXX0X__.
22457
22458 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22459
22460         PR c++/35652
22461         * builtins.h (c_strlen): Do not warn here.
22462         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22463         * c-common.c (pointer_int_sum): Take an explicit location.
22464         Warn about offsets out of bounds.
22465         * c-common.h (pointer_int_sum): Adjust declaration.
22466
22467 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22468
22469         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
22470         markup glitch.
22471
22472 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
22473
22474         PR c++/39554
22475         * opts.c (warn_if_disallowed_function_p): Don't assume
22476         get_callee_fndecl must return non-NULL.
22477
22478 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
22479
22480         PR rtl-optimization/39522
22481         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
22482         when reg_reloaded_valid is set.
22483
22484 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22485
22486         * config/spu/divv2df3.c: New file.
22487         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
22488         (DPBIT_FUNCS): Filter out _div_df.
22489
22490 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
22491
22492         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
22493         a jump insn, count that jump in the distance to the loop start.
22494
22495 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
22496
22497         PR target/39523
22498         * config/sh/sh.c (calc_live_regs): Fix condition for global
22499         registers except PIC_OFFSET_TABLE_REGNUM.
22500
22501 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
22502
22503         PR/39518
22504         * doc/invoke.texi (-mconsole): New.
22505         (-mcygwin): New.
22506         (-mno-cygwin): New.
22507         (-mdll): New.
22508         (-mnop-fun-dllimport): New.
22509         (-mthread): New.
22510         (-mwin32): New.
22511         (-mwindows): New.
22512         (sub section "i386 and x86-64 Windows Options"): New.
22513
22514 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
22515
22516         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
22517         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
22518
22519 2009-03-25  Richard Guenther  <rguenther@suse.de>
22520
22521         PR middle-end/39497
22522         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
22523         of -Wno-error.
22524
22525 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
22526
22527         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
22528         neither of haifa/selective schedulers are working.
22529
22530 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22531
22532         * doc/invoke.texi (Debugging Options): Fix description of
22533         -fno-merge-debug-strings.
22534
22535 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
22536
22537         * config/cris/libgcc.ver: New version-script.
22538         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
22539
22540         * configure.ac <GAS features, nop mnemonic>: Add pattern
22541         crisv32-*-* for "nop".
22542         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
22543         * configure: Regenerate.
22544
22545 2009-03-24  Ira Rosen  <irar@il.ibm.com>
22546
22547         PR tree-optimization/39529
22548         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
22549         mark_sym_for_renaming for the tag copied to the new vector
22550         pointer.
22551
22552 2009-03-24  Arthur Loiret  <aloiret@debian.org>
22553
22554         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
22555         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
22556         EXTRA_SPEC_FUNCTIONS.
22557         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
22558         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
22559         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
22560         -march and -mtune options.
22561
22562 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
22563
22564         * config/m68k/t-rtems: Add m5329 multilib.
22565
22566 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
22567             Jakub Jelinek  <jakub@redhat.com>
22568
22569         PR debug/39524
22570         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
22571         nodes.
22572
22573 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
22574
22575         PR c/39495
22576         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
22577         instead of c_parser_expression_conv, if original_code isn't one of the
22578         4 allowed comparison codes, fail.
22579
22580 2009-03-23  Richard Guenther  <rguenther@suse.de>
22581
22582         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
22583         * tree.h (struct tree_type): Likewise.
22584         * reload.h (struct insn_chain): Likewise.
22585         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
22586         * function.h (struct function): Likewise.
22587         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
22588
22589 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
22590
22591         PR tree-optimization/39516
22592         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
22593
22594 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
22595
22596         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
22597         should be set true if BITS_PER_WORD of target is bigger than 32
22598
22599 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
22600
22601         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
22602         Translate -B-options to -rpath-link.  Correct existing
22603         rpath-link and conditionalize on !nostdlib.
22604
22605 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22606
22607         * doc/extend.texi (Function Attributes, Variable Attributes):
22608         Fix typos.
22609         * doc/invoke.texi (Debugging Options, Optimize Options)
22610         (i386 and x86-64 Options, MCore Options): Likewise.
22611
22612 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
22613
22614         PR debug/37890
22615         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
22616         it for block local namespace aliases.
22617         (gen_decl_die): Pass context_die to gen_namespace_die.
22618
22619 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
22620
22621         PR c/39495
22622         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
22623         minimum or maximum value.
22624
22625 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
22626
22627         * reginfo.c (globalize_reg): Recompute derived reg sets.
22628
22629 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
22630
22631         PR target/39063
22632         * libgcc2.c (mprotect): Do not use signed arguments for
22633         VirtualProtect, use DWORD arguments.  Also fix the 'may
22634         be used uninitialized' warning for the np variable.
22635
22636 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
22637
22638         PR target/39496
22639         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
22640         functions using regparm calling conventions when not optimizing.
22641         (ix86_function_sseregparm): Similarly for sseregparm calling
22642         conventions.
22643
22644 2009-03-19  Li Feng  <nemokingdom@gmail.com>
22645
22646         PR middle-end/39500
22647         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
22648         dependence if the first conflict is after niter iterations.
22649
22650 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
22651
22652         PR middle-end/38609
22653         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
22654         functions with dynamic stack-pointer adjustments.
22655
22656 2009-03-19  Ben Elliston  <bje@au.ibm.com>
22657
22658         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
22659         option; change to -msdata=data.
22660
22661 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22662
22663         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
22664         and -fopenmp.
22665
22666 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
22667
22668         PR target/35180
22669         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
22670
22671 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
22672
22673         * doc/invoke.texi (Code Gen Options): Expand discussion of
22674         -fno-common.
22675
22676 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
22677
22678         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
22679         * matrix-reorg.c (struct matrix_info): Likewise.
22680         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
22681         * rtl.h (struct mem_attrs): Likewise.
22682         * df.h (struct df): Likewise.
22683         * tree-data-ref.h (struct data_dependence_relation): Likewise.
22684         * ira-int.h (struct ira_allocno): Likewise.
22685         * df-scan.c (struct df_collection_rec): Likewise.
22686         * ira.c (struct equivalence): Likewise.
22687         * function.c (struct temp_slot): Likewise.
22688         * cfgloop.h (struct loop): Likewise.
22689
22690         PR debug/39485
22691         * function.c (use_register_for_decl): When not optimizing, disregard
22692         register keyword for variables with types containing methods.
22693
22694 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
22695
22696         PR middle-end/39447
22697         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
22698         (is_simple_operand): Call contains_component_ref_p before calling data
22699         reference analysis that would fail on COMPONENT_REFs.
22700
22701         * tree-vrp.c (search_for_addr_array): Fix formatting.
22702
22703 2009-03-18  Richard Guenther  <rguenther@suse.de>
22704
22705         * tree-vect-transform.c (vect_loop_versioning): Fold the
22706         generated comparisons.
22707         * tree-vectorizer.c (set_prologue_iterations): Likewise.
22708         (slpeel_tree_peel_loop_to_edge): Likewise.
22709
22710 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22711
22712         PR middle-end/37805
22713         * opts.c (print_specific_help): In addition to `undocumented',
22714         accept `separate' and `joined' flags if passed alone.  Describe
22715         output by the first matched one of those.
22716         (common_handle_option): Skip over empty strings.
22717         * gcc.c (display_help): Fix help string for `--help='.
22718         * doc/invoke.texi (Option Summary, Overall Options): With
22719         `--help=', classes and qualifiers can both be repeated, but
22720         only the latter can be negated.  One should not pass only
22721         negated qualifiers.  Fix markup and examples.
22722
22723         Revert
22724         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
22725         PR middle-end/37805
22726         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
22727         and -fhelp=separate.
22728
22729 2009-03-17  Jing Yu  <jingyu@google.com>
22730
22731         PR middle-end/39378
22732         * function.h (struct rtl_data): Move is_thunk from here...
22733         (struct function): ...to here.
22734         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
22735         * varasm.c (assemble_start_function): Change is_thunk from crtl to
22736         cfun.
22737         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
22738         cfun.
22739         (alpha_does_function_need_gp, alpha_start_function): Likewise.
22740         (alpha_output_function_end_prologue): Likewise.
22741         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
22742         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
22743         (rs6000_output_function_epilogue): Likewise.
22744         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
22745
22746 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
22747
22748         PR target/39482
22749         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
22750         from different units in a single alternative.
22751         (*truncdfsf_i387): Ditto.
22752         (*truncxfsf2_mixed): Ditto.
22753         (*truncxfdf2_mixed): Ditto.
22754
22755 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
22756
22757         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
22758         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
22759
22760         PR debug/39474
22761         * tree-ssa-live.c (remove_unused_locals): Don't remove local
22762         unused non-artificial variables when not optimizing.
22763
22764         PR debug/39471
22765         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
22766         DW_TAG_imported_module even if decl is IMPORTED_DECL with
22767         NAMESPACE_DECL in its DECL_INITIAL.
22768
22769         PR middle-end/39443
22770         * optabs.c (set_user_assembler_libfunc): New function.
22771         * expr.h (set_user_assembler_libfunc): New prototype.
22772         * c-common.c: Include libfuncs.h.
22773         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
22774         for memcmp, memset, memcpy, memmove and abort.
22775         * Makefile.in (c-common.o): Depend on libfuncs.h.
22776
22777         PR debug/39412
22778         * dwarf2out.c (gen_inlined_enumeration_type_die,
22779         gen_inlined_structure_type_die, gen_inlined_union_type_die,
22780         gen_tagged_type_instantiation_die): Removed.
22781         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
22782         do nothing.
22783
22784 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
22785
22786         PR testsuite/38526
22787         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
22788         its use.
22789         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
22790         (check-parallel-%): Ditto.
22791         (check-consistency): Ditto.
22792
22793 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
22794
22795         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
22796         local variable rhs by NULL_TREE.
22797
22798 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
22799
22800         PR target/39477
22801         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
22802
22803 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
22804
22805         PR target/39476
22806         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
22807
22808 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
22809
22810         PR target/39473
22811         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
22812         for ms->sysv ABI calls only in 64bit mode.
22813
22814         * config/i386/i386.md (untyped_call): Support 32bit.
22815
22816 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
22817
22818         * doc/extend.texi: Replace x86_65 with x86_64.
22819
22820 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
22821
22822         PR tree-optimization/39455
22823         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
22824         mismatches for POINTER_TYPE_P (type).
22825         (number_of_iterations_le): Likewise.
22826
22827 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
22828
22829         * config/picochip/picochip.c: Removed profiling support.
22830         * config/picochip/picochip.md: Removed profiling instruction.
22831         * config/picochip/picochip.h: Removed profiling builtin.
22832
22833 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
22834
22835         * doc/install.texi (--with-host-libstdcxx): Document.
22836
22837 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
22838
22839         PR target/34299
22840         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
22841         generate a warning if the function name does not begin with
22842         "__vector" and the function has either the 'signal' or 'interrupt'
22843         attribute, from here to ...
22844         (avr_declare_function_name): ...here. New function.
22845         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
22846         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
22847
22848 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
22849
22850         PR bootstrap/39454
22851         * cse.c (fold_rtx): Don't modify original const_arg1 when
22852         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
22853         separate variable instead.
22854         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
22855         from out of range shift counts.
22856         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
22857
22858 2009-03-13  Catherine Moore  <clm@codesourcery.com>
22859
22860         * config/i386/x-mingw32 (host-mingw32.o): Replace
22861         diagnostic.h with $(DIAGNOSTIC_H).
22862
22863 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
22864
22865         PR target/39431
22866         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
22867         predicate.
22868         * config/i386/sync.md (sync_compare_and_swap<mode>,
22869         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
22870         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
22871         into a register.
22872         (sync_double_compare_and_swapdi_pic,
22873         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
22874         cmpxchg8b_pic_memory_operand instead of just memory_operand.
22875
22876 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
22877
22878         PR target/39445
22879         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
22880
22881 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
22882
22883         PR target/39327
22884         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
22885         (avx_addsubv4df3): Likewise.
22886         (*avx_addsubv4sf3): Likewise.
22887         (sse3_addsubv4sf3): Likewise.
22888
22889 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
22890
22891         PR target/38824
22892         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
22893
22894 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
22895
22896         PR debug/39432
22897         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
22898         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22899         registers for allocnos created from user-defined variables.
22900
22901 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22902
22903         PR target/39181
22904         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
22905         of non-integer mode as well.
22906
22907 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
22908
22909         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
22910         for functions for which the parameter types are unknown.
22911
22912 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
22913
22914         PR target/39137
22915         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
22916         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
22917         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
22918         * config/i386/i386.c (ix86_local_alignment): For
22919         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
22920         long long variables on the stack to avoid dynamic realignment.
22921         Allow the first argument to be a decl rather than type.
22922         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
22923
22924 2009-03-11  Nick Clifton  <nickc@redhat.com>
22925
22926         PR target/5362
22927         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
22928         options.
22929         Add description to mno-lsim option.
22930         * config/mcore/mcore.h: Remove comment about deprecated m4align
22931         option.
22932         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
22933         * doc/invoke.texi: Add description of mno-lsim and
22934         mstack-increment options.
22935
22936         * config/fr30/fr30.opt: Document the -mno-lsim option.
22937         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
22938         and -mno-lsim options.
22939
22940 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22941
22942         * fold-const.c (fold_comparison): Only call fold_inf_compare
22943         if the mode supports infinities.
22944
22945 2009-03-11  Jason Merrill  <jason@redhat.com>
22946
22947         PR debug/39086
22948         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
22949         end already did.  Notice GIMPLE_CALL modifications of the result.
22950         Don't copy debug information from an ignored decl or a decl from
22951         another function.
22952
22953 2009-03-10  Richard Guenther  <rguenther@suse.de>
22954             Nathan Froyd  <froydnj@codesourcery.com>
22955
22956         PR middle-end/37850
22957         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
22958         (__divMODE3): Likewise.
22959
22960 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
22961
22962         PR tree-optimization/39394
22963         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
22964         DECL_SIZE_UNIT of variable length FIELD_DECLs.
22965
22966 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
22967
22968         * recog.c (verfiy_changes): Disallow renaming of hard regs in
22969         inline asms for register asm ("") declarations.
22970
22971 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
22972
22973         * fold-const.c (fold_unary): Fix comment.
22974
22975 2009-03-07  Jan Hubicka  <jh@suse.cz>
22976
22977         PR target/39361
22978         * tree-inline.c (setup_one_parameter): Do replacement of const
22979         argument by constant in SSA form.
22980
22981 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22982
22983         PR middle-end/38028
22984         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
22985         determine alignment passed to assign_stack_local.
22986         (assign_parms_unsplit_complex): Likewise.
22987         * except.c (sjlj_build_landing_pads): Likewise.
22988
22989 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
22990
22991         PR middle-end/39360
22992         * tree-flow.h (add_referenced_var): Return bool instead of void.
22993         * tree-dfa.c (add_referenced_var): Return result of
22994         referenced_var_check_and_insert call.
22995         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
22996         of referenced_var_check_and_insert.
22997
22998         PR debug/39372
22999         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
23000         (gen_variable_die): Emit DW_AT_location on abstract static variable's
23001         DIE, don't emit it if abstract origin already has it.
23002         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
23003         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
23004
23005 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23006
23007         * genpreds.c (needs_variable): Fix parentheses at variable name
23008         detection.
23009         (write_tm_constrs_h): Indent generated code.
23010
23011 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23012
23013         * doc/extend.texi (Function Attributes): Add documentation
23014         for isr attributes.
23015
23016 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23017
23018         PR debug/39387
23019         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
23020         take locus from its DECL_SOURCE_LOCATION instead of input_location.
23021
23022 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
23023
23024         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
23025         the loop as bad.
23026
23027 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
23028
23029         PR debug/39379
23030         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
23031         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
23032
23033 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
23034
23035         * config/i386/i386.md (R8_REG, R9_REG): New constants.
23036         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
23037         constants instead of magic numbers.
23038         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
23039         (QI_REG_P): Ditto.
23040         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
23041         (x86_64_ms_abi_int_parameter_registers): Ditto.
23042         (x86_64_int_return_registers): Ditto.
23043         (ix86_maybe_switch_abi): Ditto.
23044         (ix86_expand_call): Ditto for clobbered_registers array.
23045         (ix86_hard_regno_mode_ok): Ditto.
23046         (x86_extended_QIreg_mentioned_p): Ditto.
23047
23048 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
23049
23050         PR tree-optimization/39349
23051         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
23052
23053         * combine.c (gen_lowpart_for_combine): Use omode when generating
23054         clobber.
23055
23056 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
23057
23058         PR rtl-optimization/39235
23059         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
23060
23061 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23062
23063         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
23064
23065 2009-03-04  Richard Guenther  <rguenther@suse.de>
23066
23067         PR tree-optimization/39362
23068         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
23069         that occur in abnormal PHIs should be varying.
23070
23071 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23072
23073         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
23074         Extend comments.
23075         (simple_iv):  Take loop as an argument instead of statement.
23076         * tree-scalar-evolution.h (simple_iv): Declaration changed.
23077         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
23078         to simple_iv.
23079         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
23080         Ditto.
23081         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
23082         * matrix-reorg.c (analyze_transpose): Ditto.
23083         * tree-data-ref.c (dr_analyze_innermost): Ditto.
23084         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
23085         * tree-predcom.c (ref_at_iteration): Ditto.
23086         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
23087
23088 2009-03-04  Richard Guenther  <rguenther@suse.de>
23089
23090         PR tree-optimization/39358
23091         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
23092         escaped_id and callused_id.
23093         (solve_graph): Likewise.
23094
23095 2009-03-04  Richard Guenther  <rguenther@suse.de>
23096
23097         PR tree-optimization/39339
23098         * tree-sra.c (try_instantiate_multiple_fields): Make it
23099         no longer ICE on the above.
23100
23101 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
23102
23103         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
23104         that fits within Pmode.
23105
23106 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23107
23108         PR middle-end/10109
23109         * tm.texi (LIBCALL_VALUE): Update description.
23110
23111 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23112
23113         PR middle-end/34443
23114         * doc/extend.texi (section): Update description.
23115
23116 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
23117
23118         PR middle-end/39345
23119         * tree-inline.c (remapped_type): New.
23120         (can_be_nonlocal): Call remapped_type instead of remap_type.
23121
23122 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23123
23124         PR fortran/39354
23125         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
23126         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
23127
23128 2009-03-03  Richard Guenther  <rguenther@suse.de>
23129
23130         PR middle-end/39272
23131         * tree.c (tree_nonartificial_location): New function.
23132         * tree.h (tree_nonartificial_location): Declare.
23133         * builtins.c (expand_builtin_memory_chk): Provide location
23134         of the call location for artificial function pieces.
23135         (maybe_emit_chk_warning): Likewise.
23136         (maybe_emit_sprintf_chk_warning): Likewise.
23137         (maybe_emit_free_warning): Likewise.
23138         * expr.c (expand_expr_real_1): Likewise.
23139
23140 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23141
23142         PR tree-optimization/39343
23143         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
23144         COMPONENT_REF t has ARRAY_TYPE.
23145
23146 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23147
23148         PR middle-end/39335
23149         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
23150         when the type precision of the induction variable should be
23151         larger than the type precision of nit.
23152         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
23153         * graphite.c (graphite_loop_normal_form): Same.
23154         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
23155
23156 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23157
23158         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
23159         (*call_1_rex64_ms_sysv): Use named constants instead of magic
23160         numbers to describe clobbered registers.
23161         (*call_value_0_rex64_ms_sysv): Ditto.
23162         * config/i386/mmx.md (mmx_emms): Ditto.
23163         (mmx_femms): Ditto.
23164
23165 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
23166
23167         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
23168         of ABI_64.
23169
23170 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23171
23172         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
23173         (spu_section_type_flags): New function.
23174
23175 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23176
23177         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
23178         reg_class_contents of FLOAT_REGS into a temporary.
23179
23180 2009-03-02  Richard Guenther  <rguenther@suse.de>
23181             Ira Rosen  <irar@il.ibm.com>
23182
23183         PR tree-optimization/39318
23184         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
23185         information to the vectorized statement.
23186
23187 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
23188
23189         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
23190         variable.  Use defined names instead of magic constants for REX SSE
23191         registers.
23192
23193 2009-03-01  Richard Guenther  <rguenther@suse.de>
23194
23195         PR tree-optimization/39331
23196         * omp-low.c (lower_send_shared_vars): Do not receive new
23197         values for the reference of DECL_BY_REFERENCE parms or results.
23198
23199 2009-03-01  Jan Hubicka  <jh@suse.cz>
23200
23201         PR debug/39267
23202         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
23203         BLOCK_NONLOCALIZED_VAR): New macros.
23204         (tree_block): Add nonlocalized_vars.
23205         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
23206         gen_decl_die): Add origin argument.  Allow generation of die with
23207         origin at hand only.
23208         (gen_member_die, gen_type_die_with_usage, force_decl_die,
23209         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
23210         of gen_*.
23211         (gen_block_die): Fix checking for unused blocks.
23212         (process_scope_var): Break out from .... ; work with origins only.
23213         (decls_for_scope) ... here; process nonlocalized list.
23214         (dwarf2out_ignore_block): Look for nonlocalized vars.
23215         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
23216         vars.
23217         (dump_scope_block): Dump them.
23218         * tree-inline.c (remap_decls): Handle nonlocalized vars.
23219         (remap_block): Likewise.
23220         (can_be_nonlocal): New predicate.
23221         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
23222
23223 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23224
23225         * configure: Regenerate.
23226
23227 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23228
23229         * optc-gen.awk: No need to duplicate option flags twice.
23230         Reuse help texts for duplicate options which do not have any.
23231
23232         * gcc.c (display_help): Document --version.
23233
23234         * gcc.c (main): If print_help_list and verbose_flag, ensure
23235         driver output comes before subprocess output.
23236
23237         * optc-gen.awk: Assign all remaining fields to help string,
23238         space-separated, for multi-line help in *.opt.
23239
23240         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
23241         -Wno-pedantic-ms-format is for MinGW targets only.
23242
23243         * doc/options.texi (Option file format): Fix bad indentation,
23244         restoring dropped sentence.
23245
23246 2009-02-28  Jan Hubicka  <jh@suse.cz>
23247
23248         * tree-inline.c (tree_function_versioning): Output debug info.
23249
23250 2009-02-28  Jan Hubicka  <jh@suse.cz>
23251
23252         PR debug/39267
23253         * tree-inline.c (setup_one_parameter): Do not copy propagate
23254         arguments when not optimizing.
23255
23256 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
23257
23258         PR target/39327
23259         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23260         (avx_addsubv4df3): Likewise.
23261         (*avx_addsubv4sf3): Likewise.
23262         (sse3_addsubv4sf3): Likewise.
23263         (*avx_addsubv2df3): Likewise.
23264         (sse3_addsubv2df3): Likewise.
23265         (avx_unpckhps256): Correct item selectors.
23266         (avx_unpcklps256): Likewise.
23267         (avx_unpckhpd256): Likewise.
23268         (avx_unpcklpd256): Likewise.
23269
23270 2009-02-28  Jan Hubicka  <jh@suse.cz>
23271
23272         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
23273         static vars.
23274         (copy_arguments_for_versioning): If var is declared don't declare it.
23275         (tree_function_versioning): First setup substitutions and then copy
23276         args.
23277
23278 2009-02-27  Jan Hubicka  <jh@suse.cz>
23279
23280         PR debug/39267
23281         * cgraph.h (varpool_output_debug_info): Remove.
23282         * cgraphunit.c (varpool_output_debug_info): Remove.
23283         * dwarf2out.c (deferred_locations_struct): New struct
23284         (deferred_locations): New type.
23285         (deferred_locations_list): New static var.
23286         (deffer_location): New function.
23287         (gen_variable_die): Use it.
23288         (decls_for_scope): Output info on local static vars.
23289         (dwarf2out_finish): Process deferred locations.
23290         * varpool.c (varpool_output_debug_info): Remove.
23291
23292 2009-02-27  Jan Hubicka  <jh@suse.cz>
23293
23294         PR debug/39267
23295         * tree.h (TREE_PROTECTED): Fix comment.
23296         (BLOCK_HANDLER_BLOCK): Remove.
23297         (struct tree_block): Remove handler_block add body_block.
23298         (inlined_function_outer_scope_p): New.
23299         (is_body_block): Remove.
23300         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
23301         * dwarf2out.c (is_inlined_entry_point): Remove.
23302         (add_high_low_attributes): Use inlined_function_outer_scope_p.
23303         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
23304         code.
23305         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
23306         * gimplify.c (gimplify_expr): Gimplify body blocks.
23307         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
23308         block with multiple subblocks.
23309         (dump_scope_block): Prettier output; dump more flags and info.
23310         (dump_scope_blocks): New.
23311         (remove_unused_locals): Use dump_scope_blocks.
23312         * tree-flow.h (dump_scope_blocks): Declare.
23313         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
23314         * stmt.c (is_body_block): Remove.
23315         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
23316         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
23317
23318 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
23319
23320         PR middle-end/39308
23321         * graphite.c (graphite_loop_normal_form): Do not call
23322         number_of_iterations_exit from a gcc_assert.
23323
23324 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23325
23326         * config/s390/s390.c (s390_swap_cmp): Look for conditional
23327         jumps if COND is NULL.
23328         (find_cond_jump): New function.
23329         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
23330         * config/s390/s390.md: Remove z10_cobra attribute value.
23331
23332 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
23333
23334         * config/alpha/alpha.h (alpha_expand_mov): Return false if
23335         force_const_mem returns NULL_RTX.
23336
23337 2009-02-26  Jan Hubicka  <jh@suse.cz>
23338
23339         PR debug/39267
23340         * cgraph.h (varpool_output_debug_info): Remove.
23341         * cgraphunit.c (varpool_output_debug_info): Remove.
23342         * dwarf2out.c (deferred_locations_struct): New struct
23343         (deferred_locations): New type.
23344         (deferred_locations_list): New static var.
23345         (deffer_location): New function.
23346         (gen_variable_die): Use it.
23347         (decls_for_scope): Output info on local static vars.
23348         (dwarf2out_finish): Process deferred locations.
23349         * varpool.c (varpool_output_debug_info): Remove.
23350
23351 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
23352
23353         PR rtl-optimization/39241
23354         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
23355         to subreg_offset_representable_p.
23356
23357 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
23358
23359         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
23360         execute function prototype.  Get f and nregs from max_reg_num
23361         and get_insns.  Remove the first backward pass as it's dead,
23362         guard the forward pass by flag_expensive_optimizations.
23363         (rest_of_handle_regmove): Delete.
23364         (pass_regmove): Replace it with regmove_optimize.
23365
23366 2009-02-25  Martin Jambor  <mjambor@suse.cz>
23367
23368         PR tree-optimization/39259
23369         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
23370         calls_alloca function flags.
23371         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
23372         calls are detected.
23373
23374 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
23375
23376         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
23377         flags_set_1_rtx, flags_set_1_set): Delete.
23378         (regmove_optimize): Do not call mark_flags_life_zones.
23379
23380 2009-02-24  Julian Brown  <julian@codesourcery.com>
23381
23382         PR target/35965
23383         * config/arm/arm.c (require_pic_register): Only set
23384         cfun->machine->pic_reg once per function.
23385
23386 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
23387
23388         * doc/invoke.texi (Link Options): Document an easier way to pass
23389         options that take arguments to the GNU linker using -Xlinker and -Wl.
23390
23391 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
23392
23393         PR target/33785
23394         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
23395
23396 2009-02-24  Richard Guenther  <rguenther@suse.de>
23397
23398         PR debug/39285
23399         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
23400
23401 2009-02-24  Richard Guenther  <rguenther@suse.de>
23402             Zdenek Dvorak  <ook@ucw.cz>
23403
23404         PR tree-optimization/39233
23405         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
23406         from converting them to a generic type.
23407
23408 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
23409
23410         PR tree-optimization/39260
23411         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
23412         contains a condition with a real type.
23413         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
23414
23415 2009-02-23  Jason Merrill  <jason@redhat.com>
23416
23417         PR c++/38880
23418         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
23419         narrowing_initializer_constant_valid_p.
23420         (narrowing_initializer_constant_valid_p): Don't return
23421         null_pointer_node for adding a pointer to itself.
23422
23423 2009-02-23  Jan Hubicka  <jh@suse.cz>
23424
23425         PR c/12245
23426         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
23427         resizing.
23428
23429 2009-02-23  Jan Hubicka  <jh@suse.cz>
23430
23431         PR tree-optimization/37709
23432         * tree.c (block_ultimate_origin): Move here from dwarf2out.
23433         * tree.h (block_ultimate_origin): Declare.
23434         * dwarf2out.c (block_ultimate_origin): Move to tree.c
23435         * tree-ssa-live.c (remove_unused_scope_block_p):
23436         Eliminate blocks containig no instructions nor live variables nor
23437         nested blocks.
23438         (dump_scope_block): New function.
23439         (remove_unused_locals): Enable removal of dead blocks by default;
23440         enable dumping at TDF_DETAILS.
23441
23442 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23443
23444         * config/i386/i386.c (classify_argument): Don't allow COImode
23445         and OImode.
23446         (function_arg_advance_32): Don't allow OImode.
23447         (function_arg_32): Likewise.
23448         (function_value_32): Likewise.
23449         (return_in_memory_32): Likewise.
23450         (function_arg_64): Remove OImode comment.
23451
23452 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23453
23454         PR target/39261
23455         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
23456         ix86_expand_vector_set for V4DImode in 64bit mode only.
23457         (ix86_expand_vector_init_one_var): Likewise.
23458
23459 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
23460
23461         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
23462
23463 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
23464
23465         PR bootstrap/39257
23466         * loop-iv.c: Revert last change.
23467         * emit-rtl.c: Likewise.
23468
23469 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23470
23471         PR target/39256
23472         * config/i386/i386.c (type_natural_mode): Remove an extra
23473         space in the warning message.
23474         (function_value_32): Handle 32-byte vector modes.
23475         (return_in_memory_32): Likewise.
23476
23477 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
23478
23479         * loop-iv.c (truncate_value): New function.
23480         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
23481         of lowpart_subreg.
23482         (lowpart_subreg): Move to...
23483         * emit-rtl.c: ...here.
23484
23485 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
23486
23487         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
23488         accidental and undocumented change at revision 140860.
23489
23490 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
23491
23492         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
23493         take gimple_seq * arguments.
23494         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
23495         types_compatible_p langhook.
23496
23497 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
23498             Joseph Myers  <joseph@codesourcery.com>
23499
23500         * config/arm/arm.c (arm_builtin_va_list): New function.
23501         (arm_expand_builtin_va_start): Likewise.
23502         (arm_gimplify_va_arg_expr): Likewise.
23503         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
23504         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
23505         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
23506         (va_list_type): New variable.
23507         (arm_mangle_type): Mangle va_list_type appropriately.
23508
23509 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
23510
23511         PR middle-end/39157
23512         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
23513         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
23514         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
23515         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
23516         parameter to 1000 for -O1 by default.
23517         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
23518         parameter.
23519         * loop-invariant.c: Include params.h.
23520         (move_loop_invariants): Don't call move_single_loop_invariants on
23521         very large loops.
23522
23523 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
23524
23525         * calls.c (emit_library_call_value_1): Use slot_offset instead of
23526         offset when calculating bounds for indexing stack_usage_map.  Fixes
23527         a buffer overflow with certain target setups.
23528
23529 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
23530
23531         PR target/39240
23532         * calls.c (expand_call): Clear try_tail_call if caller and callee
23533         disagree in promotion of function return value.
23534
23535 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
23536
23537         PR target/39175
23538         * c-common.c (c_determine_visibility): If visibility changed and
23539         DECL_RTL has been already set, call make_decl_rtl to update symbol
23540         flags.
23541
23542 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
23543
23544         PR c++/39188
23545         * varasm.c (assemble_variable): Don't check DECL_NAME when
23546         globalizing a variable.
23547
23548 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
23549
23550         PR c/38483
23551         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
23552         expression before any __builtin_trap call.
23553         * c-typeck.c (build_function_call): Convert and check function
23554         arguments before generating a call to a trap.  Evaluate the
23555         function arguments before the trap.
23556
23557 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
23558
23559         PR target/39228
23560         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
23561         (UNSPEC_FXAM_MEM): New unspec.
23562         (fxam<mode>2_i387_with_temp): New insn and split pattern.
23563         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
23564         memory using fxam<mode>2_i387_with_temp to remove excess precision.
23565
23566 2009-02-19  Richard Guenther  <rguenther@suse.de>
23567
23568         PR tree-optimization/39207
23569         PR tree-optimization/39074
23570         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
23571         storedanything_tree): New.
23572         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
23573         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
23574         (build_succ_graph): Add edges from STOREDANYTHING to all
23575         non-direct nodes.
23576         (init_base_vars): Initialize STOREDANYTHING.
23577         (compute_points_to_sets): Free substitution info after
23578         building the succ graph.
23579         (ipa_pta_execute): Likewise.
23580
23581         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
23582         field.
23583         (do_ds_constraint): Do not add to special var or non-pointer
23584         field solutions.
23585         (type_could_have_pointers): Split out from ...
23586         (could_have_pointers): ... here.  For arrays use the element type.
23587         (create_variable_info_for): Initialize may_have_pointers.
23588         (new_var_info): Likewise.
23589         (handle_lhs_call): Make the HEAP variable unknown-sized.
23590         (intra_create_variable_infos): Use a type with pointers for
23591         PARM_NOALIAS, make it unknown-sized.
23592
23593 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23594
23595         PR target/39224
23596         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
23597
23598 2009-02-18  Jason Merrill  <jason@redhat.com>
23599
23600         PR target/39179
23601         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
23602         value if DECL_EXTERNAL.
23603         * tree-sra.c (sra_walk_gimple_assign): Likewise.
23604         * target.h (gcc_target::binds_local_p): Clarify "module".
23605         * tree.h (TREE_PUBLIC): Clarify "module".
23606
23607 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
23608
23609         PR target/38891
23610         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
23611         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
23612
23613 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
23614
23615         PR target/39082
23616         * c.opt (Wabi): Support C and ObjC.
23617         (Wpsabi): New.
23618
23619         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
23620
23621         * config/i386/i386.c (classify_argument): Warn once about the ABI
23622         change when passing union with long double.
23623
23624         * doc/invoke.texi: Update -Wabi for warning psABI changes.
23625
23626 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
23627
23628         PR c/35447
23629         * c-parser.c (c_parser_compound_statement): Always enter and leave
23630         a scope.
23631
23632 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23633
23634         PR target/34587
23635         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
23636
23637 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
23638
23639         PR tree-optimization/36922
23640         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
23641         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
23642         Likewise.
23643
23644 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23645
23646         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
23647         to 0 for EABI64.
23648
23649 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23650
23651         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
23652
23653 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23654
23655         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
23656         tree sharing.
23657
23658 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
23659             Richard Sandiford  <rdsandiford@googlemail.com>
23660
23661         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
23662         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
23663         (loongson_biadd): ...this.
23664
23665 2009-02-17  Richard Guenther  <rguenther@suse.de>
23666
23667         PR tree-optimization/39202
23668         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
23669         a var make sure to follow existing collapses.
23670
23671 2009-02-17  Richard Guenther  <rguenther@suse.de>
23672
23673         PR middle-end/39214
23674         * langhooks.c (lhd_print_error_function): Check for NULL block.
23675
23676 2009-02-17  Richard Guenther  <rguenther@suse.de>
23677
23678         PR tree-optimization/39204
23679         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
23680         of the PHI arg.
23681
23682 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
23683
23684         * config/soft-fp/double.h: Update from glibc CVS.
23685
23686 2009-02-17  Richard Guenther  <rguenther@suse.de>
23687
23688         PR tree-optimization/39207
23689         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
23690         strict-aliasing warnings for pointers pointing to NULL.
23691
23692 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
23693
23694         PR c/35446
23695         * c-parser.c (c_parser_braced_init): Call pop_init_level when
23696         skipping until next close brace.
23697
23698 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
23699
23700         PR target/37049
23701         * config/i386/i386.c (ix86_expand_push): Set memory alignment
23702         to function argument boundary.
23703
23704 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
23705
23706         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
23707         in the lea_add. Reload eventually constraints it properly.
23708         * config/picochip/constraints.md: Remove the target constraint
23709         "b", since it is not needed anymore.
23710
23711 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
23712
23713         * gthr-dce.h: Uglify function parameter and local variable names.
23714         * gthr-gnat.h: Likewise.
23715         * gthr-mipssde.h: Likewise.
23716         * gthr-nks.h: Likewise.
23717         * gthr-posix95.h: Likewise.
23718         * gthr-posix.h: Likewise.
23719         * gthr-rtems.h: Likewise.
23720         * gthr-single.h: Likewise.
23721         * gthr-solaris.h: Likewise.
23722         * gthr-tpf.h: Likewise.
23723         * gthr-vxworks.h: Likewise.
23724         * gthr-win32.h: Likewise.
23725
23726 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
23727
23728         PR target/39196
23729         * config/i386/i386.md: Restrict the new peephole2 to move
23730         between MMX/SSE registers.
23731
23732 2009-02-15  Richard Guenther  <rguenther@suse.de>
23733
23734         Revert
23735         2009-02-13  Richard Guenther  <rguenther@suse.de>
23736
23737         * configure.ac: Enable LFS.
23738         * configure: Re-generate.
23739         * config.in: Likewise.
23740
23741 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23742
23743         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
23744         spu_srqwbyte, spu_srqwbytebc): Define.
23745         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
23746         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
23747         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
23748         "shrqby_<mode>"): New insn-and-split patterns.
23749         * config/spu/spu.c (expand_builtin_args): Determine and return
23750         number of operands using spu_builtin_description data.
23751         (spu_expand_builtin_1): Use it.
23752
23753 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
23754
23755         PR target/38056
23756         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
23757         TARGET_CONST_GP.
23758
23759 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
23760
23761         PR target/39149
23762         * config/i386/i386.c (override_options): Correct warning
23763         messages for -malign-loops, -malign-jumps and -malign-functions.
23764
23765 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
23766
23767         PR target/39152
23768         * config/i386/i386.md: Restrict the new peephole2 to move
23769         between the general purpose registers.
23770
23771 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
23772
23773         PR target/39162
23774         * config/i386/i386.c (type_natural_mode): Add a new argument.
23775         Return the original mode and warn ABI change if vector size is 32byte.
23776         (function_arg_advance): Updated.
23777         (function_arg): Likewise.
23778         (ix86_function_value): Likewise.
23779         (ix86_return_in_memory): Likewise.
23780         (ix86_sol10_return_in_memory): Likewise.
23781         (ix86_gimplify_va_arg): Likewise.
23782         (function_arg_32): Don't warn ABX ABI change here.
23783         (function_arg_64): Likewise.
23784
23785 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
23786
23787         * loop-iv.c (implies_p): In the final case, test that operands 0
23788         of the two comparisons match.
23789
23790         * config/bfin/bfin.c (find_prev_insn_start): New function.
23791         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
23792         (find_next_insn_start): Move.
23793
23794 2009-02-13  Richard Guenther  <rguenther@suse.de>
23795
23796         * configure.ac: Enable LFS.
23797         * configure: Re-generate.
23798         * config.in: Likewise.
23799
23800 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
23801
23802         PR c/35444
23803         * c-parser.c (c_parser_parms_list_declarator): Discard pending
23804         sizes on syntax error after some arguments have been parsed.
23805
23806 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
23807
23808         * doc/invoke.texi (-fira): Remove.
23809
23810 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
23811
23812         * caller-save.c: Replace regclass.c with reginfo.c in comments.
23813         * recog.c: Likewise.
23814         * rtl.h: Likewise.
23815
23816 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
23817
23818         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
23819         (umul_ppmm): Likewise.
23820         (count_leading_zeros): Likewise.
23821         (count_trailing_zeros): Likewise.
23822         (UMUL_TIME): Likewise.
23823
23824 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
23825
23826         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
23827         soft-fp/t-softfp to tmake_file.
23828
23829         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
23830         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
23831         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
23832         IA64_BUILTIN_INFQ]: New.
23833         (ia64_init_builtins): Initialize __builtin_infq,
23834         __builtin_fabsq and __builtin_copysignq if not HPUX.
23835         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
23836         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
23837
23838         * config/ia64/lib1funcs.asm (__divtf3): Define only if
23839         SHARED is defined.
23840         (__fixtfti): Likewise.
23841         (__fixunstfti): Likewise.
23842         (__floattitf): Likewise.
23843
23844         * config/ia64/libgcc-glibc.ver: New.
23845         * config/ia64/t-fprules-softfp: Likewise.
23846         * config/ia64/sfp-machine.h: Likewise.
23847
23848         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
23849         (LIBGCC2_TF_CEXT): Likewise.
23850         (TF_SIZE): Likewise.
23851         (TARGET_INIT_LIBFUNCS): Likewise.
23852
23853         * config/ia64/t-glibc (SHLINB_MAPFILES):
23854         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
23855
23856 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
23857
23858         * config/i386/i386.c (construct_container): Rewrite processing
23859         BLKmode with X86_64_SSE_CLASS.
23860
23861 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
23862
23863         PR target/39152
23864         * config/i386/i386.md: Replace simplify_replace_rtx with
23865         replace_rtx in the new peephole2.
23866
23867 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
23868
23869         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
23870         loop unrolling do not happen at -O2.
23871
23872 2009-02-12  Michael Matz  <matz@suse.de>
23873
23874         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
23875
23876 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
23877
23878         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
23879         for -g3.
23880
23881 2009-02-12  Ben Elliston  <bje@au.ibm.com>
23882
23883         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
23884         patterns when updating the back chain.  Missed in the 2009-02-10
23885         change.
23886
23887 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
23888
23889         * doc/extend.texi (Decimal Floating Types): Update identifier of
23890         draft TR and list of missing support.
23891
23892 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
23893
23894         PR middle-end/39154
23895         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
23896         bit to variable length decl's flags, add it also to its
23897         pointer replacement variable.
23898
23899 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
23900             Jakub Jelinek  <jakub@redhat.com>
23901
23902         PR target/39118
23903         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
23904         (memory_blockage): New expander.
23905         (*memory_blockage): New insn pattern.
23906         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
23907         instead of general blockage at the end of function prologue when
23908         frame pointer is used to access red zone area.  Do not emit blockage
23909         when profiling, it is emitted in generic code.
23910         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
23911         function epilogue when frame pointer is used to access red zone area.
23912
23913 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
23914
23915         PR target/38824
23916         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
23917         by arithmetic with memory operands.
23918         * config/i386/predicates.md (commutative_operator): New.
23919
23920 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
23921
23922         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
23923         bulleted lists.
23924
23925 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
23926
23927         * alias.h (record_alias_subset): Declare.
23928         * alias.c (record_alias_subset): Make global.
23929
23930 2009-02-10  Nick Clifton  <nickc@redhat.com>
23931
23932         * tree-parloops.c: Change license to GPLv3.
23933         * ipa-struct-reorg.c: Change license to GPLv3.
23934         * ipa-struct-reorg.h: Change license to GPLv3.
23935
23936 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
23937
23938         PR c/39084
23939         * c-decl.c (start_struct): Return NULL on error.
23940
23941 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
23942
23943         PR middle-end/39124
23944         * cfgloopmanip.c (remove_path): Call remove_bbs after
23945         cancel_loop_tree, not before it.
23946
23947         PR target/39139
23948         * function.h (struct function): Add has_local_explicit_reg_vars bit.
23949         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
23950         VAR_DECLs were seen.
23951         * tree-ssa-live.c (remove_unused_locals): Recompute
23952         cfun->has_local_explicit_reg_vars.
23953         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
23954         copies or clearings if cfun->has_local_explicit_reg_vars.
23955
23956 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
23957
23958         PR target/39118
23959         * config/i386/i386.c (expand_prologue): Emit blockage at the end
23960         of function prologue when frame pointer is used to access
23961         red zone area.
23962
23963 2009-02-10  Richard Guenther  <rguenther@suse.de>
23964
23965         PR middle-end/39127
23966         * gimplify.c (gimple_regimplify_operands): Always look if
23967         we need to create a temporary.
23968
23969 2009-02-10  Richard Guenther  <rguenther@suse.de>
23970
23971         PR tree-optimization/39132
23972         * tree-loop-distribution.c (todo): New global var.
23973         (generate_memset_zero): Trigger TODO_rebuild_alias.
23974         (tree_loop_distribution): Return todo.
23975
23976 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
23977
23978         PR target/39119
23979         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
23980         (x86_64_reg_class_name): Removed.
23981         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
23982         first one isn't X86_64_SSE_CLASS or any other ones aren't
23983         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
23984         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
23985         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
23986         and 3 X86_64_SSEUP_CLASS.
23987         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
23988         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
23989
23990 2009-02-10  Ben Elliston  <bje@au.ibm.com>
23991
23992         * config/rs6000/rs6000.md (allocate_stack): Always use an update
23993         form instruction to update the stack back chain word, even if the
23994         user has disabled the generation of update instructions.
23995         (movdi_<mode>_update_stack): New.
23996         (movsi_update_stack): Likewise.
23997         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
23998         always use an update form instruction to update the stack back
23999         chain word.
24000
24001 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
24002
24003         PR middle-end/38953
24004         * graphite.c (if_region_set_false_region): After moving a region in
24005         the false branch of a condition, remove the empty dummy basic block.
24006         (gloog): Remove wrong fix for PR38953.
24007
24008 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24009
24010         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
24011         generation due to implicit sign extension.
24012
24013 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
24014
24015         PR middle-end/38981
24016         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
24017         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
24018
24019 2009-02-09  Richard Guenther  <rguenther@suse.de>
24020
24021         PR middle-end/35202
24022         * convert.c (convert_to_real): Disable (float)fn((double)x)
24023         to fnf(x) conversion if errno differences may occur and
24024         -fmath-errno is set.
24025
24026 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
24027
24028         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
24029         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24030         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24031
24032 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24033
24034         PR c/35434
24035         * c-common.c (handle_alias_attribute): Disallow attribute for
24036         anything not a FUNCTION_DECL or VAR_DECL.
24037
24038 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
24039
24040         PR c/39035
24041         * real.c (do_compare): Special-case compare of zero against
24042         decimal float value.
24043
24044 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24045
24046         PR c/36432
24047         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
24048         as indicating flexible array members unless the field itself is
24049         being declarared as the incomplete array.
24050
24051 2009-02-06  Jan Hubicka  <jh@suse.cz>
24052
24053         PR tree-optimization/38844
24054         * ipa-inline.c (try_inline): Stop inlining recursion when edge
24055         is already inlined.
24056
24057 2009-02-06  Richard Guenther  <rguenther@suse.de>
24058
24059         PR middle-end/38977
24060         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
24061         fork because we may expand it as __gcov_fork.
24062
24063 2009-02-06  Nick Clifton  <nickc@redhat.com>
24064
24065         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
24066
24067 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
24068
24069         PR tree-optimization/35659
24070         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
24071         vn_phi_eq): Shortcut if hashcode does not match.
24072         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
24073         NULL operands.
24074         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
24075         and avoid iterative_hash_expr.
24076         (FOR_EACH_VALUE_ID_IN_SET): New.
24077         (value_id_compare): Remove.
24078         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
24079         sort expressions by value id.
24080
24081 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
24082
24083         PR target/38991
24084         * config/sh/predicates.md (general_movsrc_operand): Don't check
24085         the subreg of system registers here.
24086
24087 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
24088
24089         PR c++/39106
24090         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
24091         on the copied decl.
24092
24093 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
24094
24095         PR rtl-optimization/39110
24096         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
24097         addresses, not aligned ones.
24098
24099 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
24100             Richard Guenther  <rguenther@suse.de>
24101
24102         PR tree-optimization/39100
24103         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
24104         comment says and add edges.
24105
24106 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
24107
24108         PR c/35435
24109         * c-common.c (handle_tls_model_attribute): Ignore attribute for
24110         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
24111
24112 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
24113
24114         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
24115         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
24116         register_bb_in_sese, new_sese, free_sese): Moved.
24117         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
24118         outermost_loop_in_scop, build_scop_iteration_domain,
24119         expand_scalar_variables_ssa_name, get_vdef_before_scop,
24120         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
24121         Use loop_in_sese_p instead of loop_in_scop_p.
24122         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
24123         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
24124         (scopdet_basic_block_info): Fix bug in scop detection.
24125         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
24126         eq_loop_to_cloog_loop): Remove.
24127         (nb_loops_around_loop_in_scop, nb_loop
24128         ref_nb_loops): Moved here...
24129         * graphite.h (ref_nb_loops): ... from here.
24130         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
24131         (loop_domain_dim, loop_iteration_vector_dim): Remove.
24132         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
24133         * testsuite/gcc.dg/graphite/scop-19.c: New
24134
24135 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
24136             Hans-Peter Nilsson  <hp@axis.com>
24137
24138         PR rtl-optimization/37889
24139         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
24140         Move offset handling from PLUS to before the switch.  Use new
24141         arguments when considering SYMBOL_REFs too.
24142         (rtx_addr_can_trap_p): Pass dummy offset and size.
24143         (enum may_trap_p_flags): Remove.
24144         (may_trap_p_1): Pass size from MEM_SIZE.
24145
24146         PR rtl-optimization/38921
24147         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
24148         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
24149         * rtlanal.c (may_trap_after_code_motion_p): Delete.
24150         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
24151
24152 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
24153
24154         AVX Programming Reference (January, 2009)
24155         * config/i386/sse.md (*vpclmulqdq): New.
24156
24157 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
24158
24159         PR tree-optimization/38977
24160         PR gcov-profile/38292
24161         * calls.c (special_function_p): Disregard __builtin_ prefix.
24162
24163 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
24164
24165         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
24166         non-indexable addresses even before reload.
24167
24168 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24169
24170         PR c/29129
24171         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
24172         as having variable size.  Do not give an error for unnamed
24173         parameters with [*] declarators.  Give a warning for type names
24174         with [*] declarators and mark them as variable size.
24175         * c-parser.c (c_parser_sizeof_expression): Do not give an error
24176         for sizeof applied to [*] type names.
24177
24178 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24179
24180         PR C++/36607
24181         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
24182
24183 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24184
24185         * gcc.c (process_command): Update copyright notice dates.
24186         * gcov.c (print_version): Likewise.
24187         * gcov-dump.c (print_version): Likewise.
24188         * mips-tfile.c (main): Likewise.
24189         * mips-tdump.c (main): Likewise.
24190
24191 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24192
24193         PR c/35433
24194         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
24195         for composite type involving a zero-length array type.
24196
24197 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24198
24199         PR target/35318
24200         * function.c (match_asm_constraints_1): Skip over
24201         initial optional % in the constraint.
24202
24203         PR inline-asm/39059
24204         * c-parser.c (c_parser_postfix_expression): If fixed point is not
24205         supported, don't accept FIXED_CSTs.
24206         * c-decl.c (finish_declspecs): Error if fixed point is not supported
24207         and _Sat is used without _Fract/_Accum.  Set specs->type to
24208         integer_type_node for cts_fract/cts_accum if fixed point is not
24209         supported.
24210
24211 2009-02-02  Catherine Moore  <clm@codesourcery.com>
24212
24213         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
24214
24215 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
24216
24217         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
24218         (ABI_HAS_64BIT_SYMBOLS): Use it.
24219         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
24220
24221 2009-02-02  Paul Brook  <paul@codesourcery.com>
24222
24223         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
24224
24225 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
24226
24227         PR inline-asm/39058
24228         * recog.h (asm_operand_ok): Add constraints argument.
24229         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
24230         recurse on matching constraint.
24231         (check_asm_operands): Pass constraints as 3rd argument to
24232         asm_operand_ok.  Don't look up matching constraint here.
24233         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
24234         to asm_operand_ok.
24235
24236 2009-02-02  Ben Elliston  <bje@au.ibm.com>
24237
24238         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
24239         TARGET_NARROW_VOLATILE_BITFIELD macro names.
24240
24241 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24242
24243         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
24244         information.  Remove some obsolete information.  Reorganize.
24245
24246         * config/pa/fptr.c: Revert license to GPL 2.
24247         * config/pa/milli64.S: Likewise.
24248
24249 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24250
24251         PR target/38904
24252         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
24253         LIBRARY name in, instead of hard-coding it.
24254         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
24255         extra target make frag to tmake_files according to EH model.
24256         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
24257         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
24258         frags that define makefile variable EH_MODEL appropriately.
24259         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
24260         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
24261         to "-sjlj" according to type of EH configured.
24262         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24263         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
24264         to "_sjlj" according to type of EH configured.
24265         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24266         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
24267         (SHLIB_LINK):  Add missing semicolon to if-else construct.
24268         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24269         string value of "pe_dll" command-line option.
24270         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
24271         (SHLIB_SONAME):  Use it when overriding t-cygming default.
24272         (SHLIB_IMPLIB):  Override t-cygming default.
24273         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24274         string value of "pe_dll" command-line option.
24275
24276 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24277
24278         PR target/38952
24279         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
24280         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
24281
24282 2009-01-31  Richard Guenther  <rguenther@suse.de>
24283
24284         PR tree-optimization/38937
24285         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
24286         computing the transitive closure.
24287
24288 2009-01-30  Richard Guenther  <rguenther@suse.de>
24289
24290         PR tree-optimization/39041
24291         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
24292         Propagate variable indices only if the types match for this stmt.
24293
24294 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
24295
24296         PR target/39013
24297         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
24298         inline but never defined.
24299
24300 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
24301
24302         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
24303         (*insv_h_di_reg_extimm): New insn.
24304         (*insv_l<mode>_reg_extimm): New insn.
24305
24306 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24307
24308         * config/picochip/picochip.c (flag_conserve_stack): set
24309         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
24310         fconserve-stack. Reduce call-overhead used by inliner.
24311
24312 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24313
24314         PR/38157
24315         * common.opt (flag_conserve_stack): Initialised to zero.
24316
24317 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
24318
24319         PR/39002
24320         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
24321         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
24322         method.
24323
24324 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
24325
24326         * ira-color.c (allocno_reload_assign): Update comments.
24327         * regmove.c (regmove_optimize): Likewise.
24328
24329         * ra.h: Removed.
24330
24331 2009-01-29  Robert Millan  <rmh@aybabtu.com>
24332
24333         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
24334         * config/i386/kopensolaris-gnu.h: New file.  Undefine
24335         `MD_UNWIND_SUPPORT'.
24336         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
24337
24338 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
24339
24340         PR tree-optimization/39007
24341         * tree-loop-distribution.c (generate_builtin): Use
24342         recompute_dominator to compute the immediate dominator of the
24343         basic block just after the loop.
24344
24345 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
24346
24347         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
24348         (ASM_OUTPUT_DWARF_PCREL): Define.
24349
24350 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
24351
24352         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
24353         * doc/passes.texi: Remove entries about regclass, local-alloc, and
24354         global.  Modify entries about regmove and IRA.
24355
24356         * ra-conflict.c: Remove the file.
24357
24358         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
24359
24360         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
24361         (pass_regclass_init): Rename to pass_reginfo_init.
24362
24363         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
24364
24365         * toplev.h (flag_ira): Remove.
24366
24367         * caller-save.c (setup_save_areas): Remove flag_ira.
24368
24369         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
24370
24371         * global.c: Remove the file.
24372
24373         * opts.c (decode_options): Remove flag_ira.
24374
24375         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
24376
24377         * regmove.c: Modify file description.
24378         (find_use_as_address, try_auto_increment): Define them only if
24379         AUTO_INC_DEC is defined.
24380         (replacement_quality, replace_in_call_usage, fixup_match_1,
24381         stable_and_no_regs_but_for_p): Remove.
24382         (reg_set_in_bb): Make it static.
24383         (regmove_optimize): Remove flag_ira and code which worked for
24384         !flag_ira.
24385
24386         * local-alloc.c: Remove the file.
24387
24388         * common.opt (fira): Remove.
24389
24390         * ira.c: Include except.h.
24391         (eliminable_regset): Move from global.c.
24392         (mark_elimination): Ditto.  Remove flag_ira.
24393         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
24394         equiv_mem_modified, validate_equiv_mem_from_store,
24395         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
24396         contains_replace_regs, memref_referenced_p, memref_used_between_p,
24397         no_equiv, recorded_label_ref): Move from local-alloc.c.
24398         (update_equiv_regs): Ditto.  Make it static.
24399         (print_insn_chain, print_insn_chains): Move it from global.c.
24400         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
24401         (build_insn_chain): Ditto.  Make it static.
24402         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
24403         Rename to init_live_subregs.
24404         (gate_ira): Remove flag_ira.
24405
24406         * regclass.c: Rename reginfo.c.  Change file description.
24407         (FORBIDDEN_INC_DEC_CLASSES): Remove.
24408         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
24409         (init_reg_sets_1): Remove code for evaluation of
24410         reg_class_superclasses and losing_caller_save_reg_set.
24411         (init_regs): Remove init_reg_autoinc.
24412         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
24413         ok_for_base_p_nonstrict): Remove.
24414         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
24415         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
24416         corresponding entries.
24417         (dump_regclass, record_operand_costs, scan_one_insn,
24418         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
24419         record_address_regs, auto_inc_dec_reg_p): Remove.
24420         (gt-regclass.h): Rename to gt-reginfo.h.
24421
24422         * rtl.h (dump_global_regs, retry_global_alloc,
24423         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
24424
24425         * Makefile.in (RA_H): Remove.
24426         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
24427         Rename regclass.o to reginfo.o.
24428         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
24429         gt-reginfo.h.
24430         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
24431         (GTFILES): Rename regclass.c to reginfo.c.
24432
24433         * passes.c (init_optimization_passes): Remove pass_local_alloc and
24434         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
24435
24436         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
24437         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
24438         Remove flag_ira.
24439         (finish_spills): Ditto.  Remove code for !flag_ira.
24440
24441 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
24442
24443         PR middle-end/35854
24444         * doc/invoke.texi (rtl debug options): Complete rewrite.
24445         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
24446         to auto_inc_dec".
24447         * mode-switching.c (pass_mode_switching): Rename pass from
24448         "mode-sw" to "mode_sw".
24449         * except.c (pass_convert_to_eh_ranges): Rename pass from
24450         "eh-ranges" to "eh_ranges".
24451         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
24452         to "subreg1".
24453
24454
24455 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
24456             Alexander Monakov  <amonakov@ispras.ru>
24457
24458         PR middle-end/38857
24459         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
24460         register.
24461         (move_exprs_to_boundary): Change return type and pass through
24462         should_move from move_op.  Relax assert.  Update usage ...
24463         (schedule_expr_on_boundary): ... here.  Use should_move instead of
24464         cant_move.
24465         (move_op_orig_expr_found): Indicate that insn was disconnected from
24466         stream.
24467         (code_motion_process_successors): Do not call after_merge_succs
24468         callback if original expression was not found when traversing any of
24469         the branches.
24470         (code_motion_path_driver): Change return type.  Update prototype.
24471         (move_op): Update comment.  Add a new parameter (should_move).  Update
24472         prototype.  Set *should_move based on indication provided by
24473         move_op_orig_expr_found.
24474
24475 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
24476
24477         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
24478         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
24479         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
24480         * config/rs6000/rs6000.c (rs6000_override_options): Default
24481         avoid-indexed-addresses on for Power6, off for everything else.
24482         (avoiding_indexed_address_p): New function.
24483         (rs6000_legitimize_address): Use it.
24484         (rs6000_legitimate_address): Likewise.
24485         * config/rs6000/rs6000.md (movXX_updateX): Likewise
24486
24487 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
24488
24489         PR tree-optimization/38997
24490         * tree-loop-distribution.c (generate_memset_zero): Use
24491         POINTER_PLUS_EXPR for a pointer addition.
24492
24493 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
24494
24495         * config/s390/s390.md (bswap<mode>2): New pattern added.
24496
24497 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24498
24499         * config/s390/s390.md (*tls_load_31): Added type attribute.
24500
24501 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24502
24503         * config/s390/s390.md: Fix a few comments.
24504
24505 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24506
24507         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
24508         (*tm<mode>_full): Fixed z10prop attribute.
24509         (*tst<mode>_extimm): Fixed z10prop attribute.
24510         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
24511         (*tstqiCCT_cconly): Fixed z10prop attribute.
24512         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
24513         (*movsi_larl): Fixed z10prop attribute.
24514         (*movsi_zarch): Fixed z10prop attribute.
24515         (*movsi_eas): Fixed z10prop attribute.
24516         (*movhi): Fixed z10prop attribute.
24517         (*movqi): Fixed z10prop attribute.
24518         (*movstrictqi): Fixed z10prop attribute.
24519         (*mov<mode>): Fixed z10prop attribute.
24520         (*movcc): Fixed z10prop attribute.
24521         (*sethighpartdi_64): Fixed z10prop attribute.
24522         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
24523         (*negdi2_sign_cc): Fixed z10prop attribute.
24524         (*negdi2_sign): Fixed z10prop attribute.
24525         (*absdi2_sign_cc): Fixed z10prop attribute.
24526         (*absdi2_sign): Fixed z10prop attribute.
24527         (*negabsdi2_sign_cc): Fixed z10prop attribute.
24528         (*negabsdi2_sign): Fixed z10prop attribute.
24529         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
24530         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
24531         (doloop_si64): Fixed z10prop attribute.
24532         (doloop_si31): Fixed z10prop attribute.
24533         (doloop_long): Fixed z10prop attribute.
24534         (indirect_jump): Fixed z10prop attribute.
24535         (nop): Fixed z10prop attribute.
24536         (main_base_64): Fixed z10prop attribute.
24537         (reload_base_64): Fixed z10prop attribute.
24538
24539 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
24540
24541         PR rtl-optimization/38740
24542         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
24543         if !optimize.
24544         * config/mips/mips.c (mips_reorg): Likewise.
24545
24546 2009-01-28  Richard Guenther  <rguenther@suse.de>
24547
24548         PR tree-optimization/38926
24549         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
24550         with the correct value id to a value.
24551         (do_regular_insertion): Use the value number of edoubleprime
24552         for the value number of the expr.
24553
24554         Revert
24555         2008-08-21  Richard Guenther  <rguenther@suse.de>
24556
24557         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
24558         a PHI ask VN if it is already available.
24559         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
24560         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
24561
24562 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
24563
24564         PR middle-end/38934
24565         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
24566         set to varying whenever max has TREE_OVERFLOW set, similarly
24567         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
24568
24569 2009-01-28  Richard Guenther  <rguenther@suse.de>
24570
24571         PR middle-end/38908
24572         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
24573         uninitialized aggregate uses in call arguments.
24574
24575 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
24576
24577         PR tree-optimization/38984
24578         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
24579         the nothing_id variable if -fno-delete-null-pointer-checks.
24580
24581 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
24582
24583         PR target/38988
24584         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
24585         (set_got_offset_rex64): Ditto.
24586
24587 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
24588
24589         PR target/38941
24590         * doc/extend.texi: Improve local variable with asm reg.
24591
24592 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
24593
24594         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
24595         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
24596         was not supplied then set warn_packed_bitfield_compat to the
24597         default value of 1.
24598         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
24599         against 1.
24600
24601 2009-01-27  Richard Guenther  <rguenther@suse.de>
24602
24603         PR tree-optimization/38503
24604         * cfgexpand.c (expand_gimple_basic_block): Ignore
24605         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
24606         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
24607         variables that cannot have TBAA applied.
24608         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
24609         statements.
24610
24611 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
24612
24613         PR middle-end/38969
24614         * calls.c (initialize_argument_information): Do not wrap complex
24615         arguments in SAVE_EXPR.
24616
24617 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
24618
24619         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
24620         (INSTALL_LIBGCC): Revert typo commit.
24621
24622 2009-01-26  Richard Guenther  <rguenther@suse.de>
24623
24624         PR tree-optimization/38745
24625         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
24626         from special handling.
24627
24628 2009-01-26  Richard Guenther  <rguenther@suse.de>
24629
24630         PR tree-optimization/38745
24631         * tree-ssa.c (execute_update_addresses_taken): Do not include
24632         variables that cannot possibly be a register in not_reg_needs.
24633         Do not clear TREE_ADDRESSABLE on vars that may not become
24634         registers.
24635         * tree-ssa.c (update_alias_info_1): Include those in the set
24636         of addressable vars.
24637
24638 2009-01-26  Richard Guenther  <rguenther@suse.de>
24639
24640         PR middle-end/38851
24641         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
24642         * tree-ssa-dse.c: Include langhooks.h
24643         (execute_simple_dse): Remove stores with zero size.
24644
24645 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
24646
24647         PR c/38957
24648         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
24649         as PLUS_EXPR.
24650
24651 2009-01-24  Julian Brown  <julian@codesourcery.com>
24652
24653         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
24654         config/arm/linux-atomic.c.
24655         * config/arm/linux-atomic.c: New.
24656
24657 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
24658
24659         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
24660         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
24661         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
24662
24663 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
24664
24665         PR c/38938
24666         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
24667         properly.
24668
24669 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
24670
24671         PR tree-optimization/38953
24672         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
24673         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
24674         (gloog): Split the exit of the scop when the scop exit is a loop exit.
24675         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
24676         changed the CFG.
24677
24678 2009-01-24  Paul Brook  <paul@codesourcery.com>
24679
24680         * config/arm/neon.md (neon_type): Move to arm.md.
24681         (neon_mov<VSTRUCT>): Add neon_type attribute.
24682         * config/arm/arm.md (neon_type): Move to here.
24683         (conds): Add "unconditioal" and use as default for NEON insns.
24684
24685 2009-01-24  Ben Elliston  <bje@au.ibm.com>
24686
24687         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
24688         void *' warning from -Wc++-compat.
24689         * Makefile.in (dominance.o-warn): Remove.
24690
24691 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
24692
24693         PR tree-optimization/38932
24694         * fold-const.c (fold_unary_ignore_overflow): New.
24695         * tree.h (fold_unary_ignore_overflow): Declare.
24696         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
24697         * tree-ssa-sccvn.c (visit_reference_op_load,
24698         simplify_unary_expression): Likewise.
24699
24700 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
24701
24702         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
24703         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
24704         regardless of their type.
24705         * c-common.c (handle_packed_attribute): Don't ignore packed on
24706         bitfields.
24707         * c.opt (Wpacked-bitfield-compat): New warning option.
24708         * stor-layout.c (place_field): Warn if offset of a field changed.
24709         * doc/extend.texi (packed): Mention the ABI change.
24710         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
24711         (Warning Options): Add it to the list.
24712
24713 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
24714
24715         * c-opts.c (c_common_post_options): Fix a typo in comments.
24716
24717 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
24718
24719         PR middle-end/38615
24720         * gimplify.c (gimplify_init_constructor): Fix promotion of const
24721         variables to static.
24722         * doc/invoke.texi (-fmerge-all-constants): Update description.
24723
24724 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
24725
24726         PR target/38931
24727         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
24728         (*movdi_1_rex64): Use type "mmx" for alternative 5.
24729
24730 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
24731
24732         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
24733         a word boundary.
24734         (LOCAL_ALIGNMENT): Similarly.
24735
24736 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
24737             Joseph Myers  <joseph@codesourcery.com>
24738
24739         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
24740         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
24741         * config/arm/arm-tune.md: Regenerate.
24742         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
24743         -march=iwmmxt2.
24744
24745 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
24746
24747         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
24748         version number to five.
24749
24750 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
24751
24752         PR c++/38930
24753         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
24754         * c-common.c (set_underlying_type): Likewise.
24755         (is_typedef_decl ): Likewise
24756         * tree.h: Likewise
24757         (set_underlying_type): Likewise.
24758         (is_typedef_type): Likewise.
24759
24760 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
24761
24762         PR middle-end/38587
24763         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
24764         crossing setjmps.
24765
24766 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
24767
24768         PR bootstrap/37660
24769         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
24770         (LIBGCC_SPEC):  Don't define.
24771         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
24772
24773 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
24774
24775         PR rtl-optimization/38879
24776         * alias.c (base_alias_check): Unaligned access via AND address can
24777         alias all surrounding object types except those with sizes equal
24778         or wider than the size of unaligned access.
24779
24780 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
24781
24782         PR c++/26693
24783         * c-decl.c (clone_underlying_type): Move this ...
24784         * c-common.c (set_underlying_type): ... here.
24785         Also, make sure the function properly sets TYPE_STUB_DECL() on
24786         the newly created typedef variant type.
24787         (is_typedef_decl ): New entry point.
24788         * tree.h: Added a new member member_types_needing_access_check to
24789         struct tree_decl_non_common.
24790         (set_underlying_type): New entry point.
24791         (is_typedef_type): Likewise.
24792
24793 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
24794
24795         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
24796         Check whether two instructions have memory references that
24797         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
24798         are helper functions for traversing.
24799         * alias.h (insn_alias_sets_confilict_p): New prototypes.
24800         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
24801         not to draw dependency edge for instructions with non-conflicting
24802         alias sets.
24803
24804 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
24805
24806         PR other/38758
24807         * longlong.h: Update copyright years.  Use soft-fp license notice.
24808         Sync __clz_tab declaration with glibc.
24809
24810 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
24811
24812         PR target/30687
24813         * doc/extend.texi (syscall_linkage): New.
24814         (version_id): Modify.
24815
24816 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24817             Richard Guenther  <rguenther@suse.de>
24818
24819         PR tree-optimization/38747
24820         PR tree-optimization/38748
24821         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
24822         conversion if the base address is an indirect reference and the
24823         aliasing sets could cause issues.
24824
24825 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
24826
24827         * common.opt (fgraphite, fgraphite-identity): Add comment for
24828         explaining why these options are not documented.
24829
24830 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
24831
24832         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
24833         gimple_call_lhs is NULL.
24834
24835 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
24836
24837         PR target/38868
24838         * emit-rtl.c (adjust_address_1): Make sure memref is never
24839         overwritten.
24840
24841 2009-01-20  Ben Elliston  <bje@au.ibm.com>
24842
24843         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
24844         const qualifier from arg parameter. Remove unnecessary cast to char *.
24845         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
24846         const qualifier from arg 2.
24847
24848 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
24849
24850         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
24851
24852 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
24853
24854         PR c/38869
24855         * rtl.h (reinit_regs): New prototype.
24856         * regclass.c: Include ira.h.
24857         (reinit_regs): New.
24858         * Makefile.in (regclass.o): Add ira.h.
24859         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
24860
24861 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
24862
24863         PR target/38736
24864         * c-common.c (handle_aligned_attribute): Use
24865         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
24866         default alignment value.
24867
24868         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
24869
24870         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
24871         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
24872
24873         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
24874         __BIGGEST_ALIGNMENT__.
24875
24876         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
24877
24878 2009-01-18  Richard Guenther  <rguenther@suse.de>
24879
24880         PR tree-optimization/38819
24881         * tree-flow.h (operation_could_trap_helper_p): Declare.
24882         * tree-eh.c (operation_could_trap_helper_p): Export.
24883         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
24884         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
24885         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
24886         are about to insert a possibly trapping instruction and fail
24887         in this case.
24888
24889 2009-01-18  Andreas Schwab  <schwab@suse.de>
24890
24891         * doc/install.texi (Configuration): Remove obsolete paragraph
24892         about use of --with-gnu-ld with --with-gnu-as.
24893
24894 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
24895
24896         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
24897         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
24898         Follow spelling conventions.
24899
24900 2009-01-18  Ben Elliston  <bje@au.ibm.com>
24901
24902         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
24903         C++ warning about implicit conversion from void * to struct
24904         bitmap_head_def *.
24905         (bitmap_obstack_free): Likewise for bitmap_element *.
24906         * Makefile.in (bitmap.o-warn): Remove.
24907
24908 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
24909
24910         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
24911
24912 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
24913             Tobias Grosser  <tobi.grosser@amd.com>
24914
24915         * graphite.c (graphite_trans_scop_block): Do not block single
24916         nested loops.
24917
24918 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
24919
24920         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
24921         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
24922         test with assertion.
24923
24924 2009-01-16  Richard Guenther  <rguenther@suse.de>
24925
24926         PR tree-optimization/38835
24927         PR middle-end/36227
24928         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
24929         and INT + PTR -> (INT)(PTR p+ INT) folding.
24930         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
24931
24932 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
24933
24934         PR target/38554
24935         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
24936         the subreg from a lowpart subreg if it is also casting the value.
24937
24938 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
24939             Tobias Grosser  <tobi.grosser@amd.com>
24940
24941         * graphite.c (compare_prefix_loops): New.
24942         (build_scop_canonical_schedules): Rewritten.
24943         (graphite_transform_loops): Move build_scop_canonical_schedules
24944         after build_scop_iteration_domain.
24945
24946 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
24947             Tobias Grosser  <tobi.grosser@amd.com>
24948
24949         * graphite.c (add_conditions_to_domain): Add the loops to
24950         the dimension of the iteration domain.  Do copy the domain
24951         only when it exists.
24952         (build_scop_conditions_1): Do not call add_conditions_to_domain.
24953         (add_conditions_to_constraints): New.
24954         (can_generate_code_stmt, can_generate_code): Removed.
24955         (gloog): Do not call can_generate_code.
24956         (graphite_transform_loops): Call add_conditions_to_constraints
24957         after building the iteration domain.
24958
24959 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
24960
24961         PR tree-optimization/38789
24962         * tree-ssa-threadedge.c
24963         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
24964         __builtin_constant_p.
24965
24966 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
24967
24968         * dce.c (delete_unmarked_insns): Reversed the order that insns are
24969         examined before deleting them.
24970
24971 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
24972
24973         * function.c (aggregate_value_p): Correctly extract the function
24974         type from CALL_EXPR_FN lookup.
24975
24976 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
24977
24978         * config/picochip/picochip.c (picochip_override_options): Revert
24979         CFI asm flag disable commited previously.
24980
24981 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
24982             Tobias Grosser  <tobi.grosser@amd.com>
24983             Jan Sjodin  <jan.sjodin@amd.com>
24984
24985         * graphite.c (scan_tree_for_params): On substractions negate
24986         all the coefficients of the term.
24987         (clast_to_gcc_expression_red): New.  Handle reduction expressions
24988         of more than two operands.
24989         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
24990         (get_vdef_before_scop): Handle also the case of default definitions.
24991
24992 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
24993
24994         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
24995         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
24996         Also use them when walking CALL_INSN_FUNCTION_USAGE.
24997
24998 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
24999             Joey Ye  <joey.ye@intel.com>
25000
25001         PR middle-end/37843
25002         * cfgexpand.c (expand_stack_alignment): Don't update stack
25003         boundary nor check incoming stack boundary here.
25004         (gimple_expand_cfg): Update stack boundary and check incoming
25005         stack boundary here.
25006
25007 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
25008
25009         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
25010
25011 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
25012
25013         PR rtl-optimization/38245
25014         * calls.c (expand_call): Add stack arguments to
25015         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25016         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
25017         in regs and partially in memory or BLKmode arguments.
25018         (emit_library_call_value_1): Add stack arguments to
25019         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25020         ACCUMULATE_OUTGOING_ARGS).
25021         * dce.c: Include tm_p.h.
25022         (find_call_stack_args): New function.
25023         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
25024         argument.
25025         (mark_insn): Call find_call_stack_args for CALL_Ps.
25026         (prescan_insns_for_dce): Walk insns backwards in bb rather than
25027         forwards.  Allocate and free arg_stores bitmap if needed, pass it
25028         down to deletable_insn_p, don't mark stores set in arg_stores
25029         bitmap, clear the bitmap at the beginning of each bb.
25030         * Makefile.in (dce.o): Depend on $(TM_P_H).
25031
25032 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
25033
25034         PR target/22599
25035         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
25036         to make sure the insn is a conditional test (bug 22599).  Reformat a
25037         few long lines.
25038
25039 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
25040
25041         PR middle-end/38431
25042         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
25043         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
25044         (gloog): Do not call cleanup_tree_cfg.
25045         (graphite_transform_loops): Call cleanup_tree_cfg after all
25046         scops have been code generated.
25047
25048 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
25049         * doc/gty.texi (Invoking the garbage collector): Added new node
25050         and section documenting ggc_collect.
25051
25052 2009-01-14  Richard Guenther  <rguenther@suse.de>
25053
25054         PR tree-optimization/38826
25055         PR middle-end/38477
25056         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
25057         initialization notes only if we actually emitted a warning.
25058         (intra_create_variable_infos): Add constraints for a result decl
25059         that is passed by hidden reference.
25060         (build_pred_graph): Mark all related variables non-direct on
25061         address-taking.
25062
25063 2009-01-14  Nick Clifton  <nickc@redhat.com>
25064
25065         * ira-conflicts.c: Include addresses.h for the definition of
25066         base_reg_class.
25067         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
25068         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
25069
25070 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
25071
25072         PR target/38811
25073         * Makefile.in (ira-lives.o): Add except.h.
25074
25075         * ira-lives.c: Include except.h.
25076         (process_bb_node_lives): Process can_throw_internal.
25077
25078 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
25079
25080         PR rtl-optimization/38774
25081         * combine.c (simplify_set): When undoing cc_use change, don't do
25082         PUT_CODE on the newly created comparison, but instead put back the
25083         old comparison.
25084
25085 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
25086
25087         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
25088         values.  Remove duplicate arm8 entry.
25089
25090 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25091
25092         PR tree-optimization/38786
25093         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
25094         the SSA_NAME case of expand_scalar_variables_expr.
25095         Set the type of an expression to the type of its assign statement.
25096         (expand_scalar_variables_expr): Also gather the scalar computation
25097         used to index the memory access.  Do not pass loop_p.
25098         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
25099         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
25100         the gimple_stmt_iterator where it inserts new code.
25101         Do not pass loop_p.
25102         (copy_bb_and_scalar_dependences): Do not pass loop_p.
25103         (translate_clast): Update call to copy_bb_and_scalar_dependences.
25104
25105 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25106
25107         * graphite.h (debug_value): Removed.
25108         * graphite.c (debug_value): Removed.
25109
25110 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25111
25112         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
25113         ldrd/strd with two 32-bit instructions.
25114
25115 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25116
25117         * config/arm/arm.c (struct processors): Pass for speed down into
25118         cost helper functions.
25119         (const_ok_for_op): Handle COMPARE and inequality nodes.
25120         (arm_rtx_costs_1): Rewrite.
25121         (arm_size_rtx_costs): Update prototype.
25122         (arm_rtx_costs): Pass speed down to helper functions.
25123         (arm_slowmul_rtx_costs): Rework cost calculations.
25124         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
25125         (arm_9e_rtx_costs): Likewise.
25126
25127 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
25128
25129         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
25130         relocations of local symbols wider than UNITS_PER_WORD are not valid.
25131         (alpha_legitimize_address): Do not split local symbols wider than
25132         UNITS_PER_WORD into HIGH/LO_SUM parts.
25133
25134 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
25135
25136         PR bootstrap/38580
25137         * gcc.c (process_command): Replace call to execvp with calls
25138         to pex_one and exit.
25139
25140 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
25141
25142         PR target/29141
25143         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
25144         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
25145         variant for devices with 3-byte PC.
25146         (__tablejump_elpm__): New.
25147
25148 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25149
25150         PR c/32041
25151         * c-parser.c (c_parser_postfix_expression): Allow `->' in
25152         offsetof member-designator, handle it as `[0].'.
25153
25154 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25155
25156         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
25157         function when not using named sections on targets with named sections
25158         if branch distance is less than 262132.
25159
25160 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
25161
25162         * combine.c (combine_instructions):  Recompute
25163         optimize_this_for_speed_p  for each BB in the main combine loop.
25164
25165 2009-01-12  Tomas Bily  <tbily@suse.cz>
25166
25167         PR middlend/38385
25168         * tree-loop-distribution.c (prop_phis): New function.
25169         (generate_builtin): Call prop_phis.
25170         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
25171
25172 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25173
25174         PR tree-optimization/38807
25175         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
25176         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
25177
25178 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
25179
25180         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
25181         subreg of op0 to the original op0.
25182
25183 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
25184
25185         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
25186
25187 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
25188
25189         PR debug/7055
25190         * mips-tfile.c (parse_def): Fix parsing of def strings
25191         starting with digits.
25192
25193 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
25194
25195         PR target/38695
25196         * config/arm/arm.c (arm_is_long_call_p): Don't call
25197         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
25198
25199 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
25200
25201         * regrename.c (regrename_optimize): Fix dumping.
25202         (find_oldest_value_reg): Preserve REG_POINTER.
25203         (copy_hardreg_forward_1): Likewise.
25204
25205 2009-01-09  Diego Novillo  <dnovillo@google.com>
25206
25207         * gimple.h (struct gimple_statement_base) <uid>: Document
25208         the restrictions on its use.
25209         (gimple_uid): Tidy.
25210         (gimple_set_uid): Tidy.
25211
25212 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25213
25214         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
25215         zero guard even if align_bytes != 0 and count is smaller than
25216         size_needed.
25217
25218 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
25219
25220         PR rtl-optimization/38495
25221         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
25222         (add_range_and_copies_from_move_list): Print all added ranges.
25223         Add ranges to memory optimized destination.
25224
25225 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25226
25227         PR target/38686
25228         PR target/38708
25229         * config/i386/i386.c (override_options): Reject
25230         -mstringop-strategy=rep_8byte with -m32.
25231         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
25232         to 1.  Do count comparison against epilogue_size_needed at compile
25233         time even when count_exp was constant forced into register.  For
25234         size_needed don't jump to epilogue, instead just avoid aligning
25235         and invoke the body algorithm.  If need_zero_guard, add zero guard
25236         even if count is non-zero, but smaller than size_needed + number of
25237         bytes that could be stored for alignment.
25238         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
25239         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
25240         but smaller than size_needed + number of bytes that could be stored
25241         for alignment.  Compare size_needed with epilogue_size_needed instead
25242         of desired_align - align, don't adjust size_needed, pass
25243         epilogue_size_needed to the epilogue expanders.
25244
25245         PR c/35742
25246         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
25247
25248 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25249
25250         * pa.c (last_address): Change to unsigned.
25251         (update_total_code_bytes): Change argument to unsigned.  Don't
25252         check if insn addresses are set.
25253         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
25254         addresses are not set.
25255         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
25256
25257 2009-01-09  Nick Clifton  <nickc@redhat.com>
25258
25259         * config/sh/symbian.c: Replace uses of DECL_INLINE with
25260         DECL_DECLARED_INLINE_P.
25261
25262 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25263
25264         PR middle-end/38347
25265         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
25266         GET_MODE (op0) in operand_subword_force calls.
25267
25268         PR middle-end/38771
25269         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
25270         fold_convert arg0 operands to TREE_TYPE (op0) first.
25271
25272 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
25273
25274         * params.def (ira-max-conflict-table-size): Decrease default value
25275         to 1000.
25276
25277 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
25278
25279         PR tree-optimization/37031
25280         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
25281         on parameter_set.
25282         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
25283         allocate it using gc instead of heap, use VEC_quick_push instead of
25284         VEC_safe_push.
25285         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
25286         instead of heap, use VEC_quick_push instead of VEC_safe_push.
25287         * tree-data-ref.h (struct access_matrix): Change matrix to gc
25288         allocated vector from heap allocated.
25289         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
25290         * tree-loop-linear.c (linear_transform_loops): Allocate nest
25291         vector only after perfect_loop_nest_depth call.
25292
25293 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
25294             Jan Sjodin  <jan.sjodin@amd.com>
25295
25296         PR tree-optimization/38559
25297         * graphite.c (debug_value, copy_constraint,
25298         swap_constraint_variables, scale_constraint_variable, ): New.
25299         (get_lower_bound, get_upper_bound): Removed.
25300         (graphite_trans_bb_strip_mine): Clean up this code that works
25301         only for constant number of iterations.  Fully copy upper and
25302         lower bound constraints, not only the constant part of them.
25303         * graphite.h (debug_value): Declared.
25304
25305 2009-01-08  Ira Rosen  <irar@il.ibm.com>
25306
25307         PR tree-optimization/37194
25308         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
25309         Don't add the cost of cost model guard in prologue to scalar
25310         outside cost in case of known number of iterations.
25311
25312 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
25313             Alan Modra  <amodra@bigpond.net.au>
25314
25315         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
25316         non-word-aligned REG+CONST addressing.
25317
25318 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25319
25320         PR target/38706
25321         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
25322         free_after_compilation when outputting a thunk.
25323         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
25324         Do not call free_after_compilation here.
25325
25326 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25327
25328         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
25329         (ix86_valid_target_attribute_inner_p): Ditto.
25330
25331 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
25332
25333         PR tree-optimization/38492
25334         PR tree-optimization/38498
25335         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
25336         * tree-chrec.h (scev_is_linear_expression): Declared.
25337         * graphite.c (graphite_cannot_represent_loop_niter): New.
25338         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
25339         (graphite_loop_normal_form): Use gcc_assert.
25340         (scan_tree_for_params): Use CASE_CONVERT.
25341         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
25342         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
25343         Use gcc_assert.  Discard scops that contain unhandled cases.
25344         (build_scop_conditions): Return a boolean status for unhandled cases.
25345         (strip_mine_profitable_p): Print the loop number, not its depth.
25346         (is_interchange_valid): Pass the depth of the loop nest, don't
25347         recompute it wrongly.
25348         (graphite_trans_bb_block): Same.
25349         (graphite_trans_bb_block): Print tentative of loop blocking.
25350         (graphite_trans_scop_block): Do not print that the loop has been
25351         blocked.
25352         (graphite_transform_loops): Do not handle scops that contain condition
25353         scalar phi nodes.
25354
25355 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
25356
25357         AVX Programming Reference (December, 2008)
25358         * config/i386/avxintrin.h (_mm256_stream_si256): New.
25359         (_mm256_stream_pd): Likewise.
25360         (_mm256_stream_ps): Likewise.
25361
25362         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
25363         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
25364         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
25365         (bdesc_special_args): Add __builtin_ia32_movntdq256,
25366         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
25367         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
25368         (ix86_expand_special_args_builtin): Likewise.
25369
25370         * config/i386/sse.md (AVXMODEDI): New.
25371         (avx_movnt<mode>): Likewise.
25372         (avx_movnt<mode>): Likewise.
25373         (<sse>_movnt<mode>): Remove AVX support.
25374         (sse2_movntv2di): Likewise.
25375
25376 2009-01-07  Richard Guenther  <rguenther@suse.de>
25377
25378         PR middle-end/38751
25379         * fold-const.c (extract_muldiv): Remove obsolete comment.
25380         (fold_plusminus_mult_expr): Undo MINUS_EXPR
25381         to PLUS_EXPR canonicalization for the canonicalization.
25382
25383 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
25384
25385         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
25386         hosted cross-compilers generating less efficient code.
25387
25388 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
25389
25390         * function.h (rtl_data): Add a dbr_scheduled_p field.
25391         * reorg.c (dbr_schedule): Set it.
25392         (gate_handle_delay_slots): Check it.
25393         * config/mips/mips.c (mips_base_delayed_branch): Delete.
25394         (mips_reorg): Check flag_delayed_branch instead of
25395         mips_base_delayed_branch.
25396         (mips_override_options): Don't set mips_base_delayed_branch
25397         or flag_delayed_branch.
25398
25399 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
25400
25401         PR rtl-optimization/38426.
25402         * ira.c (ira): Set current_function_is_leaf earlier.
25403
25404 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
25405
25406         PR rtl-optimization/38722
25407         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
25408         too early, only set a flag and modify after last possible
25409         undo_all point.
25410
25411 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
25412
25413         PR c/34252
25414         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
25415         * real.c (decimal_single_format): Correct values of emin and emax.
25416         (decimal_double_format): Ditto.
25417         (decimal_quad_format): Ditto.
25418         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
25419         computation of DECnn_MIN and DECnn_MAX for corrected values of
25420         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
25421         __DECnn_MIN__, and adjust its computation for the corrected value
25422         of emin.
25423
25424 2009-01-06  Jan Hubicka  <jh@suse.cz>
25425
25426         PR target/38744
25427         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
25428
25429 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
25430
25431         * doc/contrib.texi (Contributors): Slightly adjust the end note.
25432         Add Robert Clark to the list of testers.
25433
25434 2009-01-06  Jan Hubicka  <jh@suse.cz>
25435             Kai Tietz  <kai.tietz@onevision.com>
25436
25437         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
25438         * config/i386/i386.c (ix86_expand_call): Add clobbers.
25439
25440 2009-01-06  Jan Hubicka  <jh@suse.cz>
25441             Kai Tietz  <kai.tietz@onevision.com>
25442
25443         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
25444         for w64 ABI.
25445         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
25446         (ix86_nsaved_regs): Count only general purpose regs.
25447         (ix86_nsaved_sseregs): New.
25448         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
25449         to 16 for w64; compute padding and size of sse reg save area.
25450         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
25451         general purpose regs.
25452         (ix86_emit_save_sse_regs_using_mov): New.
25453         (ix86_expand_prologue): Save SSE regs if needed.
25454         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
25455         (ix86_emit_restore_sse_regs_using_mov): New.
25456         (ix86_expand_epilogue): Save SSE regs if needed.
25457
25458 2009-01-06  Jan Hubicka  <jh@suse.cz>
25459             Kai Tietz  <kai.tietz@onevision.com>
25460
25461         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
25462         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
25463         functions when accumulate outgoing args is off.
25464
25465 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
25466
25467         PR bootstrap/38742
25468         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
25469         before using pseudos_have_intersected_live_ranges_p.
25470
25471         * ira-int.h (ira_assert): Always define.
25472
25473 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
25474
25475         AVX Programming Reference (December, 2008)
25476         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
25477         (_mm256_permute2_pd): Likewise.
25478         (_mm_permute2_ps): Likewise.
25479         (_mm256_permute2_ps): Likewise.
25480         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
25481         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
25482
25483         * config/i386/i386.c (ix86_builtins): Remove
25484         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
25485         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
25486         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
25487         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
25488         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
25489         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
25490         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
25491         __builtin_ia32_vpermil2ps256.
25492         (ix86_init_mmx_sse_builtins): Updated.
25493         (ix86_expand_args_builtin): Likewise.
25494
25495 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25496
25497         * pa.c (output_call): Relocate non-jump insns in the delay slot of
25498         long absolute calls when generating PA 2.0 code.
25499
25500 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
25501
25502         PR rtl-optimization/38583
25503         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
25504
25505         * params.def (ira-max-conflict-table-size): New.
25506
25507         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
25508
25509         * ira.h (ira_conflicts_p): New external definition.
25510
25511         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
25512         table.  Report this.  Return result of building.
25513         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
25514         building conflict table.
25515
25516         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
25517         (ira_color): Use ira_conflicts_p.
25518
25519         * global.c: Include ira.h.
25520         (pseudo_for_reload_consideration_p, build_insn_chain): Use
25521         ira_conflicts_p.
25522
25523         * Makefile.in (global.o): Add ira.h.
25524
25525         * ira-build.c (mark_all_loops_for_removal,
25526         propagate_some_info_from_allocno): New.
25527         (remove_unnecessary_allocnos): Call
25528         propagate_some_info_from_allocno.
25529         (remove_low_level_allocnos): New.
25530         (remove_unnecessary_regions): Add parameter.  Call
25531         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
25532         parameter to remove_unnecessary_regions.
25533         (ira_build): Remove all regions but root if the conflict table was
25534         not built.  Update conflict hard regs for allocnos crossing calls.
25535
25536         * ira.c (ira_conflicts_p): New global.
25537         (ira): Define and use ira_conflicts_p.
25538
25539         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25540         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
25541         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
25542
25543 2009-01-06  Ben Elliston  <bje@au.ibm.com>
25544
25545         * gengtype-lex.l (YY_NO_INPUT): Define.
25546
25547 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25548
25549         PR c/34911
25550         * c-common.c (handle_vector_size_attribute): Also reject
25551         BOOLEAN_TYPE types.
25552
25553 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
25554
25555         PR tree-optimization/38492
25556         * graphite.c (rename_map_elt, debug_rename_elt,
25557         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
25558         rename_map_elt_info, eq_rename_map_elts,
25559         get_new_name_from_old_name, bb_in_sese_p): Moved around.
25560         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
25561         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
25562         (sese_build_livein_liveouts): New.
25563         (new_sese, free_sese): New.
25564         (new_scop): Call new_sese.
25565         (free_scop): Call free_sese.
25566         (rename_variables_from_edge, rename_phis_end_scop): Removed.
25567         (register_old_new_names): Renamed register_old_and_new_names.
25568         (register_scop_liveout_renames, add_loop_exit_phis,
25569         insert_loop_close_phis, struct igp,
25570         default_liveout_before_guard, add_guard_exit_phis,
25571         insert_guard_phis, copy_renames): New.
25572         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
25573         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
25574         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
25575         (scop_adjust_phis_for_liveouts): New.
25576         (gloog): Call scop_adjust_phis_for_liveouts.
25577
25578         * graphite.h (struct sese): Documented.  Added fields liveout,
25579         num_ver and livein.
25580         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
25581         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
25582         (struct scop): Added field liveout_renames.
25583         (SCOP_LIVEOUT_RENAMES): New.
25584
25585 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25586
25587         PR tree-optimization/38510
25588         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
25589         (translate_clast): Call recompute_all_dominators before
25590         graphite_verify.
25591         (gloog): Call recompute_all_dominators before graphite_verify.
25592
25593 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25594             Jan Sjodin  <jan.sjodin@amd.com>
25595
25596         PR tree-optimization/38500
25597         * graphite.c (create_sese_edges): Call fix_loop_structure after
25598         splitting blocks.
25599
25600 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
25601
25602         * config.gcc: Add m32r*-*-rtems*.
25603         * config/m32r/rtems.h: New file.
25604
25605 2009-01-05  Ben Elliston  <bje@au.ibm.com>
25606
25607         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
25608         (.po.pox): Likewise.
25609         (po/gcc.pot): Likewise.
25610
25611 2009-01-04  David S. Miller  <davem@davemloft.net>
25612
25613         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
25614         (STARTING_FRAME_OFFSET): Always set to zero.
25615
25616 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
25617
25618         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
25619         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
25620         fixed-point types, and vectors of the same.
25621
25622 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
25623
25624         * config/mips/sync.md (*mb_barrier): Rename to...
25625         (*memory_barrier): ...this.
25626
25627 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
25628
25629         * doc/extend.texi (Function Attributes): Move @cindex after @item
25630         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
25631         and put in alphabetical order. Fix 'target' name and put in order.
25632         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
25633         typos.
25634
25635 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
25636
25637         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
25638         (memory_barrier): Expand as unspec instead of unspec_volatile.
25639         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25640         (*memory_barrier): Define as unspec instead of unspec_volatile.
25641         Use (match_dup 0) as input operand.
25642
25643         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
25644         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
25645         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
25646         scratch register.  Remove operand 1.
25647         (*stbar): Define as unspec instead of unspec_volatile.
25648         Use (match_dup 0) as input operand, remove (const_int 8).
25649         (*membar): Define as unspec instead of unspec_volatile.
25650         Use (match_dup 0) as input operand, remove input operand 2.
25651
25652         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
25653         (memory_barrier): Expand as unspec instead of unspec_volatile.
25654         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25655         (*memory_barrier): Define as unspec instead of unspec_volatile.
25656         Use (match_dup 0) as input operand.
25657
25658         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
25659         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25660         Set volatile flag on operand 0.
25661         (*memory_barrier): New insn pattern.
25662
25663         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
25664         insn operands.
25665         (*memory_barrier): Use (match_dup 0) as input operand.
25666
25667         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
25668         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25669         Set volatile flag on operand 0.
25670         (*mb_internal): New insn pattern.
25671
25672         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
25673
25674 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
25675
25676         PR middle-end/38586
25677         * function.c (struct temp_slot): Move to the section of the file
25678         that deals with temp slots.  Remove field 'address'.
25679         (temp_slot_address_table): New hash table of address -> temp slot.
25680         (struct temp_slot_address_entry): New struct, items for the table.
25681         (temp_slot_address_compute_hash, temp_slot_address_hash,
25682         temp_slot_address_eq, insert_temp_slot_address): Support functions
25683         for the new table.
25684         (find_temp_slot_from_address): Rewrite to use the new hash table.
25685         (remove_unused_temp_slot_addresses): Remove addresses of temp
25686         slots that have been made available.
25687         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
25688         worker function for remove_unused_temp_slot_addresses.
25689         (assign_stack_temp_for_type): Don't clear the temp slot address list.
25690         Add the temp slot address to the address -> temp slot map.
25691         (update_temp_slot_address): Update via insert_temp_slot_address.
25692         (free_temp_slots): Call remove_unused_temp_slot_addresses.
25693         (pop_temp_slots): Likewise.
25694         (init_temp_slots): Allocate the address -> temp slot map, or empty
25695         the map if it is already allocated.
25696         (prepare_function_start): Initialize temp slot processing.
25697
25698 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
25699
25700         PR middle-end/38584
25701         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
25702         Calculate the size of all stack vars assuming no packing of stack
25703         vars will happen, replacing a quadratic algorithm with a linear one.
25704
25705 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
25706
25707         PR target/38707
25708         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
25709         can't be used.
25710
25711 2009-01-03  Diego Novillo  <dnovillo@google.com>
25712
25713         * doc/contrib.texi: Update contributions.
25714
25715 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
25716
25717         PR c++/38705
25718         * builtins.c (fold_builtin_memory_op): Give up if either operand
25719         is volatile.  Set srctype or desttype to non-qualified version
25720         of the other type.
25721
25722         PR c/38700
25723         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
25724         and FUNCTION_DECLs.
25725
25726 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
25727
25728         PR rtl-optimization/35805
25729         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
25730         problem if fast dce is able to remove any instructions.
25731         * dce.c (dce_process_block): Fix dump message.
25732
25733 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
25734
25735         PR 33649
25736         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
25737
25738 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
25739
25740         PR middle-end/38690
25741         * tree-flow.h (op_code_prio, op_prio): New prototypes.
25742         * tree-pretty-print.c (op_code_prio): New function.
25743         (op_prio): No longer static.  Use op_code_prio.
25744         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
25745         Use op_prio and op_code_prio to determine if () should be
25746         printed around operand(s) or not.
25747
25748         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
25749         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
25750         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
25751         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
25752         pp_character instead of pp_string for single letter printing.
25753
25754 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
25755
25756         * doc/extend.texi: Fix '#pragma GCC option' typo.
25757
25758 2009-01-02  Richard Guenther  <rguenther@suse.de>
25759
25760         * doc/install.texi (--enable-checking): Mention different
25761         default for stage1.
25762         (--enable-stage1-checking): Document.
25763
25764 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
25765
25766         PR middle-end/30142
25767         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
25768         case to be an error.
25769
25770 2009-01-02  Ben Elliston  <bje@au.ibm.com>
25771
25772         * config/fp-bit.h (pack_d): Constify argument.
25773         * config/fp-bit.c (makenan): Constify return type. Remove casts.
25774         (isnan): Constify argument.
25775         (isinf): Likewise.
25776         (iszero): Likewise.
25777         (pack_d): Likewise.
25778         (_fpadd_parts): Constify return type.
25779         (_fpmul_parts): Likewise.
25780         (_fpdiv_parts): Likewise.
25781
25782 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
25783
25784         PR c/36489
25785         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
25786         warn about overwriting initializer with side-effects or
25787         -Woverride-init if !IMPLICIT.
25788         (output_init_element): Likewise.  Pass IMPLICIT down to
25789         add_pending_init.
25790         (process_init_element): Add IMPLICIT argument.  Pass it down
25791         to output_init_element.
25792         (push_init_element, pop_init_level, set_designator): Adjust
25793         process_init_element callers.
25794         (set_nonincremental_init, set_nonincremental_init_from_string):
25795         Adjust add_pending_init callers.
25796         (output_pending_init_elements): Adjust output_init_element callers.
25797         * c-tree.h (process_init_element): Adjust prototype.
25798         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
25799         process_init_element callers.
25800
25801 \f
25802 Copyright (C) 2009 Free Software Foundation, Inc.
25803
25804 Copying and distribution of this file, with or without modification,
25805 are permitted in any medium without royalty provided the copyright
25806 notice and this notice are preserved.